diff --git a/.gitignore b/.gitignore
index d0d8fe2b816..3e11ffd51cd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
-## Ignore Visual Studio temporary files, build results, and
+## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
@@ -402,3 +402,6 @@ FodyWeavers.xsd
# JetBrains Rider
.idea/
*.sln.iml
+
+# MiMoCode
+.mimocode/
diff --git a/v2rayN/ServiceLib/Handler/ConfigHandler.cs b/v2rayN/ServiceLib/Handler/ConfigHandler.cs
index eeece698dc7..055fe05cad1 100644
--- a/v2rayN/ServiceLib/Handler/ConfigHandler.cs
+++ b/v2rayN/ServiceLib/Handler/ConfigHandler.cs
@@ -143,6 +143,10 @@ public static class ConfigHandler
{
config.SpeedTestItem.UdpTestTarget = Global.UdpTestTargets.First();
}
+ if (config.SpeedTestItem.IPAPIUrl.IsNullOrEmpty())
+ {
+ config.SpeedTestItem.IPAPIUrl = Global.IPAPIUrls.First();
+ }
config.Mux4RayItem ??= new()
{
diff --git a/v2rayN/ServiceLib/Models/Dto/IPAPIInfo.cs b/v2rayN/ServiceLib/Models/Dto/IPAPIInfo.cs
index 0257ab67b4b..bf10e9271dd 100644
--- a/v2rayN/ServiceLib/Models/Dto/IPAPIInfo.cs
+++ b/v2rayN/ServiceLib/Models/Dto/IPAPIInfo.cs
@@ -22,7 +22,6 @@ public readonly record struct IpInfoResult(string Country, string? Ip)
{
public override string ToString()
{
- var emoji = Utils.IsWindows() ? null : Country.CountryToEmoji();
- return $"{emoji}({Country}) {Ip}";
+ return $"({Country}) {Ip}";
}
}
diff --git a/v2rayN/v2rayN/App.xaml b/v2rayN/v2rayN/App.xaml
index c09fa4cdf59..454e4584615 100644
--- a/v2rayN/v2rayN/App.xaml
+++ b/v2rayN/v2rayN/App.xaml
@@ -20,6 +20,7 @@
11
+
= 4)
+ {
+ var closeIdx = text.IndexOf(')');
+ if (closeIdx == 2 || closeIdx == 3)
+ {
+ return text.Substring(1, closeIdx - 1).Trim();
+ }
+ }
+
+ // Format: "XX" - just the code
+ if (text.Length == 2)
+ {
+ return text;
+ }
+
+ return null;
+ }
+}
diff --git a/v2rayN/v2rayN/Helper/FlagImageHelper.cs b/v2rayN/v2rayN/Helper/FlagImageHelper.cs
new file mode 100644
index 00000000000..f08ba972f9c
--- /dev/null
+++ b/v2rayN/v2rayN/Helper/FlagImageHelper.cs
@@ -0,0 +1,49 @@
+using System;
+using System.Collections.Concurrent;
+using System.IO;
+using System.Windows.Media.Imaging;
+
+namespace v2rayN.Helper;
+
+public static class FlagImageHelper
+{
+ private static readonly ConcurrentDictionary _cache = new(StringComparer.OrdinalIgnoreCase);
+ private static readonly string _flagsDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources", "Flags");
+
+ public static BitmapImage? GetFlagImage(string? countryCode)
+ {
+ if (string.IsNullOrEmpty(countryCode) || countryCode.Length != 2)
+ {
+ return null;
+ }
+
+ var key = countryCode.ToUpperInvariant();
+ if (_cache.TryGetValue(key, out var cached))
+ {
+ return cached;
+ }
+
+ var pngPath = Path.Combine(_flagsDir, $"{key}.png");
+ if (!File.Exists(pngPath))
+ {
+ return null;
+ }
+
+ try
+ {
+ var bitmap = new BitmapImage();
+ bitmap.BeginInit();
+ bitmap.UriSource = new Uri(pngPath);
+ bitmap.CacheOption = BitmapCacheOption.OnLoad;
+ bitmap.EndInit();
+ bitmap.Freeze();
+
+ _cache[key] = bitmap;
+ return bitmap;
+ }
+ catch
+ {
+ return null;
+ }
+ }
+}
diff --git a/v2rayN/v2rayN/Resources/Flags/ad.png b/v2rayN/v2rayN/Resources/Flags/ad.png
new file mode 100644
index 00000000000..13150dcd006
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ad.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ae.png b/v2rayN/v2rayN/Resources/Flags/ae.png
new file mode 100644
index 00000000000..7310ffdda6a
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ae.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/af.png b/v2rayN/v2rayN/Resources/Flags/af.png
new file mode 100644
index 00000000000..1e8acab125c
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/af.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ag.png b/v2rayN/v2rayN/Resources/Flags/ag.png
new file mode 100644
index 00000000000..5bdf8e116a8
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ag.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ai.png b/v2rayN/v2rayN/Resources/Flags/ai.png
new file mode 100644
index 00000000000..642a0fac65f
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ai.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/al.png b/v2rayN/v2rayN/Resources/Flags/al.png
new file mode 100644
index 00000000000..9dbb8190527
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/al.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/am.png b/v2rayN/v2rayN/Resources/Flags/am.png
new file mode 100644
index 00000000000..8e062149980
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/am.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ao.png b/v2rayN/v2rayN/Resources/Flags/ao.png
new file mode 100644
index 00000000000..e0077b46b22
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ao.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/aq.png b/v2rayN/v2rayN/Resources/Flags/aq.png
new file mode 100644
index 00000000000..77338e5a240
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/aq.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ar.png b/v2rayN/v2rayN/Resources/Flags/ar.png
new file mode 100644
index 00000000000..0d3e5eba1c6
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ar.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/as.png b/v2rayN/v2rayN/Resources/Flags/as.png
new file mode 100644
index 00000000000..666271527ca
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/as.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/at.png b/v2rayN/v2rayN/Resources/Flags/at.png
new file mode 100644
index 00000000000..10844d868e1
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/at.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/au.png b/v2rayN/v2rayN/Resources/Flags/au.png
new file mode 100644
index 00000000000..b4bb251d379
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/au.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/aw.png b/v2rayN/v2rayN/Resources/Flags/aw.png
new file mode 100644
index 00000000000..d6df4e5d374
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/aw.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ax.png b/v2rayN/v2rayN/Resources/Flags/ax.png
new file mode 100644
index 00000000000..d7c3b1819f1
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ax.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/az.png b/v2rayN/v2rayN/Resources/Flags/az.png
new file mode 100644
index 00000000000..f87f8e7b14a
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/az.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ba.png b/v2rayN/v2rayN/Resources/Flags/ba.png
new file mode 100644
index 00000000000..2708ec961de
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ba.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/bb.png b/v2rayN/v2rayN/Resources/Flags/bb.png
new file mode 100644
index 00000000000..042c7909a4d
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/bb.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/bd.png b/v2rayN/v2rayN/Resources/Flags/bd.png
new file mode 100644
index 00000000000..7936534dc29
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/bd.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/be.png b/v2rayN/v2rayN/Resources/Flags/be.png
new file mode 100644
index 00000000000..0ea2dae6d08
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/be.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/bf.png b/v2rayN/v2rayN/Resources/Flags/bf.png
new file mode 100644
index 00000000000..b289d6b92d6
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/bf.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/bg.png b/v2rayN/v2rayN/Resources/Flags/bg.png
new file mode 100644
index 00000000000..cd5a79618e7
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/bg.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/bh.png b/v2rayN/v2rayN/Resources/Flags/bh.png
new file mode 100644
index 00000000000..3a3031bd632
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/bh.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/bi.png b/v2rayN/v2rayN/Resources/Flags/bi.png
new file mode 100644
index 00000000000..95b903c0e3a
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/bi.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/bj.png b/v2rayN/v2rayN/Resources/Flags/bj.png
new file mode 100644
index 00000000000..5cc0ce254ee
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/bj.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/bl.png b/v2rayN/v2rayN/Resources/Flags/bl.png
new file mode 100644
index 00000000000..71b89994791
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/bl.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/bm.png b/v2rayN/v2rayN/Resources/Flags/bm.png
new file mode 100644
index 00000000000..c462fb02efd
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/bm.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/bn.png b/v2rayN/v2rayN/Resources/Flags/bn.png
new file mode 100644
index 00000000000..220987ba22d
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/bn.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/bo.png b/v2rayN/v2rayN/Resources/Flags/bo.png
new file mode 100644
index 00000000000..4b8d98e0000
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/bo.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/br.png b/v2rayN/v2rayN/Resources/Flags/br.png
new file mode 100644
index 00000000000..7a25952aefc
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/br.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/bs.png b/v2rayN/v2rayN/Resources/Flags/bs.png
new file mode 100644
index 00000000000..b1d9943bf90
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/bs.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/bt.png b/v2rayN/v2rayN/Resources/Flags/bt.png
new file mode 100644
index 00000000000..f2f07436f39
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/bt.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/bw.png b/v2rayN/v2rayN/Resources/Flags/bw.png
new file mode 100644
index 00000000000..4e5c980bf84
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/bw.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/by.png b/v2rayN/v2rayN/Resources/Flags/by.png
new file mode 100644
index 00000000000..fa2f2e4bafc
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/by.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/bz.png b/v2rayN/v2rayN/Resources/Flags/bz.png
new file mode 100644
index 00000000000..a8742fa692a
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/bz.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ca.png b/v2rayN/v2rayN/Resources/Flags/ca.png
new file mode 100644
index 00000000000..62720175d4d
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ca.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/cc.png b/v2rayN/v2rayN/Resources/Flags/cc.png
new file mode 100644
index 00000000000..07a896c397b
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/cc.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/cd.png b/v2rayN/v2rayN/Resources/Flags/cd.png
new file mode 100644
index 00000000000..7143bd07666
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/cd.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/cf.png b/v2rayN/v2rayN/Resources/Flags/cf.png
new file mode 100644
index 00000000000..649a0f808ae
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/cf.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/cg.png b/v2rayN/v2rayN/Resources/Flags/cg.png
new file mode 100644
index 00000000000..bd78fa9e20b
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/cg.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ch.png b/v2rayN/v2rayN/Resources/Flags/ch.png
new file mode 100644
index 00000000000..d125ab0ddd4
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ch.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ci.png b/v2rayN/v2rayN/Resources/Flags/ci.png
new file mode 100644
index 00000000000..9e306e18410
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ci.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ck.png b/v2rayN/v2rayN/Resources/Flags/ck.png
new file mode 100644
index 00000000000..af8d3d33d3e
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ck.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/cl.png b/v2rayN/v2rayN/Resources/Flags/cl.png
new file mode 100644
index 00000000000..6e1bd7b7763
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/cl.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/cm.png b/v2rayN/v2rayN/Resources/Flags/cm.png
new file mode 100644
index 00000000000..a9b53253fbe
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/cm.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/cn.png b/v2rayN/v2rayN/Resources/Flags/cn.png
new file mode 100644
index 00000000000..a8aee61b64a
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/cn.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/co.png b/v2rayN/v2rayN/Resources/Flags/co.png
new file mode 100644
index 00000000000..8e0d8676955
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/co.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/cr.png b/v2rayN/v2rayN/Resources/Flags/cr.png
new file mode 100644
index 00000000000..77886fadb0c
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/cr.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/cu.png b/v2rayN/v2rayN/Resources/Flags/cu.png
new file mode 100644
index 00000000000..78f2c5eecbb
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/cu.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/cv.png b/v2rayN/v2rayN/Resources/Flags/cv.png
new file mode 100644
index 00000000000..5d7fd6edc88
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/cv.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/cw.png b/v2rayN/v2rayN/Resources/Flags/cw.png
new file mode 100644
index 00000000000..7a3c313019a
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/cw.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/cx.png b/v2rayN/v2rayN/Resources/Flags/cx.png
new file mode 100644
index 00000000000..6b48347f7c4
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/cx.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/cy.png b/v2rayN/v2rayN/Resources/Flags/cy.png
new file mode 100644
index 00000000000..28c1daa0004
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/cy.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/cz.png b/v2rayN/v2rayN/Resources/Flags/cz.png
new file mode 100644
index 00000000000..9dd9ddeddcd
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/cz.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/de.png b/v2rayN/v2rayN/Resources/Flags/de.png
new file mode 100644
index 00000000000..b10182294eb
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/de.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/dj.png b/v2rayN/v2rayN/Resources/Flags/dj.png
new file mode 100644
index 00000000000..3a4bf71e99d
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/dj.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/dk.png b/v2rayN/v2rayN/Resources/Flags/dk.png
new file mode 100644
index 00000000000..b3378438f1a
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/dk.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/do.png b/v2rayN/v2rayN/Resources/Flags/do.png
new file mode 100644
index 00000000000..4b3acbc10fd
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/do.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/dz.png b/v2rayN/v2rayN/Resources/Flags/dz.png
new file mode 100644
index 00000000000..25d46d233ed
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/dz.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ec.png b/v2rayN/v2rayN/Resources/Flags/ec.png
new file mode 100644
index 00000000000..022e18db3df
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ec.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ee.png b/v2rayN/v2rayN/Resources/Flags/ee.png
new file mode 100644
index 00000000000..79c3d226dac
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ee.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/eg.png b/v2rayN/v2rayN/Resources/Flags/eg.png
new file mode 100644
index 00000000000..f82b65b5943
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/eg.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/er.png b/v2rayN/v2rayN/Resources/Flags/er.png
new file mode 100644
index 00000000000..a30444f905e
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/er.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/es.png b/v2rayN/v2rayN/Resources/Flags/es.png
new file mode 100644
index 00000000000..df14bde87ca
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/es.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/et.png b/v2rayN/v2rayN/Resources/Flags/et.png
new file mode 100644
index 00000000000..4bf8dad3433
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/et.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/fi.png b/v2rayN/v2rayN/Resources/Flags/fi.png
new file mode 100644
index 00000000000..21576536439
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/fi.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/fj.png b/v2rayN/v2rayN/Resources/Flags/fj.png
new file mode 100644
index 00000000000..4d5ed5726bf
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/fj.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/fk.png b/v2rayN/v2rayN/Resources/Flags/fk.png
new file mode 100644
index 00000000000..86bce4c74a3
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/fk.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/fm.png b/v2rayN/v2rayN/Resources/Flags/fm.png
new file mode 100644
index 00000000000..061df890629
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/fm.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/fo.png b/v2rayN/v2rayN/Resources/Flags/fo.png
new file mode 100644
index 00000000000..029023c6a19
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/fo.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/fr.png b/v2rayN/v2rayN/Resources/Flags/fr.png
new file mode 100644
index 00000000000..63871f58be1
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/fr.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ga.png b/v2rayN/v2rayN/Resources/Flags/ga.png
new file mode 100644
index 00000000000..816cf34fc24
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ga.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/gb.png b/v2rayN/v2rayN/Resources/Flags/gb.png
new file mode 100644
index 00000000000..736306b46a1
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/gb.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/gd.png b/v2rayN/v2rayN/Resources/Flags/gd.png
new file mode 100644
index 00000000000..a3363594822
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/gd.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ge.png b/v2rayN/v2rayN/Resources/Flags/ge.png
new file mode 100644
index 00000000000..0c4a0a99825
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ge.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/gf.png b/v2rayN/v2rayN/Resources/Flags/gf.png
new file mode 100644
index 00000000000..927697ae9d0
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/gf.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/gg.png b/v2rayN/v2rayN/Resources/Flags/gg.png
new file mode 100644
index 00000000000..c83340260d1
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/gg.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/gh.png b/v2rayN/v2rayN/Resources/Flags/gh.png
new file mode 100644
index 00000000000..6a475a2b798
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/gh.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/gi.png b/v2rayN/v2rayN/Resources/Flags/gi.png
new file mode 100644
index 00000000000..4cb2ab91ba1
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/gi.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/gl.png b/v2rayN/v2rayN/Resources/Flags/gl.png
new file mode 100644
index 00000000000..87c775c68b0
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/gl.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/gm.png b/v2rayN/v2rayN/Resources/Flags/gm.png
new file mode 100644
index 00000000000..2740a37416f
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/gm.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/gn.png b/v2rayN/v2rayN/Resources/Flags/gn.png
new file mode 100644
index 00000000000..36c362c818f
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/gn.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/gp.png b/v2rayN/v2rayN/Resources/Flags/gp.png
new file mode 100644
index 00000000000..f3760aaa9d2
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/gp.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/gq.png b/v2rayN/v2rayN/Resources/Flags/gq.png
new file mode 100644
index 00000000000..ed7207839df
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/gq.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/gr.png b/v2rayN/v2rayN/Resources/Flags/gr.png
new file mode 100644
index 00000000000..79a806ba963
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/gr.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/gs.png b/v2rayN/v2rayN/Resources/Flags/gs.png
new file mode 100644
index 00000000000..0a4393874e4
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/gs.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/gt.png b/v2rayN/v2rayN/Resources/Flags/gt.png
new file mode 100644
index 00000000000..7abd8a675f8
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/gt.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/gu.png b/v2rayN/v2rayN/Resources/Flags/gu.png
new file mode 100644
index 00000000000..67c9c338457
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/gu.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/gw.png b/v2rayN/v2rayN/Resources/Flags/gw.png
new file mode 100644
index 00000000000..1247e026ef1
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/gw.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/gy.png b/v2rayN/v2rayN/Resources/Flags/gy.png
new file mode 100644
index 00000000000..9af6e73d0eb
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/gy.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/hk.png b/v2rayN/v2rayN/Resources/Flags/hk.png
new file mode 100644
index 00000000000..5ef1415038d
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/hk.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/hn.png b/v2rayN/v2rayN/Resources/Flags/hn.png
new file mode 100644
index 00000000000..f6932cecbbd
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/hn.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/hr.png b/v2rayN/v2rayN/Resources/Flags/hr.png
new file mode 100644
index 00000000000..dcd76108139
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/hr.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ht.png b/v2rayN/v2rayN/Resources/Flags/ht.png
new file mode 100644
index 00000000000..b8cbe1103d5
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ht.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/hu.png b/v2rayN/v2rayN/Resources/Flags/hu.png
new file mode 100644
index 00000000000..0c698dc8526
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/hu.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/id.png b/v2rayN/v2rayN/Resources/Flags/id.png
new file mode 100644
index 00000000000..767ab87a61e
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/id.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ie.png b/v2rayN/v2rayN/Resources/Flags/ie.png
new file mode 100644
index 00000000000..490c67a48be
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ie.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/il.png b/v2rayN/v2rayN/Resources/Flags/il.png
new file mode 100644
index 00000000000..8a7cca907d8
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/il.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/im.png b/v2rayN/v2rayN/Resources/Flags/im.png
new file mode 100644
index 00000000000..8229192bfac
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/im.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/in.png b/v2rayN/v2rayN/Resources/Flags/in.png
new file mode 100644
index 00000000000..f88b761d4ae
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/in.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/io.png b/v2rayN/v2rayN/Resources/Flags/io.png
new file mode 100644
index 00000000000..a198c5156b0
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/io.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/iq.png b/v2rayN/v2rayN/Resources/Flags/iq.png
new file mode 100644
index 00000000000..8d271ac962e
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/iq.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ir.png b/v2rayN/v2rayN/Resources/Flags/ir.png
new file mode 100644
index 00000000000..69e63c5ccba
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ir.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/is.png b/v2rayN/v2rayN/Resources/Flags/is.png
new file mode 100644
index 00000000000..d6a46cff6f2
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/is.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/it.png b/v2rayN/v2rayN/Resources/Flags/it.png
new file mode 100644
index 00000000000..03deafeba0c
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/it.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/je.png b/v2rayN/v2rayN/Resources/Flags/je.png
new file mode 100644
index 00000000000..98feeaf628e
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/je.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/jm.png b/v2rayN/v2rayN/Resources/Flags/jm.png
new file mode 100644
index 00000000000..0ea4b285526
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/jm.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/jo.png b/v2rayN/v2rayN/Resources/Flags/jo.png
new file mode 100644
index 00000000000..c007d04a58d
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/jo.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/jp.png b/v2rayN/v2rayN/Resources/Flags/jp.png
new file mode 100644
index 00000000000..a132b236a51
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/jp.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ke.png b/v2rayN/v2rayN/Resources/Flags/ke.png
new file mode 100644
index 00000000000..9639610a923
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ke.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/kg.png b/v2rayN/v2rayN/Resources/Flags/kg.png
new file mode 100644
index 00000000000..d090b5d512e
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/kg.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/kh.png b/v2rayN/v2rayN/Resources/Flags/kh.png
new file mode 100644
index 00000000000..6827bb1aa6c
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/kh.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ki.png b/v2rayN/v2rayN/Resources/Flags/ki.png
new file mode 100644
index 00000000000..84be1f2d044
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ki.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/km.png b/v2rayN/v2rayN/Resources/Flags/km.png
new file mode 100644
index 00000000000..03872c51bf6
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/km.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/kn.png b/v2rayN/v2rayN/Resources/Flags/kn.png
new file mode 100644
index 00000000000..a98fd3c6524
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/kn.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/kp.png b/v2rayN/v2rayN/Resources/Flags/kp.png
new file mode 100644
index 00000000000..49295c4734e
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/kp.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/kr.png b/v2rayN/v2rayN/Resources/Flags/kr.png
new file mode 100644
index 00000000000..c955479d40d
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/kr.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/kw.png b/v2rayN/v2rayN/Resources/Flags/kw.png
new file mode 100644
index 00000000000..ae2b1bd73b8
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/kw.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ky.png b/v2rayN/v2rayN/Resources/Flags/ky.png
new file mode 100644
index 00000000000..155596b1173
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ky.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/kz.png b/v2rayN/v2rayN/Resources/Flags/kz.png
new file mode 100644
index 00000000000..e171af106d3
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/kz.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/la.png b/v2rayN/v2rayN/Resources/Flags/la.png
new file mode 100644
index 00000000000..18c5f988a0a
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/la.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/lb.png b/v2rayN/v2rayN/Resources/Flags/lb.png
new file mode 100644
index 00000000000..94d173b1ea0
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/lb.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/lc.png b/v2rayN/v2rayN/Resources/Flags/lc.png
new file mode 100644
index 00000000000..73ec2343018
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/lc.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/li.png b/v2rayN/v2rayN/Resources/Flags/li.png
new file mode 100644
index 00000000000..333be3ab466
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/li.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/lk.png b/v2rayN/v2rayN/Resources/Flags/lk.png
new file mode 100644
index 00000000000..dad9a961168
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/lk.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/lr.png b/v2rayN/v2rayN/Resources/Flags/lr.png
new file mode 100644
index 00000000000..ce04f6b8664
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/lr.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ls.png b/v2rayN/v2rayN/Resources/Flags/ls.png
new file mode 100644
index 00000000000..fb0e566f67d
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ls.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/lt.png b/v2rayN/v2rayN/Resources/Flags/lt.png
new file mode 100644
index 00000000000..ba5a4eb6f08
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/lt.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/lu.png b/v2rayN/v2rayN/Resources/Flags/lu.png
new file mode 100644
index 00000000000..a61c91e2db5
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/lu.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/lv.png b/v2rayN/v2rayN/Resources/Flags/lv.png
new file mode 100644
index 00000000000..6d7841bd313
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/lv.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ly.png b/v2rayN/v2rayN/Resources/Flags/ly.png
new file mode 100644
index 00000000000..f4652ffb981
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ly.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ma.png b/v2rayN/v2rayN/Resources/Flags/ma.png
new file mode 100644
index 00000000000..b3010e2f327
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ma.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/mc.png b/v2rayN/v2rayN/Resources/Flags/mc.png
new file mode 100644
index 00000000000..b050b05ad95
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/mc.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/md.png b/v2rayN/v2rayN/Resources/Flags/md.png
new file mode 100644
index 00000000000..c039263ec95
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/md.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/me.png b/v2rayN/v2rayN/Resources/Flags/me.png
new file mode 100644
index 00000000000..ca14b7b6d6c
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/me.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/mf.png b/v2rayN/v2rayN/Resources/Flags/mf.png
new file mode 100644
index 00000000000..63871f58be1
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/mf.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/mg.png b/v2rayN/v2rayN/Resources/Flags/mg.png
new file mode 100644
index 00000000000..61568f9a6a4
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/mg.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/mh.png b/v2rayN/v2rayN/Resources/Flags/mh.png
new file mode 100644
index 00000000000..33645bd0b9d
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/mh.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/mk.png b/v2rayN/v2rayN/Resources/Flags/mk.png
new file mode 100644
index 00000000000..865b3729dfc
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/mk.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ml.png b/v2rayN/v2rayN/Resources/Flags/ml.png
new file mode 100644
index 00000000000..0eb57364718
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ml.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/mm.png b/v2rayN/v2rayN/Resources/Flags/mm.png
new file mode 100644
index 00000000000..7e53f51f4b4
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/mm.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/mn.png b/v2rayN/v2rayN/Resources/Flags/mn.png
new file mode 100644
index 00000000000..dd041c4d0cb
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/mn.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/mo.png b/v2rayN/v2rayN/Resources/Flags/mo.png
new file mode 100644
index 00000000000..e49a2bd8a66
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/mo.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/mp.png b/v2rayN/v2rayN/Resources/Flags/mp.png
new file mode 100644
index 00000000000..9cde75868f1
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/mp.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/mq.png b/v2rayN/v2rayN/Resources/Flags/mq.png
new file mode 100644
index 00000000000..1035eca708d
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/mq.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/mr.png b/v2rayN/v2rayN/Resources/Flags/mr.png
new file mode 100644
index 00000000000..87ac626e7d3
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/mr.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ms.png b/v2rayN/v2rayN/Resources/Flags/ms.png
new file mode 100644
index 00000000000..a0c9d1ed821
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ms.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/mt.png b/v2rayN/v2rayN/Resources/Flags/mt.png
new file mode 100644
index 00000000000..61798a96664
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/mt.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/mu.png b/v2rayN/v2rayN/Resources/Flags/mu.png
new file mode 100644
index 00000000000..25af4863b9f
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/mu.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/mv.png b/v2rayN/v2rayN/Resources/Flags/mv.png
new file mode 100644
index 00000000000..2dd059732d5
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/mv.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/mw.png b/v2rayN/v2rayN/Resources/Flags/mw.png
new file mode 100644
index 00000000000..e9d9b3e4af3
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/mw.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/mx.png b/v2rayN/v2rayN/Resources/Flags/mx.png
new file mode 100644
index 00000000000..4b2cb853437
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/mx.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/my.png b/v2rayN/v2rayN/Resources/Flags/my.png
new file mode 100644
index 00000000000..66b81e96f97
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/my.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/mz.png b/v2rayN/v2rayN/Resources/Flags/mz.png
new file mode 100644
index 00000000000..84d9085d640
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/mz.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/na.png b/v2rayN/v2rayN/Resources/Flags/na.png
new file mode 100644
index 00000000000..f567744d66f
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/na.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/nc.png b/v2rayN/v2rayN/Resources/Flags/nc.png
new file mode 100644
index 00000000000..69c93f61d4b
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/nc.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ne.png b/v2rayN/v2rayN/Resources/Flags/ne.png
new file mode 100644
index 00000000000..23aa4a4f2bc
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ne.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/nf.png b/v2rayN/v2rayN/Resources/Flags/nf.png
new file mode 100644
index 00000000000..3e5302de136
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/nf.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ng.png b/v2rayN/v2rayN/Resources/Flags/ng.png
new file mode 100644
index 00000000000..d11b535ae9b
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ng.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ni.png b/v2rayN/v2rayN/Resources/Flags/ni.png
new file mode 100644
index 00000000000..1ef925b0ed6
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ni.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/nl.png b/v2rayN/v2rayN/Resources/Flags/nl.png
new file mode 100644
index 00000000000..c11308b780f
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/nl.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/no.png b/v2rayN/v2rayN/Resources/Flags/no.png
new file mode 100644
index 00000000000..fd96041fc87
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/no.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/np.png b/v2rayN/v2rayN/Resources/Flags/np.png
new file mode 100644
index 00000000000..11e35e7d377
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/np.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/nr.png b/v2rayN/v2rayN/Resources/Flags/nr.png
new file mode 100644
index 00000000000..1daca6a708b
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/nr.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/nu.png b/v2rayN/v2rayN/Resources/Flags/nu.png
new file mode 100644
index 00000000000..73b3caf8727
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/nu.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/nz.png b/v2rayN/v2rayN/Resources/Flags/nz.png
new file mode 100644
index 00000000000..e8876993d72
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/nz.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/om.png b/v2rayN/v2rayN/Resources/Flags/om.png
new file mode 100644
index 00000000000..7a7613af21a
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/om.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/pa.png b/v2rayN/v2rayN/Resources/Flags/pa.png
new file mode 100644
index 00000000000..86b8a7132c3
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/pa.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/pe.png b/v2rayN/v2rayN/Resources/Flags/pe.png
new file mode 100644
index 00000000000..d037bee47bd
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/pe.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/pf.png b/v2rayN/v2rayN/Resources/Flags/pf.png
new file mode 100644
index 00000000000..e3ffc8fba73
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/pf.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/pg.png b/v2rayN/v2rayN/Resources/Flags/pg.png
new file mode 100644
index 00000000000..d9d97ef355a
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/pg.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ph.png b/v2rayN/v2rayN/Resources/Flags/ph.png
new file mode 100644
index 00000000000..c3cdfc74235
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ph.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/pk.png b/v2rayN/v2rayN/Resources/Flags/pk.png
new file mode 100644
index 00000000000..538d9f9fe42
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/pk.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/pl.png b/v2rayN/v2rayN/Resources/Flags/pl.png
new file mode 100644
index 00000000000..b85e49f0b70
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/pl.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/pm.png b/v2rayN/v2rayN/Resources/Flags/pm.png
new file mode 100644
index 00000000000..35352271d75
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/pm.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/pn.png b/v2rayN/v2rayN/Resources/Flags/pn.png
new file mode 100644
index 00000000000..84df88574c9
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/pn.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/pr.png b/v2rayN/v2rayN/Resources/Flags/pr.png
new file mode 100644
index 00000000000..0c1ed3da441
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/pr.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ps.png b/v2rayN/v2rayN/Resources/Flags/ps.png
new file mode 100644
index 00000000000..ba36a34725f
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ps.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/pt.png b/v2rayN/v2rayN/Resources/Flags/pt.png
new file mode 100644
index 00000000000..fa26bd2e384
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/pt.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/pw.png b/v2rayN/v2rayN/Resources/Flags/pw.png
new file mode 100644
index 00000000000..d71289b01d6
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/pw.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/py.png b/v2rayN/v2rayN/Resources/Flags/py.png
new file mode 100644
index 00000000000..c1bf1ccb5e0
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/py.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/qa.png b/v2rayN/v2rayN/Resources/Flags/qa.png
new file mode 100644
index 00000000000..4b19d4e7e06
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/qa.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/re.png b/v2rayN/v2rayN/Resources/Flags/re.png
new file mode 100644
index 00000000000..c1c468d7eee
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/re.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ro.png b/v2rayN/v2rayN/Resources/Flags/ro.png
new file mode 100644
index 00000000000..2ffa695e99e
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ro.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/rs.png b/v2rayN/v2rayN/Resources/Flags/rs.png
new file mode 100644
index 00000000000..5673b0e4532
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/rs.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ru.png b/v2rayN/v2rayN/Resources/Flags/ru.png
new file mode 100644
index 00000000000..ec551ba6170
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ru.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/rw.png b/v2rayN/v2rayN/Resources/Flags/rw.png
new file mode 100644
index 00000000000..0377a9a886a
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/rw.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/sa.png b/v2rayN/v2rayN/Resources/Flags/sa.png
new file mode 100644
index 00000000000..756688f1efc
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/sa.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/sb.png b/v2rayN/v2rayN/Resources/Flags/sb.png
new file mode 100644
index 00000000000..53cc1c9100a
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/sb.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/sc.png b/v2rayN/v2rayN/Resources/Flags/sc.png
new file mode 100644
index 00000000000..a05648e74ee
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/sc.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/sd.png b/v2rayN/v2rayN/Resources/Flags/sd.png
new file mode 100644
index 00000000000..fcffa813387
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/sd.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/se.png b/v2rayN/v2rayN/Resources/Flags/se.png
new file mode 100644
index 00000000000..a76d07726a8
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/se.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/sg.png b/v2rayN/v2rayN/Resources/Flags/sg.png
new file mode 100644
index 00000000000..71ffebc316d
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/sg.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/sh.png b/v2rayN/v2rayN/Resources/Flags/sh.png
new file mode 100644
index 00000000000..629aeb26fb0
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/sh.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/si.png b/v2rayN/v2rayN/Resources/Flags/si.png
new file mode 100644
index 00000000000..4f3b13b01a3
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/si.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/sj.png b/v2rayN/v2rayN/Resources/Flags/sj.png
new file mode 100644
index 00000000000..fd96041fc87
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/sj.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/sk.png b/v2rayN/v2rayN/Resources/Flags/sk.png
new file mode 100644
index 00000000000..04662b9118d
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/sk.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/sl.png b/v2rayN/v2rayN/Resources/Flags/sl.png
new file mode 100644
index 00000000000..c0f3ca0bde6
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/sl.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/sm.png b/v2rayN/v2rayN/Resources/Flags/sm.png
new file mode 100644
index 00000000000..9cdbbb660f2
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/sm.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/sn.png b/v2rayN/v2rayN/Resources/Flags/sn.png
new file mode 100644
index 00000000000..38f9d68b993
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/sn.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/so.png b/v2rayN/v2rayN/Resources/Flags/so.png
new file mode 100644
index 00000000000..b5e41a520e6
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/so.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/sr.png b/v2rayN/v2rayN/Resources/Flags/sr.png
new file mode 100644
index 00000000000..27bcfec0261
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/sr.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ss.png b/v2rayN/v2rayN/Resources/Flags/ss.png
new file mode 100644
index 00000000000..57d775dcaa6
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ss.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/st.png b/v2rayN/v2rayN/Resources/Flags/st.png
new file mode 100644
index 00000000000..375f3c250a7
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/st.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/sv.png b/v2rayN/v2rayN/Resources/Flags/sv.png
new file mode 100644
index 00000000000..47ca72ec23c
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/sv.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/sx.png b/v2rayN/v2rayN/Resources/Flags/sx.png
new file mode 100644
index 00000000000..6a97fd290b1
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/sx.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/sy.png b/v2rayN/v2rayN/Resources/Flags/sy.png
new file mode 100644
index 00000000000..a62736e3d2c
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/sy.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/sz.png b/v2rayN/v2rayN/Resources/Flags/sz.png
new file mode 100644
index 00000000000..b690f9fb84e
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/sz.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/tc.png b/v2rayN/v2rayN/Resources/Flags/tc.png
new file mode 100644
index 00000000000..6bd0f15f6b7
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/tc.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/td.png b/v2rayN/v2rayN/Resources/Flags/td.png
new file mode 100644
index 00000000000..0b3fa52e9ec
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/td.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/tf.png b/v2rayN/v2rayN/Resources/Flags/tf.png
new file mode 100644
index 00000000000..5cd4cbf4d4e
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/tf.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/tg.png b/v2rayN/v2rayN/Resources/Flags/tg.png
new file mode 100644
index 00000000000..c4c18726052
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/tg.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/th.png b/v2rayN/v2rayN/Resources/Flags/th.png
new file mode 100644
index 00000000000..fefe827b79d
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/th.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/tj.png b/v2rayN/v2rayN/Resources/Flags/tj.png
new file mode 100644
index 00000000000..5fa1909a335
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/tj.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/tk.png b/v2rayN/v2rayN/Resources/Flags/tk.png
new file mode 100644
index 00000000000..5621dc244c6
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/tk.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/tl.png b/v2rayN/v2rayN/Resources/Flags/tl.png
new file mode 100644
index 00000000000..12f78d86099
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/tl.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/tm.png b/v2rayN/v2rayN/Resources/Flags/tm.png
new file mode 100644
index 00000000000..3817c5d72e5
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/tm.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/tn.png b/v2rayN/v2rayN/Resources/Flags/tn.png
new file mode 100644
index 00000000000..c910bfb3af1
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/tn.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/to.png b/v2rayN/v2rayN/Resources/Flags/to.png
new file mode 100644
index 00000000000..bdf4c8130ff
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/to.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/tr.png b/v2rayN/v2rayN/Resources/Flags/tr.png
new file mode 100644
index 00000000000..ebbb4c7a0eb
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/tr.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/tt.png b/v2rayN/v2rayN/Resources/Flags/tt.png
new file mode 100644
index 00000000000..59344cb3ab0
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/tt.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/tv.png b/v2rayN/v2rayN/Resources/Flags/tv.png
new file mode 100644
index 00000000000..6f900c26416
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/tv.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/tw.png b/v2rayN/v2rayN/Resources/Flags/tw.png
new file mode 100644
index 00000000000..11ce8d4d620
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/tw.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/tz.png b/v2rayN/v2rayN/Resources/Flags/tz.png
new file mode 100644
index 00000000000..4bc46303b0a
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/tz.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ua.png b/v2rayN/v2rayN/Resources/Flags/ua.png
new file mode 100644
index 00000000000..fe466382c2a
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ua.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ug.png b/v2rayN/v2rayN/Resources/Flags/ug.png
new file mode 100644
index 00000000000..282bf5010d0
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ug.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/um.png b/v2rayN/v2rayN/Resources/Flags/um.png
new file mode 100644
index 00000000000..0025bf204c6
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/um.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/us.png b/v2rayN/v2rayN/Resources/Flags/us.png
new file mode 100644
index 00000000000..0025bf204c6
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/us.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/uy.png b/v2rayN/v2rayN/Resources/Flags/uy.png
new file mode 100644
index 00000000000..58b1b6930ee
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/uy.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/uz.png b/v2rayN/v2rayN/Resources/Flags/uz.png
new file mode 100644
index 00000000000..b776dcac51a
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/uz.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/va.png b/v2rayN/v2rayN/Resources/Flags/va.png
new file mode 100644
index 00000000000..957c7b0ecd9
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/va.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/vc.png b/v2rayN/v2rayN/Resources/Flags/vc.png
new file mode 100644
index 00000000000..598c38bd254
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/vc.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ve.png b/v2rayN/v2rayN/Resources/Flags/ve.png
new file mode 100644
index 00000000000..9e83fa72d8b
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ve.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/vg.png b/v2rayN/v2rayN/Resources/Flags/vg.png
new file mode 100644
index 00000000000..62cec7ca7cd
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/vg.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/vn.png b/v2rayN/v2rayN/Resources/Flags/vn.png
new file mode 100644
index 00000000000..516a8fd3f44
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/vn.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/vu.png b/v2rayN/v2rayN/Resources/Flags/vu.png
new file mode 100644
index 00000000000..e24849c1a68
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/vu.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/wf.png b/v2rayN/v2rayN/Resources/Flags/wf.png
new file mode 100644
index 00000000000..eefdeb2ff3d
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/wf.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ws.png b/v2rayN/v2rayN/Resources/Flags/ws.png
new file mode 100644
index 00000000000..5e71a684493
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ws.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/ye.png b/v2rayN/v2rayN/Resources/Flags/ye.png
new file mode 100644
index 00000000000..65f284da8c7
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/ye.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/za.png b/v2rayN/v2rayN/Resources/Flags/za.png
new file mode 100644
index 00000000000..b65fd375d1a
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/za.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/zm.png b/v2rayN/v2rayN/Resources/Flags/zm.png
new file mode 100644
index 00000000000..51b22415eff
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/zm.png differ
diff --git a/v2rayN/v2rayN/Resources/Flags/zw.png b/v2rayN/v2rayN/Resources/Flags/zw.png
new file mode 100644
index 00000000000..11378638e59
Binary files /dev/null and b/v2rayN/v2rayN/Resources/Flags/zw.png differ
diff --git a/v2rayN/v2rayN/Views/ProfilesView.xaml b/v2rayN/v2rayN/Views/ProfilesView.xaml
index 47e3098b4f6..0d63088d8b8 100644
--- a/v2rayN/v2rayN/Views/ProfilesView.xaml
+++ b/v2rayN/v2rayN/Views/ProfilesView.xaml
@@ -346,12 +346,28 @@
ExName="TodayUp"
Header="{x:Static resx:ResUI.LvTodayUploadDataAmount}" />
-
+ Header="{x:Static resx:ResUI.LvTestIpInfo}">
+
+
+
+
+
+
+
+
+
myCol.ExName,
+ MyDGTemplateColumn tplCol => tplCol.ExName,
+ _ => string.Empty
+ };
ViewModel?.SortServer(colName);
}
@@ -333,26 +338,33 @@ private void RestoreUI()
var displayIndex = 0;
foreach (var item in lvColumnItem)
{
- foreach (var item2 in lstProfiles.Columns.Cast())
+ foreach (var col in lstProfiles.Columns)
{
- if (item2.ExName == item.Name)
+ var name = col switch
+ {
+ MyDGTextColumn myCol => myCol.ExName,
+ MyDGTemplateColumn tplCol => tplCol.ExName,
+ _ => null
+ };
+
+ if (name != null && name.Equals(item.Name, StringComparison.CurrentCultureIgnoreCase))
{
if (item.Width < 0)
{
- item2.Visibility = Visibility.Hidden;
+ col.Visibility = Visibility.Hidden;
}
else
{
- item2.Width = item.Width;
- item2.DisplayIndex = displayIndex++;
+ col.Width = item.Width;
+ col.DisplayIndex = displayIndex++;
}
if (item.Name.StartsWith("to", StringComparison.CurrentCultureIgnoreCase))
{
- item2.Visibility = _config.GuiItem.EnableStatistics ? Visibility.Visible : Visibility.Hidden;
+ col.Visibility = _config.GuiItem.EnableStatistics ? Visibility.Visible : Visibility.Hidden;
}
if (item.Name.Equals("IpInfo", StringComparison.CurrentCultureIgnoreCase))
{
- item2.Visibility = _config.SpeedTestItem.IPAPIUrl.IsNotEmpty() && !_config.UiItem.HideColumnIpInfo ? Visibility.Visible : Visibility.Hidden;
+ col.Visibility = _config.SpeedTestItem.IPAPIUrl.IsNotEmpty() && !_config.UiItem.HideColumnIpInfo ? Visibility.Visible : Visibility.Hidden;
}
}
}
@@ -369,14 +381,24 @@ private void StorageUI()
try
{
List lvColumnItem = [];
- foreach (var item2 in lstProfiles.Columns.Cast())
+ foreach (var col in lstProfiles.Columns)
{
- lvColumnItem.Add(new()
+ var name = col switch
{
- Name = item2.ExName,
- Width = (int)(item2.Visibility == Visibility.Visible ? item2.ActualWidth : -1),
- Index = item2.DisplayIndex
- });
+ MyDGTextColumn myCol => myCol.ExName,
+ MyDGTemplateColumn tplCol => tplCol.ExName,
+ _ => null
+ };
+
+ if (name != null)
+ {
+ lvColumnItem.Add(new()
+ {
+ Name = name,
+ Width = (int)(col.Visibility == Visibility.Visible ? col.ActualWidth : -1),
+ Index = col.DisplayIndex
+ });
+ }
}
_config.UiItem.MainColumnItem = lvColumnItem;
}
diff --git a/v2rayN/v2rayN/v2rayN.csproj b/v2rayN/v2rayN/v2rayN.csproj
index d8863845ef7..cc15bfad4e1 100644
--- a/v2rayN/v2rayN/v2rayN.csproj
+++ b/v2rayN/v2rayN/v2rayN.csproj
@@ -32,6 +32,9 @@
+
+ PreserveNewest
+