added bsod, vinny random spam events
This commit is contained in:
parent
8aca4c8fc7
commit
a94fbc08c6
@ -22,13 +22,7 @@
|
||||
"Entry"
|
||||
{
|
||||
"MsmKey" = "8:_20E2146C791105F6934C30A65E1458CA"
|
||||
"OwnerKey" = "8:_54602D10025C6F6766454C8F6B75F417"
|
||||
"MsmSig" = "8:_UNDEFINED"
|
||||
}
|
||||
"Entry"
|
||||
{
|
||||
"MsmKey" = "8:_20E2146C791105F6934C30A65E1458CA"
|
||||
"OwnerKey" = "8:_EBEE36C33EDCA5A5ABEBF8285F4E5150"
|
||||
"OwnerKey" = "8:_5909879E9BE44DDB371A14BD798CD400"
|
||||
"MsmSig" = "8:_UNDEFINED"
|
||||
}
|
||||
"Entry"
|
||||
@ -40,7 +34,13 @@
|
||||
"Entry"
|
||||
{
|
||||
"MsmKey" = "8:_20E2146C791105F6934C30A65E1458CA"
|
||||
"OwnerKey" = "8:_5909879E9BE44DDB371A14BD798CD400"
|
||||
"OwnerKey" = "8:_EBEE36C33EDCA5A5ABEBF8285F4E5150"
|
||||
"MsmSig" = "8:_UNDEFINED"
|
||||
}
|
||||
"Entry"
|
||||
{
|
||||
"MsmKey" = "8:_20E2146C791105F6934C30A65E1458CA"
|
||||
"OwnerKey" = "8:_54602D10025C6F6766454C8F6B75F417"
|
||||
"MsmSig" = "8:_UNDEFINED"
|
||||
}
|
||||
"Entry"
|
||||
@ -70,13 +70,13 @@
|
||||
"Entry"
|
||||
{
|
||||
"MsmKey" = "8:_54602D10025C6F6766454C8F6B75F417"
|
||||
"OwnerKey" = "8:_F7884CBCC5F6D4C1E8E353172B9C0BA6"
|
||||
"OwnerKey" = "8:_C7272BF4A9D24FD39D08ABB04570B03C"
|
||||
"MsmSig" = "8:_UNDEFINED"
|
||||
}
|
||||
"Entry"
|
||||
{
|
||||
"MsmKey" = "8:_54602D10025C6F6766454C8F6B75F417"
|
||||
"OwnerKey" = "8:_C7272BF4A9D24FD39D08ABB04570B03C"
|
||||
"OwnerKey" = "8:_F7884CBCC5F6D4C1E8E353172B9C0BA6"
|
||||
"MsmSig" = "8:_UNDEFINED"
|
||||
}
|
||||
"Entry"
|
||||
@ -136,31 +136,7 @@
|
||||
"Entry"
|
||||
{
|
||||
"MsmKey" = "8:_UNDEFINED"
|
||||
"OwnerKey" = "8:_C7272BF4A9D24FD39D08ABB04570B03C"
|
||||
"MsmSig" = "8:_UNDEFINED"
|
||||
}
|
||||
"Entry"
|
||||
{
|
||||
"MsmKey" = "8:_UNDEFINED"
|
||||
"OwnerKey" = "8:_502B38277AF62ED70F770D10BD1FD65A"
|
||||
"MsmSig" = "8:_UNDEFINED"
|
||||
}
|
||||
"Entry"
|
||||
{
|
||||
"MsmKey" = "8:_UNDEFINED"
|
||||
"OwnerKey" = "8:_F7884CBCC5F6D4C1E8E353172B9C0BA6"
|
||||
"MsmSig" = "8:_UNDEFINED"
|
||||
}
|
||||
"Entry"
|
||||
{
|
||||
"MsmKey" = "8:_UNDEFINED"
|
||||
"OwnerKey" = "8:_5909879E9BE44DDB371A14BD798CD400"
|
||||
"MsmSig" = "8:_UNDEFINED"
|
||||
}
|
||||
"Entry"
|
||||
{
|
||||
"MsmKey" = "8:_UNDEFINED"
|
||||
"OwnerKey" = "8:_54602D10025C6F6766454C8F6B75F417"
|
||||
"OwnerKey" = "8:_EBEE36C33EDCA5A5ABEBF8285F4E5150"
|
||||
"MsmSig" = "8:_UNDEFINED"
|
||||
}
|
||||
"Entry"
|
||||
@ -172,7 +148,31 @@
|
||||
"Entry"
|
||||
{
|
||||
"MsmKey" = "8:_UNDEFINED"
|
||||
"OwnerKey" = "8:_EBEE36C33EDCA5A5ABEBF8285F4E5150"
|
||||
"OwnerKey" = "8:_54602D10025C6F6766454C8F6B75F417"
|
||||
"MsmSig" = "8:_UNDEFINED"
|
||||
}
|
||||
"Entry"
|
||||
{
|
||||
"MsmKey" = "8:_UNDEFINED"
|
||||
"OwnerKey" = "8:_5909879E9BE44DDB371A14BD798CD400"
|
||||
"MsmSig" = "8:_UNDEFINED"
|
||||
}
|
||||
"Entry"
|
||||
{
|
||||
"MsmKey" = "8:_UNDEFINED"
|
||||
"OwnerKey" = "8:_F7884CBCC5F6D4C1E8E353172B9C0BA6"
|
||||
"MsmSig" = "8:_UNDEFINED"
|
||||
}
|
||||
"Entry"
|
||||
{
|
||||
"MsmKey" = "8:_UNDEFINED"
|
||||
"OwnerKey" = "8:_502B38277AF62ED70F770D10BD1FD65A"
|
||||
"MsmSig" = "8:_UNDEFINED"
|
||||
}
|
||||
"Entry"
|
||||
{
|
||||
"MsmKey" = "8:_UNDEFINED"
|
||||
"OwnerKey" = "8:_C7272BF4A9D24FD39D08ABB04570B03C"
|
||||
"MsmSig" = "8:_UNDEFINED"
|
||||
}
|
||||
}
|
||||
@ -230,6 +230,14 @@
|
||||
"PrivateKeyFile" = "8:"
|
||||
"TimeStampServer" = "8:"
|
||||
"InstallerBootstrapper" = "3:2"
|
||||
"BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}"
|
||||
{
|
||||
"Enabled" = "11:TRUE"
|
||||
"PromptEnabled" = "11:TRUE"
|
||||
"PrerequisitesLocation" = "2:1"
|
||||
"Url" = "8:"
|
||||
"ComponentsUrl" = "8:"
|
||||
}
|
||||
}
|
||||
}
|
||||
"Deployable"
|
||||
@ -266,11 +274,6 @@
|
||||
"AssemblyAsmDisplayName" = "8:AForge, Version=2.2.5.0, Culture=neutral, PublicKeyToken=c1db6ff4eaa06aeb, processorArchitecture=MSIL"
|
||||
"ScatterAssemblies"
|
||||
{
|
||||
"_20E2146C791105F6934C30A65E1458CA"
|
||||
{
|
||||
"Name" = "8:AForge.dll"
|
||||
"Attributes" = "3:512"
|
||||
}
|
||||
}
|
||||
"SourcePath" = "8:AForge.dll"
|
||||
"TargetName" = "8:"
|
||||
@ -297,11 +300,6 @@
|
||||
"AssemblyAsmDisplayName" = "8:AForge.Imaging, Version=2.2.5.0, Culture=neutral, PublicKeyToken=ba8ddea9676ca48b, processorArchitecture=MSIL"
|
||||
"ScatterAssemblies"
|
||||
{
|
||||
"_46C8C60227CD93D9A3ADA497BA320E90"
|
||||
{
|
||||
"Name" = "8:AForge.Imaging.dll"
|
||||
"Attributes" = "3:512"
|
||||
}
|
||||
}
|
||||
"SourcePath" = "8:AForge.Imaging.dll"
|
||||
"TargetName" = "8:"
|
||||
@ -328,11 +326,6 @@
|
||||
"AssemblyAsmDisplayName" = "8:Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"
|
||||
"ScatterAssemblies"
|
||||
{
|
||||
"_502B38277AF62ED70F770D10BD1FD65A"
|
||||
{
|
||||
"Name" = "8:Newtonsoft.Json.dll"
|
||||
"Attributes" = "3:512"
|
||||
}
|
||||
}
|
||||
"SourcePath" = "8:Newtonsoft.Json.dll"
|
||||
"TargetName" = "8:"
|
||||
@ -359,11 +352,6 @@
|
||||
"AssemblyAsmDisplayName" = "8:AForge.Video, Version=2.2.5.0, Culture=neutral, PublicKeyToken=cbfb6e07d173c401, processorArchitecture=MSIL"
|
||||
"ScatterAssemblies"
|
||||
{
|
||||
"_54602D10025C6F6766454C8F6B75F417"
|
||||
{
|
||||
"Name" = "8:AForge.Video.dll"
|
||||
"Attributes" = "3:512"
|
||||
}
|
||||
}
|
||||
"SourcePath" = "8:AForge.Video.dll"
|
||||
"TargetName" = "8:"
|
||||
@ -390,11 +378,6 @@
|
||||
"AssemblyAsmDisplayName" = "8:AForge.Controls, Version=2.2.5.0, Culture=neutral, PublicKeyToken=a8ac264d1dc6b9d9, processorArchitecture=MSIL"
|
||||
"ScatterAssemblies"
|
||||
{
|
||||
"_5909879E9BE44DDB371A14BD798CD400"
|
||||
{
|
||||
"Name" = "8:AForge.Controls.dll"
|
||||
"Attributes" = "3:512"
|
||||
}
|
||||
}
|
||||
"SourcePath" = "8:AForge.Controls.dll"
|
||||
"TargetName" = "8:"
|
||||
@ -481,11 +464,6 @@
|
||||
"AssemblyAsmDisplayName" = "8:AForge.Math, Version=2.2.5.0, Culture=neutral, PublicKeyToken=abba2e25397ee8c9, processorArchitecture=MSIL"
|
||||
"ScatterAssemblies"
|
||||
{
|
||||
"_EBEE36C33EDCA5A5ABEBF8285F4E5150"
|
||||
{
|
||||
"Name" = "8:AForge.Math.dll"
|
||||
"Attributes" = "3:512"
|
||||
}
|
||||
}
|
||||
"SourcePath" = "8:AForge.Math.dll"
|
||||
"TargetName" = "8:"
|
||||
@ -512,11 +490,6 @@
|
||||
"AssemblyAsmDisplayName" = "8:AForge.Video.DirectShow, Version=2.2.5.0, Culture=neutral, PublicKeyToken=61ea4348d43881b7, processorArchitecture=MSIL"
|
||||
"ScatterAssemblies"
|
||||
{
|
||||
"_F7884CBCC5F6D4C1E8E353172B9C0BA6"
|
||||
{
|
||||
"Name" = "8:AForge.Video.DirectShow.dll"
|
||||
"Attributes" = "3:512"
|
||||
}
|
||||
}
|
||||
"SourcePath" = "8:AForge.Video.DirectShow.dll"
|
||||
"TargetName" = "8:"
|
||||
@ -625,15 +598,15 @@
|
||||
{
|
||||
"Name" = "8:Microsoft Visual Studio"
|
||||
"ProductName" = "8:FemboyWatchdog"
|
||||
"ProductCode" = "8:{4560E035-D9FD-4A3E-AD0C-0C92F99B2AC7}"
|
||||
"PackageCode" = "8:{7F6425A9-589D-4803-92D1-C7C5D2F61ED5}"
|
||||
"ProductCode" = "8:{75E1E013-157D-4EE1-98A4-AC33CB590ED8}"
|
||||
"PackageCode" = "8:{296803F3-755E-4162-B807-73CF6C07DBEB}"
|
||||
"UpgradeCode" = "8:{85E61D1C-4678-4F3E-898C-C62A75112C1A}"
|
||||
"AspNetVersion" = "8:4.0.30319.0"
|
||||
"RestartWWWService" = "11:FALSE"
|
||||
"RemovePreviousVersions" = "11:TRUE"
|
||||
"DetectNewerInstalledVersion" = "11:TRUE"
|
||||
"InstallAllUsers" = "11:TRUE"
|
||||
"ProductVersion" = "8:0.3.0"
|
||||
"ProductVersion" = "8:0.4.0"
|
||||
"Manufacturer" = "8:FemboyFinancial"
|
||||
"ARPHELPTELEPHONE" = "8:+1 (925) 765-8478"
|
||||
"ARPHELPLINK" = "8:http://ff.howfeed.biz/"
|
||||
@ -1161,7 +1134,7 @@
|
||||
{
|
||||
"{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_C7272BF4A9D24FD39D08ABB04570B03C"
|
||||
{
|
||||
"SourcePath" = "8:..\\FemboyWatchdog\\obj\\x86\\Debug\\FemboyWatchdog.exe"
|
||||
"SourcePath" = "8:..\\FemboyWatchdog\\obj\\x86\\Release\\FemboyWatchdog.exe"
|
||||
"TargetName" = "8:"
|
||||
"Tag" = "8:"
|
||||
"Folder" = "8:_B09D9E8F0A6E4508BA26694479354890"
|
||||
|
77
FemboyWatchdog/BlueScreenSpam.Designer.cs
generated
Normal file
77
FemboyWatchdog/BlueScreenSpam.Designer.cs
generated
Normal file
@ -0,0 +1,77 @@
|
||||
namespace FemboyWatchdog
|
||||
{
|
||||
partial class BlueScreenSpam
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// pictureBox1
|
||||
//
|
||||
this.pictureBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.pictureBox1.Image = global::FemboyWatchdog.Properties.Resources.bsod;
|
||||
this.pictureBox1.Location = new System.Drawing.Point(0, 0);
|
||||
this.pictureBox1.Name = "pictureBox1";
|
||||
this.pictureBox1.Size = new System.Drawing.Size(639, 478);
|
||||
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||
this.pictureBox1.TabIndex = 0;
|
||||
this.pictureBox1.TabStop = false;
|
||||
this.pictureBox1.WaitOnLoad = true;
|
||||
//
|
||||
// BlueScreenSpam
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(120)))), ((int)(((byte)(215)))));
|
||||
this.ClientSize = new System.Drawing.Size(1280, 720);
|
||||
this.Controls.Add(this.pictureBox1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "BlueScreenSpam";
|
||||
this.ShowIcon = false;
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "BlueScreenSpam";
|
||||
this.TopMost = true;
|
||||
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
|
||||
this.Shown += new System.EventHandler(this.BlueScreenSpam_Shown);
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.PictureBox pictureBox1;
|
||||
|
||||
}
|
||||
}
|
43
FemboyWatchdog/BlueScreenSpam.cs
Normal file
43
FemboyWatchdog/BlueScreenSpam.cs
Normal file
@ -0,0 +1,43 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace FemboyWatchdog
|
||||
{
|
||||
public partial class BlueScreenSpam : Form
|
||||
{
|
||||
private Timer _t;
|
||||
|
||||
public BlueScreenSpam()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
Cursor.Hide();
|
||||
pictureBox1.Size = new Size(Width, Height);
|
||||
|
||||
Random r = new Random();
|
||||
if (r.Next(20) == 0)
|
||||
{
|
||||
pictureBox1.Image = global::FemboyWatchdog.Properties.Resources.monikabsod;
|
||||
}
|
||||
|
||||
_t = new Timer();
|
||||
_t.Interval = 5000;
|
||||
_t.Tick += new EventHandler(_t_Tick);
|
||||
}
|
||||
|
||||
private void _t_Tick(object sender, EventArgs e)
|
||||
{
|
||||
Dispose();
|
||||
}
|
||||
|
||||
private void BlueScreenSpam_Shown(object sender, EventArgs e)
|
||||
{
|
||||
_t.Start();
|
||||
}
|
||||
}
|
||||
}
|
120
FemboyWatchdog/BlueScreenSpam.resx
Normal file
120
FemboyWatchdog/BlueScreenSpam.resx
Normal file
@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
@ -96,6 +96,12 @@
|
||||
<Compile Include="AboutBox.Designer.cs">
|
||||
<DependentUpon>AboutBox.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="BlueScreenSpam.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="BlueScreenSpam.Designer.cs">
|
||||
<DependentUpon>BlueScreenSpam.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="GlobalHooks.cs" />
|
||||
<Compile Include="LocationProvider.cs" />
|
||||
<Compile Include="MeetingNotification.cs">
|
||||
@ -114,15 +120,25 @@
|
||||
<Compile Include="Monitor.Designer.cs">
|
||||
<DependentUpon>Monitor.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="SpamProvider.cs" />
|
||||
<Compile Include="Toolbar.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Toolbar.Designer.cs">
|
||||
<DependentUpon>Toolbar.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="VinnySpam.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="VinnySpam.Designer.cs">
|
||||
<DependentUpon>VinnySpam.cs</DependentUpon>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="AboutBox.resx">
|
||||
<DependentUpon>AboutBox.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="BlueScreenSpam.resx">
|
||||
<DependentUpon>BlueScreenSpam.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="MeetingNotification.resx">
|
||||
<DependentUpon>MeetingNotification.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
@ -142,6 +158,9 @@
|
||||
<EmbeddedResource Include="Toolbar.resx">
|
||||
<DependentUpon>Toolbar.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="VinnySpam.resx">
|
||||
<DependentUpon>VinnySpam.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<None Include="app.config" />
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
@ -175,6 +194,8 @@
|
||||
<Content Include="media\beep.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="media\monikabsod.png" />
|
||||
<None Include="media\bsod.png" />
|
||||
<Content Include="media\klaxon.wav">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
|
@ -62,5 +62,14 @@ namespace FemboyWatchdog
|
||||
|
||||
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
||||
public static extern IntPtr GetModuleHandle(string lpModuleName);
|
||||
|
||||
// For auto-closing windows
|
||||
public const int WM_CLOSE = 0x0010;
|
||||
|
||||
[DllImport("user32.dll", SetLastError = true)]
|
||||
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
|
||||
|
||||
[DllImport("user32.dll", CharSet = CharSet.Auto)]
|
||||
public static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
|
||||
}
|
||||
}
|
||||
|
@ -20,6 +20,7 @@ namespace FemboyWatchdog
|
||||
private DateTime clockIn = DateTime.Now;
|
||||
|
||||
private LocationProvider tracker;
|
||||
private SpamProvider spammer;
|
||||
|
||||
private FilterInfoCollection videoDevices;
|
||||
private VideoCaptureDevice videoDevice;
|
||||
@ -51,6 +52,7 @@ namespace FemboyWatchdog
|
||||
ss = new SpeechSynthesizer();
|
||||
|
||||
tracker = new LocationProvider();
|
||||
spammer = new SpamProvider();
|
||||
|
||||
ttsTimer = new Timer();
|
||||
ttsTimer.Interval = 15000;
|
||||
|
@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("0.0.3.0")]
|
||||
[assembly: AssemblyFileVersion("0.0.3.0")]
|
||||
[assembly: AssemblyVersion("0.0.4.0")]
|
||||
[assembly: AssemblyFileVersion("0.0.4.0")]
|
||||
|
20
FemboyWatchdog/Properties/Resources.Designer.cs
generated
20
FemboyWatchdog/Properties/Resources.Designer.cs
generated
@ -60,6 +60,16 @@ namespace FemboyWatchdog.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap bsod {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("bsod", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
@ -69,5 +79,15 @@ namespace FemboyWatchdog.Properties {
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap monikabsod {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("monikabsod", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -117,8 +117,15 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="ff" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\ff.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="bsod" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\media\bsod.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="monikabsod" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\media\monikabsod.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
62
FemboyWatchdog/SpamProvider.cs
Normal file
62
FemboyWatchdog/SpamProvider.cs
Normal file
@ -0,0 +1,62 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace FemboyWatchdog
|
||||
{
|
||||
class SpamProvider
|
||||
{
|
||||
private Timer _nextSpam;
|
||||
private Random _random;
|
||||
private List<MethodInfo> _spamCallbacks;
|
||||
|
||||
// between 2-10 minutes
|
||||
private const int MIN_DELAY = 120000;
|
||||
private const int MAX_DELAY = 600000;
|
||||
|
||||
public SpamProvider()
|
||||
{
|
||||
_random = new Random();
|
||||
_nextSpam = new Timer();
|
||||
_nextSpam.Interval = _random.Next(MIN_DELAY, MAX_DELAY);
|
||||
_nextSpam.Tick += new EventHandler(_nextSpam_Tick);
|
||||
_nextSpam.Start();
|
||||
|
||||
_spamCallbacks = new List<MethodInfo>();
|
||||
foreach (MethodInfo method in typeof(SpamProvider).GetMethods())
|
||||
{
|
||||
if (method.Name.StartsWith("SpamCallback_"))
|
||||
_spamCallbacks.Add(method);
|
||||
}
|
||||
}
|
||||
|
||||
private void _nextSpam_Tick(object sender, EventArgs e)
|
||||
{
|
||||
_nextSpam.Interval = _random.Next(MIN_DELAY, MAX_DELAY);
|
||||
MethodInfo chosenAction = _spamCallbacks[_random.Next(_spamCallbacks.Count)];
|
||||
chosenAction.Invoke(this, null);
|
||||
}
|
||||
|
||||
public void SpamCallback_Vinny()
|
||||
{
|
||||
int count = _random.Next(20);
|
||||
List<Form> vinnies = new List<Form>();
|
||||
for (int i = 0; i < count; ++i)
|
||||
{
|
||||
Form vinny = new VinnySpam();
|
||||
vinnies.Add(vinny);
|
||||
vinny.Show();
|
||||
}
|
||||
}
|
||||
|
||||
public void SpamCallback_BSOD()
|
||||
{
|
||||
// yes, this is supposed to block
|
||||
System.Threading.Thread.Sleep(3000);
|
||||
Form bsod = new BlueScreenSpam();
|
||||
bsod.Show();
|
||||
}
|
||||
}
|
||||
}
|
98
FemboyWatchdog/VinnySpam.Designer.cs
generated
Normal file
98
FemboyWatchdog/VinnySpam.Designer.cs
generated
Normal file
@ -0,0 +1,98 @@
|
||||
namespace FemboyWatchdog
|
||||
{
|
||||
partial class VinnySpam
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.panel1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label1.Location = new System.Drawing.Point(12, 18);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(36, 15);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "vinny";
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.panel1.Controls.Add(this.button1);
|
||||
this.panel1.Location = new System.Drawing.Point(0, 50);
|
||||
this.panel1.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(250, 50);
|
||||
this.panel1.TabIndex = 1;
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.button1.Location = new System.Drawing.Point(157, 10);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(75, 23);
|
||||
this.button1.TabIndex = 0;
|
||||
this.button1.Text = "OK";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
this.button1.Click += new System.EventHandler(this.button1_Click);
|
||||
//
|
||||
// VinnySpam
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.ClientSize = new System.Drawing.Size(244, 92);
|
||||
this.Controls.Add(this.panel1);
|
||||
this.Controls.Add(this.label1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "VinnySpam";
|
||||
this.ShowIcon = false;
|
||||
this.ShowInTaskbar = false;
|
||||
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
|
||||
this.Text = "vinny";
|
||||
this.TopMost = true;
|
||||
this.Shown += new System.EventHandler(this.VinnySpam_Shown);
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.Button button1;
|
||||
}
|
||||
}
|
41
FemboyWatchdog/VinnySpam.cs
Normal file
41
FemboyWatchdog/VinnySpam.cs
Normal file
@ -0,0 +1,41 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace FemboyWatchdog
|
||||
{
|
||||
public partial class VinnySpam : Form
|
||||
{
|
||||
private System.Windows.Forms.Timer _t;
|
||||
|
||||
public VinnySpam()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
_t = new System.Windows.Forms.Timer();
|
||||
_t.Interval = 500;
|
||||
_t.Tick += new EventHandler(_t_Tick);
|
||||
}
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
|
||||
private void VinnySpam_Shown(object sender, EventArgs e)
|
||||
{
|
||||
_t.Start();
|
||||
}
|
||||
|
||||
private void _t_Tick(object sender, EventArgs e)
|
||||
{
|
||||
// vinny bye bye
|
||||
Dispose();
|
||||
}
|
||||
}
|
||||
}
|
120
FemboyWatchdog/VinnySpam.resx
Normal file
120
FemboyWatchdog/VinnySpam.resx
Normal file
@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
BIN
FemboyWatchdog/media/bsod.png
Normal file
BIN
FemboyWatchdog/media/bsod.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 38 KiB |
BIN
FemboyWatchdog/media/monikabsod.png
Normal file
BIN
FemboyWatchdog/media/monikabsod.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 441 KiB |
Loading…
x
Reference in New Issue
Block a user