Self Hosting con Windows di avvio e controllo del server su systray

This commit is contained in:
Paolo Possanzini
2017-11-21 16:39:22 +01:00
parent f65bbaaa3a
commit 9fea228ca0
106 changed files with 2695 additions and 698 deletions
+1 -1
View File
@@ -64,6 +64,6 @@
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>XCOPY $(ProjectDir)*.d.ts $(SolutionDir)Step\client\src\@types /C /Y /O</PostBuildEvent>
<PostBuildEvent>XCOPY $(ProjectDir)*.d.ts $(SolutionDir)Step\wwwroot\src\@types /C /Y /O</PostBuildEvent>
</PropertyGroup>
</Project>
+36
View File
@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Step.UI")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Step.UI")]
[assembly: AssemblyCopyright("Copyright © 2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("20fc0937-e7ca-4693-95f9-7a948efd173b")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// 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("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
+86
View File
@@ -0,0 +1,86 @@
namespace Step.UI
{
partial class ServerControlWindow
{
/// <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.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServerControlWindow));
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(12, 12);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(177, 69);
this.button1.TabIndex = 0;
this.button1.Text = "Server Stop";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// button2
//
this.button2.Location = new System.Drawing.Point(211, 12);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(177, 69);
this.button2.TabIndex = 1;
this.button2.Text = "Open UI";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// notifyIcon1
//
this.notifyIcon1.BalloonTipText = "CMS";
this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon")));
this.notifyIcon1.Text = "CMS Server";
this.notifyIcon1.Visible = true;
this.notifyIcon1.Click += new System.EventHandler(this.notifyIcon1_Click);
//
// ServerControlWindow
//
this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(400, 93);
this.Controls.Add(this.button2);
this.Controls.Add(this.button1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.Name = "ServerControlWindow";
this.Text = "Step";
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.NotifyIcon notifyIcon1;
}
}
+81
View File
@@ -0,0 +1,81 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using TeamDev.SDK;
using TeamDev.SDK.MVVM;
namespace Step.UI
{
public partial class ServerControlWindow : Form
{
public ServerControlWindow()
{
InitializeComponent();
}
private static ServerControlWindow ctrlwindow = null;
public static void Start()
{
Thread th = new Thread(() =>
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
ctrlwindow = new ServerControlWindow();
Application.Run(ctrlwindow);
});
th.SetApartmentState(ApartmentState.STA);
th.Start();
}
public static void Stop()
{
if (ctrlwindow != null)
{
ctrlwindow.Invoke((ThreadStart)delegate ()
{
ctrlwindow._closing = true;
ctrlwindow.Close();
ctrlwindow = null;
});
}
}
private bool _closing = false;
// Evito di chiudere la finestra
protected override void OnClosing(CancelEventArgs e)
{
if (!_closing)
{
e.Cancel = true;
this.Hide();
}
}
private void button2_Click(object sender, EventArgs e)
{
Process.Start("http://localhost:9000");
}
private void button1_Click(object sender, EventArgs e)
{
MessageServices.Current.Publish("StopServer");
}
private void notifyIcon1_Click(object sender, EventArgs e)
{
this.Show();
}
}
}
+662
View File
@@ -0,0 +1,662 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="notifyIcon1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="notifyIcon1.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAQAEBAAAAAAIABoBAAARgAAACAgAAAAACAAqBAAAK4EAAAwMAAAAAAgAKglAABWFQAAQEAAAAAA
IAAoQgAA/joAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAADU0tGDz83Mhc/M
y4XPzMuFz8zKhc7LyoXOy8mFv728uc7My93NysndzMjG3cvGxN3MxcPby8XB28vEwdu2sK7B8e7s//Tn
1v/x4cr/7uHQ/+rm5P/p5eP/6eTi/+Xi4P/9+/r//Pn3//v29P/69PH/+vLv//nx7f/58e3/39fU3/Hu
7v/bs3X/0J1M/9Crbv/8+Pb//Pj1//z39P/s6uj//fv6//Xz8f/v6+n/7unn/+zm5P/x6uf/+vLv/9/Z
1t/x8O7/3LV4/9KiVv/QqW3//Pn4//r29P/07uv/6ebk//78+//49fT/8O3r/+/r6f/t6Ob/9O7r//v1
8v/g29nf8fHv/9y2e//To1j/0Kpu//36+f/49fP/6+Xh/+Th3//6+fj/+vj3//n29f/59fT/+PTy//j0
8v/48/H/3dnX3/Lx8f/euH//1aVc/9Gscf/9/Pr/+Pb0/+zm4v/a1tX/5OPj/+Ti4v/k4eH/4+Hg/+Pg
3//j4N//4+Df/8vJyN/y8vH/4LqD/9eoYf/TrnX//f38//n39v/s5+P/2dfV/9zb2//n5+f/8fDv//Hv
7//x7+//8O/u/+3r6//My8vf8vLy/+G7hv/YqWT/1K94//79/f/59/f/7Ofl/9bU0v/Z2Nf/2NfW/8LB
wP/Ozcz/x8PB/+fi3//r5uP/lJWUU/Pz8//ivYn/2qtp/9Wwe//+/v7/+fj3/+zo5v/w7ev/8Ozq/+zn
4//s5uL/6+Xh/+vk4P/48u//+/b0/7Ozs0Xz8/P/476M/9yvcf/YtYX///////r5+P/s6eb/8O3r//Dt
6//s5+T/7Ofj/+zm4v/s5eH/+PTx//z49f+2t7ZF8/Pz/+S+jv/crW//17KA///////6+fn/7Onm//Hu
6//x7uz/7Ojm/+zo5f3s5+P/6+Xh//j08f38+Pb9urq5RfPz8//kv4//3a5x/9izgv///////Pz8//X0
8//49vX/+Pf1//b08//29PP/9fTy//Xz8f/6+Pb/+Pb1/7y8vEXz8/P/5b+R/96vdf/cu5H///////r5
+f/t6uf/7ern/+3q5//t6uf/7Onm/+rn5P/l4t//8O/v/+Tk5P/MzMxD8/Pz/+vPrf/lwJH/38Sh////
///6+fn/7ern/+3q5//t6uf/7ern/+rn5P/q5+T/z8/O/9TU1P/S0tKf////Ae3t7f/29vb/9vb2/+3t
7f/////////////////////////////////8/Pz/+fn5/9jY2P/i4uKf////Af///wH///8B////Af//
/wHS0tJB9vb2//b29v/29vb/9vb2//b29v/29vb/9PT0/+rq6v/X19ef////Af///wH///8BAAD//wAA
//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//ygA
AAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAACwAAAAsAAAALAAAACwAA
AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACygoKCmvrq27r62tua6trLmuray5rqyqua6r
qbmtqqi5ramnua2op7mvqae3rqmnt66opreuqKW3rqilt66opbeuqKa3hIB/i9va2f/Z1tX/2NbV/9jW
1P/Y1tT/2NXU/9jV1P/Y1dP/2NXT/9jU0//X1NP/19TS/9fU0v/X1NL/vbq5/+Xj4v/l4+L/5OLh/+Th
4P/j4N7/497d/+Ld2//i3dr/4tvZ/+La2P/h2tf/4dnW/+HZ1f/h2dX/4dnV/+HZ1f+qpaO/5uTj//34
9v/8+Pb//Pj1//z39f/89/T/+/b0//v18//79fL/+/Xy//r08f/69PD/+vTw//rz7//a1NH//vz7//37
+v/9+vn//fn4//z49v/89/T/+/Xz//v08v/68/D/+vLv//ry7v/58e3/+fHt//nx7f/58e3/+fHt/7u1
s7/m5OP//Pn3//Hizf/myqD/5suh/+XKnv/lyZ7/3tC7/9zZ2P/Z1tX/2NbV/9jW1P/Y1dT/2NXU/768
uv/+/Pv//vv6//37+f/9+vj//Pj2//z39f/79vP/+/Xy//v08f/68/D/+vLv//ry7v/58e7/+fHt//nx
7f/68e7/u7azv+bk4//8+ff/5sui/86YQ//Pm0f/zZlB/82ZQv/PtIr//fj2//349v/8+PX//Pj1//z3
9P/79vT/29fV//78+//+/Pv//fv6//36+f/u6+n/7uro/+7p5//t6Ob/7efk/+3m5P/s5eP/5d7c//ry
7//68u7/+vLv//ry7/+7trS/5uTk//35+f/nzKX/0JtK/9GfUP/TpFj/06RY/9G6lP/8+ff//Pn3//z5
9v/8+Pb//Pj1//z39P/c2NX//vz8//78+//9+/r//fr5/+/r6v/18fD/7uro//Tw7f/t6OX/7efk/+3m
5P/s5uP/+vPw//rz8P/68/D/+vPw/7u3tb/m5eT//fr5/+fNpf/Pm0n/1KZc/9GeTv/QnUv/0LaO//z5
9//8+ff//Pn3//z59v/8+PX//Pj1/9zY1f/+/fz//vz7//77+//9+/r/7+zr//Xy8P/u6uj/9fDu/+3p
5v/t6OX/7efl/+3n5P/79PH/+/Tx//v08f/79PH/vLi2v+bl5P/9+/n/6M6n/9GdTP/Vp17/0Z5O/9Cc
TP/Qto7//fn5//35+f/9+fj/9O/s/+zl4f/r5OD/zsjE//79/P/+/Pz//vz7//37+v/28/L/7+zq/+7r
6f/u6uj/7uro/+7p5//t6Ob/7ejm//v18//79fP/+/Xz//v18/+8uLe/5ubl//38+v/oz6j/0Z5O/9Wo
YP/Rn1D/0J1N/9C3j//9+vn//fr5//36+f/07+3/7OXi/+vl4f/PycX//v39//79/P/+/Pv//vz7//37
+v/9+vn//fn4//z59//8+Pb//Pf1//z39f/89/T//Pb0//z29P/89vT//Pf0/725uL/m5uX//fz7/+jP
qf/RnU3/1qhg/9GfUP/QnU3/0LaP//37+f/9+/n//fr5//Tw7f/s5uL/7OXh/87Jxv/39vb/9/b2//f2
9f/39fT/9/Tz//b08//28/L/9vPx//by8f/18vD/9fHv//Xx7//18e//9fHv//Xx7//18e//s7Gwv+bm
5f/9/fv/6dGr/9OhVf/Xq2b/06JW/9KgU//RuJL//fz6//38+v/9+/r/9PHt/+zn4v/s5uL/z8nG//Dw
7//w7+//8O/u//Dv7v/w7u3/8O3t/+/t7P/v7ez/7+zr/+/s6//v7Or/7+vq/+7r6v/u6+r/7uvq/+/r
6v+0srG/5+bm//79/f/p0az/0p9R/9epY//ToFP/0p9Q/9G4kP/9/Pv//fz7//38+v/08e7/7Ofi/+zm
4v/Pycb/2djY/9nY1//Y19f/2NfX/9jX1v/Y1tX/2NbV/9jV1f/X1dX/19XV/9fV1P/X1dT/19XU/9fV
1P/X1dT/19XU/6Wjo7/n5ub//v39/+rSrv/Vo1n/2a1q/9WlWv/Uo1j/0rqU//39+//9/fv//fz7//Tx
7//s5+P/7Ofi/8/Kxv/l5OT/zs3N/9jY1//Y19f//v38//78/P/+/Pv//vz7//77+//9+/r//fz7//37
+v/9+/r//fv5//Du7f/j4eH/raurv+fn5v///v3/69Ku/9WiV//ZrGn/1aRZ/9SiV//SuZT//v39//79
/f/+/fz/9PLx/+zn5P/s5+T/zsrH/+Xk5P/l5OT/5eTk/+Tk5P/k5OT/5OTj/+Tk4//k4+P/5OPj/+Tj
4//k5OT/5OPj/+Tj4//k4+P/5OPj/+Tj4/+ura2/5+fn//7+/v/r07D/1qRc/9qubf/Xpl7/1aRb/9K7
lv/+/f3//v39//79/f/18vH/7Ojl/+zn5f/Oysj/5eXl/+Xl5f/l5eX/5eXl/+Xl5f+ysrL/0dHR/9HR
0f/R0dH/0dHR/7Ktqv/Uz8z/29fV/9vX1P/b1tT/k5OTmy4uLiPn5+f//v7+/+vTsf/Wo1v/2q1r/9ak
XP/Vo1n/07qV///+/f///v3//v39//Xy8f/s6Ob/7Ojl/9fT0f/Ozcz/zs3M/8vKyP/Lycj/y8nI/7q4
t//Lycj/y8nI/8vJx//LyMf/zcfD//Pt6f/79vT/+/bz//v18v+1tbWHAAAABefn5///////7dWz/9mn
Yv/csHL/2adj/9imYP/Uu5j//v7+//7+/v/+/f3/9fLx/+zo5v/s6Ob/7Ojl//Ty8P/08vD/7Ofk/+zn
4//s5+L/7Obi/+zl4v/s5eL/6+Xh/+vk4P/r5N//8+3q//z39P/79vT/+/b0/7e3t4cAAAAF5+fn////
///s1LL/16Re/9uub//YpWD/16Rd/9O6lv/+/v7//v7+//7+/v/18/H/7Ojm/+zo5v/s6Ob/9fLx//Xy
8f/s5+T/7Ofk/+zn4//s5+L/7Obi/+zm4v/s5eL/7OXh/+vl4f/07uv//Pj1//z39P/79vT/ubm5hwAA
AAXn5+f//////+3Vtf/aqGX/3rJ3/960ef/esnf/2MSo///////////////+//b08v/t6eb/7Ojm/+zo
5v/18vH/9fLx/+zo5f/s5+T/7Ofk/+zn4//s5+L/7Obi/+zm4v/s5eL/7OXh//Tv6//8+PX//Pj1//z3
9P+7vLuHAAAABefn5///////7dS0/9mmYf/dr3L/2aZh/9ilX//Uupj///////////////7/9fPz/+zp
5v/s6eb/7Ojm//Xy8f/18vH/7Ojm/+zo5f/s6OT/7Ofk/+zn5P/s5uP/7Obi/+zl4f/s5eH/9O/s//z5
9//8+fb//Pj2/729vYcAAAAF5+fn///////t1bb/26ln/96yd//bqmn/2qln/9W9nP//////////////
///29PP/7Orm/+3p5v/s6eb/9fPx//Xz8f/s6Ob/7Ojl/+zn5f/s5+P97Ojk/ezn4//s5uL/7OXh/+vk
4f/07+z7/Pn3+fz59/v8+Pb7vr6+hwAAAAXn5+f//////+3Vtf/ap2T/3rF1/9qpZv/ap2T/1byb////
//////////////b08//t6eb/7Onm/+zp5v/19PH/9fPx/+3q5//t6uf/7ern/+3q5//t6uf/7Ojl/+zn
4/3s5uH/6+Th//Pv6//8+PX//Pj1//z39P/AwL+HAAAABefn5///////7tW3/9uoZ//esnf/26pq/9up
Z//VvZz/////////////////9vTz/+3q5//s6ef/7Onn//X08v/19PL/7ern/+3q5//t6uf/7ern/+3q
5//s6ub/7Onl/+zo4/3s6OT/9PHu//z59//8+fb/+Pb0/8HBwYcAAAAF5+fn///////u1rf/26lp/9+y
ef/cq2v/26pp/9W9nf//////////////////////////////////////////////////////////////
///////////////////////////////////9/Pz/+/r5//j4+P/y8vL/wsLChwAAAAXn5+f//////+7V
t//bqGn/37J5/92sbv/cq23/18Kl//////////////////b08//t6uf/7ern/+3q5//t6uf/7ern/+3q
5//t6uf/7ern/+3q5//t6uf/7Onm/+vo5f/p5uP/6ufk//Lx7//5+fn/8/Pz/+vr6//Dw8OHAAAAA+fn
5///////7ta4/9yqbP/ernL/37J5/+C1fv/by7X/////////////////9vTz/+3q5//t6uf/7ern/+3q
5//t6uf/7ern/+3q5//t6uf/7ern/+zp5v/q5+T/6ufk/+Pg3f/g3dr/6efm/+3t7f/j4+P/z8/P/9ra
2n////8B5+fn///////u1rf/3Khp/92rbP/cqWn/3Klq/9W9nf/////////////////29PP/7ern/+3q
5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//r6OX/6ufk/+rn5P/q5+T/wsC//76+vv+/v7//urq6/76+
vv/b29u/////Af///wHn5+f///////br3P/u1bf/7ta4/+7Wt//u1rj/39PE//////////////////b0
8//t6uf/7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+vn5f/q5+T/6+fl/+vn5f/Avr3//v7+//f3
9//h4uL/4uLiv////wH///8B////Aefn5//////////////////////////////////n5+f/////////
/////////////////////////////////////////////////////////Pz8//z8/P/8/Pz/+vr6/8XF
xf/29vb/4ODg/+Li4r////8B////Af///wH///8B4uLi/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/9/f
3//////////////////////////////////////////////////////////////////9/f3//f39//r6
+v/19fX/w8PD/+Li4v/l5eW/////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
/wH///8B0NDQf/////////////////////////////////////////////////////////////////7+
/v/7+/v/9fX1/+3t7f/Kysr/5OTkv////wH///8B////Af///wH///8B////Af///wH///8B////Af//
/wH///8B////Af///wHU1NR/7+/v/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
7v/u7u7/7e3t/+rq6v/m5ub/4eHh/9zc3L////8B////Af///wH///8B////Af///wH///8BAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAoAAAAMAAAAGAAAAABACAAAAAAAIAlAAAAAAAAAAAAAAAAAAAAAAAA////AQAAAAcAAAALAAAACwAA
AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA
AAsAAAALFhYWF2loaGmDgoGZg4KCl4OCgZeDgoGXg4KBl4KBgJeCgICXgoB/l4F/fpeBf36XgX9+l4F+
fZeBfn2XhIB/lYSAf5WDgH+Vg4B/lYOAfpWDf36Vg39+lYN/fpWDf36Vg39+lYN/fpVKSUhf1NTUgbGx
sYerq6uHq6urh6urq4erq6uHq6urh6urq4erq6uHq6urh6urq4erq6uHq6urh6urq4erq6uHq6urh6ur
q4erq6uHq6urh6urq4erq6uHm5ubkbCurtnY1tX/2NbV/9fV1f/X1dT/19XT/9fU0v/W09H/1tLQ/9bR
z//V0c//1dDN/9XPzf/Vz83/1c3L/9XOy//Uzcr/1M3K/9TNyf/Uzcn/1M3J/9TNyf/Uzcn/1M3J/9TN
yv96d3ah2tnZ/+zo5v/q5+T/6ufk/+rn5P/q5+T/6ufk/+nm5P/p5eT/6eXj/+nl4//p5OL/6eTi/+nk
4v/p5OL/6eTh/+jk4f/o5OH/6OTh/+jj4f/o4+H/2tXT/9DNzP/x7+7/8e/u//Du7f/w7u3/8O3s//Ds
6//v7On/7+ro/+/q6P/u6ef/7ujl/+7o5f/t5+T/7ebj/+3m4v/t5eL/7OXh/+zl4f/s5OH/7OTg/+zk
4P/s5OH/7OXh/+zl4f+DgH+f29rZ//349f/9+Pb//Pj2//z49f/8+PX//Pf1//z39P/89/T/+/b0//v2
8//79fP/+/Xy//v18v/79fL/+vTx//r08f/69PD/+vTw//r08P/68+//6uPg/9zZ1//9/Pv//fv6//37
+f/9+vn//fn4//z49//8+Pb//Pf0//v29P/79fP/+/Ty//v08f/68/D/+vLv//ny7v/68u7/+fHt//nx
7f/58e3/+fHt//nx7f/58e3/+fHt//nx7f+IhYSf29rZ//z49v/8+Pb//Pj2//z49f/8+PX//Pj1//z3
9P/89/T//Pb0//v28//w7ev/3NnY/9jU1P/Y1dP/2NTT/9fU0//X1NP/19TS/9fU0v/X1NL/ysfF/9DO
zf/9/Pv//fv6//36+f/9+vn//fn4//z59//8+Pb//Pf1//v29P/79vP/+/Xy//r08f/68/D/+vPv//ny
7//68u7/+vHt//nx7f/58e3/+fHt//nx7f/58e3/+fHt//nx7f+IhYSf29rZ//z59//8+Pf/9OjX/9u1
d//bs3X/27R1/9u0dv/as3P/2rJz/9qzdf/VzLz/7enn/+rn5P/q5+T/6ufk/+rn5P/q5+T/6ubk/+nl
5P/p5eP/29fV/9fU0//9/Pv//vv6//37+v/9+/n//fr4//z59//8+Pb//Pf1//z29P/79vP/+/Xy//v0
8f/79PH/+vPw//ry7//68u//+vLu//rx7v/58e7/+fHt//nx7f/58e3/+vHu//ry7v+JhoSf29rZ//z5
9//8+ff/8eLM/8+bSP/OmEP/zplE/8+bRv/NmED/zZhA/86aRf/Pwq3//fj2//349v/9+Pb//Pj1//z4
9f/8+PX//Pf0//z39P/79vP/6+bk/93a2f/9/Pv//vz7//37+v/9+/r//fr5//35+P/n5OL/5+Ph/+fi
4P/n4uD/5uHf/+bg3v/m4N3/5t/d/+Xf3f/l3tz/5Nza/+zk4v/68u//+vLu//ny7v/68u//+vLv//ny
7/+JhoWf29ra//z4+P/8+Pj/8uLN/9CbSf/OmUT/zppF/86aRv/Nl0D/zZdA/86ZRP/Pwqz//Pn2//z5
9v/8+fb//Pj1//z49f/89/X//Pf1//v39P/89vP/7Ofk/93a2f/9/Pz//fz7//37+v/9+/r//fr5//35
+P/o5OP/+PXz/+7q6P/u6ef/9/Pw/+zo5f/t5+X/7ebk/+zm4//s5uP/8+zp/+zl4v/68u//+vLv//ny
7//68u//+vPv//nz8P+JhoWf29ra//z5+f/9+Pj/8uLP/9GfUP/QnEz/0Z5P/9apY//WqmP/1apj/9ar
Zf/RxrX//Pj3//z49v/8+Pf//Pj2//z49v/8+PX//Pj1//v39P/89/T/7Ojk/9za2f/9/Pz//vz7//77
+//9+/r//fr5//36+P/o5OP/+vf1//Xx7//18O7/+vXy//Tv7f/07+z/9O7r//Pt6//07er/8+3q/+zm
4//68/D/+vPw//rz8P/68/D/+vPw//rz8P+Jh4Wf29ra//36+f/9+vn/8uPP/9GdTf/Pm0n/0Z9Q/9er
Zv/Rnk7/0J5M/9GfUP/Qw6///Pj3//z59//8+Pf//Pj3//z59v/8+Pb//Pj1//z49f/8+PX/7Ojk/93b
2f/9/fz//vz7//38+//++/v//fv6//36+f/o5eT/9/Py/+fk4v/n4+H/9vLw/+fi4P/m4t//5uHe/+bh
3v/m4N7/9O7r/+3m5P/79PH/+/Tx//v08f/79PH/+/Tx//v08v+Jh4af29ra//z6+P/8+/j/8uTP/9Gd
TP/Pm0j/0Z5P/9WoYf/Pmkf/zplF/8+cSv/Pwq7//Pn4//z5+P/8+fj//Pn3//z59//28e7/9O7r//Pu
6//z7ur/5N/b/9rX1v/9/Pz//fz8//38+//9/Pv//fv6//36+f/o5eT/7+vq/+7r6f/u6+n/7uro/+7p
5//u6ef/7ejm/+3o5v/t6OX/6eTh/+zn5f/79fL/+/Xy//r08v/79fL/+/Xy//r18v+Jh4af29ra//z7
+f/9+/n/8uTQ/9KgUf/Rnk7/0qJU/9erZv/Rnk3/0J1M/9GeT//Qw6///fj4//z4+P/9+Pj//fn4//z5
+P/w6eb/7OTg/+vk4P/r5OD/3NbS/9fU0v/9/fz//vz8//78+//+/Pv//fv6//36+f/39fT/9fPx//Xy
8f/18vD/9fHv//Xx7//18e7/9fDt//Tv7f/07+3/9O/t//fy8P/79fP/+/Xz//v18//79fP/+/Xz//v2
8/+Jh4ef29va//38+v/9/Pr/8uXR/9KgU//Rnk//0qJV/9esZ//Rnk7/0J1M/9GfUP/Qw6///fr4//36
+f/9+vj//fr4//35+P/w6uf/7OXi/+vl4f/r5eH/3dfS/9jV0//9/f3//v38//39/P/+/Pv//vz7//37
+v/9+/r//fr5//35+P/9+fj//Pn3//z49//8+Pb//Pf1//z39f/89/X//Pf0//z29P/89vT//Pb0//z2
9P/89vT//Pf0//z39P+KiIif29ra//z8+v/8/Pr/8uXR/9KfUP/RnUz/0qFS/9aqZP/QnUv/z5tJ/9Gd
Tv/Qw6///Pv5//z7+f/8+/n//Pr5//z5+f/w6uf/6+Xh/+vl4f/r5OH/3dfT/9fV0//9/fz//f38//39
/P/9/Pz//fz7//37+v/9+/r//fr5//36+f/9+vj//fn4//359//8+ff//Pj2//z39v/8+Pb//Pf1//z3
9f/89/X//Pf1//z39f/89/X//Pf1//z39f+KiYif29va//z8+//9/Pv/8ubS/9KgUv/RnU3/06JV/9er
Zv/Qnk3/0J1L/9GeT//Qw6///fv5//z6+f/9+/n//fr5//z6+P/w6+f/7Obi/+vl4f/r5eH/3dfU/83L
yf/4+Pf/7u3t//Py8v/49/b/7uzs//Px8P/49vX/7evq//Lw7//39PT/7erp//Lv7v/39PL/7eno//Lu
7P/28/H/7Ojn//Ht7P/28vD/7Ojm//Ht6//28vD/7Ojn//Ht7P+CgYCf29va//39+//9/fv/8+fT/9Sk
Wv/Tolf/1aZd/9mvbf/ToVX/0qBT/9OiV//QxLH//fz6//38+v/9/Pr//fr6//36+f/w7Of/7Obi/+zm
4v/s5eL/3dfU/9XS0f/s7Ov/8/Ly/+/v7//s6+r/8/Lx/+/u7f/s6un/8/Hw/+/t7P/r6en/8vDv/+/s
6//r6ej/8u/u/+/r6v/r6Of/8u7t/+/r6f/q6Ob/8e7t/+7r6f/q6Ob/8u7t/+/r6f+Ih4af29vb//78
/P/9/Pz/8+bU/9OiVv/Sn1H/06NX/9isaP/RnlD/0Z5O/9KfUf/Qw7D//Pz6//z7+v/8/Pr//Pv6//z7
+f/w6+f/6+bh/+vm4f/r5uL/3dfU/8XCwf/i4uL/29ra/97d3f/h4eH/29rZ/97d3P/h4N//29nY/97c
2//h397/2tjX/93b2v/h3t7/2tfW/93b2v/h3t3/2tfW/93a2f/h3tz/2tfV/93a2f/h3tz/2tfW/93a
2f97enqf29vb//78/P/+/f3/8+fU/9SiVv/Sn1H/1KJY/9msaf/Sn1D/0Z5P/9KgUv/QxLD//fz7//z8
+v/9/Pv//fz6//37+f/w7Oj/7Ofi/+vm4f/r5uL/3dfU/8jFxP/f3t7/397d/97e3f/e3d3/3t3d/97d
3P/e3dz/3tzb/97c2//e3Nv/3tvb/97b2//d29v/3dva/93b2//d29r/3dva/93b2v/d29r/3dva/93b
2v/d29r/3dva/93b2v9/fn2f29vb//39/f/+/f3/9OfW/9alXv/VpFr/1qhg/9qxcf/VpFn/1KNY/9Sk
Wv/RxbL//f37//39+//9/fv//fz7//38+//w7On/7Obj/+zn4//s5+L/3djU/8vJx//l5OT/zs3N/9nY
2P/S0tH/0tHR//Hw7//+/fz//vz8//38/P/+/Pv//vz7//38+//++/v//fv6//37+v/9+/v//fv6//37
+f/9+/r//fv5//37+f/p5+f/4+Hh/+Ph4f+BgYGf29vb//79/P/+/fz/9OfV/9ajWv/VoVb/1qVc/9qv
bf/TolX/06BU/9SjV//RxLH//vz8//38/P/9/Pz//fz8//38+//w7On/6+bj/+vm4//r5uP/3djU/8vJ
x//k5OT/2djY/9/e3v/c29v/29va/+rp6f/x8PD/8fDv//Hv7v/x7+//8e/u//Hu7v/x7+7/8e/u//Hu
7v/x8fH/8O7t//Du7f/w7u3/8O7t//Du7f/m5OT/4+Hh/+Ph4f+DgoGf29vb//7+/P///v3/9ejV/9ak
XP/Volj/16Ze/9qwcP/Uo1j/1KJW/9WjWv/RxLL//f39//78/P/9/f3//f38//38/P/w7ev/7Ofk/+vn
4//r5+T/3djV/8vJyP/k5OT/5eTk/+Xk5P/l5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P+Dg4Of29vb//79
/f/+/v7/9ejX/9inYf/WpV3/2Khk/9yydP/XpV3/1aRb/9WnXv/RxbP//v39//79/f/+/f3//f39//79
/f/w7ev/7Ojl/+zo5f/s5+X/3djW/8vJyP/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/pqam/729
vf/Hx8f/x8fH/8fHx//Hx8f/x8fH/6+trP+1sKz/wb25/8vIxv/Lx8X/y8fF/8vHxf/Lx8X/lJOU0zk5
OUskJCQp29vb//7+/v/+/f3/9OjX/9elXv/Woln/16Zf/9uvcP/Volj/1KFW/9WkWv/RxLL///78//79
/P/+/fz//v38//38/P/w7ev/6+fm/+vn5f/r5+T/3dnW/8rJyf/k5OT/5eXl/+Xl5f/l5eX/5eXl/+Xl
5f/l5eX/srKy/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/768u//Vz8r/7ujj//v28//79vP//Pbz//v1
8v/79fL/u7u7wwAAAAsAAAAD29vb//7+/v/+/v7/9enX/9elX//Wo1v/16dg/9ywcf/Vo1n/1aJX/9ak
W//RxbL///39//7+/P///f3//f39//78/P/w7ev/7Ofm/+vn5f/r5+T/5N/d/8bCwP/FxMP/xcTD/768
uv++vLr/vry6/768uf++u7n/sq+s/767uf++u7n/vru5/767uf++u7j/vrq4/725tv/f2NP/7+jk//v2
9P/79vT/+/bz//v18v/79fL/vL28wwAAAAsAAAAD29vb////////////9urZ/9qpZv/ZqGP/2qtp/96z
eP/YpmH/2KZg/9ioY//SxrT//v7+//7+/v/+/v7//v39//79/f/w7ev/7Ojm/+zo5v/s6Ob/7Ojl/+zo
5f/59/X/+ff1/+zn5P/s5+T/7Ofj/+zn4v/s5+L/7Obi/+zl4v/s5eL/7OXi/+zl4v/r5OH/6+Tg/+vk
4P/r5N//7+jk//z39P/89/T/+/b0//v29P/79vP/vr2+wwAAAAsAAAAD29vb////////////9enY/9mn
Yv/YpV//2all/92xdf/XpF7/16Rc/9emYP/RxbP//v7+//7+/v/+/v7//v79//79/f/x7ev/7Ojm/+zo
5v/s6Ob/7Ojl/+vn5f/59/b/+ff2/+vn5P/s5+T/6+bj/+vm4//s5+L/6+bh/+vm4f/s5uL/6+Xh/+vl
4f/s5eH/6+Tg/+vk4P/r5eD/7+nl//z39f/89/T/+/f0//v28//79vT/v7+/wwAAAA0AAAAD29vb////
////////9enY/9mnYv/XpF7/2Khl/92xdf/Xo13/1qNc/9ekXv/RxLL//v79//7+/v/+/v7//v79//7+
/f/w7uv/7Ojm/+zo5v/s6Ob/7Ofm/+zo5v/59/f/+ff2/+vo5f/s5+T/7Ofj/+vm4//s5+P/7Ofi/+vm
4v/s5uL/7Obi/+vl4f/s5eL/7OXh/+vk4f/r5OH/8Onl//z49f/8+PX//Pf0//z39P/79vT/wMDAwwAA
AAsAAAAD29vb////////////9urZ/9qpZ//Zp2P/26tp/+C4gf/crnD/3K1u/96zef/Uyrz/////////
///////////+/////v/x7+z/7enm/+zo5v/s6Ob/7Ojm/+zo5v/69/f/+ff3/+zo5f/s6OX/7Ofk/+zn
5P/s5+T/7Ofj/+zn4v/s5+L/7Obi/+zm4v/s5uL/7OXi/+zl4f/s5OH/8Orm//z59v/8+PX//Pj1//z4
9f/89/T/wcLBwwAAAAsAAAAD29vb////////////9ura/9qpaP/aqGX/26tr/+C4gv/cr3H/265w/9yv
cv/Tx7j///////7+/v/////////+//7+/v/x7uz/7Onm/+zp5v/s6eb/7Ojm/+vo5v/59/f/+ff3/+vn
5f/s6Ob/6+fl/+vn5P/s6OT/6+fk/+vm4//s5+P/6+bi/+vm4v/s5uL/6+Xh/+vk4f/s5eH/8Onm//z5
9v/9+fb//Pj2//z49f/8+PX/wsPCwwAAAA0AAAAD29vb////////////9unZ/9qoZf/ZpmL/2qlo/96y
d//ZpWD/2KRf/9mmYv/SxbT////////////////////+//7+/v/w7u3/7Onm/+zp5v/s6eb/7Ojm/+zo
5v/6+Pf/+vj3/+vo5v/s6Ob/7Ojl/+vo5f/s5+T/7Ofk/+vm5P/s5+T/7Obj/+vm4v/s5uL/7OXh/+vk
4f/s5OH/8Orm//z59//8+Pf//Pn2//z59v/8+Pb/xMTEwwAAAAsAAAAD29vb////////////9ura/9up
aP/aqGX/26tr/9+0ev/ap2T/2adj/9qpZv/SxrX////////////////////////////x7+3/7Orm/+zp
5v/t6eb/7Onm/+zo5v/6+Pf/+vj3/+zo5v/s6OX/7Ojl/+zn5f/s5+X/7Ofj/+vn5Pvs6OT/7Ofj/+zm
4//s5uL/7OXh/+vl4f/r5OD/8Orl/f35+Pv8+ff9/Pn3/fz49/38+Pb9xcXFwwAAAAsAAAAD29vb////
////////9ura/9uqa//bqWj/3K1u/+C2fv/aqWj/2qlm/9uraf/Sxrb///////7+/v////////////7+
/v/x7+3/7Onm/+zp5v/s6eb/7Onm/+zp5v/6+Pf/+fj3/+zp5v/s6eb/7Ojm/+zo5v/s6OX/7Ojk/+zo
5fvs6eb97Ojk/+zn4//s5uL/6+Xh/+vk4f/r5OH/7+rm/fz59/n8+Pb5/Pj2+/z49vv8+PX9xsbFwwAA
AA0AAAAD29vb////////////9ura/9qoaP/ap2T/26tr/9+0ev/ap2T/2aZj/9qpZv/SxrX/////////
///////////////////x7+3/7Onm/+3p5v/s6eb/7Onm/+zp5v/6+ff/+vj3/+zp5v/s6uf/7ern/+3q
5v/s6uf/7ern/+3q5v/s6uf/7Ojm/+zn5P3s5+P/7Obh/+vl4f/r5OH/7+vm//z59v/8+PX//Pj1//z3
9f/89/T/yMjHwwAAAAsAAAAD29vb////////////9ura/9upav/bqGb/26ts/9+1fP/aqGb/2qdk/9uq
aP/SxrX////////////////////////////x7+3/7ern/+3p5//s6ef/7Onn/+zp5v/5+fj/+fn4/+3q
5v/t6ef/7ern/+3q5//t6ef/7ern/+3q5//t6ef/7Orm/+zp5f/s6eX/6+fi/+zn4/3s5+P98O3p//35
9//8+Pf//Pn2//v49f/69/X/yMjIwwAAAAsAAAAD29vb////////////9urb/9ysbv/cqmv/3a5x/+G2
gP/bqmv/26pq/9ysbP/Tx7b///////7+/v////////////7+/v/49/b/9vTz//X08v/29PP/9vTz//X0
8v/8/Pz//Pz7//X08v/29PP/9fTy//X08v/29PP/9fTy//X08v/29PP/9fTy//X08v/19PL/9vTy/fbz
8v/28/L/9/Xz//z59/38+ff/+/n3//f39v/08/P/ycjIwwAAAA0AAAAD29vb////////////9urb/9yq
a//bqGj/3Kxu/+C1ff/bqWf/2qhm/9uqav/Sxrb/////////////////////////////////////////
//////////////////////////////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+
/v/+/v7///////7+/v/+/v7//v39//v6+v/7+vr/+Pj4//X19f/w8PD/ysnJwwAAAAsAAAAD29vb////
////////9urb/9yqbP/bqGj/3Kxu/+C1fv/cqWn/26ho/9ysbv/Tx7f/////////////////////////
///x7+z/7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q5v/t6uf/7ern/+3q5v/t6uf/7ern/+3q
5v/t6uf/7Onm/+zp5v/s6eb/6ebj/+nm4//q5+T/7uzp//r6+v/5+fn/9PT0//Dw8P/r6+v/ysrKwwAA
AAsAAAAD29vb////////////9urc/92scP/cq23/3q5y/+K6h//gtX//4LZ//+fGm//Wz8b/////////
///////////////////x7+z/7ern/+zq5//t6ef/7ern/+zq5//t6ef/7ern/+3q5v/t6uf/7ern/+3q
5v/t6uf/7ern/+3q5v/t6uf/6+jl/+rm5P/q5+T/6ufk/+rm5P/q5+T/7uvp//n5+f/29vb/8PDw/+vr
6//g4OD/zMzMwQAAAAX///8B29vb////////////9urb/92rbf/cqWr/3Kps/92ucv/drG7/3K1v/+C2
f//Uyr3////////////////////////////x7+z/7Onn/+3q5//s6ef/7Onn/+3q5//s6ef/7ern/+3p
5v/t6uf/7ern/+3p5v/t6uf/7ern/+3p5v/r6OX/6ufk/+nm5P/q5+T/4t/c/9rX1P/b2NX/4d/d/+vr
6//o6Oj/4ODg/9TU1P/FxcX/4ODgv////wH///8B29vb////////////9urb/9yqbP/cqGn/3Kpq/92r
bf/cqGn/26hp/9yqa//Sxrb////////////////////////////x7+z/7ern/+3q5//t6uf/7ern/+3q
5//t6uf/7ern/+3q5v/t6uf/7ern/+3q5v/t6uf/7Onm/+rm5P/q5+T/6ufk/+rm5P/q5+T/zszK/6ur
q/+rq6v/sbGx/7Kysv+wsLD/r6+v/8PDw//e3t7P////Af///wH///8B29vb////////////9urb/92r
b//cqmz/3att/92scP/cqmz/3Kps/92sb//Tx7f////////////////////////////x7+z/7ern/+zq
5//t6ef/7ern/+zq5//t6ef/7ern/+3q5v/t6uf/7ern/+3q5v/t6uf/7Onm/+rm5P/q5+T/6ufk/+rm
5P/r5+X/y8nH/83Nzf/y8vL/7Ozs/+Hh4f/X19f/29vc/+Li4r/k5OQh////Af///wH///8B29vb////
/////////Pr2//bq2//26tv/9urb//bq2//26tv/9urb//bq2//Z1tL/////////////////////////
///x7+z/7Onn/+3q5//s6ef/7Onn/+3q5//s6ef/7ern/+3p5v/t6uf/7ern/+3p5v/t6uf/6+fl/+rm
5P/q5+T/6+fl/+vm5P/r5+X/zMnH/9PT0//+/v7/+Pj4/+bm5v/g4eH/4uLiz+Dg4CH///8B////Af//
/wH///8B29vb///////////////////////////////////////////////////////b29v/////////
////////////////////////////////////////////////////////////////////////////////
/////////Pz8//z8/P/8/Pz//Pz8//z8/P/6+vr/09PT/9LS0v/39/f/4+Pj/97e3v/k5OTP////Af//
/wH///8B////Af///wH///8B29vb////////////////////////////////////////////////////
///b29v///////7+/v////////////7+/v////////////7+/v////////////7+/v//////////////
/////////////////////////f39//z8/P/8/Pz//Pz8//r6+v/39/f/0dHR/83Nzf/m5ub/4ODg/+Li
4r/g4OAh////Af///wH///8B////Af///wH///8B29vb/+fn5//m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
5v/m5ub/5ubm/+bm5v/V1dX///////7+/v////////////7+/v////////////7+/v////////////7+
/v///////////////////////////////////////v7+//z8/P/9/f3/+vr6//f39//z8/P/zs7O/8bG
xv/i4uL/5eXlz+Pj4yH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
/wH///8B////Af///wH///8B////Af///wHPz8+/////////////////////////////////////////
/////////////////////////////////////////////////////////v7+//z8/P/7+/v/9vb2//Ly
8v/t7e3/ysrK/9XV1f/j4+PP////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wHQ0NC/////////////////////////
//////////////////////////////////////////////7+/v////////////7+/v///////v7+//r6
+v/39/f/8vLy/+3t7f/m5ub/z8/P/9/f37/j4+Mh////Af///wH///8B////Af///wH///8B////Af//
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wHW1ta/5+fn/+bm
5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
5v/m5ub/5ubm/+Tk5P/j4+P/4uLi/+Li4v/d3d3/39/fz97e3iH///8B////Af///wH///8B////Af//
/wH///8B////Af///wH///8BAAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA
AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA
//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA
AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA
//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA
AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA
//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//KAAAAEAAAACAAAAAAQAgAAAA
AAAAQgAAAAAAAAAAAAAAAAAAAAAAAP///wH///8BAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAA
AAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAA
AAkAAAAJAAAACQAAAAkAAAAJDg4OKz4+PnU9PT13PT09dT09PXU9PT11PT09dT09PXU9PT11PT09dTw8
PHU9PT11PDw8dTw8PHU8PDx1PDw8dTw8PHU8PDx1PDw8dT4+PnE+Pj5xPj4+cT4+PnE+Pj5xPj4+cT09
PXE9PT1xPT09cT09PXE9PT1xPT09cT09PXE9PT1xPz8/cxAQEDn///8BAAAADwAAAA8AAAAPAAAADwAA
AA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAA
AA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADzw8PGXk4uH/5OLh/+Ti4f/j4eH/4+Hg/+Ph
4P/j4d//4+Df/+Lf3f/i393/4t7c/+Ld2//h3dr/4dza/+Hc2f/h29j/4drY/+Ha2P/h2df/4dnW/+HZ
1v/g2NX/4NjV/+DY1f/g2NT/4NjU/+DY1P/g2NT/4NjU/+DY1P/g2NT/4NjV/+DY1f9AQECD3t7e/8LC
wv+1tbX/tbW1/7W1tf+1tbX/tbW1/7W1tf+1tbX/tbW1/7W1tf+1tbX/tbW1/7W1tf+1tbX/tbW1/7W1
tf+1tbX/tbW1/7W1tf+1tbX/tbW1/7W1tf+1tbX/tbW1/7W1tf+1tbX/tbW1/7W1tf+NjY3/zcvK/83L
yv/Ny8r/zMrK/8zKyv/Mysn/zMrI/8zJyP/LyMb/y8jG/8vHxv/LxsX/ysbE/8rGxP/KxsP/ysXC/8rE
wv/KxML/ysPB/8rDwf/Kw8D/ycLA/8nCv//Jwr//ycK//8nCvv/Jwr7/ycK+/8nCvv/Jwr7/ycK+/8nC
v//Jwr//PT09f9HR0f/9+PX//fj1//349f/9+PX//Pj1//z49f/8+PT//Pj0//z39P/79vT/+/b0//v2
8//79vP//PXz//v18v/79fL/+/Xy//v18v/79PL/+/Tx//r08f/69PD/+vTw//r08P/69PD/+vPw//nz
8P/68/D/urWz//78/P/+/Pv//vz7//37+v/9+/r//fr5//36+P/9+fj//Pj2//z49v/89/X//Pf0//v2
9P/79fP/+/Xy//v08f/69PH/+vPw//rz7//68u//+vLu//rx7v/58e3/+fHt//nx7f/58O3/+fDs//nw
7P/58Oz/+fDt//nx7f/58e3/+fHt/z09PX/Q0ND//fj2//349v/9+Pb//fj2//z59v/8+PX//Pj1//z4
9f/89/T//Pf0//z39P/79vT/+/b0//v28//89fP//Pby//v28v/79fL/+/Xy//r08v/69PH/+/Tx//r0
8P/69PD/+vTw//r08P/68+//+vPw/7u2tP/+/Pz//vz7//78+//9+/r//fv6//36+f/9+vn//fn4//z4
9//8+Pb//Pf1//z39P/79vT/+/Xz//v18v/79PL/+/Tx//rz8P/68/D/+vLv//ry7v/68u7/+vHu//nx
7f/58e3/+fHt//nx7f/58e3/+fHt//nx7f/58e3/+fHt//rx7v89PT1/0NDQ//359v/9+fb//fn2//35
9v/8+fb//Pj1//349v/9+Pb//Pj1//z39P/89/T//Pb0//z39P/89vT//Pb0//v18//79fP/+/Xz//v2
8v/79fL/+/Ty//r18f/79PH/+vTw//r08P/69PD/+vTw//r08P+7trP//vz8//78+//+/Pv//vv6//37
+v/9+vn//fr5//35+P/8+Pf//Pj2//z39f/89/X/+/b0//v28//79fL/+/Xy//v08f/69PD/+vPw//rz
7//68u//+vLu//rx7v/68e7/+fHt//nx7f/58e3/+fHt//nx7f/58e3/+fHt//rx7v/68u7/PT09f9DQ
0P/9+ff//fn3//359//9+ff//fn2//359v/9+Pb//fj2//z49v/8+PX//Pj0//z39P/89/T/+/b0/97e
3v/CwsL/tbW1/7W1tf+1tbX/tbW1/7W1tf+1tbX/tbW1/7W1tf+1tbX/tbW1/7W1tf+1tbX/jY2N//78
/P/+/Pv//vz7//77+v/9+/r//fv5//36+f/9+vj//Pn3//z49v/8+Pb//Pf1//z29P/79vP/+/Xz//v1
8v/79PH/+/Tx//rz8P/68/D/+vLv//ry7//68u7/+vLu//rx7v/58e7/+fHt//nx7f/58e3/+fHu//rx
7v/68u7/+vLu/z09PX/Q0ND//Pn3//z59//8+ff//Pn3/9GgUP/QnUv/0J1L/9CdSf/RoE//0J1K/8+c
SP/Pm0f/0J5M/8+dSv/R0dH//fj1//349f/9+PX//fj1//z49f/8+PX//Pj0//z49P/89/T/+/b0//v2
9P/79vP/+/bz/7y4tv/+/Pz//vz7//78+//+/Pv//fv6//37+v/9+vn//fr4//359//8+Pb//Pj2//z3
9f/89/T/+/b0//v28//79fL/+/Xy//v08f/69PH/+vPw//rz8P/68+//+vLv//ry7v/68u7/+vLu//ry
7v/68u7/+vLu//ry7v/68u7/+vLu//ry7/8+Pj5/0NDQ//z59//8+ff//Pn3//z59//Qnk3/zphC/86Y
Q//OmEH/0J1L/86ZQv/NmD//zZc+/86bRv/OmUT/0NDQ//349v/9+Pb//fj2//349v/8+fb//Pj1//z4
9f/8+PX//Pf0//z39P/89/T/+/b0//v29P+8uLb//v38//78+//+/Pv//vz7//37+v/9+/r//fr5//36
+f/9+ff/4N3c/+Dd2//g3Nr/4Nza/+Db2f/f29n/39rY/9/a1//f2df/39nX/9/Z1//f2Nb/39jW/9/Y
1f/f19X/+vLv//ry7//68u7/+vLu//ry7//68u//+vLv//ry7//68+//Pj4+f9DQ0P/9+fj//fn4//35
+P/9+fj/0Z5O/8+ZRf/PmkX/zplE/9CeTP/OmkT/zplC/82YQP/Pm0f/zppF/9DQ0P/9+fb//fn2//35
9v/9+fb//Pn2//z49f/9+Pb//fj2//z49f/89/T//Pf0//z29P/89/T/vLi3//79/P/+/Pz//vz7//78
+//++/r//fv6//37+f/9+vn//fn4/+He3P/8+Pb//Pj2//z39f/89/T/+/b0//v28//79fP/+/Xy//v0
8v/79PH/+vTx//rz8P/68/D/39jW//rz7//68u//+vLv//ry7//68u//+vPv//rz7//68/D/+vPw/z4+
Pn/Q0ND//fn5//35+f/9+fn//fn5/9GfTv/PmUT/z5lF/86ZRP/PnEr/zZdB/82WPv/MlT3/zplE/82Y
Qf/Q0ND//fn3//359//9+ff//fn3//359v/9+fb//fj2//349v/8+Pb//Pj1//z49P/89/T//Pf0/7y4
t//+/fz//vz8//78+//+/Pv//vv7//37+v/9+/r//fr5//35+P/h3tz//Pn3/+Dd2//g3dv/4Nza//z3
9P/f29n/39vY/9/a2P/f2tf/39nX/9/Z1//f2df/+vTw/9/Y1v/68/D/+vPw//rz8P/68/D/+vPw//rz
8P/68/D/+vPw//rz8P8+Pj5/0NDQ//35+f/9+fn//fn5//35+f/SoVb/0Z9Q/9GeT//QnEv/2K1q/9qy
cv/ZsW//2bBu/9mzc//asnD/0NDQ//z59//8+ff//Pn3//z59//9+fb//Pn3//z59v/9+fb//fn2//z4
9f/8+PX//Pj1//z49P+8ubf//v38//79/P/+/Pz//vz7//78+//++/r//fv6//37+f/9+vj/4d7d//35
9//8+Pf//Pj2//z39f/89/X//Pf0//v29P/79vP/+/Xz//v18v/79fL/+/Tx//v08f/f2df/+vTx//rz
8P/68/D/+vPw//rz8P/69PD/+vTx//v08f/79PH/Pj4+f9DQ0P/9+vn//fr5//36+f/9+vn/0qBS/9Cc
Sv/Qm0r/zplE/9u1eP/UpFn/0Z9O/9GfTf/SolT/0qBS/9DQ0P/8+ff//Pn3//z59//8+ff//fn4//z5
9//8+fb//fn2//359v/8+PX//Pj1//z49f/8+PT/vLm3//79/P/+/fz//vz8//78+//+/Pv//vv7//37
+v/9+/r//fr5/+He3f/9+ff/4N7c/+Dd2//g3dv//Pf1/+Dc2v/g29n/39vZ/9/b2P/f2tj/39rX/9/a
1//79fL/39nX//v08f/79PH/+/Tx//v08f/79PH/+/Tx//v08f/79PL/+/Xy/z4+Pn/Q0ND//fv5//37
+f/9+/n//fv5/9KgUf/Qm0j/z5tI/86YQ//asnP/0Z9P/86YRP/OmEP/0JxK/8+bSP/Q0ND//fn4//35
+P/9+fj//fn4//35+P/9+ff//fn3//359//9+fb//Pn2//349v/8+PX//Pj1/7y5t//+/f3//v38//79
/P/+/Pz//vz7//78+//++/r//fv6//36+f/h393//fn4//359//8+ff//Pj2//z49v/89/X//Pf1//z3
9P/79vT/+/bz//v28//79fP/+/Xy/9/a1//79fL/+/Xy//v18v/79fL/+/Xy//v18v/79fL/+/Xy//v1
8v8+Pj5/0NDQ//37+f/9+/n//fv5//37+f/SoFL/0JtI/9CcSf/OmET/2rJz/9GgUP/PmUX/zphF/9Cd
TP/PnEr/0NDQ//35+f/9+fn//fn5//35+f/9+vj//fn4//359//s5eH/7OXh/+zl4f/r5OH/7OTg/+vk
4P+xrKn//v39//79/P/+/fz//vz8//78+//+/Pv//vv7//37+v/9+vn/4d/e/+Hf3f/h3t3/4d7c/+De
3P/g3dv/4N3b/+Dc2v/g3Nr/4NzZ/+Db2f/f29n/39vY/9/b2P/f2tj/+/Xz//v18//79fP/+/Xz//v1
8//79fP/+/Xz//v28//79vP/Pj4+f9DQ0P/9+/r//fv6//37+v/9+/r/1KNX/9KfUP/Sn1D/0J1L/9y2
ef/To1f/0Z5N/9GeTf/SoFL/0Z9Q/9DQ0P/9+fn//fn5//35+f/9+fn//fn4//36+f/9+fn/7OXh/+zl
4f/s5eH/7OXh/+zl4P/r5eD/sq2p//79/f/+/f3//v38//79/P/+/Pz//vz7//78+//++/r//fv6//36
+f/9+vn//fr4//35+P/9+ff//Pn3//z49v/8+Pb//Pj2//z39f/89/X//Pf0//z29P/79vT/+/b0//v2
8//79vP/+/bz//v28//79vP/+/bz//v29P/79vT/+/b0/z4+Pn/Q0ND//fz6//38+v/9/Pr//fz6/9Sj
WP/Sn1H/0p9R/9CdTP/ctnn/06RY/9GeTf/Qnk3/0qBS/9GfUf/Q0ND//fr5//36+f/9+vn//fr5//36
+f/9+vn//fn4/+zl4v/s5eL/7OXi/+vl4f/s5eH/7OXg/7Ktqv/+/f3//v39//79/P/+/fz//v38//78
+//+/Pv//vz7//37+v/9+/r//fr5//36+f/9+vj//fn4//359//8+ff//Pj3//z49v/8+Pb//Pf1//z3
9f/89/X//Pf1//z39P/89vT//Pb0//z29P/89vT//Pb0//z29P/89/T//Pf0//z39f8/Pz9/0NDQ//38
+v/9/Pr//fz6//38+v/ToVX/0Z1L/9GdTP/Qm0b/27R1/9KhU//Qm0j/z5tH/9GeTv/RnUz/0NDQ//37
+f/9+/n//fv5//37+f/9+vn//fr5//36+f/s5eL/7OXi/+zm4v/s5eL/7OXh/+zl4f+yrav//v39//79
/f/+/f3//v38//79/P/+/Pz//vz7//78+//++/r//fv6//37+v/9+vn//fr5//36+P/9+fj//fn4//35
9//8+ff//Pj2//z49v/8+Pb//Pj2//z39f/89/X//Pf1//z39f/89/X//Pf1//z39f/89/X//Pf1//z3
9f/89/X/Pz8/f9DQ0P/9/Pv//fz7//38+//9/Pv/1KNX/9GeTf/RnU3/0JxI/9u0dv/TolX/0J1K/9Cb
Sf/Rn1D/0Z1O/9DQ0P/9+/n//fv5//37+f/9+/n//fv5//36+f/9+vn/7Obi/+zm4v/s5uL/7OXi/+zl
4f/s5eH/sa2r//7+/f/+/f3//v39//79/f/+/fz//v38//78/P/+/Pv//vz7//77+v/9+/r//fv5//36
+f/9+vn//fr4//35+P/9+fj//fn3//z59//8+Pf//Pj2//z49v/8+Pb//Pj2//z49v/8+Pb//Pj2//z4
9v/8+Pb//Pj2//z49v/8+Pb//Pj2/z8/P3/Q0ND//f37//39+//9/fv//f37/9SjV//Rnk7/0p5O/9Gc
Sv/ctHj/06JW/9CdS//QnUr/0p9R/9GeT//Q0ND//fv6//37+v/9+/r//fv6//37+v/9+vn//fv5/+zn
4v/s5+L/7Obi/+zm4v/s5uL/7OXi/7Ktq//i4uH//v79/+Lh4f/+/f3/4uHg//79/P/i4eD//vz8/+Lg
3//+/Pv/4t/f//37+v/h39///fr5/+Hf3v/9+vn/4d/d//35+P/h3t3//fn3/+He3P/8+ff/4N3c//z4
9//g3dv//Pj2/+Dd2//8+Pb/4N3b//z49v/g3dv//Pj3/+Dd3P8/Pz9/0NDQ//39+//9/fv//f37//39
+//Wp17/1aNZ/9SkWv/ToVX/3rmA/9aoX//ToVX/06FU/9SkWv/Uo1j/0NDQ//38+v/9/Pr//fz6//38
+v/9+/r//fr6//37+f/s5+L/7Ofi/+zn4v/s5uL/7Obi/+zl4v+yrav///7+/+Li4f/+/f3/4uHh//79
/f/i4eD//v38/+Lh4P/+/Pv/4uDf//78+//i39///fv6/+Hf3//9+/n/4d/e//36+f/h397//fr4/+He
3f/9+fj/4d7d//359//h3tz//fn3/+De3P/8+ff/4N7c//z59//g3tz//fn3/+He3P/9+ff/Pz8/f9DQ
0P/+/fz//v38//79/P/+/fz/1aRa/9KfUf/Sn1H/0Z1L/9y2ef/Uolf/0Z5N/9GdTP/SoFL/0p9Q/9DQ
0P/9/Pr//fz6//38+v/9/Pr//fv7//38+v/9+/n/7Ofi/+zn4v/s5+L/7Obi/+zm4v/s5eL/sq2r/+Pi
4v///v7/4uLh//79/f/i4eH//v39/+Lh4P/+/fz/4uDg//78+//i4N///vz7/+Lf3//9+/r/4d/f//37
+v/h397//fr5/+Hf3v/9+vn/4d/d//36+P/h3t3//fn4/+He3f/9+fj/4d7d//35+P/h3t3//fn4/+He
3f/9+fj/4d7d/z8/P3/Q0ND//v39//79/f/+/f3//v39/9WlW//ToFL/0qBS/9GeTv/etnr/1aNZ/9Gd
T//Rnk7/06FT/9KgUv/Q0ND//fz7//38+//9/Pv//fz7//38+//9/Pr//fv5/+zn4v/s5+L/7Ofi/+zn
4v/s5uL/7Obi/7Ktq//Ozc3/zs3N/87NzP/Nzcz/zczM/83MzP/NzMz/zczL/83My//Ny8v/zcvK/83L
yv/Ny8r/zcrK/83Kyv/Mysr/zMrK/8zKyv/Mysn/zMrJ/8zKyf/Mysn/zMrJ/8zKyf/Mysj/zMrI/8zK
yP/Mysj/zMrI/8zKyP/Mysj/zMrJ/8zKyf8/Pz9/0NDQ//79/f/+/f3//v39//79/f/WpVv/1J9R/9Kg
Uv/RnE3/3rZ6/9WkWf/Snk7/0Z1O/9OhU//ToVH/0NDQ//39+//9/fv//f37//39+//9/Pr//fz6//78
+v/s5+P/7Ofj/+zn4v/s5+L/7Ofi/+zm4v+yrav/5eTk/+Xk5P/l5OT/5eTj/+Tk4//k4+P/5OPj/+Tj
4//k4+L/5OPi/+Ti4v/k4uH/5OLh/+Ti4f/k4uH/5OHh/+Th4f/j4eH/4+Hh/+Ph4f/j4eH/4+Hg/+Ph
4P/j4eD/4+Hg/+Ph4P/j4eD/4+Hg/+Ph4P/j4eD/4+Hg/+Ph4P/j4eD/QEBAf9DQ0P/+/f3//v39//79
/f/+/f3/16hi/9alXP/WpVz/1KNX/9+7gv/XqWL/1aNY/9SjWP/Vpl3/1aVa/9DQ0P/9/fv//f37//39
+//9/fv//f37//78+//9/Pv/7Ofk/+zn5P/s5+P/7Ofj/+zn4v/s5+L/sq6r/+Xk5P/l5OT/zs3N/87N
zf/k5OP/zc3M/83MzP/k4+P//v38//79/P/+/fz//vz8//78/P/+/Pv//vz7//78+//+/Pv//vv7//77
+v/9+/r//fv6//37+v/9+/r//fv6//37+v/9+/r//fv6//37+f/9+/n/4+Hh/+Ph4f/j4eH/4+Hh/0BA
QH/Q0ND//v39//79/f/+/f3//v39/9emX//Volf/1aJX/9SgUv/euX//16de/9ShU//UoFP/1KNZ/9Wj
V//Q0ND//v38//79/P/+/fz//v38//79/P/9/fz//fz8/+zn4//s5+P/7Ofj/+zn4//s5+P/7Ofi/7Ku
q//l5OT/5eTk/87Nzf/Ozc3/5eTk/83NzP/Nzcz/5OPj//79/f/+/f3//v38//79/P/+/fz//vz8//78
/P/+/Pv//vz7//78+//+/Pv//vz7//77+////////vv6//37+v/9+/r//fv6//37+v/9+/r//fv6/+Ph
4f/j4eH/4+Hh/+Th4f9CQkJ/0NDQ///+/f///v3///79///+/f/Xpl7/1aFV/9WhVf/Tn1D/3rh+/9am
XP/SoFL/06BS/9WjWP/Uo1b/0NDQ//79/f/+/f3//v39//79/f/+/fz//v38//39/P/s6OX/7Ofk/+zn
5P/s5+T/7Ofk/+zn4/+yr6v/5eTk/+Xk5P/l5OT/5eTk/+Xk5P/l5OT/5eTj/+Tk4//k4+P/5OPj/+Tj
4//k4+L/5OPi/+Tj4v/k4+L/5OLi/+Ti4v/k4uH/5OLh/+Ti4f/k4uH/5eXl/+Ti4f/k4uH/5OLh/+Ti
4f/k4eH/5OHh/+Th4f/k4uH/5OLh/+Ti4f/k4uH/QkJCf9DQ0P///v3///79///+/f///v3/2Kdh/9aj
Wv/Vo1r/1aFV/9+5gf/XqGH/1aJX/9WiVv/WpVz/1qNa/9DQ0P/+/f3//v39//79/f/+/f3//v39//79
/P/+/f3/7Ojm/+zo5f/s6OT/7Ofk/+zn5P/s5+T/sa6s/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/0JCQn/Q0ND//v7+//7+
/v/+/v7//v7+/9qqZv/Xp2D/16Zg/9akXP/gvIb/2atn/9emXf/WpV3/1qhh/9aoYP/Q0ND//v39//79
/f/+/f3//v39//79/f/+/f3//v39/+zo5v/s6Ob/7Ojl/+zo5f/s5+X/7Ofk/7GurP/l5eX/5eXl/+Xl
5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/oqKi/6Kiov++vr7/vr6+/76+vv++vr7/vr6+/76+
vv++vr7/vr6+/5eTkf+xrKj/sKyo/7y5t/+8uLf/vLi2/7y4tv+7uLb/vLi2/7y4tv+TkpP/OTk5YT4+
Pl0REREn0NDQ///+/v///v7///7+///+/v/Yp2H/1qJY/9eiWP/Vn1T/37mA/9inYP/VoFX/1KBU/9ak
W//VpFn/0NDQ///+/f///v3///79///+/f/+/v3//v39//79/f/s6Ob/7Ojm/+zo5v/s6OX/7Ojl/+zn
5P+xr63/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/6Kiov/l5eX/5eXl/+Xl
5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f+XlJH/6+Pe/+rj3v/89/T/+/b0//v29P/89vP//Pbz//v1
8v/79fL/vr++/wAAAA8AAAAJ////AdDQ0P/+/v7//v7+//7+/v/+/v7/2Khk/9ajW//Wo1r/1aFW/+C5
gf/Yp2H/1aJX/9WiVv/WpVz/1qRb/9DQ0P///v3///79///+/f///v3//v79//79/f/+/f3/7Ojm/+zo
5v/s6Ob/7Ojl/+zo5f/s5+T/sa+t/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
5f+ioqL/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/l5SR/+vj3v/r5N7//Pf0//v2
9P/79vT//Pbz//z28//79fL/+/Xy/7+/v/8AAAAPAAAACf///wHQ0ND////+/////v////7////+/9mo
ZP/Xo1v/1qNc/9WhVv/huYH/16dh/9WiV//Volb/1qVc/9akW//Q0ND///79///+/f///v3///79//7+
/f/+/f3//v39/+zo5v/s6Ob/7Ojm/+zo5f/s6OX/7Ojl/9bRz/+zr63/vr28/769vP+yr63/sq+s/7Kv
rP+yr6z/sq6r/7Kvq/+yrqv/sq6r/7Kuq/+yrav/sq2r/7Ktq/+yrav/sq2r/7Gtqv+yrKr/sayq/8rE
v//r5N//6+Tf//z39P/89vT/+/b0//v29P/89vP/+/bz//v18//AwcD/AAAADwAAAAn///8B0NDQ////
///////////////////brGr/2qhk/9qpZf/YpmD/4r2J/9usav/YpmD/2KZg/9mpZf/ZqWP/0NDQ//7+
/v/+/v7//v7+//7+/v///f3//v79//79/f/s6Ob/7Onm/+zo5v/s6Ob/7Ojm/+zo5v/s6OX/7Ojl//78
+//+/Pv/7Ofk/+zn5P/s5+T/7Ofj/+zn4//s5+L/7Ofi/+zm4v/s5uL/7OXi/+zl4v/s5eL/7OXi/+zl
4v/r5eH/6+Xg/+zk4P/r5eD/6+Tf/+vk3//89/X//Pf0//z39P/79/T/+/b0//v29P/79vT/wcHB/wAA
AA8AAAAJ////AdDQ0P//////////////////////26pn/9mmYP/ZpmD/2KRc/+G7hf/aqWf/16Rc/9ek
Xf/Zp2H/16Zg/9DQ0P///v7///7+///+/v///v7//v79//7+/f///f3/7ejm/+zp5v/t6eb/7Ojm/+zo
5v/s6OX/7Ojl/+zo5f/9/fz//f38/+zo5f/s5+T/7Ofk/+zn5P/s5+T/7Ofj/+zn4v/s5+L/7Ofi/+zm
4v/s5uL/7Obi/+zl4v/s5eL/7OXh/+zl4f/s5eD/6+Xg/+vl4P/s5OD//Pj1//349f/89/T//Pf0//v2
9P/79vT/+/b0/8PCw/8AAAAPAAAACf///wHQ0ND//////////////////////9qqZv/YpV7/16Re/9ai
Wv/hu4X/2ahl/9ejW//Wo1r/2KZh/9elXv/Q0ND//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v79/+zo
5v/s6Ob/7Onm/+zp5v/s6eb/7Ojm/+zo5v/s6Ob//v38//79/P/s6OX/7Ojl/+zn5P/s5+T/7Ofk/+zn
4//s5+P/7Ofi/+zn4v/s5uL/7Obi/+zm4v/s5uL/7Obi/+zl4v/s5eH/7OXh/+zl4f/s5eD/6+Tg//z4
9v/9+PX//fj1//z49P/89/T//Pf0//v29P/DxMP/AAAADwAAAAn///8B0NDQ////////////////////
///bqmf/2KVf/9ikX//Wolv/4ruF/9moZf/Xolv/1qJb/9mmYf/Wo1r/0NDQ/////v////7////+////
/v/+//7////+//7+/v/s6eb/7enm/+zo5v/s6eb/7Ojm/+zo5v/s6Ob/7Ojm//79/f/+/f3/7Ojm/+zo
5f/s6OT/7Ofk/+zn5P/s5+T/7Ofk/+zn4//s5+P/7Ofi/+zn4v/s5uL/7Obi/+zl4v/s5uL/7OXi/+zl
4v/r5eL/7OXh/+zl4P/9+Pb//Pn2//z49v/8+PX//Pf1//z39P/89/T/xMTE/wAAAA8AAAAJ////AdDQ
0P//////////////////////26tp/9mmYv/Zp2L/2KRd/+O9if/cr3D/2qhm/9qpZv/bq2r/4LiA/9DQ
0P///////////////////////////////v////7/7erm/+3p5v/t6eb/7Ojm/+3p5v/s6eb/7ejm/+3o
5v///f3//v39/+zo5f/s6OX/7Ojl/+zo5f/s5+T/7Ofk/+zn5P/s5+P/7Ofj/+zn4v/s5+L/7Ofj/+zn
4v/s5uL/7Obi/+zl4v/s5eL/7OXh/+zl4f/s5eH//Pn2//z59v/9+PX//Pj2//z49f/9+PX//Pf0/8XG
xf8AAAAPAAAACf///wHQ0ND//////////////////////9ytbv/bq2n/26pp/9qnY//lwpP/4r6M/+G7
hf/huoP/4ryJ/+G5g//Q0ND////////////////////////////////////+/+3q5v/t6eb/7enm/+zp
5v/s6eb/7enm/+zp5v/s6Ob//v39//79/f/s6Ob/7Ojm/+zo5v/s6OX/7Ojl/+zo5P/s6OX/7Ofk/+zn
5P/s5+P/7Ofj/+zn4//s5uP/7Ofi/+zn4v/s5uL/7OXi/+zl4v/s5eL/7OXh//359//9+fb//fn2//35
9v/9+Pb//Pj1//z49f/Gx8b/AAAADwAAAAn///8B0NDQ///////////////////////bqmn/2aVh/9mm
Yf/Yo13/4rqG/9qoZf/Xolr/1qJa/9ilYP/XpF7/0NDQ///////////////////////////////+//7+
///s6ef/7ern/+zp5v/t6eb/7Onm/+3o5v/s6eb/7Ojm//79/f/+/f3/7Ojm/+zo5v/s6Ob/7Ojm/+zo
5f/s6OT/7Ojk/+zo5f/s5+T/7Ofk/+zn5P/s5+P/7Obj/+zn4v/s5uL/7Obi/+zl4v/s5eL/7OXh/+zl
4P/9+fj//fn3//359//9+fb//Pn3//359f/8+Pb/x8fH/wAAAA8AAAAJ////AdDQ0P//////////////
////////26tq/9qmYv/ap2P/2KRe/+K8iP/bq2n/2aVf/9mkX//aqWX/2aZj/9DQ0P//////////////
/////////////////v/+/v//7Onn/+3q5//s6eb/7enm/+zp5v/t6Ob/7Onm/+zo5v///v3///79/+zo
5v/s6eb/7Ojm/+zo5v/s6OX/7Ojm/+zo5P/s6OX/7Ofk/+zn5P/s6OT/7Ofj/+zm4//s5+L/7Obi/+zm
4v/s5eH/7OXh/+zl4f/s5eD//fr4//35+P/8+ff//fn2//z59v/9+ff//Pj2/8jIyP8AAAAPAAAACf//
/wHQ0ND//////////////////////9ura//apmP/2qdj/9mkX//jvIj/26tp/9mkYP/YpmD/2qhm/9mo
ZP/Q0ND//////////////////////////////////////+3q5//t6uf/7erm/+3p5v/t6ef/7enm/+3p
5v/s6Ob///79///+/f/s6Ob/7Onm/+zo5v/s6Ob/7Ojl/+zo5v/s6Ob/7Ojk/+zo5f3s5+T97Ojk/+zn
4//s5uP/7efj/+zm4v/s5uL/7OXh/+zl4f/s5eH/7Obg//36+P39+fj9/Pn3//359//9+ff//fj3//z5
9v/Jycn/AAAADwAAAAn///8B0NDQ///////////////////////drnH/3Kts/9ysbP/bqmj/5MCQ/92w
c//bq2r/26tp/9ytbv/crWz/0NDQ///////////////////////////////////////t6uf/7ern/+zq
5//t6uf/7erm/+zp5v/t6eb/7Onm//79/v/+/f7/7Onm/+3o5v/s6Ob/7Ojm/+zo5v/s5+X/7Ofj/+zn
4v/s6OT57Ofk9+3q5//t6OT/7efj/+3n4//s5uL/7Obi/+zl4f/r5eH/7OTh/+vl4P/9+fnz/fr48/35
+PX9+fj3/Pn49fz59/f8+fb7ysnJ/wAAAA8AAAAJ////AdDQ0P//////////////////////3Kts/9qn
ZP/ap2X/2aVg/+O9iv/crGv/2aZi/9mmYv/bqWf/2qlm/9DQ0P//////////////////////////////
////////7ern/+3p5//t6ub/7enm/+zp5v/t6eb/7Onm/+3q5v////3///79/+zp5v/t6uf/7ern/+3q
5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//t6uf/7enm/+3n5P/t6OT97Ofi/+zm4v/s5eH/6+Xh/+vk
4v/r5uH//Pn2//z59v/9+PX//Pj2//z49f/9+PX//Pf0/8vLyv8AAAAPAAAACf///wHQ0ND/////////
/////////////9yrbf/ap2X/2qdl/9mlYf/jvYr/3Kxs/9qmYv/ZpmL/26lo/9qpZv/Q0ND/////////
/////////////////////////////+3q5//t6uf/7ern/+3q5v/t6eb/7erm/+3p5v/s6eb///7+///+
/v/s6eb/7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3p5//s6OX/7Ojk/e3o
4//t5+L/6+bi/+vl4f/s5eL/6+fh//359//9+fb//fn2//359v/9+Pb//Pj1//z49f/MzMv/AAAADwAA
AAn///8B0NDQ///////////////////////cq23/26dl/9uoZf/ZpWH/472K/9ysbP/apmP/2qZi/9uq
aP/bqWb/0NDQ///////////////////////////////////////t6uf/7ern/+3q5//t6ef/7Orn/+3p
5//s6uf/7enm//7+/v/+//7/7erm/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q
5//t6uf/7Orm/+zp5f/t6eX/6+fh/+zn5P3s6OL/7efk/ezp5P/9+fj//fn3//359//9+fb//Pn3//35
9f/8+Pb/zMzM/wAAAA8AAAAJ////AdDQ0P//////////////////////3q1x/9yqav/cqmv/26hm/+S/
jv/drnH/26lo/9upaP/crG3/3Ktr/9DQ0P//////////////////////////////////////7ern/+3q
5//t6uf/7ern/+3q5//t6uf/7ern/+3q5////////////+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q
5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//s6ub/7ern/+3q5v3t6eX97ejl/+3p5f/s6eX//fr4//35
+P/8+ff//fn2//z59v/29vX/9PPz/83MzP8AAAAPAAAACf///wHQ0ND//////////////////////92u
cv/cq2z/3Kts/9upaP/lv5D/3q9z/9uqav/bqmr/3K1u/9ytbf/Q0ND/////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////36+P39+fj9/Pn3//r6+v/4+Pj/9vb2//Py8v/Nzc3/AAAADwAAAAn///8B0NDQ////
///////////////////drG7/26dm/9uoZ//apmP/5L2L/92sbv/ap2T/2qdk/9uqav/bqmn/0NDQ////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////7+/v/+/v7//v7+//5+fn/9vb2//Pz8//v7+//zs3N/wAA
AA8AAAAJ////AdDQ0P//////////////////////3axv/9uoaP/bqGj/2qZk/+S9jP/drG7/26dl/9un
Zf/bqWn/2qdk/9DQ0P//////////////////////////////////////7ern/+3q5//t6uf/7ern/+3q
5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q
5//t6uf/7ern/+3q5//t6uf/7ern/+nm4//p5uP/6ufk/+rn5P/q5+T/+/v7//v7+//5+fn/9vb2//Pz
8//w8PD/7Ozs/87Ozv8AAAAPAAAACf///wHQ0ND//////////////////////92tcf/cqWr/3Kpq/9un
Zv/lwJH/37J3/92tb//dq23/4LR7/+XBkv/Q0ND//////////////////////////////////////+3q
5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q
5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//q5+T/6ufk/+rn5P/q5+T/6ufk/+rn5P/q5+T/6ufk//v7
+//5+fn/9/f3//Pz8//w8PD/7Ozs/+fn5//Ozs7/AAAAD////wH///8B0NDQ////////////////////
///fr3X/3qxw/92tcP/dq23/47uI/+W/kP/kvY3/47yJ/+jJof/w3MH/0NDQ////////////////////
///////////////////t6uf/7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q
5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//q5+T/6ufk/+rn5P/q5+T/6ufk/+rn
5P/q5+T/6ufk/+rn5P/5+fn/9/f3//T09P/w8PD/7Ozs/+fn5//U1NT/zs7O/////wH///8B////AdDQ
0P//////////////////////3a1w/9yoaP/cqWj/3Kho/9yrbv/bp2b/26Zk/9qmY//cqmv/3rB0/9DQ
0P//////////////////////////////////////7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q
5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//q5+T/6ufk/+rn
5P/q5+T/6ufk/+Tg3v/W09D/1NHO/9jV0v/a19T/6Ojo/+fn5//j4+P/3d3d/9XV1f/Gxsb/vLy8/+fn
5/////8B////Af///wHQ0ND//////////////////////92tcP/cqGn/3Klq/9ypaf/erXH/3Kpr/9yo
af/bqGj/3att/9uqav/Q0ND//////////////////////////////////////+3q5//t6uf/7ern/+3q
5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+rn
5P/q5+T/6ufk/+rn5P/q5+T/6ufk/+rn5P/a19T/sLCw/5WVlf+ampr/oaGh/6ioqP+qqqr/paWl/6Ki
of+np6f/ysrK/+Xl5f////8B////Af///wH///8B0NDQ///////////////////////drXD/3Kdo/9yo
af/cqWj/3q1x/9yqav/cqGj/26hn/92sbf/cq2z/0NDQ////////////////////////////////////
///t6uf/7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q
5//t6uf/7ern/+3q5//q5+T/6ufk/+rn5P/q5+T/6ufk/+vn5f/r5+X/2NXS/6ampv/m5ub/5eXl/9/f
3//U1NT/zMvM/87Ozv/Q0NH/4uLi/+Tk5P////8B////Af///wH///8B////AdDQ0P//////////////
////////3q90/92scP/drXD/3a1w/9+vdf/drXH/3q1w/92sb//ernP/3q5y/9DQ0P//////////////
////////////////////////7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q
5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//t6uf/6ufk/+rn5P/r5+X/6+fl/+vn5f/r5+X/6+fl/9jV
0v+pqan/////////////////+vr6/+zs7P/f39//5OTl/+Dg4P////8B////Af///wH///8B////Af//
/wHQ0ND/////////////////////////////////////////////////////////////////////////
///Q0ND//////////////////////////////////////+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q
5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//t6uf/7ern/+3q5//t6uf/6+fl/+vn5f/r5+X/6+fl/+vn
5f/r5+X/6+fl/+vn5f/Y1NL/qKio//7+/v//////+vr6/+vr6//a2tr/4uPj/+Li4v////8B////Af//
/wH///8B////Af///wH///8B0NDQ////////////////////////////////////////////////////
////////////////////////0NDQ////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////z8
/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/6+vr/4+Pj/6ioqP/9/f3/+vr6/+vr6//Z2dn/4+Pj/+Xl
5f////8B////Af///wH///8B////Af///wH///8B////AdDQ0P//////////////////////////////
/////////////////////////////////////////////9DQ0P//////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////8/Pz//Pz8//z8/P/8/Pz//Pz8//39/f/7+/v/+Pj4/+Hh4f+pqan/+fn5/+vr
6//Z2dn/5OTk/+Dg4P////8B////Af///wH///8B////Af///wH///8B////Af///wHQ0ND/////////
///////////////////////////////////////////////////////////////////Q0ND/////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////z8/P/9/f3//f39//39/f/7+/v/+Pj4//X1
9f/e3t7/qamp/+vr6//a2tr/5ubm/+Pj4/////8B////Af///wH///8B////Af///wH///8B////Af//
/wH///8B2dnZ/+Dg4P/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e
3v/e3t7/0NDQ////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////9/f3//f39//39
/f/7+/v/+Pj4//X19f/y8vL/2NjY/66urv/d3d3/5ubm/+bm5v////8B////Af///wH///8B////Af//
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
/wH///8B////Af///wH///8B////AdDQ0P//////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////f39//39/f/7+/v/+Pj4//X19f/y8vL/7u7u/9DQ0P+6urr/6enp/+Li4v////8B////Af//
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wHQ0ND/////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////39/f/7+/v/+fn5//b29v/y8vL/7u7u/+np6f/CwsL/3Nzc/+Pj
4/////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B0NDQ////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////7+/v/+Pj4//X19f/y8vL/7e3t/+np
6f/g4OD/1NTU/97e3v////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
/wH///8B////AdnZ2f/g4OD/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e
3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e
3v/e3t7/3t7e/97e3v/i4uL/2tra/+Pj4/////8B////Af///wH///8B////Af///wH///8B////Af//
/wH///8B////Af///wH///8B////Af///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
</value>
</data>
</root>
+69
View File
@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{20FC0937-E7CA-4693-95F9-7A948EFD173B}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Step.UI</RootNamespace>
<AssemblyName>Step.UI</AssemblyName>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="TeamDev.SDK.6, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f22b83b6361d7d4f, processorArchitecture=MSIL">
<HintPath>..\packages\TeamDev.SDK.6.1.07\lib\net45\TeamDev.SDK.6.dll</HintPath>
</Reference>
<Reference Include="TeamDev.SDK.WPF, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f22b83b6361d7d4f, processorArchitecture=MSIL">
<HintPath>..\packages\TeamDev.SDK.6.1.07\lib\net45\TeamDev.SDK.WPF.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="ServerControlWindow.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="ServerControlWindow.Designer.cs">
<DependentUpon>ServerControlWindow.cs</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
<None Include="readme.md" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="ServerControlWindow.resx">
<DependentUpon>ServerControlWindow.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
+4
View File
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="TeamDev.SDK" version="6.1.07" targetFramework="net462" />
</packages>
+18
View File
@@ -0,0 +1,18 @@
# Step.UI.dll
## A cosa serve questo progetto
Lo scopo di questo progetto è quello di ospitare una UI di
riferimento veloce per l'utente finale che possa permettergli di
interagire velocemente con il server.
## Come NON deve essere utilizzato questo progetto.
Questo progetto non è inteso come progetto che debba ospitare logica di business.
Per tale scopo è necessario implementare un progetto separato di middle ware.
## Come comunicare con il server.
Per mantenere il massimo disaccoppiamento per comunicare con il server
o con altre parti dell'applicazione questo progetto deve utilizzare il
**MessageService** messo a disposizione dalle dll **Teamdev.SDK for SCM**
+6
View File
@@ -7,6 +7,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Step", "Step\Step.csproj",
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Step.Model", "Step.Model\Step.Model.csproj", "{631375DD-06D3-49BB-8130-D9DDB34C429D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Step.UI", "Step.UI\Step.UI.csproj", "{20FC0937-E7CA-4693-95F9-7A948EFD173B}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -21,6 +23,10 @@ Global
{631375DD-06D3-49BB-8130-D9DDB34C429D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{631375DD-06D3-49BB-8130-D9DDB34C429D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{631375DD-06D3-49BB-8130-D9DDB34C429D}.Release|Any CPU.Build.0 = Release|Any CPU
{20FC0937-E7CA-4693-95F9-7A948EFD173B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{20FC0937-E7CA-4693-95F9-7A948EFD173B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{20FC0937-E7CA-4693-95F9-7A948EFD173B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{20FC0937-E7CA-4693-95F9-7A948EFD173B}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
+4 -22
View File
@@ -1,14 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
https://go.microsoft.com/fwlink/?LinkId=301879
-->
<configuration>
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="localHostServiceURI" value="http://localhost:9000"/>
<add key="enableDirectoryBrowsing" value="true"/>
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.6.2" />
@@ -16,17 +14,7 @@
<httpModules>
</httpModules>
</system.web>
<system.webServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
<validation validateIntegratedModeConfiguration="false" />
<modules>
</modules>
</system.webServer>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
@@ -59,10 +47,4 @@
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
</compilers>
</system.codedom>
</configuration>
+35 -1
View File
@@ -2,6 +2,12 @@ using System;
using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;
using System.Web.Http;
using Microsoft.Owin.StaticFiles;
using System.IO;
using System.Reflection;
using Microsoft.Owin.FileSystems;
using System.Configuration;
[assembly: OwinStartup(typeof(Step.App_Start.Startup))]
@@ -9,6 +15,34 @@ namespace Step.App_Start
{
public class Startup
{
public void Configuration(IAppBuilder app) => app.MapSignalR();
public void Configuration(IAppBuilder app)
{
// Configurazione HTTP di avvio
HttpConfiguration config = new HttpConfiguration();
// Registrazione delle Web API
WebApiConfig.Register(config);
// Registrazione di Swagger
SwaggerConfig.Register(config);
// Registrazione di SignalR
app.MapSignalR();
app.UseWebApi(config);
var directoryBrowsing = ConfigurationManager.AppSettings["enableDirectoryBrowsing"] == "true";
string rootDir = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "..", "wwwroot");
var options = new FileServerOptions()
{
EnableDefaultFiles = !directoryBrowsing,
EnableDirectoryBrowsing = directoryBrowsing,
RequestPath = PathString.Empty,
FileSystem = new PhysicalFileSystem(rootDir)
};
app.UseFileServer(options);
}
}
}
+208 -210
View File
@@ -3,253 +3,251 @@ using WebActivatorEx;
using Step;
using Swashbuckle.Application;
[assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")]
namespace Step
{
public class SwaggerConfig
public class SwaggerConfig
{
public static void Register(HttpConfiguration config)
{
public static void Register()
{
var thisAssembly = typeof(SwaggerConfig).Assembly;
var thisAssembly = typeof(SwaggerConfig).Assembly;
GlobalConfiguration.Configuration
.EnableSwagger(c =>
config
.EnableSwagger(c =>
{
// By default, the service root url is inferred from the request used to access the docs.
// However, there may be situations (e.g. proxy and load-balanced environments) where this does not
// resolve correctly. You can workaround this by providing your own code to determine the root URL.
//
//c.RootUrl(req => GetRootUrlFromAppConfig());
// By default, the service root url is inferred from the request used to access the docs.
// However, there may be situations (e.g. proxy and load-balanced environments) where this does not
// resolve correctly. You can workaround this by providing your own code to determine the root URL.
//
//c.RootUrl(req => GetRootUrlFromAppConfig());
// If schemes are not explicitly provided in a Swagger 2.0 document, then the scheme used to access
// the docs is taken as the default. If your API supports multiple schemes and you want to be explicit
// about them, you can use the "Schemes" option as shown below.
//
//c.Schemes(new[] { "http", "https" });
// If schemes are not explicitly provided in a Swagger 2.0 document, then the scheme used to access
// the docs is taken as the default. If your API supports multiple schemes and you want to be explicit
// about them, you can use the "Schemes" option as shown below.
//
//c.Schemes(new[] { "http", "https" });
// Use "SingleApiVersion" to describe a single version API. Swagger 2.0 includes an "Info" object to
// hold additional metadata for an API. Version and title are required but you can also provide
// additional fields by chaining methods off SingleApiVersion.
//
c.SingleApiVersion("v1", "Step");
// Use "SingleApiVersion" to describe a single version API. Swagger 2.0 includes an "Info" object to
// hold additional metadata for an API. Version and title are required but you can also provide
// additional fields by chaining methods off SingleApiVersion.
//
c.SingleApiVersion("v1", "Step");
// If you want the output Swagger docs to be indented properly, enable the "PrettyPrint" option.
//
//c.PrettyPrint();
// If you want the output Swagger docs to be indented properly, enable the "PrettyPrint" option.
//
//c.PrettyPrint();
// If your API has multiple versions, use "MultipleApiVersions" instead of "SingleApiVersion".
// In this case, you must provide a lambda that tells Swashbuckle which actions should be
// included in the docs for a given API version. Like "SingleApiVersion", each call to "Version"
// returns an "Info" builder so you can provide additional metadata per API version.
//
//c.MultipleApiVersions(
// (apiDesc, targetApiVersion) => ResolveVersionSupportByRouteConstraint(apiDesc, targetApiVersion),
// (vc) =>
// {
// vc.Version("v2", "Swashbuckle Dummy API V2");
// vc.Version("v1", "Swashbuckle Dummy API V1");
// });
// If your API has multiple versions, use "MultipleApiVersions" instead of "SingleApiVersion".
// In this case, you must provide a lambda that tells Swashbuckle which actions should be
// included in the docs for a given API version. Like "SingleApiVersion", each call to "Version"
// returns an "Info" builder so you can provide additional metadata per API version.
//
//c.MultipleApiVersions(
// (apiDesc, targetApiVersion) => ResolveVersionSupportByRouteConstraint(apiDesc, targetApiVersion),
// (vc) =>
// {
// vc.Version("v2", "Swashbuckle Dummy API V2");
// vc.Version("v1", "Swashbuckle Dummy API V1");
// });
// You can use "BasicAuth", "ApiKey" or "OAuth2" options to describe security schemes for the API.
// See https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md for more details.
// NOTE: These only define the schemes and need to be coupled with a corresponding "security" property
// at the document or operation level to indicate which schemes are required for an operation. To do this,
// you'll need to implement a custom IDocumentFilter and/or IOperationFilter to set these properties
// according to your specific authorization implementation
//
//c.BasicAuth("basic")
// .Description("Basic HTTP Authentication");
//
// NOTE: You must also configure 'EnableApiKeySupport' below in the SwaggerUI section
//c.ApiKey("apiKey")
// .Description("API Key Authentication")
// .Name("apiKey")
// .In("header");
//
//c.OAuth2("oauth2")
// .Description("OAuth2 Implicit Grant")
// .Flow("implicit")
// .AuthorizationUrl("http://petstore.swagger.wordnik.com/api/oauth/dialog")
// //.TokenUrl("https://tempuri.org/token")
// .Scopes(scopes =>
// {
// scopes.Add("read", "Read access to protected resources");
// scopes.Add("write", "Write access to protected resources");
// });
// You can use "BasicAuth", "ApiKey" or "OAuth2" options to describe security schemes for the API.
// See https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md for more details.
// NOTE: These only define the schemes and need to be coupled with a corresponding "security" property
// at the document or operation level to indicate which schemes are required for an operation. To do this,
// you'll need to implement a custom IDocumentFilter and/or IOperationFilter to set these properties
// according to your specific authorization implementation
//
//c.BasicAuth("basic")
// .Description("Basic HTTP Authentication");
//
// NOTE: You must also configure 'EnableApiKeySupport' below in the SwaggerUI section
//c.ApiKey("apiKey")
// .Description("API Key Authentication")
// .Name("apiKey")
// .In("header");
//
//c.OAuth2("oauth2")
// .Description("OAuth2 Implicit Grant")
// .Flow("implicit")
// .AuthorizationUrl("http://petstore.swagger.wordnik.com/api/oauth/dialog")
// //.TokenUrl("https://tempuri.org/token")
// .Scopes(scopes =>
// {
// scopes.Add("read", "Read access to protected resources");
// scopes.Add("write", "Write access to protected resources");
// });
// Set this flag to omit descriptions for any actions decorated with the Obsolete attribute
//c.IgnoreObsoleteActions();
// Set this flag to omit descriptions for any actions decorated with the Obsolete attribute
//c.IgnoreObsoleteActions();
// Each operation be assigned one or more tags which are then used by consumers for various reasons.
// For example, the swagger-ui groups operations according to the first tag of each operation.
// By default, this will be controller name but you can use the "GroupActionsBy" option to
// override with any value.
//
//c.GroupActionsBy(apiDesc => apiDesc.HttpMethod.ToString());
// Each operation be assigned one or more tags which are then used by consumers for various reasons.
// For example, the swagger-ui groups operations according to the first tag of each operation.
// By default, this will be controller name but you can use the "GroupActionsBy" option to
// override with any value.
//
//c.GroupActionsBy(apiDesc => apiDesc.HttpMethod.ToString());
// You can also specify a custom sort order for groups (as defined by "GroupActionsBy") to dictate
// the order in which operations are listed. For example, if the default grouping is in place
// (controller name) and you specify a descending alphabetic sort order, then actions from a
// ProductsController will be listed before those from a CustomersController. This is typically
// used to customize the order of groupings in the swagger-ui.
//
//c.OrderActionGroupsBy(new DescendingAlphabeticComparer());
// You can also specify a custom sort order for groups (as defined by "GroupActionsBy") to dictate
// the order in which operations are listed. For example, if the default grouping is in place
// (controller name) and you specify a descending alphabetic sort order, then actions from a
// ProductsController will be listed before those from a CustomersController. This is typically
// used to customize the order of groupings in the swagger-ui.
//
//c.OrderActionGroupsBy(new DescendingAlphabeticComparer());
// If you annotate Controllers and API Types with
// Xml comments (http://msdn.microsoft.com/en-us/library/b2s063f7(v=vs.110).aspx), you can incorporate
// those comments into the generated docs and UI. You can enable this by providing the path to one or
// more Xml comment files.
//
//c.IncludeXmlComments(GetXmlCommentsPath());
// If you annotate Controllers and API Types with
// Xml comments (http://msdn.microsoft.com/en-us/library/b2s063f7(v=vs.110).aspx), you can incorporate
// those comments into the generated docs and UI. You can enable this by providing the path to one or
// more Xml comment files.
//
//c.IncludeXmlComments(GetXmlCommentsPath());
// Swashbuckle makes a best attempt at generating Swagger compliant JSON schemas for the various types
// exposed in your API. However, there may be occasions when more control of the output is needed.
// This is supported through the "MapType" and "SchemaFilter" options:
//
// Use the "MapType" option to override the Schema generation for a specific type.
// It should be noted that the resulting Schema will be placed "inline" for any applicable Operations.
// While Swagger 2.0 supports inline definitions for "all" Schema types, the swagger-ui tool does not.
// It expects "complex" Schemas to be defined separately and referenced. For this reason, you should only
// use the "MapType" option when the resulting Schema is a primitive or array type. If you need to alter a
// complex Schema, use a Schema filter.
//
//c.MapType<ProductType>(() => new Schema { type = "integer", format = "int32" });
// Swashbuckle makes a best attempt at generating Swagger compliant JSON schemas for the various types
// exposed in your API. However, there may be occasions when more control of the output is needed.
// This is supported through the "MapType" and "SchemaFilter" options:
//
// Use the "MapType" option to override the Schema generation for a specific type.
// It should be noted that the resulting Schema will be placed "inline" for any applicable Operations.
// While Swagger 2.0 supports inline definitions for "all" Schema types, the swagger-ui tool does not.
// It expects "complex" Schemas to be defined separately and referenced. For this reason, you should only
// use the "MapType" option when the resulting Schema is a primitive or array type. If you need to alter a
// complex Schema, use a Schema filter.
//
//c.MapType<ProductType>(() => new Schema { type = "integer", format = "int32" });
// If you want to post-modify "complex" Schemas once they've been generated, across the board or for a
// specific type, you can wire up one or more Schema filters.
//
//c.SchemaFilter<ApplySchemaVendorExtensions>();
// If you want to post-modify "complex" Schemas once they've been generated, across the board or for a
// specific type, you can wire up one or more Schema filters.
//
//c.SchemaFilter<ApplySchemaVendorExtensions>();
// In a Swagger 2.0 document, complex types are typically declared globally and referenced by unique
// Schema Id. By default, Swashbuckle does NOT use the full type name in Schema Ids. In most cases, this
// works well because it prevents the "implementation detail" of type namespaces from leaking into your
// Swagger docs and UI. However, if you have multiple types in your API with the same class name, you'll
// need to opt out of this behavior to avoid Schema Id conflicts.
//
//c.UseFullTypeNameInSchemaIds();
// In a Swagger 2.0 document, complex types are typically declared globally and referenced by unique
// Schema Id. By default, Swashbuckle does NOT use the full type name in Schema Ids. In most cases, this
// works well because it prevents the "implementation detail" of type namespaces from leaking into your
// Swagger docs and UI. However, if you have multiple types in your API with the same class name, you'll
// need to opt out of this behavior to avoid Schema Id conflicts.
//
//c.UseFullTypeNameInSchemaIds();
// Alternatively, you can provide your own custom strategy for inferring SchemaId's for
// describing "complex" types in your API.
//
//c.SchemaId(t => t.FullName.Contains('`') ? t.FullName.Substring(0, t.FullName.IndexOf('`')) : t.FullName);
// Alternatively, you can provide your own custom strategy for inferring SchemaId's for
// describing "complex" types in your API.
//
//c.SchemaId(t => t.FullName.Contains('`') ? t.FullName.Substring(0, t.FullName.IndexOf('`')) : t.FullName);
// Set this flag to omit schema property descriptions for any type properties decorated with the
// Obsolete attribute
//c.IgnoreObsoleteProperties();
// Set this flag to omit schema property descriptions for any type properties decorated with the
// Obsolete attribute
//c.IgnoreObsoleteProperties();
// In accordance with the built in JsonSerializer, Swashbuckle will, by default, describe enums as integers.
// You can change the serializer behavior by configuring the StringToEnumConverter globally or for a given
// enum type. Swashbuckle will honor this change out-of-the-box. However, if you use a different
// approach to serialize enums as strings, you can also force Swashbuckle to describe them as strings.
//
//c.DescribeAllEnumsAsStrings();
// In accordance with the built in JsonSerializer, Swashbuckle will, by default, describe enums as integers.
// You can change the serializer behavior by configuring the StringToEnumConverter globally or for a given
// enum type. Swashbuckle will honor this change out-of-the-box. However, if you use a different
// approach to serialize enums as strings, you can also force Swashbuckle to describe them as strings.
//
//c.DescribeAllEnumsAsStrings();
// Similar to Schema filters, Swashbuckle also supports Operation and Document filters:
//
// Post-modify Operation descriptions once they've been generated by wiring up one or more
// Operation filters.
//
//c.OperationFilter<AddDefaultResponse>();
//
// If you've defined an OAuth2 flow as described above, you could use a custom filter
// to inspect some attribute on each action and infer which (if any) OAuth2 scopes are required
// to execute the operation
//
//c.OperationFilter<AssignOAuth2SecurityRequirements>();
// Similar to Schema filters, Swashbuckle also supports Operation and Document filters:
//
// Post-modify Operation descriptions once they've been generated by wiring up one or more
// Operation filters.
//
//c.OperationFilter<AddDefaultResponse>();
//
// If you've defined an OAuth2 flow as described above, you could use a custom filter
// to inspect some attribute on each action and infer which (if any) OAuth2 scopes are required
// to execute the operation
//
//c.OperationFilter<AssignOAuth2SecurityRequirements>();
// Post-modify the entire Swagger document by wiring up one or more Document filters.
// This gives full control to modify the final SwaggerDocument. You should have a good understanding of
// the Swagger 2.0 spec. - https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md
// before using this option.
//
//c.DocumentFilter<ApplyDocumentVendorExtensions>();
// Post-modify the entire Swagger document by wiring up one or more Document filters.
// This gives full control to modify the final SwaggerDocument. You should have a good understanding of
// the Swagger 2.0 spec. - https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md
// before using this option.
//
//c.DocumentFilter<ApplyDocumentVendorExtensions>();
// In contrast to WebApi, Swagger 2.0 does not include the query string component when mapping a URL
// to an action. As a result, Swashbuckle will raise an exception if it encounters multiple actions
// with the same path (sans query string) and HTTP method. You can workaround this by providing a
// custom strategy to pick a winner or merge the descriptions for the purposes of the Swagger docs
//
//c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
// In contrast to WebApi, Swagger 2.0 does not include the query string component when mapping a URL
// to an action. As a result, Swashbuckle will raise an exception if it encounters multiple actions
// with the same path (sans query string) and HTTP method. You can workaround this by providing a
// custom strategy to pick a winner or merge the descriptions for the purposes of the Swagger docs
//
//c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
// Wrap the default SwaggerGenerator with additional behavior (e.g. caching) or provide an
// alternative implementation for ISwaggerProvider with the CustomProvider option.
//
//c.CustomProvider((defaultProvider) => new CachingSwaggerProvider(defaultProvider));
// Wrap the default SwaggerGenerator with additional behavior (e.g. caching) or provide an
// alternative implementation for ISwaggerProvider with the CustomProvider option.
//
//c.CustomProvider((defaultProvider) => new CachingSwaggerProvider(defaultProvider));
})
.EnableSwaggerUi(c =>
{
// Use the "DocumentTitle" option to change the Document title.
// Very helpful when you have multiple Swagger pages open, to tell them apart.
//
//c.DocumentTitle("My Swagger UI");
// Use the "DocumentTitle" option to change the Document title.
// Very helpful when you have multiple Swagger pages open, to tell them apart.
//
//c.DocumentTitle("My Swagger UI");
// Use the "InjectStylesheet" option to enrich the UI with one or more additional CSS stylesheets.
// The file must be included in your project as an "Embedded Resource", and then the resource's
// "Logical Name" is passed to the method as shown below.
//
//c.InjectStylesheet(containingAssembly, "Swashbuckle.Dummy.SwaggerExtensions.testStyles1.css");
// Use the "InjectStylesheet" option to enrich the UI with one or more additional CSS stylesheets.
// The file must be included in your project as an "Embedded Resource", and then the resource's
// "Logical Name" is passed to the method as shown below.
//
//c.InjectStylesheet(containingAssembly, "Swashbuckle.Dummy.SwaggerExtensions.testStyles1.css");
// Use the "InjectJavaScript" option to invoke one or more custom JavaScripts after the swagger-ui
// has loaded. The file must be included in your project as an "Embedded Resource", and then the resource's
// "Logical Name" is passed to the method as shown above.
//
//c.InjectJavaScript(thisAssembly, "Swashbuckle.Dummy.SwaggerExtensions.testScript1.js");
// Use the "InjectJavaScript" option to invoke one or more custom JavaScripts after the swagger-ui
// has loaded. The file must be included in your project as an "Embedded Resource", and then the resource's
// "Logical Name" is passed to the method as shown above.
//
//c.InjectJavaScript(thisAssembly, "Swashbuckle.Dummy.SwaggerExtensions.testScript1.js");
// The swagger-ui renders boolean data types as a dropdown. By default, it provides "true" and "false"
// strings as the possible choices. You can use this option to change these to something else,
// for example 0 and 1.
//
//c.BooleanValues(new[] { "0", "1" });
// The swagger-ui renders boolean data types as a dropdown. By default, it provides "true" and "false"
// strings as the possible choices. You can use this option to change these to something else,
// for example 0 and 1.
//
//c.BooleanValues(new[] { "0", "1" });
// By default, swagger-ui will validate specs against swagger.io's online validator and display the result
// in a badge at the bottom of the page. Use these options to set a different validator URL or to disable the
// feature entirely.
//c.SetValidatorUrl("http://localhost/validator");
//c.DisableValidator();
// By default, swagger-ui will validate specs against swagger.io's online validator and display the result
// in a badge at the bottom of the page. Use these options to set a different validator URL or to disable the
// feature entirely.
//c.SetValidatorUrl("http://localhost/validator");
//c.DisableValidator();
// Use this option to control how the Operation listing is displayed.
// It can be set to "None" (default), "List" (shows operations for each resource),
// or "Full" (fully expanded: shows operations and their details).
//
//c.DocExpansion(DocExpansion.List);
// Use this option to control how the Operation listing is displayed.
// It can be set to "None" (default), "List" (shows operations for each resource),
// or "Full" (fully expanded: shows operations and their details).
//
//c.DocExpansion(DocExpansion.List);
// Specify which HTTP operations will have the 'Try it out!' option. An empty paramter list disables
// it for all operations.
//
//c.SupportedSubmitMethods("GET", "HEAD");
// Specify which HTTP operations will have the 'Try it out!' option. An empty paramter list disables
// it for all operations.
//
//c.SupportedSubmitMethods("GET", "HEAD");
// Use the CustomAsset option to provide your own version of assets used in the swagger-ui.
// It's typically used to instruct Swashbuckle to return your version instead of the default
// when a request is made for "index.html". As with all custom content, the file must be included
// in your project as an "Embedded Resource", and then the resource's "Logical Name" is passed to
// the method as shown below.
//
//c.CustomAsset("index", containingAssembly, "YourWebApiProject.SwaggerExtensions.index.html");
// Use the CustomAsset option to provide your own version of assets used in the swagger-ui.
// It's typically used to instruct Swashbuckle to return your version instead of the default
// when a request is made for "index.html". As with all custom content, the file must be included
// in your project as an "Embedded Resource", and then the resource's "Logical Name" is passed to
// the method as shown below.
//
//c.CustomAsset("index", containingAssembly, "YourWebApiProject.SwaggerExtensions.index.html");
// If your API has multiple versions and you've applied the MultipleApiVersions setting
// as described above, you can also enable a select box in the swagger-ui, that displays
// a discovery URL for each version. This provides a convenient way for users to browse documentation
// for different API versions.
//
//c.EnableDiscoveryUrlSelector();
// If your API has multiple versions and you've applied the MultipleApiVersions setting
// as described above, you can also enable a select box in the swagger-ui, that displays
// a discovery URL for each version. This provides a convenient way for users to browse documentation
// for different API versions.
//
//c.EnableDiscoveryUrlSelector();
// If your API supports the OAuth2 Implicit flow, and you've described it correctly, according to
// the Swagger 2.0 specification, you can enable UI support as shown below.
//
//c.EnableOAuth2Support(
// clientId: "test-client-id",
// clientSecret: null,
// realm: "test-realm",
// appName: "Swagger UI"
// //additionalQueryStringParams: new Dictionary<string, string>() { { "foo", "bar" } }
//);
// If your API supports the OAuth2 Implicit flow, and you've described it correctly, according to
// the Swagger 2.0 specification, you can enable UI support as shown below.
//
//c.EnableOAuth2Support(
// clientId: "test-client-id",
// clientSecret: null,
// realm: "test-realm",
// appName: "Swagger UI"
// //additionalQueryStringParams: new Dictionary<string, string>() { { "foo", "bar" } }
//);
// If your API supports ApiKey, you can override the default values.
// "apiKeyIn" can either be "query" or "header"
//
//c.EnableApiKeySupport("apiKey", "header");
// If your API supports ApiKey, you can override the default values.
// "apiKeyIn" can either be "query" or "header"
//
//c.EnableApiKeySupport("apiKey", "header");
});
}
}
}
}
-1
View File
@@ -1 +0,0 @@
<%@ Application Codebehind="Global.asax.cs" Inherits="Step.WebApiApplication" Language="C#" %>
-20
View File
@@ -1,20 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Routing;
namespace Step
{
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
}
+162 -31
View File
@@ -12,7 +12,7 @@
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{AFED34E1-77DB-4D81-830A-A8D0A190573D}</ProjectGuid>
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Step</RootNamespace>
<AssemblyName>Step</AssemblyName>
@@ -62,12 +62,24 @@
<Reference Include="Microsoft.Owin, Version=3.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Owin.3.1.0\lib\net45\Microsoft.Owin.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Owin.FileSystems, Version=3.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Owin.FileSystems.3.1.0\lib\net45\Microsoft.Owin.FileSystems.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Owin.Host.HttpListener, Version=3.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Owin.Host.HttpListener.3.1.0\lib\net45\Microsoft.Owin.Host.HttpListener.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Owin.Host.SystemWeb, Version=3.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Owin.Host.SystemWeb.3.1.0\lib\net45\Microsoft.Owin.Host.SystemWeb.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Owin.Hosting, Version=3.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Owin.Hosting.3.1.0\lib\net45\Microsoft.Owin.Hosting.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Owin.Security, Version=3.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Owin.Security.3.1.0\lib\net45\Microsoft.Owin.Security.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Owin.StaticFiles, Version=3.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Owin.StaticFiles.3.1.0\lib\net45\Microsoft.Owin.StaticFiles.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
@@ -91,6 +103,10 @@
<Reference Include="System.Web.Http.Cors, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.WebApi.Cors.5.2.3\lib\net45\System.Web.Http.Cors.dll</HintPath>
</Reference>
<Reference Include="System.Web.Http.Owin, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.WebApi.Owin.5.2.3\lib\net45\System.Web.Http.Owin.dll</HintPath>
</Reference>
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Web" />
<Reference Include="System.Web.Abstractions" />
@@ -115,6 +131,12 @@
<Reference Include="System.Web.Http.WebHost, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.WebApi.WebHost.5.2.3\lib\net45\System.Web.Http.WebHost.dll</HintPath>
</Reference>
<Reference Include="TeamDev.SDK.6, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f22b83b6361d7d4f, processorArchitecture=MSIL">
<HintPath>..\packages\TeamDev.SDK.6.1.07\lib\net45\TeamDev.SDK.6.dll</HintPath>
</Reference>
<Reference Include="TeamDev.SDK.WPF, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f22b83b6361d7d4f, processorArchitecture=MSIL">
<HintPath>..\packages\TeamDev.SDK.6.1.07\lib\net45\TeamDev.SDK.WPF.dll</HintPath>
</Reference>
<Reference Include="WebActivatorEx, Version=2.0.0.0, Culture=neutral, PublicKeyToken=7b26dc2a43f6a0d4, processorArchitecture=MSIL">
<HintPath>..\packages\WebActivatorEx.2.2.0\lib\net40\WebActivatorEx.dll</HintPath>
</Reference>
@@ -126,62 +148,168 @@
<Compile Include="Controllers\DataController.cs" />
<Compile Include="Controllers\DataHub.cs" />
<Compile Include="Controllers\LoginController.cs" />
<Compile Include="Global.asax.cs">
<DependentUpon>Global.asax</DependentUpon>
</Compile>
<Compile Include="program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<Content Include=".bowerrc">
<Content Include="App.config" />
<Content Include="App.Debug.config">
<DependentUpon>App.config</DependentUpon>
</Content>
<Content Include="App.Release.config">
<DependentUpon>App.config</DependentUpon>
</Content>
<Content Include="wwwroot\.bowerrc">
<DependentUpon>bower.json</DependentUpon>
</Content>
<Content Include="favicon.ico" />
<Content Include="Global.asax" />
<Content Include="index.html" />
<None Include="Scripts\jquery-3.2.1.intellisense.js" />
<Content Include="Scripts\jquery-3.2.1.js" />
<Content Include="Scripts\jquery-3.2.1.min.js" />
<Content Include="Scripts\jquery-3.2.1.slim.js" />
<Content Include="Scripts\jquery-3.2.1.slim.min.js" />
<Content Include="Scripts\jquery.signalR-2.2.2.js" />
<Content Include="Scripts\jquery.signalR-2.2.2.min.js" />
<Content Include="Web.config" />
<Content Include="Web.Debug.config">
<DependentUpon>Web.config</DependentUpon>
<Content Include="wwwroot\assets\fonts\OFL.txt" />
<Content Include="wwwroot\assets\images\persona.png" />
<Content Include="wwwroot\assets\logo.png" />
<Content Include="wwwroot\assets\styles\style.css" />
<Content Include="wwwroot\compilerconfig.json.defaults">
<DependentUpon>compilerconfig.json</DependentUpon>
</Content>
<Content Include="Web.Release.config">
<DependentUpon>Web.config</DependentUpon>
</Content>
<Content Include="webpack.config.js" />
<Content Include="wwwroot\dist\0.build.js" />
<Content Include="wwwroot\dist\1.build.js" />
<Content Include="wwwroot\dist\build.js" />
<Content Include="wwwroot\libs\font-awesome\css\font-awesome.css" />
<Content Include="wwwroot\libs\font-awesome\css\font-awesome.min.css" />
<Content Include="wwwroot\libs\font-awesome\fonts\fontawesome-webfont.svg" />
<Content Include="wwwroot\libs\font-awesome\HELP-US-OUT.txt" />
<Content Include="wwwroot\libs\glyphicons\fonts\glyphicons-halflings-regular.svg" />
<Content Include="wwwroot\libs\glyphicons\styles\glyphicons.css" />
<Content Include="wwwroot\.babelrc" />
<None Include="wwwroot\Scripts\jquery-3.2.1.intellisense.js" />
<Content Include="wwwroot\Scripts\jquery-3.2.1.js" />
<Content Include="wwwroot\Scripts\jquery-3.2.1.min.js" />
<Content Include="wwwroot\Scripts\jquery-3.2.1.slim.js" />
<Content Include="wwwroot\Scripts\jquery-3.2.1.slim.min.js" />
<Content Include="wwwroot\Scripts\jquery.signalR-2.2.2.js" />
<Content Include="wwwroot\Scripts\jquery.signalR-2.2.2.min.js" />
<Content Include="wwwroot\src\app.modules.js" />
<Content Include="wwwroot\src\app.routes.js" />
<Content Include="wwwroot\src\main.js" />
<Content Include="wwwroot\src\modules\base-components\index.js" />
<Content Include="wwwroot\src\router\index.js" />
<Content Include="wwwroot\favicon.ico" />
<Content Include="wwwroot\index.html" />
<Content Include="wwwroot\webpack.config.js" />
</ItemGroup>
<ItemGroup>
<Folder Include="App_Data\" />
<Folder Include="Provider\" />
</ItemGroup>
<ItemGroup>
<Content Include=".editorconfig" />
<Content Include="bower.json" />
<Content Include="compilerconfig.json" />
<Content Include="compilerconfig.json.defaults" />
<Content Include="package.json" />
<None Include="packages.config" />
<Content Include="tsconfig.json" />
<Content Include="Scripts\jquery-3.2.1.slim.min.map" />
<Content Include="Scripts\jquery-3.2.1.min.map" />
<Content Include="wwwroot\.editorconfig" />
<Content Include="wwwroot\bower.json" />
<Content Include="wwwroot\compilerconfig.json" />
<Content Include="wwwroot\package.json" />
<Content Include="wwwroot\tsconfig.json" />
<Content Include="wwwroot\assets\fonts\WorkSans-Black.ttf" />
<Content Include="wwwroot\assets\fonts\WorkSans-Bold.ttf" />
<Content Include="wwwroot\assets\fonts\WorkSans-ExtraBold.ttf" />
<Content Include="wwwroot\assets\fonts\WorkSans-ExtraLight.ttf" />
<Content Include="wwwroot\assets\fonts\WorkSans-Light.ttf" />
<Content Include="wwwroot\assets\fonts\WorkSans-Medium.ttf" />
<Content Include="wwwroot\assets\fonts\WorkSans-Regular.ttf" />
<Content Include="wwwroot\assets\fonts\WorkSans-SemiBold.ttf" />
<Content Include="wwwroot\assets\fonts\WorkSans-Thin.ttf" />
<Content Include="wwwroot\assets\styles\base\buttons.less" />
<Content Include="wwwroot\assets\styles\base\colors.less" />
<Content Include="wwwroot\assets\styles\base\fonts.less" />
<Content Include="wwwroot\assets\styles\base\grid-system.less" />
<Content Include="wwwroot\assets\styles\base\input.less" />
<Content Include="wwwroot\assets\styles\base\layout.less" />
<Content Include="wwwroot\assets\styles\base\modals.less" />
<Content Include="wwwroot\assets\styles\style.css.map" />
<Content Include="wwwroot\assets\styles\style.less" />
<Content Include="wwwroot\src\App.vue" />
<Content Include="wwwroot\src\components\Home.vue" />
<Content Include="wwwroot\src\modules\base-components\modal.vue" />
<Content Include="wwwroot\src\modules\login.vue" />
<Content Include="wwwroot\libs\font-awesome\.bower.json" />
<Content Include="wwwroot\libs\font-awesome\.gitignore" />
<Content Include="wwwroot\libs\font-awesome\.npmignore" />
<Content Include="wwwroot\libs\font-awesome\bower.json" />
<Content Include="wwwroot\libs\font-awesome\css\font-awesome.css.map" />
<Content Include="wwwroot\libs\font-awesome\fonts\fontawesome-webfont.eot" />
<Content Include="wwwroot\libs\font-awesome\fonts\fontawesome-webfont.ttf" />
<Content Include="wwwroot\libs\font-awesome\fonts\fontawesome-webfont.woff" />
<Content Include="wwwroot\libs\font-awesome\fonts\fontawesome-webfont.woff2" />
<Content Include="wwwroot\libs\font-awesome\fonts\FontAwesome.otf" />
<Content Include="wwwroot\libs\font-awesome\less\animated.less" />
<Content Include="wwwroot\libs\font-awesome\less\bordered-pulled.less" />
<Content Include="wwwroot\libs\font-awesome\less\core.less" />
<Content Include="wwwroot\libs\font-awesome\less\fixed-width.less" />
<Content Include="wwwroot\libs\font-awesome\less\font-awesome.less" />
<Content Include="wwwroot\libs\font-awesome\less\icons.less" />
<Content Include="wwwroot\libs\font-awesome\less\larger.less" />
<Content Include="wwwroot\libs\font-awesome\less\list.less" />
<Content Include="wwwroot\libs\font-awesome\less\mixins.less" />
<Content Include="wwwroot\libs\font-awesome\less\path.less" />
<Content Include="wwwroot\libs\font-awesome\less\rotated-flipped.less" />
<Content Include="wwwroot\libs\font-awesome\less\screen-reader.less" />
<Content Include="wwwroot\libs\font-awesome\less\stacked.less" />
<Content Include="wwwroot\libs\font-awesome\less\variables.less" />
<Content Include="wwwroot\libs\font-awesome\scss\font-awesome.scss" />
<Content Include="wwwroot\libs\font-awesome\scss\_animated.scss" />
<Content Include="wwwroot\libs\font-awesome\scss\_bordered-pulled.scss" />
<Content Include="wwwroot\libs\font-awesome\scss\_core.scss" />
<Content Include="wwwroot\libs\font-awesome\scss\_fixed-width.scss" />
<Content Include="wwwroot\libs\font-awesome\scss\_icons.scss" />
<Content Include="wwwroot\libs\font-awesome\scss\_larger.scss" />
<Content Include="wwwroot\libs\font-awesome\scss\_list.scss" />
<Content Include="wwwroot\libs\font-awesome\scss\_mixins.scss" />
<Content Include="wwwroot\libs\font-awesome\scss\_path.scss" />
<Content Include="wwwroot\libs\font-awesome\scss\_rotated-flipped.scss" />
<Content Include="wwwroot\libs\font-awesome\scss\_screen-reader.scss" />
<Content Include="wwwroot\libs\font-awesome\scss\_stacked.scss" />
<Content Include="wwwroot\libs\font-awesome\scss\_variables.scss" />
<Content Include="wwwroot\libs\glyphicons\.bower.json" />
<Content Include="wwwroot\libs\glyphicons\.gitignore" />
<Content Include="wwwroot\libs\glyphicons\bower.json" />
<Content Include="wwwroot\libs\glyphicons\fonts\glyphicons-halflings-regular.eot" />
<Content Include="wwwroot\libs\glyphicons\fonts\glyphicons-halflings-regular.ttf" />
<Content Include="wwwroot\libs\glyphicons\fonts\glyphicons-halflings-regular.woff" />
<Content Include="wwwroot\libs\glyphicons\fonts\glyphicons-halflings-regular.woff2" />
<Content Include="wwwroot\libs\glyphicons\README.md" />
<Content Include="wwwroot\Scripts\jquery-3.2.1.min.map" />
<Content Include="wwwroot\Scripts\jquery-3.2.1.slim.min.map" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Step.Model\Step.Model.csproj">
<Project>{631375dd-06d3-49bb-8130-d9ddb34c429d}</Project>
<Name>Step.Model</Name>
</ProjectReference>
<ProjectReference Include="..\Step.UI\Step.UI.csproj">
<Project>{20fc0937-e7ca-4693-95f9-7a948efd173b}</Project>
<Name>Step.UI</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Service Include="{4A0DDDB5-7A95-4FBF-97CC-616D07737A77}" />
</ItemGroup>
<ItemGroup>
<TypeScriptCompile Include="wwwroot\src\%40types\LoginViewModel.cs.d.ts" />
<TypeScriptCompile Include="wwwroot\src\%40types\TestModel.cs.d.ts" />
<TypeScriptCompile Include="wwwroot\src\modules\base-components\modal.ts" />
<TypeScriptCompile Include="wwwroot\src\modules\login.ts" />
<TypeScriptCompile Include="wwwroot\src\services\dataService.ts" />
<TypeScriptCompile Include="wwwroot\src\services\hub.ts" />
<TypeScriptCompile Include="wwwroot\src\services\loginService.ts" />
<TypeScriptCompile Include="wwwroot\src\_base\baseRestService.ts" />
<TypeScriptCompile Include="wwwroot\src\_base\factoryService.ts" />
<TypeScriptCompile Include="wwwroot\src\_base\filtersExtensions.ts" />
<TypeScriptCompile Include="wwwroot\src\_base\messageService.ts" />
<TypeScriptCompile Include="wwwroot\src\_base\utils.ts" />
</ItemGroup>
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<PropertyGroup>
<StartupObject>Step.Application</StartupObject>
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets')" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
@@ -194,6 +322,9 @@
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
<WebProjectProperties>
<SaveServerSettingsInUserFile>True</SaveServerSettingsInUserFile>
<servers defaultServer="SelfHostServer">
<server name="SelfHostServer" exePath="" cmdArgs="" url="http://localhost:51998/" workingDir="" />
</servers>
</WebProjectProperties>
</FlavorProperties>
</VisualStudio>
+7 -5
View File
@@ -20,9 +20,8 @@
<VisualStudio>
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
<WebProjectProperties>
<StartPageUrl>
</StartPageUrl>
<StartAction>CurrentPage</StartAction>
<StartPageUrl>index.html</StartPageUrl>
<StartAction>SpecificPage</StartAction>
<AspNetDebugging>True</AspNetDebugging>
<SilverlightDebugging>False</SilverlightDebugging>
<NativeDebugging>False</NativeDebugging>
@@ -37,15 +36,18 @@
</StartWorkingDirectory>
<EnableENC>True</EnableENC>
<AlwaysStartWebServerOnDebug>True</AlwaysStartWebServerOnDebug>
<UseIIS>True</UseIIS>
<UseIIS>False</UseIIS>
<AutoAssignPort>True</AutoAssignPort>
<DevelopmentServerPort>51998</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>
<IISUrl>http://localhost</IISUrl>
<NTLMAuthentication>False</NTLMAuthentication>
<UseCustomServer>False</UseCustomServer>
<UseCustomServer>True</UseCustomServer>
<CustomServerUrl>
</CustomServerUrl>
<servers defaultServer="SelfHostServer">
<server name="SelfHostServer" exePath="" cmdArgs="" url="http://localhost:9000/" workingDir="" />
</servers>
</WebProjectProperties>
</FlavorProperties>
</VisualStudio>
+7
View File
@@ -10,16 +10,23 @@
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net462" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net462" />
<package id="Microsoft.AspNet.WebApi.Cors" version="5.2.3" targetFramework="net462" />
<package id="Microsoft.AspNet.WebApi.Owin" version="5.2.3" targetFramework="net462" />
<package id="Microsoft.AspNet.WebApi.OwinSelfHost" version="5.2.3" targetFramework="net462" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net462" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.8" targetFramework="net462" />
<package id="Microsoft.Net.Compilers" version="2.4.0" targetFramework="net462" developmentDependency="true" />
<package id="Microsoft.Owin" version="3.1.0" targetFramework="net462" />
<package id="Microsoft.Owin.FileSystems" version="3.1.0" targetFramework="net462" />
<package id="Microsoft.Owin.Host.HttpListener" version="3.1.0" targetFramework="net462" />
<package id="Microsoft.Owin.Host.SystemWeb" version="3.1.0" targetFramework="net462" />
<package id="Microsoft.Owin.Hosting" version="3.1.0" targetFramework="net462" />
<package id="Microsoft.Owin.Security" version="3.1.0" targetFramework="net462" />
<package id="Microsoft.Owin.StaticFiles" version="3.1.0" targetFramework="net462" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net462" />
<package id="Newtonsoft.Json" version="10.0.3" targetFramework="net462" />
<package id="Owin" version="1.0" targetFramework="net462" />
<package id="Swashbuckle" version="5.6.0" targetFramework="net462" />
<package id="Swashbuckle.Core" version="5.6.0" targetFramework="net462" />
<package id="TeamDev.SDK" version="6.1.07" targetFramework="net462" />
<package id="WebActivatorEx" version="2.2.0" targetFramework="net462" />
</packages>
+47
View File
@@ -0,0 +1,47 @@
using Microsoft.Owin.Hosting;
using Step.UI;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Threading;
using System.Web;
using TeamDev.SDK;
using TeamDev.SDK.MVVM;
namespace Step
{
public class Application
{
public static readonly ManualResetEvent StopRequest = new ManualResetEvent(false);
public static int MessageService { get; private set; }
public static void Main()
{
// Avvio dell'applicazione in selfhost
var configuredUri = ConfigurationManager.AppSettings["localHostServiceURI"];
ServerControlWindow.Start();
// Registro il messaggi di chiusura della applicazione.
MessageServices.Current.Subscribe("StopServer", (a, b) =>
{
Application.StopRequest.Set();
});
// Creo la finestra lato server che verrà visualizzata sulla SysTray
// Avvio il servizio del server.
using (WebApp.Start<Step.App_Start.Startup>(url: configuredUri))
{
StopRequest.WaitOne();
}
ServerControlWindow.Stop();
}
}
}

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

@@ -2,6 +2,7 @@
// Shadows ;
@shadows: 0 3px 5px 0 rgba(0, 0, 0, 0.4);
@color-cef-transparency-key: #00FF00;
@color-background-white: #fff;
@color-backdrop: rgba(217, 217, 217, 0.5);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

+2 -2
View File
@@ -12,12 +12,12 @@
<script src="Scripts/jquery.signalR-2.2.2.min.js"></script>
<script src="/signalr/hubs"></script>
<link href="client/assets/styles/style.css" rel="stylesheet" />
<link href="assets/styles/style.css" rel="stylesheet" />
</head>
<body>
<app></app>
<script src="client/dist/build.js"></script>
<script src="dist/build.js"></script>
</body>
</html>
@@ -3,7 +3,7 @@
<div>
<div class="login-form">
<img src="/client/assets/images/persona.png" class="persona" >
<img src="/assets/images/persona.png" class="persona" >
<div class="form-group">
<label>Nome utente</label>
@@ -3,7 +3,7 @@
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"outDir": "./bin/ts-out",
"rootDir": "client/src",
"rootDir": "src",
"allowJs": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
@@ -15,7 +15,7 @@
"typeRoots": [
"node_modules/**/types",
"node_modules/@types",
"client/src/@types"
"src/@types"
],
"lib": ["dom", "es2015", "es2015.promise"]
},
@@ -27,6 +27,6 @@
"obj"
],
"include": [
"./client/src/**/*.ts"
"./src/**/*.ts"
]
}
@@ -6,10 +6,10 @@ function resolve(dir) {
}
module.exports = {
entry: ['babel-polyfill', './client/src/main.js'],
entry: ['babel-polyfill', './src/main.js'],
output: {
path: path.resolve(__dirname, './client/dist'),
publicPath: '/client/dist/',
path: path.resolve(__dirname, './dist'),
publicPath: '/dist/',
filename: 'build.js'
},
resolve: {
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
</startup>
</configuration>
+39
View File
@@ -0,0 +1,39 @@
namespace WindowsFormsApp1
{
partial class Form1
{
/// <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.components = new System.ComponentModel.Container();
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Text = "Form1";
}
#endregion
}
}
+20
View File
@@ -0,0 +1,20 @@
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 WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
}
+22
View File
@@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("WindowsFormsApp1")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("WindowsFormsApp1")]
[assembly: AssemblyCopyright("Copyright © 2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("29ec3884-c50c-4186-9bb4-77575aa64997")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// 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("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
+71
View File
@@ -0,0 +1,71 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 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.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WindowsFormsApp1.Properties
{
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "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()
{
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[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("WindowsFormsApp1.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
}
}
+117
View File
@@ -0,0 +1,117 @@
<?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.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: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" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</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" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</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>
+30
View File
@@ -0,0 +1,30 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 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.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WindowsFormsApp1.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;
}
}
}
}
@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>
+79
View File
@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{29EC3884-C50C-4186-9BB4-77575AA64997}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>WindowsFormsApp1</RootNamespace>
<AssemblyName>WindowsFormsApp1</AssemblyName>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
</startup>
</configuration>
+39
View File
@@ -0,0 +1,39 @@
namespace WindowsFormsApp2
{
partial class Form1
{
/// <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.components = new System.ComponentModel.Container();
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Text = "Form1";
}
#endregion
}
}
+20
View File
@@ -0,0 +1,20 @@
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 WindowsFormsApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
}
+22
View File
@@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp2
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}

Some files were not shown because too many files have changed in this diff Show More