diff --git a/MiraiSliderTool.sln b/MiraiSliderTool.sln new file mode 100644 index 0000000..392309f --- /dev/null +++ b/MiraiSliderTool.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.32228.343 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MiraiSliderTool", "MiraiSliderTool\MiraiSliderTool.csproj", "{B68CB7E7-5705-4F7C-BAAE-D12586FF71F6}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B68CB7E7-5705-4F7C-BAAE-D12586FF71F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B68CB7E7-5705-4F7C-BAAE-D12586FF71F6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B68CB7E7-5705-4F7C-BAAE-D12586FF71F6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B68CB7E7-5705-4F7C-BAAE-D12586FF71F6}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {367EE9FB-FCFD-4466-90F5-6316D520A2D5} + EndGlobalSection +EndGlobal diff --git a/MiraiSliderTool/App.config b/MiraiSliderTool/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/MiraiSliderTool/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/MiraiSliderTool/BrowserForm.Designer.cs b/MiraiSliderTool/BrowserForm.Designer.cs new file mode 100644 index 0000000..8f8588b --- /dev/null +++ b/MiraiSliderTool/BrowserForm.Designer.cs @@ -0,0 +1,60 @@ + +namespace MiraiSliderTool +{ + partial class BrowserForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panel1 = new System.Windows.Forms.Panel(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.Location = new System.Drawing.Point(3, 3); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(380, 310); + this.panel1.TabIndex = 1; + // + // BrowserForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(387, 317); + this.Controls.Add(this.panel1); + this.Name = "BrowserForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "请完成验证码!"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.BrowserForm_FormClosing); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel panel1; + } +} \ No newline at end of file diff --git a/MiraiSliderTool/BrowserForm.cs b/MiraiSliderTool/BrowserForm.cs new file mode 100644 index 0000000..5a0904c --- /dev/null +++ b/MiraiSliderTool/BrowserForm.cs @@ -0,0 +1,83 @@ +using CefSharp; +using CefSharp.WinForms; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MiraiSliderTool +{ + public partial class BrowserForm : Form + { + private ChromiumWebBrowser browser; + public static BrowserForm form; + + public BrowserForm() + { + InitializeComponent(); + InitBrowser(); + } + + private void InitBrowser() + { + try + { + Cef.Initialize(new CefSettings()); + browser = new ChromiumWebBrowser(); + browser.Parent = panel1; + browser.Dock = DockStyle.Fill; + browser.RequestHandler = new CustomRequestHandler(); + + form = this; + } + catch (Exception ex) + { + //throw ex; + } + } + + public void LoadUrl(string url) + { + browser.LoadUrl(url); + } + + private void BrowserForm_FormClosing(object sender, FormClosingEventArgs e) + { + e.Cancel = true; + Visible = false; + } + public static void showTicket(String ticket) { + BrowserForm.form.BeginInvoke(new Action(() => { BrowserForm.form.Visible = false; })); + DialogResult dra = MessageBox.Show("已完成滑块条验证码,是否复制内容?", "Tips", MessageBoxButtons.YesNo, MessageBoxIcon.Question); + if (dra == DialogResult.Yes) { + DialogResult drb = MessageBox.Show("点击是仅复制Ticket,点击否复制原始内容", "Tips", MessageBoxButtons.YesNo, MessageBoxIcon.Question); + if (drb == DialogResult.Yes) + { + JObject o= JObject.Parse(ticket); + try + { + Clipboard.SetText((string)o["ticket"]); + } + catch { + } + + } + else if (drb == DialogResult.No) { + try + { + Clipboard.SetText(ticket); + } + catch + { + } + } + } + } + } +} diff --git a/MiraiSliderTool/BrowserForm.resx b/MiraiSliderTool/BrowserForm.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/MiraiSliderTool/BrowserForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/MiraiSliderTool/Capture.cs b/MiraiSliderTool/Capture.cs new file mode 100644 index 0000000..c93ac89 --- /dev/null +++ b/MiraiSliderTool/Capture.cs @@ -0,0 +1,146 @@ +using CefSharp; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MiraiSliderTool +{ + + public class CustomResourceRequestHandler : CefSharp.Handler.ResourceRequestHandler + { + + protected override IResponseFilter GetResourceResponseFilter(IWebBrowser browserControl, IBrowser browser, IFrame frame, +IRequest request, IResponse response) + { + + if (request.Url.IndexOf("cap_union_new_verify") != -1) + { + var filter = FilterManager.CreateFilter(request.Identifier.ToString()); + return filter; + } + else { + return null; + } + + + } + + protected override void OnResourceLoadComplete(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, + IResponse response, UrlRequestStatus status, long receivedContentLength) + { + + + //Trace.WriteLine(request.Url); + if (request.Url.IndexOf("cap_union_new_verify") != -1) + { + var filter = FilterManager.GetFileter(request.Identifier.ToString()) as CustomFilter; + if (filter != null) + { + ASCIIEncoding encoding = new ASCIIEncoding(); + string data = encoding.GetString(filter.DataAll.ToArray()); + BrowserForm.showTicket(data); + } + } + } + } + + public class CustomFilter : IResponseFilter + { + public List DataAll = new List(); + + public FilterStatus Filter(System.IO.Stream dataIn, out long dataInRead, System.IO.Stream dataOut, out long dataOutWritten) + { + try + { + if (dataIn == null) + { + dataInRead = 0; + dataOutWritten = 0; + + return FilterStatus.Done; + } + if (dataIn.Length > dataOut.Length) + { + dataInRead = dataIn.Length; + dataOutWritten = dataOut.Length; + return FilterStatus.Done; + } + + dataInRead = dataIn.Length; + dataOutWritten = Math.Min(dataInRead, dataOut.Length); + + dataIn.CopyTo(dataOut); + dataIn.Seek(0, SeekOrigin.Begin); + byte[] bs = new byte[dataIn.Length]; + dataIn.Read(bs, 0, bs.Length); + DataAll.AddRange(bs); + + dataInRead = dataIn.Length; + dataOutWritten = dataIn.Length; + + return FilterStatus.NeedMoreData; + } + catch (Exception ex) + { + dataInRead = dataIn.Length; + dataOutWritten = dataIn.Length; + //throw ex; + return FilterStatus.Done; + } + } + + public bool InitFilter() + { + return true; + } + + public void Dispose() + { + + } + } + + public class FilterManager + { + private static Dictionary dataList = new Dictionary(); + + public static IResponseFilter CreateFilter(string guid) + { + lock (dataList) + { + var filter = new CustomFilter(); + dataList.Add(guid, filter); + + return filter; + } + } + + public static IResponseFilter GetFileter(string guid) + { + lock (dataList) + { + if (dataList.ContainsKey(guid)) + { + return dataList[guid]; + } + else + { + return null; + } + + } + } + } + + public class CustomRequestHandler : CefSharp.Handler.RequestHandler + { + protected override IResourceRequestHandler GetResourceRequestHandler(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool isNavigation, bool isDownload, string requestInitiator, ref bool disableDefaultHandling) + { + return new CustomResourceRequestHandler(); + } + } + +} diff --git a/MiraiSliderTool/MainForm.Designer.cs b/MiraiSliderTool/MainForm.Designer.cs new file mode 100644 index 0000000..0a470ec --- /dev/null +++ b/MiraiSliderTool/MainForm.Designer.cs @@ -0,0 +1,89 @@ + +namespace MiraiSliderTool +{ + partial class MainForm + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows 窗体设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.button1 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(13, 20); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(71, 17); + this.label1.TabIndex = 1; + this.label1.Text = "验证码地址:"; + // + // textBox1 + // + this.textBox1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(86, 20); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(313, 135); + this.textBox1.TabIndex = 2; + // + // button1 + // + this.button1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button1.Location = new System.Drawing.Point(324, 161); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(75, 23); + this.button1.TabIndex = 3; + this.button1.Text = "Start"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // MainForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(414, 196); + this.Controls.Add(this.button1); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label1); + this.Name = "MainForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Mirai滑块验证码工具"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Button button1; + } +} + diff --git a/MiraiSliderTool/MainForm.cs b/MiraiSliderTool/MainForm.cs new file mode 100644 index 0000000..49103cf --- /dev/null +++ b/MiraiSliderTool/MainForm.cs @@ -0,0 +1,42 @@ +using CefSharp; +using CefSharp.WinForms; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MiraiSliderTool +{ + public partial class MainForm : Form + { + private BrowserForm browserForm; + public MainForm() + { + InitializeComponent(); + + } + + + private void button1_Click(object sender, EventArgs e) + { + //browser.LoadUrl(textBox1.Text); + if (browserForm == null ) + { + browserForm = new BrowserForm(); + //browserForm.ShowDialog(); + } + browserForm.Visible = true; + browserForm.Focus(); + browserForm.LoadUrl(textBox1.Text); + + } + + } +} diff --git a/MiraiSliderTool/MainForm.resx b/MiraiSliderTool/MainForm.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/MiraiSliderTool/MainForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/MiraiSliderTool/MiraiSliderTool.csproj b/MiraiSliderTool/MiraiSliderTool.csproj new file mode 100644 index 0000000..b7f46fd --- /dev/null +++ b/MiraiSliderTool/MiraiSliderTool.csproj @@ -0,0 +1,121 @@ + + + + + + + + Debug + AnyCPU + {B68CB7E7-5705-4F7C-BAAE-D12586FF71F6} + WinExe + MiraiSliderTool + MiraiSliderTool + v4.7.2 + 512 + true + true + + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\CefSharp.Common.99.2.140\lib\net452\CefSharp.dll + + + ..\packages\CefSharp.Common.99.2.140\lib\net452\CefSharp.Core.dll + + + ..\packages\CefSharp.WinForms.99.2.140\lib\net462\CefSharp.WinForms.dll + + + ..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll + + + + + + + + + + + + + + + + Form + + + BrowserForm.cs + + + + Form + + + MainForm.cs + + + + + BrowserForm.cs + + + MainForm.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + 这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。 + + + + + + + + \ No newline at end of file diff --git a/MiraiSliderTool/Program.cs b/MiraiSliderTool/Program.cs new file mode 100644 index 0000000..1ddae3d --- /dev/null +++ b/MiraiSliderTool/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MiraiSliderTool +{ + static class Program + { + /// + /// 应用程序的主入口点。 + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new MainForm()); + } + } +} diff --git a/MiraiSliderTool/Properties/AssemblyInfo.cs b/MiraiSliderTool/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..93fdf2c --- /dev/null +++ b/MiraiSliderTool/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("MiraiSliderTool")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MiraiSliderTool")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("b68cb7e7-5705-4f7c-baae-d12586ff71f6")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/MiraiSliderTool/Properties/Resources.Designer.cs b/MiraiSliderTool/Properties/Resources.Designer.cs new file mode 100644 index 0000000..8079a43 --- /dev/null +++ b/MiraiSliderTool/Properties/Resources.Designer.cs @@ -0,0 +1,70 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本: 4.0.30319.42000 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + + +namespace MiraiSliderTool.Properties +{ + /// + /// 强类型资源类,用于查找本地化字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或删除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// 返回此类使用的缓存 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MiraiSliderTool.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 重写当前线程的 CurrentUICulture 属性,对 + /// 使用此强类型资源类的所有资源查找执行重写。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/MiraiSliderTool/Properties/Resources.resx b/MiraiSliderTool/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/MiraiSliderTool/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/MiraiSliderTool/Properties/Settings.Designer.cs b/MiraiSliderTool/Properties/Settings.Designer.cs new file mode 100644 index 0000000..29f9672 --- /dev/null +++ b/MiraiSliderTool/Properties/Settings.Designer.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// 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 MiraiSliderTool.Properties +{ + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/MiraiSliderTool/Properties/Settings.settings b/MiraiSliderTool/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/MiraiSliderTool/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/MiraiSliderTool/packages.config b/MiraiSliderTool/packages.config new file mode 100644 index 0000000..8c58dbe --- /dev/null +++ b/MiraiSliderTool/packages.config @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file