diff --git a/AutoLikerCefSharpWpf.sln b/AutoLikerCefSharpWpf.sln
new file mode 100644
index 0000000..7a6fe90
--- /dev/null
+++ b/AutoLikerCefSharpWpf.sln
@@ -0,0 +1,37 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.7.34024.191
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutoLikerCefSharpWpf", "AutoLikerCefSharpWpf\AutoLikerCefSharpWpf.csproj", "{58980443-55E6-40F1-9E76-502C34BDB308}"
+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
+ {58980443-55E6-40F1-9E76-502C34BDB308}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {58980443-55E6-40F1-9E76-502C34BDB308}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {58980443-55E6-40F1-9E76-502C34BDB308}.Debug|x64.ActiveCfg = Debug|x64
+ {58980443-55E6-40F1-9E76-502C34BDB308}.Debug|x64.Build.0 = Debug|x64
+ {58980443-55E6-40F1-9E76-502C34BDB308}.Debug|x86.ActiveCfg = Debug|x86
+ {58980443-55E6-40F1-9E76-502C34BDB308}.Debug|x86.Build.0 = Debug|x86
+ {58980443-55E6-40F1-9E76-502C34BDB308}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {58980443-55E6-40F1-9E76-502C34BDB308}.Release|Any CPU.Build.0 = Release|Any CPU
+ {58980443-55E6-40F1-9E76-502C34BDB308}.Release|x64.ActiveCfg = Release|x64
+ {58980443-55E6-40F1-9E76-502C34BDB308}.Release|x64.Build.0 = Release|x64
+ {58980443-55E6-40F1-9E76-502C34BDB308}.Release|x86.ActiveCfg = Release|x86
+ {58980443-55E6-40F1-9E76-502C34BDB308}.Release|x86.Build.0 = Release|x86
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {B92A8556-B206-43A1-B2A8-670B521E28FD}
+ EndGlobalSection
+EndGlobal
diff --git a/AutoLikerCefSharpWpf/App.config b/AutoLikerCefSharpWpf/App.config
new file mode 100644
index 0000000..56efbc7
--- /dev/null
+++ b/AutoLikerCefSharpWpf/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AutoLikerCefSharpWpf/App.xaml b/AutoLikerCefSharpWpf/App.xaml
new file mode 100644
index 0000000..74d7596
--- /dev/null
+++ b/AutoLikerCefSharpWpf/App.xaml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
diff --git a/AutoLikerCefSharpWpf/App.xaml.cs b/AutoLikerCefSharpWpf/App.xaml.cs
new file mode 100644
index 0000000..7160fc1
--- /dev/null
+++ b/AutoLikerCefSharpWpf/App.xaml.cs
@@ -0,0 +1,45 @@
+using CefSharp;
+using CefSharp.Wpf;
+using System;
+using System.IO;
+using System.Windows;
+
+namespace AutoLikerCefSharpWpf
+{
+ public partial class App : Application
+ {
+ public App()
+ {
+#if ANYCPU
+ //Only required for PlatformTarget of AnyCPU
+ CefRuntime.SubscribeAnyCpuAssemblyResolver();
+#endif
+ var settings = new CefSettings()
+ {
+ //By default CefSharp will use an in-memory cache, you need to specify a Cache Folder to persist data
+ CachePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "CefSharp\\Cache")
+ };
+
+ //Example of setting a command line argument
+ //Enables WebRTC
+ // - CEF Doesn't currently support permissions on a per browser basis see https://bitbucket.org/chromiumembedded/cef/issues/2582/allow-run-time-handling-of-media-access
+ // - CEF Doesn't currently support displaying a UI for media access permissions
+ //
+ //NOTE: WebRTC Device Id's aren't persisted as they are in Chrome see https://bitbucket.org/chromiumembedded/cef/issues/2064/persist-webrtc-deviceids-across-restart
+ settings.CefCommandLineArgs.Add("enable-media-stream");
+ //https://peter.sh/experiments/chromium-command-line-switches/#use-fake-ui-for-media-stream
+ settings.CefCommandLineArgs.Add("use-fake-ui-for-media-stream");
+ //For screen sharing add (see https://bitbucket.org/chromiumembedded/cef/issues/2582/allow-run-time-handling-of-media-access#comment-58677180)
+ settings.CefCommandLineArgs.Add("enable-usermedia-screen-capturing");
+
+ //Example of checking if a call to Cef.Initialize has already been made, we require this for
+ //our .Net 5.0 Single File Publish example, you don't typically need to perform this check
+ //if you call Cef.Initialze within your WPF App constructor.
+ if (!Cef.IsInitialized)
+ {
+ //Perform dependency check to make sure all relevant resources are in our output directory.
+ Cef.Initialize(settings, performDependencyCheck: true, browserProcessHandler: null);
+ }
+ }
+ }
+}
diff --git a/AutoLikerCefSharpWpf/Assets/jquery-3.7.1.js b/AutoLikerCefSharpWpf/Assets/jquery-3.7.1.js
new file mode 100644
index 0000000..b856d2c
--- /dev/null
+++ b/AutoLikerCefSharpWpf/Assets/jquery-3.7.1.js
@@ -0,0 +1,10716 @@
+/*!
+ * jQuery JavaScript Library v3.7.1
+ * https://jquery.com/
+ *
+ * Copyright OpenJS Foundation and other contributors
+ * Released under the MIT license
+ * https://jquery.org/license
+ *
+ * Date: 2023-08-28T13:37Z
+ */
+( function( global, factory ) {
+
+ "use strict";
+
+ if ( typeof module === "object" && typeof module.exports === "object" ) {
+
+ // For CommonJS and CommonJS-like environments where a proper 'window'
+ // is present, execute the factory and get jQuery.
+ // For environments that do not have a 'window' with a 'document'
+ // (such as Node.js), expose a factory as module.exports.
+ // This accentuates the need for the creation of a real 'window'.
+ // e.g. var jQuery = require("jquery")(window);
+ // See ticket trac-14549 for more info.
+ module.exports = global.document ?
+ factory( global, true ) :
+ function( w ) {
+ if ( !w.document ) {
+ throw new Error( "jQuery requires a window with a document" );
+ }
+ return factory( w );
+ };
+ } else {
+ factory( global );
+ }
+
+// Pass this if window is not defined yet
+} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
+// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
+// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
+// enough that all such attempts are guarded in a try block.
+"use strict";
+
+var arr = [];
+
+var getProto = Object.getPrototypeOf;
+
+var slice = arr.slice;
+
+var flat = arr.flat ? function( array ) {
+ return arr.flat.call( array );
+} : function( array ) {
+ return arr.concat.apply( [], array );
+};
+
+
+var push = arr.push;
+
+var indexOf = arr.indexOf;
+
+var class2type = {};
+
+var toString = class2type.toString;
+
+var hasOwn = class2type.hasOwnProperty;
+
+var fnToString = hasOwn.toString;
+
+var ObjectFunctionString = fnToString.call( Object );
+
+var support = {};
+
+var isFunction = function isFunction( obj ) {
+
+ // Support: Chrome <=57, Firefox <=52
+ // In some browsers, typeof returns "function" for HTML