Full Code of poerin/Feep for AI

master e6b5652c551e cached
30 files
395.2 KB
124.5k tokens
69 symbols
1 requests
Download .txt
Showing preview only (411K chars total). Download the full file or copy to clipboard to get everything.
Repository: poerin/Feep
Branch: master
Commit: e6b5652c551e
Files: 30
Total size: 395.2 KB

Directory structure:
gitextract_jqho2jds/

├── .gitattributes
├── .gitignore
├── Feep/
│   ├── Application.manifest
│   ├── Feep.csproj
│   ├── Program.cs
│   ├── Properties/
│   │   ├── AssemblyInfo.cs
│   │   ├── Resources.Designer.cs
│   │   ├── Resources.resx
│   │   ├── Settings.Designer.cs
│   │   └── Settings.settings
│   ├── Shadow.Designer.cs
│   ├── Shadow.cs
│   ├── Shadow.resx
│   ├── Viewer.Designer.cs
│   ├── Viewer.cs
│   └── Viewer.resx
├── Feep.Configure/
│   ├── Application.manifest
│   ├── Configure.Designer.cs
│   ├── Configure.cs
│   ├── Configure.resx
│   ├── Feep.Configure.csproj
│   ├── Program.cs
│   └── Properties/
│       ├── AssemblyInfo.cs
│       ├── Resources.Designer.cs
│       ├── Resources.resx
│       ├── Settings.Designer.cs
│       └── Settings.settings
├── Feep.sln
├── LICENSE
└── README.md

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto

###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs     diff=csharp

###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following 
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln       merge=binary
#*.csproj    merge=binary
#*.vbproj    merge=binary
#*.vcxproj   merge=binary
#*.vcproj    merge=binary
#*.dbproj    merge=binary
#*.fsproj    merge=binary
#*.lsproj    merge=binary
#*.wixproj   merge=binary
#*.modelproj merge=binary
#*.sqlproj   merge=binary
#*.wwaproj   merge=binary

###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg   binary
#*.png   binary
#*.gif   binary

###############################################################################
# diff behavior for common document formats
# 
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the 
# entries below.
###############################################################################
#*.doc   diff=astextplain
#*.DOC   diff=astextplain
#*.docx  diff=astextplain
#*.DOCX  diff=astextplain
#*.dot   diff=astextplain
#*.DOT   diff=astextplain
#*.pdf   diff=astextplain
#*.PDF   diff=astextplain
#*.rtf   diff=astextplain
#*.RTF   diff=astextplain


================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/

# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

# Visual Studio 2017 auto generated files
Generated\ Files/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

# NUNIT
*.VisualState.xml
TestResult.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

# Benchmark Results
BenchmarkDotNet.Artifacts/

# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/

# StyleCop
StyleCopReport.xml

# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb

# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

# Visual Studio Trace Files
*.e2e

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# JustCode is a .NET coding add-in
.JustCode

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json

# Visual Studio code coverage results
*.coverage
*.coveragexml

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/

# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets

# Microsoft Azure Build Output
csx/
*.build.csdef

# Microsoft Azure Emulator
ecf/
rcf/

# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx

# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/

# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs

# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk

# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak

# SQL Server files
*.mdf
*.ldf
*.ndf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- Backup*.rdl

# Microsoft Fakes
FakesAssemblies/

# GhostDoc plugin setting file
*.GhostDoc.xml

# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/

# Visual Studio 6 build log
*.plg

# Visual Studio 6 workspace options file
*.opt

# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw

# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions

# Paket dependency manager
.paket/paket.exe
paket-files/

# FAKE - F# Make
.fake/

# JetBrains Rider
.idea/
*.sln.iml

# CodeRush personal settings
.cr/personal

# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc

# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config

# Tabs Studio
*.tss

# Telerik's JustMock configuration file
*.jmconfig

# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs

# OpenCover UI analysis results
OpenCover/

# Azure Stream Analytics local run output
ASALocalRun/

# MSBuild Binary and Structured Log
*.binlog

# NVidia Nsight GPU debugger configuration file
*.nvuser

# MFractors (Xamarin productivity tool) working folder
.mfractor/

# Local History for Visual Studio
.localhistory/

# BeatPulse healthcheck temp database
healthchecksdb

================================================
FILE: Feep/Application.manifest
================================================
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
  <assemblyIdentity version="1.0.0.0" name="Feep" />
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>
  <application xmlns="urn:schemas-microsoft-com:asm.v3">
    <windowsSettings>
      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
    </windowsSettings>
  </application>
</assembly>

================================================
FILE: Feep/Feep.csproj
================================================
<?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>{C2A94F6B-CBF4-4DA9-BCAB-045FA976C861}</ProjectGuid>
    <OutputType>WinExe</OutputType>
    <RootNamespace>Feep</RootNamespace>
    <AssemblyName>Feep</AssemblyName>
    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    <Deterministic>true</Deterministic>
  </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>none</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup>
    <ApplicationManifest>Application.manifest</ApplicationManifest>
  </PropertyGroup>
  <PropertyGroup>
    <ApplicationIcon>Feep.ico</ApplicationIcon>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="Microsoft.VisualBasic" />
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Deployment" />
    <Reference Include="System.Drawing" />
    <Reference Include="System.Windows.Forms" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Program.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="Shadow.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Include="Shadow.Designer.cs">
      <DependentUpon>Shadow.cs</DependentUpon>
    </Compile>
    <Compile Include="Viewer.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Include="Viewer.Designer.cs">
      <DependentUpon>Viewer.cs</DependentUpon>
    </Compile>
    <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>
      <DesignTime>True</DesignTime>
    </Compile>
    <EmbeddedResource Include="Shadow.resx">
      <DependentUpon>Shadow.cs</DependentUpon>
    </EmbeddedResource>
    <EmbeddedResource Include="Viewer.resx">
      <DependentUpon>Viewer.cs</DependentUpon>
    </EmbeddedResource>
    <None Include="Application.manifest" />
    <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>
    <Content Include="Feep.ico" />
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

================================================
FILE: Feep/Program.cs
================================================
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace Feep
{
    static class Program
    {

        [STAThread]
        static void Main(String[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Viewer viewer;

            if (args.Length > 0)
            {
                int PointX, PointY, Width, Height;
                string screen = "", backColor = "";
                int startState = 0;
                bool showInTaskbar = false;

                viewer = new Viewer(args[0]);
                System.Text.StringBuilder ReturnedString = new System.Text.StringBuilder(255);

                bool hasError = false;

                GetPrivateProfileString("Location", "X", "", ReturnedString, 255, Application.StartupPath + @"\configure.ini");
                hasError = !Int32.TryParse(ReturnedString.ToString(), out PointX);
                GetPrivateProfileString("Location", "Y", "", ReturnedString, 255, Application.StartupPath + @"\configure.ini");
                hasError = !Int32.TryParse(ReturnedString.ToString(), out PointY);
                GetPrivateProfileString("Size", "Width", "", ReturnedString, 255, Application.StartupPath + @"\configure.ini");
                hasError = !Int32.TryParse(ReturnedString.ToString(), out Width);
                GetPrivateProfileString("Size", "Height", "", ReturnedString, 255, Application.StartupPath + @"\configure.ini");
                hasError = !Int32.TryParse(ReturnedString.ToString(), out Height);
                GetPrivateProfileString("Form", "Screen", "None", ReturnedString, 255, Application.StartupPath + @"\configure.ini");
                screen = ReturnedString.ToString();
                GetPrivateProfileString("Form", "BackColor", "#000000", ReturnedString, 255, Application.StartupPath + @"\configure.ini");
                backColor = ReturnedString.ToString();
                GetPrivateProfileString("Form", "StartState", "0", ReturnedString, 255, Application.StartupPath + @"\configure.ini");
                Int32.TryParse(ReturnedString.ToString(), out startState);
                GetPrivateProfileString("Form", "ShowInTaskbar", "False", ReturnedString, 255, Application.StartupPath + @"\configure.ini");
                Boolean.TryParse(ReturnedString.ToString(), out showInTaskbar);

                viewer.StartState = startState;
                viewer.Icon = System.Drawing.Icon.ExtractAssociatedIcon(Application.ExecutablePath);

                if (showInTaskbar)
                {
                    viewer.ShowInTaskbar = true;
                }

                if (hasError || PointX > SystemInformation.VirtualScreen.Right || PointY > SystemInformation.VirtualScreen.Bottom || Width > SystemInformation.VirtualScreen.Width || Height > SystemInformation.VirtualScreen.Height)
                {
                    PointX = Convert.ToInt32(Screen.PrimaryScreen.Bounds.Width * 0.1);
                    PointY = Convert.ToInt32(Screen.PrimaryScreen.Bounds.Height * 0.1);
                    Width = Convert.ToInt32(Screen.PrimaryScreen.Bounds.Width * 0.8);
                    Height = Convert.ToInt32(Screen.PrimaryScreen.Bounds.Height * 0.8);
                }

                try
                {
                    viewer.BackColor = System.Drawing.ColorTranslator.FromHtml(backColor);
                    viewer.Picture.BackColor = viewer.BackColor;
                }
                catch (Exception)
                {
                    viewer.BackColor = System.Drawing.Color.Black;
                    viewer.Picture.BackColor = viewer.BackColor;
                }

                if (startState == 1)
                {
                    screen = "Full";
                }

                if (startState == 2)
                {
                    screen = "None";

                    if (Width > Screen.PrimaryScreen.WorkingArea.Width || Height > Screen.PrimaryScreen.WorkingArea.Height)
                    {
                        PointX = (Screen.PrimaryScreen.Bounds.Width - Width) / 2;
                        PointY = (Screen.PrimaryScreen.Bounds.Height - Height) / 2;
                    }
                    else
                    {
                        PointX = (Screen.PrimaryScreen.WorkingArea.Width - Width) / 2 + Screen.PrimaryScreen.WorkingArea.X;
                        PointY = (Screen.PrimaryScreen.WorkingArea.Height - Height) / 2 + Screen.PrimaryScreen.WorkingArea.Y;
                    }

                }

                if (screen != "None")
                {
                    viewer.TopMost = true;
                    viewer.ScreenBeforeX = PointX;
                    viewer.ScreenBeforeY = PointY;
                    viewer.ScreenBeforeWidth = Width;
                    viewer.ScreenBeforeHeight = Height;

                    Screen currentScreen = Screen.FromPoint(new System.Drawing.Point(PointX, PointY));

                    if (screen != "Full")
                    {
                        switch (screen)
                        {
                            case "Left":
                                viewer.screenState = Feep.Viewer.ScreenState.Left;
                                viewer.Location = currentScreen.WorkingArea.Location;
                                viewer.Width = currentScreen.WorkingArea.Width / 2;
                                viewer.Height = currentScreen.WorkingArea.Height;
                                viewer.AtBorderline = true;
                                break;
                            case "Right":
                                viewer.screenState = Feep.Viewer.ScreenState.Right;
                                viewer.Location = new System.Drawing.Point(currentScreen.WorkingArea.Width / 2, currentScreen.WorkingArea.Location.Y);
                                viewer.Width = currentScreen.WorkingArea.Width / 2;
                                viewer.Height = currentScreen.WorkingArea.Height;
                                viewer.AtBorderline = true;
                                break;
                            case "Top":
                                viewer.screenState = Feep.Viewer.ScreenState.Top;
                                viewer.Location = currentScreen.WorkingArea.Location;
                                viewer.Width = currentScreen.WorkingArea.Width;
                                viewer.Height = currentScreen.WorkingArea.Height / 2;
                                viewer.AtBorderline = true;
                                break;
                            case "Bottom":
                                viewer.screenState = Feep.Viewer.ScreenState.Bottom;
                                viewer.Location = new System.Drawing.Point(currentScreen.WorkingArea.Location.X, currentScreen.WorkingArea.Height / 2);
                                viewer.Width = currentScreen.WorkingArea.Width;
                                viewer.Height = currentScreen.WorkingArea.Height / 2;
                                viewer.AtBorderline = true;
                                break;
                        }
                    }
                    else
                    {
                        viewer.screenState = Feep.Viewer.ScreenState.Full;
                        viewer.Location = currentScreen.Bounds.Location;
                        viewer.Width = currentScreen.Bounds.Width;
                        viewer.Height = currentScreen.Bounds.Height;
                    }
                }
                else
                {
                    viewer.screenState = Feep.Viewer.ScreenState.None;
                    viewer.Location = new System.Drawing.Point(PointX, PointY);
                    viewer.Width = Width;
                    viewer.Height = Height;
                }

                viewer.MinimumSize = new System.Drawing.Size(64, 64);
                viewer.MaximumSize = SystemInformation.VirtualScreen.Size;
                Application.Run(viewer);
            }
            else
            {
                Application.Exit();
            }
        }

        [DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string section, string key, string def, System.Text.StringBuilder retVal, int size, string filePath);

    }
}


================================================
FILE: Feep/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.InteropServices;

[assembly: AssemblyTitle("Feep")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Poerin")]
[assembly: AssemblyProduct("Feep")]
[assembly: AssemblyCopyright("Copyright © Poerin")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: Guid("3bb839e7-bb7b-41c1-ad91-bcaa8e605c34")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]


================================================
FILE: Feep/Properties/Resources.Designer.cs
================================================
namespace Feep.Properties
{
    using System;

    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.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()
        {
        }

        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Resources.ResourceManager ResourceManager
        {
            get
            {
                if (object.ReferenceEquals(resourceMan, null))
                {
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Feep.Properties.Resources", typeof(Resources).Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }
        }

        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Globalization.CultureInfo Culture
        {
            get
            {
                return resourceCulture;
            }
            set
            {
                resourceCulture = value;
            }
        }
    }
}


================================================
FILE: Feep/Properties/Resources.resx
================================================
<?xml version="1.0" encoding="utf-8"?>
<root>
  <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>

================================================
FILE: Feep/Properties/Settings.Designer.cs
================================================
namespace Feep.Properties
{

    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.6.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;
            }
        }
    }
}


================================================
FILE: Feep/Properties/Settings.settings
================================================
<?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>


================================================
FILE: Feep/Shadow.Designer.cs
================================================
namespace Feep
{
    partial class Shadow
    {
        private System.ComponentModel.IContainer components = null;

        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        private void InitializeComponent()
        {
            this.SuspendLayout();
            // 
            // Shadow
            // 
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
            this.BackColor = System.Drawing.Color.DimGray;
            this.ClientSize = new System.Drawing.Size(0, 0);
            this.ControlBox = false;
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            this.MaximizeBox = false;
            this.MinimizeBox = false;
            this.Name = "Shadow";
            this.Opacity = 0.36D;
            this.ShowIcon = false;
            this.ShowInTaskbar = false;
            this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
            this.TopMost = true;
            this.TransparencyKey = System.Drawing.Color.White;
            this.ResumeLayout(false);

        }

    }
}

================================================
FILE: Feep/Shadow.cs
================================================
using System;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace Feep
{
    public partial class Shadow : Form
    {
        #region 鼠标穿透
        [DllImport("user32", EntryPoint = "GetWindowLong")]
        private static extern uint GetWindowLong(IntPtr hwnd, int nIndex);
        [DllImport("user32", EntryPoint = "SetWindowLong")]
        private static extern uint SetWindowLong(IntPtr hwnd, int nIndex, uint dwNewLong);
        const int GWL_EXSTYLE = -20;
        const int WS_EX_TRANSPARENT = 0x20;
        const int WS_EX_LAYERED = 0x80000;
        const int WS_EX_NOACTIVATE = 0x8000000;
        #endregion

        public Shadow()
        {
            InitializeComponent();
            SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true);
            SetWindowLong(this.Handle, GWL_EXSTYLE, GetWindowLong(this.Handle, GWL_EXSTYLE) | WS_EX_TRANSPARENT | WS_EX_LAYERED | WS_EX_NOACTIVATE);
        }

        internal void FillShadow(Rectangle rect)
        {
            this.Location = rect.Location;
            this.Size = rect.Size;
            this.BackColor = Color.DimGray;
            this.Visible = true;
        }

        internal void ClearShadow()
        {
            this.Visible = false;
            this.BackColor = Color.White;
            this.Location = new Point(0, 0);
            this.Size = new Size(0, 0);
        }
    }
}


================================================
FILE: Feep/Shadow.resx
================================================
<?xml version="1.0" encoding="utf-8"?>
<root>
  <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>
</root>

================================================
FILE: Feep/Viewer.Designer.cs
================================================
namespace Feep
{
    partial class Viewer
    {
        private System.ComponentModel.IContainer components = null;

        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        private void InitializeComponent()
        {
            this.Picture = new System.Windows.Forms.PictureBox();
            ((System.ComponentModel.ISupportInitialize)(this.Picture)).BeginInit();
            this.SuspendLayout();
            // 
            // Picture
            // 
            this.Picture.Anchor = System.Windows.Forms.AnchorStyles.None;
            this.Picture.BackColor = System.Drawing.Color.Black;
            this.Picture.ErrorImage = null;
            this.Picture.InitialImage = null;
            this.Picture.Location = new System.Drawing.Point(0, 0);
            this.Picture.Name = "Picture";
            this.Picture.Size = new System.Drawing.Size(256, 256);
            this.Picture.TabIndex = 0;
            this.Picture.TabStop = false;
            // 
            // Viewer
            // 
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
            this.BackColor = System.Drawing.Color.Black;
            this.CausesValidation = false;
            this.ClientSize = new System.Drawing.Size(256, 256);
            this.ControlBox = false;
            this.Controls.Add(this.Picture);
            this.Cursor = System.Windows.Forms.Cursors.Cross;
            this.DoubleBuffered = true;
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            this.MaximizeBox = false;
            this.MinimizeBox = false;
            this.Name = "Viewer";
            this.ShowInTaskbar = false;
            this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
            this.Load += new System.EventHandler(this.Viewer_Load);
            this.SizeChanged += new System.EventHandler(this.Viewer_SizeChanged);
            this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.Viewer_KeyUp);
            this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Viewer_MouseDown);
            this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Viewer_MouseMove);
            this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.Viewer_MouseUp);
            ((System.ComponentModel.ISupportInitialize)(this.Picture)).EndInit();
            this.ResumeLayout(false);

        }

        public System.Windows.Forms.PictureBox Picture;

    }
}

================================================
FILE: Feep/Viewer.cs
================================================
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO;
using System.Threading;

namespace Feep
{
    sealed internal partial class Viewer : Form
    {

        internal enum Direction
        {
            Left,
            Right,
            Top,
            Bottom,
            LeftTop,
            LeftBottom,
            RightTop,
            RightBottom
        }

        internal enum ScreenState
        {
            None,
            Full,
            Left,
            Right,
            Top,
            Bottom
        }

        sealed internal class StringLogicalComparer : IComparer<string>
        {
            [DllImport("shlwapi.dll", CharSet = CharSet.Unicode, ExactSpelling = true)]
            public static extern int StrCmpLogicalW(string x, string y);

            public int Compare(string x, string y)
            {
                return StrCmpLogicalW(x, y);
            }

        }

        sealed internal class FilePath
        {
            List<string> paths = new List<string>();

            internal List<string> Paths
            {
                get
                {
                    return paths;
                }
                set
                {
                    paths = value;
                }
            }

            string[] extensions;

            internal string[] Extensions
            {
                get
                {
                    return extensions;
                }
                set
                {
                    extensions = value;
                }
            }

            internal void GetPaths(object path)
            {
                DirectoryInfo dir = new DirectoryInfo((string)path);

                foreach (string extension in extensions)
                {
                    foreach (FileInfo file in dir.GetFiles("*." + extension + ""))
                    {
                        string temp = dir.FullName + file.ToString();
                        if (!paths.Contains(temp))
                        {
                            paths.Add(temp);
                        }
                    }
                }

            }

        }

        #region 屏蔽原窗体行为

        const int WM_SYSCOMMAND = 0x112;
        const int SC_CLOSE = 0xF060;
        const int SC_MINIMIZE = 0xF020;
        const int SC_MAXIMIZE = 0xF030;
        const int SC_NOMAL = 0xF120;

        protected override void WndProc(ref Message m)
        {
            if (m.Msg == WM_SYSCOMMAND)
            {
                switch (m.WParam.ToInt32())
                {
                    case SC_CLOSE:
                    case SC_MINIMIZE:
                    case SC_MAXIMIZE:
                    case SC_NOMAL:
                        {
                            Exit();
                            return;
                        }
                }
            }
            base.WndProc(ref m);

        }

        #endregion

        //文件路径
        List<string> filePaths;
        //图片
        Bitmap image;
        //缓存
        Dictionary<string, Bitmap> cache = new Dictionary<string, Bitmap>();
        //建立缓存的时间
        Queue<long> buildCacheTime = new Queue<long>();
        //调整窗体大小时的方向
        Direction direction;
        //屏幕模式
        internal ScreenState screenState;
        //光标状态
        bool cursorState = true;
        //是否可以移动窗体
        bool MoveWindow = false;
        //窗体是否移动过了
        bool MovedWindow = false;
        //是否可以调整窗体大小
        bool ResizeWindow = false;
        //窗体右边缘和下边缘的位置
        int WindowRight, WindowBottom;
        //窗体边缘
        const int edge = 8;
        //右键是否按下了
        bool RightButtonsPress = false;
        //左键是否按下了
        bool LeftButtonsPress = false;
        //是否为旋转图片的操作
        bool IsRotation = false;
        //是否为缩放图片的操作
        bool IsZoom = false;
        //是否为退出程序的操作
        bool IsClose = false;
        //是否处于半屏模式状态
        internal bool AtBorderline = false;
        //当前图片所在文件夹中的索引
        int Index;
        //移动时光标相对窗体的位置
        int MoveX;
        int MoveY;
        //切换到全屏和半屏模式之前窗体的位置和尺寸
        internal int ScreenBeforeX;
        internal int ScreenBeforeY;
        internal int ScreenBeforeWidth;
        internal int ScreenBeforeHeight;
        //查看原始比例时图片的坐标位置
        static int DistanceX, DistanceY;
        //缩放时屏幕中央的位置
        Point Center;
        //锁定缩放
        bool IsLockZoom = false;
        //释放控制
        bool IsLoseControl = false;
        //查看原始比例时隐藏光标之前的位置
        Point HideBeforePosition;
        //阴影的容器
        static Shadow Shadows;
        //启动时的窗体状态
        internal int StartState;
        //幻灯片定时器
        private System.Windows.Forms.Timer timerSlideshow = new System.Windows.Forms.Timer();
        //幻灯片时间间隔
        private int intervalSlideshow = 1;
        //幻灯片方向
        private bool directionSlideshow = true;

        [DllImport("kernel32")]
        private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);

        [DllImportAttribute("user32.dll")]
        private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);

        internal Viewer(string PicturePath)
        {
            InitializeComponent();

            string folder = PicturePath.Remove(PicturePath.LastIndexOf('\\')) + '\\';
            FilePath filePath = new FilePath();
            filePath.Extensions = new string[] { "jpg", "jpeg", "tif", "tiff", "png", "pns", "bmp", "rle", "dib", "gif" };
            filePath.GetPaths(folder);
            filePath.Paths.Sort(new StringLogicalComparer());
            filePaths = filePath.Paths;
            Index = filePaths.IndexOf(PicturePath);

            Picture.MouseDown += new MouseEventHandler(Viewer_MouseDown);
            Picture.MouseUp += new MouseEventHandler(Viewer_MouseUp);
            Picture.MouseMove += new MouseEventHandler(Viewer_MouseMove);
            this.MouseWheel += Viewer_MouseWheel;
            timerSlideshow.Tick += TimerSlideshow_Tick;

            Shadows = new Shadow();

        }

        internal void RotateImage(Bitmap bitmap)
        {
            try
            {
                switch (bitmap.GetPropertyItem(274).Value[0])
                {
                    case 1:
                        break;
                    case 2:
                        bitmap.RotateFlip(RotateFlipType.RotateNoneFlipX);
                        break;
                    case 3:
                        bitmap.RotateFlip(RotateFlipType.Rotate180FlipNone);
                        break;
                    case 4:
                        bitmap.RotateFlip(RotateFlipType.Rotate180FlipX);
                        break;
                    case 5:
                        bitmap.RotateFlip(RotateFlipType.Rotate90FlipX);
                        break;
                    case 6:
                        bitmap.RotateFlip(RotateFlipType.Rotate90FlipNone);
                        break;
                    case 7:
                        bitmap.RotateFlip(RotateFlipType.Rotate270FlipX);
                        break;
                    case 8:
                        bitmap.RotateFlip(RotateFlipType.Rotate270FlipNone);
                        break;
                    default:
                        break;
                }
            }
            catch
            {
            }
        }

        internal void ShowPicture(int index, bool orientation)
        {
            string PicturePath = filePaths[index];
            this.Text = PicturePath;
            Picture.Tag = PicturePath;
            bool hitCache = false;

            if (cache.ContainsKey(PicturePath))
            {
                try
                {
                    image.Dispose();
                    Picture.Image = cache[PicturePath];
                    Picture.Width = Picture.Image.Width;
                    Picture.Height = Picture.Image.Height;
                    hitCache = true;
                }
                catch
                {
                    lock (cache)
                    {
                        cache[PicturePath].Dispose();
                        cache.Remove(PicturePath);
                    }
                }
            }

            if (hitCache == false)
            {

                try
                {
                    image = new Bitmap(PicturePath);
                    RotateImage(image);
                    Picture.Image = image;
                    Picture.Width = image.Width;
                    Picture.Height = image.Height;
                }
                catch
                {
                    if (orientation)
                    {
                        ShowPicture(NextFilePath(index), orientation);
                    }
                    else
                    {
                        ShowPicture(PreviousFilePath(index), orientation);
                    }

                    filePaths.RemoveAt(index);

                    if (filePaths.Count == 0)
                    {
                        this.Dispose();
                        Application.Exit();
                    }
                }
            }

            ChangeSize();
            Picture.Show();
            Index = index;

            new Thread(action =>
            {
                lock (cache)
                    BuildCache(orientation);
                Thread.CurrentThread.Abort();
            }).Start();

        }

        private int PreviousFilePath(int index)
        {
            return index > 0 ? index - 1 : filePaths.Count - 1;
        }

        private int NextFilePath(int index)
        {
            return index < filePaths.Count - 1 ? index + 1 : 0;
        }

        private void PreviousPicture()
        {
            directionSlideshow = false;
            ShowPicture(PreviousFilePath(Index), false);
            if ((Index == filePaths.Count - 1))
            {
                System.Media.SystemSounds.Asterisk.Play();
            }
        }

        private void NextPicture()
        {
            directionSlideshow = true;
            ShowPicture(NextFilePath(Index), true);
            if (Index == 0)
            {
                System.Media.SystemSounds.Beep.Play();
            }
        }

        private void ChangeSize()
        {
            if ((Picture.Image.Width >= (this.Width)) || (Picture.Image.Height >= (this.Height)))
            {
                this.Picture.SizeMode = PictureBoxSizeMode.Zoom;
                this.Picture.Dock = DockStyle.Fill;
            }
            else if ((Picture.Image.Width < (this.Width)) && (Picture.Image.Height < (this.Height)))
            {
                this.Picture.Dock = DockStyle.None;
                this.Picture.SizeMode = PictureBoxSizeMode.Normal;
                Picture.Location = new Point((this.Width - Picture.Width) / 2, (this.Height - Picture.Height) / 2);
            }

        }

        private void ChangeScreenState(bool isKey)
        {
            Screen currentScreen = Screen.FromPoint(Control.MousePosition);

            switch (screenState)
            {
                case ScreenState.None:
                    if (MovedWindow == false)
                    {
                        screenState = ScreenState.Full;
                        this.TopMost = true;
                        ScreenBeforeX = this.Location.X;
                        ScreenBeforeY = this.Location.Y;
                        ScreenBeforeWidth = this.Width;
                        ScreenBeforeHeight = this.Height;
                        AnimateWindow(this.Handle, 40, 0x00000010 + 0x00080000 + 0x00010000);
                        this.Location = currentScreen.Bounds.Location;
                        this.Width = currentScreen.Bounds.Width;
                        this.Height = currentScreen.Bounds.Height;
                        AnimateWindow(this.Handle, 80, 0x00000010 + 0x00080000 + 0x00020000);
                    }
                    break;
                case ScreenState.Full:
                    if (MovedWindow == false)
                    {
                        screenState = ScreenState.None;
                        this.TopMost = false;
                        AnimateWindow(this.Handle, 40, 0x00000010 + 0x00080000 + 0x00010000);
                        this.Location = new Point(ScreenBeforeX, ScreenBeforeY);
                        this.Width = ScreenBeforeWidth;
                        this.Height = ScreenBeforeHeight;
                        AnimateWindow(this.Handle, 80, 0x00000010 + 0x00080000 + 0x00020000);
                    }
                    break;
                case ScreenState.Left:
                    if (!isKey)
                    {
                        Shadows.ClearShadow();
                        ScreenBeforeX = this.Location.X;
                        ScreenBeforeY = this.Location.Y;
                        ScreenBeforeWidth = this.Width;
                        ScreenBeforeHeight = this.Height;
                        AnimateWindow(this.Handle, 10, 0x00000010 + 0x00080000 + 0x00010000);
                        this.Location = currentScreen.WorkingArea.Location;
                        this.Width = currentScreen.WorkingArea.Width / 2;
                        this.Height = currentScreen.WorkingArea.Height;
                        AnimateWindow(this.Handle, 30, 0x00000010 + 0x00080000 + 0x00020000);
                        AtBorderline = true;
                    }
                    break;
                case ScreenState.Right:
                    if (!isKey)
                    {
                        Shadows.ClearShadow();
                        ScreenBeforeX = this.Location.X;
                        ScreenBeforeY = this.Location.Y;
                        ScreenBeforeWidth = this.Width;
                        ScreenBeforeHeight = this.Height;
                        AnimateWindow(this.Handle, 10, 0x00000010 + 0x00080000 + 0x00010000);
                        this.Location = new Point(currentScreen.WorkingArea.Width / 2 + currentScreen.WorkingArea.X, currentScreen.WorkingArea.Y);
                        this.Width = currentScreen.WorkingArea.Width / 2;
                        this.Height = currentScreen.WorkingArea.Height;
                        AnimateWindow(this.Handle, 30, 0x00000010 + 0x00080000 + 0x00020000);
                        AtBorderline = true;
                    }
                    break;
                case ScreenState.Top:
                    if (!isKey)
                    {
                        Shadows.ClearShadow();
                        ScreenBeforeX = this.Location.X;
                        ScreenBeforeY = this.Location.Y;
                        ScreenBeforeWidth = this.Width;
                        ScreenBeforeHeight = this.Height;
                        AnimateWindow(this.Handle, 10, 0x00000010 + 0x00080000 + 0x00010000);
                        this.Location = currentScreen.WorkingArea.Location;
                        this.Width = currentScreen.WorkingArea.Width;
                        this.Height = currentScreen.WorkingArea.Height / 2;
                        AnimateWindow(this.Handle, 30, 0x00000010 + 0x00080000 + 0x00020000);
                        AtBorderline = true;
                    }
                    break;
                case ScreenState.Bottom:
                    if (!isKey)
                    {
                        Shadows.ClearShadow();
                        ScreenBeforeX = this.Location.X;
                        ScreenBeforeY = this.Location.Y;
                        ScreenBeforeWidth = this.Width;
                        ScreenBeforeHeight = this.Height;
                        AnimateWindow(this.Handle, 10, 0x00000010 + 0x00080000 + 0x00010000);
                        this.Location = new Point(currentScreen.WorkingArea.X, currentScreen.WorkingArea.Height / 2 + currentScreen.WorkingArea.Y);
                        this.Width = currentScreen.WorkingArea.Width;
                        this.Height = currentScreen.WorkingArea.Height / 2;
                        AnimateWindow(this.Handle, 30, 0x00000010 + 0x00080000 + 0x00020000);
                        AtBorderline = true;
                    }
                    break;
            }

        }

        private void BuildCache(bool orientation)
        {
            try
            {
                lock (cache)
                {
                    long now = DateTime.Now.Ticks;
                    buildCacheTime.Enqueue(now);
                    while (now - buildCacheTime.Peek() > 10000000)
                    {
                        buildCacheTime.Dequeue();
                    }

                    int index = Index;
                    List<string> trash = new List<string>();

                    if (orientation)
                    {
                        List<string> temp = new List<string>();
                        temp.Add(filePaths[PreviousFilePath(index)]);

                        do
                        {
                            temp.Add(filePaths[index]);
                            index = NextFilePath(index);
                        }
                        while (cache.ContainsKey(filePaths[index]) && !temp.Contains(filePaths[index]));

                        foreach (string item in cache.Keys)
                        {
                            if ((!temp.Contains(item)) && item != Picture.Tag.ToString())
                            {
                                trash.Add(item);
                            }
                        }

                    }
                    else
                    {
                        List<string> temp = new List<string>();
                        temp.Add(filePaths[NextFilePath(index)]);

                        do
                        {
                            temp.Add(filePaths[index]);
                            index = PreviousFilePath(index);
                        }
                        while (cache.ContainsKey(filePaths[index]) && !temp.Contains(filePaths[index]));

                        foreach (string item in cache.Keys)
                        {
                            if ((!temp.Contains(item)) && item != Picture.Tag.ToString())
                            {
                                trash.Add(item);
                            }
                        }
                    }

                    foreach (string item in trash)
                    {
                        cache[item].Dispose();
                        cache.Remove(item);
                    }

                    index = Index;

                    for (int i = 0; i < buildCacheTime.Count; i++)
                    {
                        if (orientation)
                        {
                            index = NextFilePath(index);
                        }
                        else
                        {
                            index = PreviousFilePath(index);
                        }

                        if (!cache.ContainsKey(filePaths[index]))
                        {
                            Bitmap bitmap = new Bitmap(filePaths[index]);
                            RotateImage(bitmap);
                            cache.Add(filePaths[index], bitmap);
                        }
                    }

                }
            }
            catch
            {
                return;
            }
        }

        private void DeleteFile(Image image, string filePath, bool sendToRecycleBin)
        {
            new Thread(action =>
            {
                try
                {
                    image.Dispose();

                    if (filePaths.Count < 1)
                    {
                        foreach (Bitmap item in cache.Values)
                        {
                            item.Dispose();
                        }
                    }

                    if (sendToRecycleBin)
                    {
                        Microsoft.VisualBasic.FileIO.FileSystem.DeleteFile(filePath, Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs, Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin);
                    }
                    else
                    {
                        File.Delete(filePath);
                    }
                }
                catch
                {
                    return;
                }
                Thread.CurrentThread.Abort();
            }).Start();
        }

        private void Exit()
        {
            if (StartState != 2)
            {
                if (screenState != ScreenState.None)
                {

                    WritePrivateProfileString("Location", "X", ScreenBeforeX.ToString(), Application.StartupPath + @"\configure.ini");
                    WritePrivateProfileString("Location", "Y", ScreenBeforeY.ToString(), Application.StartupPath + @"\configure.ini");
                    WritePrivateProfileString("Size", "Width", ScreenBeforeWidth.ToString(), Application.StartupPath + @"\configure.ini");
                    WritePrivateProfileString("Size", "Height", ScreenBeforeHeight.ToString(), Application.StartupPath + @"\configure.ini");
                    WritePrivateProfileString("Form", "Screen", screenState.ToString(), Application.StartupPath + @"\configure.ini");
                }
                else
                {

                    WritePrivateProfileString("Location", "X", this.Location.X.ToString(), Application.StartupPath + @"\configure.ini");
                    WritePrivateProfileString("Location", "Y", this.Location.Y.ToString(), Application.StartupPath + @"\configure.ini");
                    WritePrivateProfileString("Size", "Width", this.Width.ToString(), Application.StartupPath + @"\configure.ini");
                    WritePrivateProfileString("Size", "Height", this.Height.ToString(), Application.StartupPath + @"\configure.ini");
                    WritePrivateProfileString("Form", "Screen", "None", Application.StartupPath + @"\configure.ini");
                }
            }
            WritePrivateProfileString("Form", "BackColor", ColorTranslator.ToHtml(this.BackColor), Application.StartupPath + @"\configure.ini");
            WritePrivateProfileString("Form", "StartState", StartState.ToString(), Application.StartupPath + @"\configure.ini");
            WritePrivateProfileString("Form", "ShowInTaskbar", ShowInTaskbar.ToString(), Application.StartupPath + @"\configure.ini");

            Shadows.Dispose();
            this.Close();

        }

        private void Viewer_Load(object sender, EventArgs e)
        {
            if (Index != -1)
            {
                ShowPicture(Index, true);
            }
            else
            {
                this.Dispose();
                Application.Exit();
            }

        }

        private void Viewer_SizeChanged(object sender, EventArgs e)
        {
            if (IsLoseControl)
            {
                IsLoseControl = false;
                this.Cursor = Cursors.Cross;
                Cursor.Hide();
            }

            if (IsLockZoom)
            {
                IsLockZoom = false;

                LeftButtonsPress = false;

                IsZoom = false;
                ChangeSize();
                Cursor.Show();
                cursorState = true;
            }

            if (LeftButtonsPress)
            {
                LeftButtonsPress = false;

                if (IsZoom == true)
                {
                    IsZoom = false;
                    ChangeSize();
                    Cursor.Show();
                    cursorState = true;
                }
            }

            if (Picture.Image != null)
            {
                ChangeSize();
            }

        }

        private void Viewer_MouseDown(object sender, MouseEventArgs e)
        {
            timerSlideshow.Stop();

            if (IsClose == true)
            {
                return;
            }

            if (IsLockZoom)
            {
                if (e.Button == MouseButtons.Right)
                {
                    if (IsLoseControl)
                    {
                        IsLoseControl = false;
                        this.Cursor = Cursors.Cross;
                        HideBeforePosition = Cursor.Position;
                        Cursor.Position = Center;
                        Cursor.Hide();
                    }
                    else
                    {
                        IsLoseControl = true;
                        this.Cursor = Cursors.Default;
                        Cursor.Position = HideBeforePosition;
                        Cursor.Show();
                    }
                }

                return;
            }

            int mouseX = Control.MousePosition.X - this.Location.X;
            int mouseY = Control.MousePosition.Y - this.Location.Y;

            if (e.Button == MouseButtons.Left)
            {
                LeftButtonsPress = true;

                if (((Control.MousePosition.X - this.Location.X < edge) || ((this.Location.X + this.Width) - Control.MousePosition.X < edge) || (Control.MousePosition.Y - this.Location.Y < edge) || ((this.Location.Y + this.Height) - Control.MousePosition.Y < edge)) && screenState != ScreenState.Full)
                {
                    WindowRight = this.Right;
                    WindowBottom = this.Bottom;
                    ResizeWindow = true;
                    return;
                }

                IsZoom = true;
                HideBeforePosition = Cursor.Position;
                Cursor.Hide();

                if ((Picture.Image.Width > (this.Width)) || (Picture.Image.Height > (this.Height)))
                {
                    cursorState = false;
                    int PointX, PointY;
                    double w = Convert.ToDouble(Picture.Image.Width) / Convert.ToDouble(this.Width);
                    double h = Convert.ToDouble(Picture.Image.Height) / Convert.ToDouble(this.Height);

                    if (w > h)
                    {
                        PointX = Convert.ToInt32(mouseX * w);
                        PointY = Convert.ToInt32((mouseY - ((this.Height - (Picture.Image.Height / w)) / 2)) * w);
                    }
                    else if (w < h)
                    {
                        PointX = Convert.ToInt32((mouseX - ((this.Width - (Picture.Image.Width / h)) / 2)) * h);
                        PointY = Convert.ToInt32(mouseY * h);
                    }
                    else
                    {
                        PointX = Convert.ToInt32(mouseX * w);
                        PointY = Convert.ToInt32(mouseY * h);
                    }

                    PointX = (5 * mouseX + this.Width) / 7 - PointX;
                    PointY = (5 * mouseY + this.Height) / 7 - PointY;

                    if (PointX > 0)
                    {
                        PointX = 0;
                    }
                    else if (PointX < this.Width - Picture.Image.Width)
                    {
                        PointX = this.Width - Picture.Image.Width;
                    }

                    if (PointY > 0)
                    {
                        PointY = 0;
                    }
                    else if (PointY < this.Height - Picture.Image.Height)
                    {
                        PointY = this.Height - Picture.Image.Height;
                    }

                    if (Picture.Image.Width < this.Width)
                    {
                        PointX = (this.Width - Picture.Image.Width) / 2;
                    }

                    if (Picture.Image.Height < this.Height)
                    {
                        PointY = (this.Height - Picture.Image.Height) / 2;
                    }

                    this.Picture.SizeMode = PictureBoxSizeMode.Normal;
                    this.Picture.Dock = DockStyle.None;
                    Picture.Width = Picture.Image.Width;
                    Picture.Height = Picture.Image.Height;
                    Picture.Location = new Point(PointX, PointY);

                    Rectangle visualRect = Rectangle.Intersect(Cursor.Clip, this.DesktopBounds);

                    Center = new Point(visualRect.X + visualRect.Width / 2, visualRect.Y + visualRect.Height / 2);
                    Cursor.Position = new Point(Center.X, Center.Y);

                    DistanceX = PointX;
                    DistanceY = PointY;
                }
            }
            else if (e.Button == MouseButtons.Middle)
            {
                if (LeftButtonsPress)
                {
                    return;
                }

                MoveWindow = true;
                MoveX = mouseX;
                MoveY = mouseY;
            }
            else if (e.Button == MouseButtons.Right)
            {
                RightButtonsPress = true;
            }

        }

        private void Viewer_MouseUp(object sender, MouseEventArgs e)
        {
            timerSlideshow.Stop();

            if (IsLockZoom)
            {
                if (e.Button == MouseButtons.Middle && !IsLoseControl)
                {
                    IsLockZoom = false;

                    LeftButtonsPress = false;

                    IsZoom = false;
                    ChangeSize();
                    Cursor.Position = HideBeforePosition;
                    Cursor.Show();
                    cursorState = true;
                }

                return;
            }

            if (ResizeWindow == true)
            {
                ResizeWindow = false;
                return;
            }

            if (e.Button == MouseButtons.Left)
            {
                LeftButtonsPress = false;

                if (IsZoom == true)
                {
                    IsZoom = false;
                    ChangeSize();
                    Cursor.Position = HideBeforePosition;
                    Cursor.Show();
                    cursorState = true;
                }
            }
            else if (e.Button == MouseButtons.Middle)
            {
                if (LeftButtonsPress)
                {
                    IsLockZoom = true;
                    return;
                }

                ChangeScreenState(false);

                MoveWindow = false;
                MovedWindow = false;
            }
            else if (e.Button == MouseButtons.Right)
            {
                RightButtonsPress = false;

                if (IsRotation == true)
                {
                    IsRotation = false;
                }
                else
                {
                    Exit();
                }
            }

        }

        private void Viewer_MouseMove(object sender, MouseEventArgs e)
        {
            Screen currentScreen = Screen.FromPoint(Control.MousePosition);

            if (ResizeWindow == true)
            {
                int x, y, width, height;

                if (WindowRight - MousePosition.X < this.MinimumSize.Width)
                {
                    x = WindowRight - this.MinimumSize.Width;
                    width = this.MinimumSize.Width;
                }
                else if (WindowRight - MousePosition.X > this.MaximumSize.Width)
                {
                    x = WindowRight - this.MaximumSize.Width;
                    width = this.MaximumSize.Width;
                }
                else
                {
                    x = MousePosition.X;
                    width = WindowRight - MousePosition.X;
                }

                if (WindowBottom - MousePosition.Y < this.MinimumSize.Height)
                {
                    y = WindowBottom - this.MinimumSize.Height;
                    height = this.MinimumSize.Height;
                }
                else if (WindowBottom - MousePosition.Y > this.MaximumSize.Height)
                {
                    y = WindowBottom - this.MaximumSize.Height;
                    height = this.MaximumSize.Height;
                }
                else
                {
                    y = MousePosition.Y;
                    height = WindowBottom - MousePosition.Y;
                }

                switch (direction)
                {
                    case Direction.Left:
                        this.Bounds = new Rectangle(new Point(x, this.Location.Y), new Size(width, this.Height));
                        Cursor.Current = Cursors.SizeWE;
                        break;
                    case Direction.Right:
                        this.Bounds = new Rectangle(new Point(this.Location.X, this.Location.Y), new Size(MousePosition.X - this.Left, this.Height));
                        Cursor.Current = Cursors.SizeWE;
                        break;
                    case Direction.Top:
                        this.Bounds = new Rectangle(new Point(this.Location.X, y), new Size(this.Width, height));
                        Cursor.Current = Cursors.SizeNS;
                        break;
                    case Direction.Bottom:
                        this.Bounds = new Rectangle(new Point(this.Location.X, this.Location.Y), new Size(this.Width, MousePosition.Y - this.Top));
                        Cursor.Current = Cursors.SizeNS;
                        break;
                    case Direction.LeftTop:
                        this.Bounds = new Rectangle(new Point(x, y), new Size(width, height));
                        Cursor.Current = Cursors.SizeNWSE;
                        break;
                    case Direction.LeftBottom:
                        this.Bounds = new Rectangle(new Point(x, this.Location.Y), new Size(width, MousePosition.Y - this.Top));
                        Cursor.Current = Cursors.SizeNESW;
                        break;
                    case Direction.RightTop:
                        this.Bounds = new Rectangle(new Point(this.Location.X, y), new Size(MousePosition.X - this.Left, height));
                        Cursor.Current = Cursors.SizeNESW;
                        break;
                    case Direction.RightBottom:
                        this.Bounds = new Rectangle(new Point(this.Location.X, this.Location.Y), new Size(MousePosition.X - this.Left, MousePosition.Y - this.Top));
                        Cursor.Current = Cursors.SizeNWSE;
                        break;
                }

                this.Refresh();
                return;
            }
            else
            {
                if (Control.MousePosition.X - this.Location.X < edge)
                {
                    Cursor.Current = Cursors.SizeWE;
                    direction = Direction.Left;
                }
                if ((this.Location.X + this.Width) - Control.MousePosition.X < edge)
                {
                    Cursor.Current = Cursors.SizeWE;
                    direction = Direction.Right;
                }
                if (Control.MousePosition.Y - this.Location.Y < edge)
                {
                    Cursor.Current = Cursors.SizeNS;
                    direction = Direction.Top;
                }
                if ((this.Location.Y + this.Height) - Control.MousePosition.Y < edge)
                {
                    Cursor.Current = Cursors.SizeNS;
                    direction = Direction.Bottom;
                }
                if ((Control.MousePosition.X - this.Location.X < edge) && (Control.MousePosition.Y - this.Location.Y < edge))
                {
                    Cursor.Current = Cursors.SizeNWSE;
                    direction = Direction.LeftTop;
                }
                if ((Control.MousePosition.X - this.Location.X < edge) && ((this.Location.Y + this.Height) - Control.MousePosition.Y < edge))
                {
                    Cursor.Current = Cursors.SizeNESW;
                    direction = Direction.LeftBottom;
                }
                if (((this.Location.X + this.Width) - Control.MousePosition.X < edge) && (Control.MousePosition.Y - this.Location.Y < edge))
                {
                    Cursor.Current = Cursors.SizeNESW;
                    direction = Direction.RightTop;
                }
                if (((this.Location.X + this.Width) - Control.MousePosition.X < edge) && ((this.Location.Y + this.Height) - Control.MousePosition.Y < edge))
                {
                    Cursor.Current = Cursors.SizeNWSE;
                    direction = Direction.RightBottom;
                }
            }

            if (MoveWindow == true)
            {

                if (Control.MousePosition.X < currentScreen.Bounds.Left + 2)
                {
                    screenState = ScreenState.Left;
                    Shadows.FillShadow(new Rectangle(currentScreen.WorkingArea.X, currentScreen.WorkingArea.Y, currentScreen.WorkingArea.Width / 2, currentScreen.WorkingArea.Height));
                }
                else if (Control.MousePosition.X > currentScreen.Bounds.Right - 2)
                {
                    screenState = ScreenState.Right;
                    Shadows.FillShadow(new Rectangle(currentScreen.WorkingArea.Width / 2 + currentScreen.WorkingArea.X, currentScreen.WorkingArea.Y, currentScreen.WorkingArea.Width / 2, currentScreen.WorkingArea.Height));
                }
                else if (Control.MousePosition.Y < currentScreen.Bounds.Top + 2)
                {
                    screenState = ScreenState.Top;
                    Shadows.FillShadow(new Rectangle(currentScreen.WorkingArea.X, currentScreen.WorkingArea.Y, currentScreen.WorkingArea.Width, currentScreen.WorkingArea.Height / 2));
                }
                else if (Control.MousePosition.Y > currentScreen.Bounds.Bottom - 2)
                {
                    screenState = ScreenState.Bottom;
                    Shadows.FillShadow(new Rectangle(currentScreen.WorkingArea.X, currentScreen.WorkingArea.Height / 2 + currentScreen.WorkingArea.Y, currentScreen.WorkingArea.Width, currentScreen.WorkingArea.Height / 2));
                }
                else
                {
                    if (screenState != ScreenState.Full)
                    {
                        screenState = ScreenState.None;
                    }
                    Shadows.ClearShadow();
                }

                if (screenState != ScreenState.Full)
                {
                    if (AtBorderline == true)
                    {
                        screenState = ScreenState.None;
                        this.TopMost = false;
                        this.Width = ScreenBeforeWidth;
                        this.Height = ScreenBeforeHeight;
                        MoveX = MoveX > Width ? Width : MoveX;
                        MoveY = MoveY > Height ? Height : MoveY;
                        AtBorderline = false;
                    }
                    else
                    {
                        Cursor.Current = Cursors.SizeAll;
                        this.Location = new Point(Control.MousePosition.X - MoveX, Control.MousePosition.Y - MoveY);
                    }
                }

                MovedWindow = true;
            }
            else if ((bool)cursorState == false && !IsLoseControl)
            {
                if (Cursor.Position.X == Center.X && Cursor.Position.Y == Center.Y)
                    return;

                DistanceX += Cursor.Position.X - Center.X;
                DistanceY += Cursor.Position.Y - Center.Y;
                Cursor.Position = Center;

                bool ImmovableX = false;
                bool ImmovableY = false;

                if (Picture.Image.Width < this.Width)
                {
                    ImmovableX = true;
                }

                if (Picture.Image.Height < this.Height)
                {
                    ImmovableY = true;
                }

                if (DistanceX > 0)
                {
                    DistanceX = 0;
                }
                if (DistanceX < (this.Width - Picture.Image.Width))
                {
                    DistanceX = this.Width - Picture.Image.Width;
                }
                if (DistanceY > 0)
                {
                    DistanceY = 0;
                }
                if (DistanceY < (this.Height - Picture.Image.Height))
                {
                    DistanceY = this.Height - Picture.Image.Height;
                }

                if (ImmovableX == true && ImmovableY == true)
                {
                    Picture.Location = new Point((this.Width - Picture.Image.Width) / 2, (this.Height - Picture.Image.Height) / 2);
                }
                else if (ImmovableX == true)
                {
                    Picture.Location = new Point((this.Width - Picture.Image.Width) / 2, DistanceY);
                }
                else if (ImmovableY == true)
                {
                    Picture.Location = new Point(DistanceX, (this.Height - Picture.Image.Height) / 2);
                }
                else
                {
                    Picture.Location = new Point(DistanceX, DistanceY);
                }

                Picture.Refresh();

            }
            else
            {
                Shadows.ClearShadow();
            }

        }

        private void Viewer_MouseWheel(object sender, MouseEventArgs e)
        {
            timerSlideshow.Stop();

            if (IsLockZoom)
            {
                return;
            }

            if (e.Delta > 0)
            {
                if (RightButtonsPress == true && LeftButtonsPress == false)
                {
                    IsRotation = true;
                    Picture.Image.RotateFlip(RotateFlipType.Rotate270FlipNone);
                    Picture.Width = Picture.Image.Width;
                    Picture.Height = Picture.Image.Height;
                    ChangeSize();
                    Picture.Refresh();
                    return;
                }

                if (LeftButtonsPress == true)
                {
                    return;
                }

                PreviousPicture();

            }
            else if (e.Delta < 0)
            {
                if (RightButtonsPress == true && LeftButtonsPress == false)
                {
                    IsRotation = true;
                    Picture.Image.RotateFlip(RotateFlipType.Rotate90FlipNone);
                    Picture.Width = Picture.Image.Width;
                    Picture.Height = Picture.Image.Height;
                    ChangeSize();
                    Picture.Refresh();
                    return;
                }

                if (LeftButtonsPress == true)
                {
                    return;
                }

                NextPicture();

            }
        }

        private void Viewer_KeyUp(object sender, KeyEventArgs e)
        {
            if (!e.Control && !e.Shift && !e.Alt)
            {
                switch (e.KeyCode)
                {
                    case Keys.D0:
                        {
                            intervalSlideshow = intervalSlideshow == 100000 ? intervalSlideshow : 10 * intervalSlideshow;
                            return;
                        }
                    case Keys.D1:
                        {
                            timerSlideshow.Interval = intervalSlideshow * 1000;
                            timerSlideshow.Start();
                            intervalSlideshow = 1;
                            return;
                        }
                    case Keys.D2:
                        {
                            timerSlideshow.Interval = intervalSlideshow * 2000;
                            timerSlideshow.Start();
                            intervalSlideshow = 1;
                            return;
                        }
                    case Keys.D3:
                        {
                            timerSlideshow.Interval = intervalSlideshow * 3000;
                            timerSlideshow.Start();
                            intervalSlideshow = 1;
                            return;
                        }
                    case Keys.D4:
                        {
                            timerSlideshow.Interval = intervalSlideshow * 4000;
                            timerSlideshow.Start();
                            intervalSlideshow = 1;
                            return;
                        }
                    case Keys.D5:
                        {
                            timerSlideshow.Interval = intervalSlideshow * 5000;
                            timerSlideshow.Start();
                            intervalSlideshow = 1;
                            return;
                        }
                    case Keys.D6:
                        {
                            timerSlideshow.Interval = intervalSlideshow * 6000;
                            timerSlideshow.Start();
                            intervalSlideshow = 1;
                            return;
                        }
                    case Keys.D7:
                        {
                            timerSlideshow.Interval = intervalSlideshow * 7000;
                            timerSlideshow.Start();
                            intervalSlideshow = 1;
                            return;
                        }
                    case Keys.D8:
                        {
                            timerSlideshow.Interval = intervalSlideshow * 8000;
                            timerSlideshow.Start();
                            intervalSlideshow = 1;
                            return;
                        }
                    case Keys.D9:
                        {
                            timerSlideshow.Interval = intervalSlideshow * 9000;
                            timerSlideshow.Start();
                            intervalSlideshow = 1;
                            return;
                        }
                }
            }

            timerSlideshow.Stop();

            if (e.KeyCode == Keys.Delete)
            {
                if (IsLockZoom | LeftButtonsPress)
                {
                    return;
                }

                try
                {
                    string filePath = filePaths[Index];
                    Image image = Picture.Image;
                    filePaths.RemoveAt(Index);

                    if (e.Shift)
                    {
                        DeleteFile(image, filePath, false);
                    }
                    else
                    {
                        DeleteFile(image, filePath, true);
                    }

                    if (filePaths.Count < 1)
                    {
                        Exit();
                        return;
                    }
                    else
                    {
                        ShowPicture(Index < filePaths.Count ? Index : Index = 0, true);
                        System.Media.SystemSounds.Exclamation.Play();
                    }

                }
                catch
                {
                    return;
                }
            }

            if (!e.Control && !e.Shift && !e.Alt)
            {
                if (e.KeyCode == Keys.Escape)
                {
                    Exit();
                }

                if (IsLockZoom | LeftButtonsPress)
                {
                    return;
                }

                switch (e.KeyCode)
                {
                    case Keys.Space:
                        {
                            ChangeScreenState(true);
                            break;
                        }
                    case Keys.Up:
                        {
                            PreviousPicture();
                            break;
                        }
                    case Keys.Down:
                        {
                            NextPicture();
                            break;
                        }
                    case Keys.Left:
                        {
                            Picture.Image.RotateFlip(RotateFlipType.Rotate270FlipNone);
                            Picture.Width = Picture.Image.Width;
                            Picture.Height = Picture.Image.Height;
                            ChangeSize();
                            Picture.Refresh();
                            break;
                        }
                    case Keys.Right:
                        {
                            Picture.Image.RotateFlip(RotateFlipType.Rotate90FlipNone);
                            Picture.Width = Picture.Image.Width;
                            Picture.Height = Picture.Image.Height;
                            ChangeSize();
                            Picture.Refresh();
                            break;
                        }
                    case Keys.H:
                        {
                            Picture.Image.RotateFlip(RotateFlipType.RotateNoneFlipX);
                            Picture.Refresh();
                            break;
                        }
                    case Keys.V:
                        {
                            Picture.Image.RotateFlip(RotateFlipType.RotateNoneFlipY);
                            Picture.Refresh();
                            break;
                        }
                }

                return;
            }

            if (e.Control)
            {
                switch (e.KeyCode)
                {
                    case Keys.A:
                        {
                            Clipboard.SetText(filePaths[Index]);
                            break;
                        }
                    case Keys.B:
                        {
                            System.Diagnostics.Process.Start("explorer.exe", @"/select, " + filePaths[Index]);
                            break;
                        }
                    case Keys.C:
                        {
                            Clipboard.SetImage(Picture.Image);
                            break;
                        }
                }
            }

        }

        private void TimerSlideshow_Tick(object sender, EventArgs e)
        {
            if (directionSlideshow)
            {
                NextPicture();
            }
            else
            {
                PreviousPicture();
            }

        }

    }
}


================================================
FILE: Feep/Viewer.resx
================================================
<?xml version="1.0" encoding="utf-8"?>
<root>
  <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>
</root>

================================================
FILE: Feep.Configure/Application.manifest
================================================
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
  <assemblyIdentity version="1.0.0.0" name="Feep.Configure" />
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
      </requestedPrivileges>
      <applicationRequestMinimum>
        <defaultAssemblyRequest permissionSetReference="Custom" />
        <PermissionSet class="System.Security.PermissionSet" version="1" ID="Custom" SameSite="site" Unrestricted="true" />
      </applicationRequestMinimum>
    </security>
  </trustInfo>
  <application xmlns="urn:schemas-microsoft-com:asm.v3">
    <windowsSettings>
      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
    </windowsSettings>
  </application>
</assembly>

================================================
FILE: Feep.Configure/Configure.Designer.cs
================================================
namespace Feep.Configure
{
    partial class Configure
    {
        private System.ComponentModel.IContainer components = null;

        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        private void InitializeComponent()
        {
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Configure));
            this.gbFiles = new System.Windows.Forms.GroupBox();
            this.cbTIF = new System.Windows.Forms.CheckBox();
            this.cbGIF = new System.Windows.Forms.CheckBox();
            this.cbPNG = new System.Windows.Forms.CheckBox();
            this.cbBMP = new System.Windows.Forms.CheckBox();
            this.cbJPG = new System.Windows.Forms.CheckBox();
            this.btnSetting = new System.Windows.Forms.Button();
            this.gbBackColor = new System.Windows.Forms.GroupBox();
            this.cmbFormStartState = new System.Windows.Forms.ComboBox();
            this.lblFormStartState = new System.Windows.Forms.Label();
            this.chkShowInTaskbar = new System.Windows.Forms.CheckBox();
            this.txtColor = new System.Windows.Forms.TextBox();
            this.lblColor = new System.Windows.Forms.Label();
            this.pnlColor = new System.Windows.Forms.Panel();
            this.numWidth = new System.Windows.Forms.NumericUpDown();
            this.numHeight = new System.Windows.Forms.NumericUpDown();
            this.lblMultiply = new System.Windows.Forms.Label();
            this.gbFiles.SuspendLayout();
            this.gbBackColor.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)(this.numWidth)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.numHeight)).BeginInit();
            this.SuspendLayout();
            // 
            // gbFiles
            // 
            this.gbFiles.Controls.Add(this.cbTIF);
            this.gbFiles.Controls.Add(this.cbGIF);
            this.gbFiles.Controls.Add(this.cbPNG);
            this.gbFiles.Controls.Add(this.cbBMP);
            this.gbFiles.Controls.Add(this.cbJPG);
            this.gbFiles.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.gbFiles.Location = new System.Drawing.Point(12, 12);
            this.gbFiles.Name = "gbFiles";
            this.gbFiles.Size = new System.Drawing.Size(402, 65);
            this.gbFiles.TabIndex = 0;
            this.gbFiles.TabStop = false;
            this.gbFiles.Text = "关联文件";
            // 
            // cbTIF
            // 
            this.cbTIF.AutoSize = true;
            this.cbTIF.Checked = true;
            this.cbTIF.CheckState = System.Windows.Forms.CheckState.Checked;
            this.cbTIF.Location = new System.Drawing.Point(344, 30);
            this.cbTIF.Name = "cbTIF";
            this.cbTIF.Size = new System.Drawing.Size(47, 24);
            this.cbTIF.TabIndex = 4;
            this.cbTIF.Text = "TIF";
            this.cbTIF.UseVisualStyleBackColor = true;
            // 
            // cbGIF
            // 
            this.cbGIF.AutoSize = true;
            this.cbGIF.Checked = true;
            this.cbGIF.CheckState = System.Windows.Forms.CheckState.Checked;
            this.cbGIF.Location = new System.Drawing.Point(269, 30);
            this.cbGIF.Name = "cbGIF";
            this.cbGIF.Size = new System.Drawing.Size(49, 24);
            this.cbGIF.TabIndex = 3;
            this.cbGIF.Text = "GIF";
            this.cbGIF.UseVisualStyleBackColor = true;
            // 
            // cbPNG
            // 
            this.cbPNG.AutoSize = true;
            this.cbPNG.Checked = true;
            this.cbPNG.CheckState = System.Windows.Forms.CheckState.Checked;
            this.cbPNG.Location = new System.Drawing.Point(185, 30);
            this.cbPNG.Name = "cbPNG";
            this.cbPNG.Size = new System.Drawing.Size(58, 24);
            this.cbPNG.TabIndex = 2;
            this.cbPNG.Text = "PNG";
            this.cbPNG.UseVisualStyleBackColor = true;
            // 
            // cbBMP
            // 
            this.cbBMP.AutoSize = true;
            this.cbBMP.Checked = true;
            this.cbBMP.CheckState = System.Windows.Forms.CheckState.Checked;
            this.cbBMP.Location = new System.Drawing.Point(99, 30);
            this.cbBMP.Name = "cbBMP";
            this.cbBMP.Size = new System.Drawing.Size(60, 24);
            this.cbBMP.TabIndex = 1;
            this.cbBMP.Text = "BMP";
            this.cbBMP.UseVisualStyleBackColor = true;
            // 
            // cbJPG
            // 
            this.cbJPG.AutoSize = true;
            this.cbJPG.Checked = true;
            this.cbJPG.CheckState = System.Windows.Forms.CheckState.Checked;
            this.cbJPG.Location = new System.Drawing.Point(20, 30);
            this.cbJPG.Name = "cbJPG";
            this.cbJPG.Size = new System.Drawing.Size(53, 24);
            this.cbJPG.TabIndex = 0;
            this.cbJPG.Text = "JPG";
            this.cbJPG.UseVisualStyleBackColor = true;
            // 
            // btnSetting
            // 
            this.btnSetting.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
            this.btnSetting.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.btnSetting.Location = new System.Drawing.Point(354, 193);
            this.btnSetting.Name = "btnSetting";
            this.btnSetting.Size = new System.Drawing.Size(60, 28);
            this.btnSetting.TabIndex = 2;
            this.btnSetting.Text = "设置";
            this.btnSetting.UseVisualStyleBackColor = true;
            this.btnSetting.Click += new System.EventHandler(this.btnSetting_Click);
            // 
            // gbBackColor
            // 
            this.gbBackColor.Controls.Add(this.numHeight);
            this.gbBackColor.Controls.Add(this.numWidth);
            this.gbBackColor.Controls.Add(this.cmbFormStartState);
            this.gbBackColor.Controls.Add(this.lblFormStartState);
            this.gbBackColor.Controls.Add(this.chkShowInTaskbar);
            this.gbBackColor.Controls.Add(this.txtColor);
            this.gbBackColor.Controls.Add(this.lblColor);
            this.gbBackColor.Controls.Add(this.pnlColor);
            this.gbBackColor.Controls.Add(this.lblMultiply);
            this.gbBackColor.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.gbBackColor.Location = new System.Drawing.Point(12, 83);
            this.gbBackColor.Name = "gbBackColor";
            this.gbBackColor.Size = new System.Drawing.Size(402, 104);
            this.gbBackColor.TabIndex = 1;
            this.gbBackColor.TabStop = false;
            this.gbBackColor.Text = "窗体设置";
            // 
            // cmbFormStartState
            // 
            this.cmbFormStartState.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cmbFormStartState.FormattingEnabled = true;
            this.cmbFormStartState.Items.AddRange(new object[] {
            "默认",
            "全屏",
            "自定"});
            this.cmbFormStartState.Location = new System.Drawing.Point(89, 66);
            this.cmbFormStartState.Name = "cmbFormStartState";
            this.cmbFormStartState.Size = new System.Drawing.Size(90, 28);
            this.cmbFormStartState.TabIndex = 6;
            this.cmbFormStartState.SelectedIndexChanged += new System.EventHandler(this.cmbFormStartState_SelectedIndexChanged);
            // 
            // lblFormStartState
            // 
            this.lblFormStartState.AutoSize = true;
            this.lblFormStartState.Font = new System.Drawing.Font("微软雅黑", 10.5F);
            this.lblFormStartState.Location = new System.Drawing.Point(16, 70);
            this.lblFormStartState.Name = "lblFormStartState";
            this.lblFormStartState.Size = new System.Drawing.Size(79, 20);
            this.lblFormStartState.TabIndex = 5;
            this.lblFormStartState.Text = "启动状态:";
            // 
            // chkShowInTaskbar
            // 
            this.chkShowInTaskbar.AutoSize = true;
            this.chkShowInTaskbar.Location = new System.Drawing.Point(225, 29);
            this.chkShowInTaskbar.Name = "chkShowInTaskbar";
            this.chkShowInTaskbar.Size = new System.Drawing.Size(154, 24);
            this.chkShowInTaskbar.TabIndex = 4;
            this.chkShowInTaskbar.Text = "在任务栏中显示图标";
            this.chkShowInTaskbar.UseVisualStyleBackColor = true;
            // 
            // txtColor
            // 
            this.txtColor.Location = new System.Drawing.Point(89, 28);
            this.txtColor.MaxLength = 6;
            this.txtColor.Name = "txtColor";
            this.txtColor.Size = new System.Drawing.Size(65, 26);
            this.txtColor.TabIndex = 2;
            this.txtColor.Text = "444444";
            this.txtColor.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
            this.txtColor.MouseClick += new System.Windows.Forms.MouseEventHandler(this.txtColor_MouseClick);
            this.txtColor.TextChanged += new System.EventHandler(this.txtColor_TextChanged);
            // 
            // lblColor
            // 
            this.lblColor.AutoSize = true;
            this.lblColor.Font = new System.Drawing.Font("微软雅黑", 10.5F);
            this.lblColor.Location = new System.Drawing.Point(14, 31);
            this.lblColor.Name = "lblColor";
            this.lblColor.Size = new System.Drawing.Size(74, 20);
            this.lblColor.TabIndex = 1;
            this.lblColor.Text = "背景色:#";
            // 
            // pnlColor
            // 
            this.pnlColor.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(68)))), ((int)(((byte)(68)))), ((int)(((byte)(68)))));
            this.pnlColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
            this.pnlColor.Location = new System.Drawing.Point(159, 31);
            this.pnlColor.Name = "pnlColor";
            this.pnlColor.Size = new System.Drawing.Size(20, 20);
            this.pnlColor.TabIndex = 0;
            // 
            // numWidth
            // 
            this.numWidth.Location = new System.Drawing.Point(198, 67);
            this.numWidth.Maximum = new decimal(new int[] {
            99999,
            0,
            0,
            0});
            this.numWidth.Name = "numWidth";
            this.numWidth.Size = new System.Drawing.Size(60, 26);
            this.numWidth.TabIndex = 7;
            this.numWidth.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
            this.numWidth.Value = new decimal(new int[] {
            1280,
            0,
            0,
            0});
            this.numWidth.Visible = false;
            // 
            // numHeight
            // 
            this.numHeight.Location = new System.Drawing.Point(279, 67);
            this.numHeight.Maximum = new decimal(new int[] {
            99999,
            0,
            0,
            0});
            this.numHeight.Name = "numHeight";
            this.numHeight.Size = new System.Drawing.Size(60, 26);
            this.numHeight.TabIndex = 8;
            this.numHeight.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
            this.numHeight.Value = new decimal(new int[] {
            720,
            0,
            0,
            0});
            this.numHeight.Visible = false;
            // 
            // lblMultiply
            // 
            this.lblMultiply.AutoSize = true;
            this.lblMultiply.Location = new System.Drawing.Point(259, 70);
            this.lblMultiply.Name = "lblMultiply";
            this.lblMultiply.Size = new System.Drawing.Size(19, 20);
            this.lblMultiply.TabIndex = 9;
            this.lblMultiply.Text = "×";
            this.lblMultiply.Visible = false;
            // 
            // Configure
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.BackColor = System.Drawing.SystemColors.Window;
            this.ClientSize = new System.Drawing.Size(426, 233);
            this.Controls.Add(this.gbBackColor);
            this.Controls.Add(this.btnSetting);
            this.Controls.Add(this.gbFiles);
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
            this.MaximizeBox = false;
            this.MinimizeBox = false;
            this.Name = "Configure";
            this.Opacity = 0.98D;
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "Feep 配置辅助程序";
            this.gbFiles.ResumeLayout(false);
            this.gbFiles.PerformLayout();
            this.gbBackColor.ResumeLayout(false);
            this.gbBackColor.PerformLayout();
            ((System.ComponentModel.ISupportInitialize)(this.numWidth)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.numHeight)).EndInit();
            this.ResumeLayout(false);

        }

        private System.Windows.Forms.GroupBox gbFiles;
        private System.Windows.Forms.CheckBox cbTIF;
        private System.Windows.Forms.CheckBox cbGIF;
        private System.Windows.Forms.CheckBox cbPNG;
        private System.Windows.Forms.CheckBox cbBMP;
        private System.Windows.Forms.CheckBox cbJPG;
        private System.Windows.Forms.Button btnSetting;
        private System.Windows.Forms.GroupBox gbBackColor;
        private System.Windows.Forms.TextBox txtColor;
        private System.Windows.Forms.Label lblColor;
        private System.Windows.Forms.Panel pnlColor;
        private System.Windows.Forms.ComboBox cmbFormStartState;
        private System.Windows.Forms.Label lblFormStartState;
        private System.Windows.Forms.CheckBox chkShowInTaskbar;
        private System.Windows.Forms.NumericUpDown numHeight;
        private System.Windows.Forms.NumericUpDown numWidth;
        private System.Windows.Forms.Label lblMultiply;
    }
}

================================================
FILE: Feep.Configure/Configure.cs
================================================
using System;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;
using System.Runtime.InteropServices;

namespace Feep.Configure
{
    public partial class Configure : Form
    {
        [DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);

        [DllImport("kernel32")]
        private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);

        [Flags]
        public enum HChangeNotifyFlags
        {
            SHCNF_DWORD = 0x0003,
            SHCNF_IDLIST = 0x0000,
            SHCNF_PATHA = 0x0001,
            SHCNF_PATHW = 0x0005,
            SHCNF_PRINTERA = 0x0002,
            SHCNF_PRINTERW = 0x0006,
            SHCNF_FLUSH = 0x1000,
            SHCNF_FLUSHNOWAIT = 0x2000
        }

        [Flags]
        enum HChangeNotifyEventID
        {
            SHCNE_ALLEVENTS = 0x7FFFFFFF,
            SHCNE_ASSOCCHANGED = 0x08000000,
            SHCNE_ATTRIBUTES = 0x00000800,
            SHCNE_CREATE = 0x00000002,
            SHCNE_DELETE = 0x00000004,
            SHCNE_DRIVEADD = 0x00000100,
            SHCNE_DRIVEADDGUI = 0x00010000,
            SHCNE_DRIVEREMOVED = 0x00000080,
            SHCNE_EXTENDED_EVENT = 0x04000000,
            SHCNE_FREESPACE = 0x00040000,
            SHCNE_MEDIAINSERTED = 0x00000020,
            SHCNE_MEDIAREMOVED = 0x00000040,
            SHCNE_MKDIR = 0x00000008,
            SHCNE_NETSHARE = 0x00000200,
            SHCNE_NETUNSHARE = 0x00000400,
            SHCNE_RENAMEFOLDER = 0x00020000,
            SHCNE_RENAMEITEM = 0x00000001,
            SHCNE_RMDIR = 0x00000010,
            SHCNE_SERVERDISCONNECT = 0x00004000,
            SHCNE_UPDATEDIR = 0x00001000,
            SHCNE_UPDATEIMAGE = 0x00008000,
        }

        [DllImport("shell32.dll")]
        static extern void SHChangeNotify(HChangeNotifyEventID wEventId, HChangeNotifyFlags uFlags, IntPtr dwItem1, IntPtr dwItem2);

        public static void RegisterFileType(string ExtendName, string Description, string IcoPath, string ExePath, bool Wish)
        {
            string relationName = "Feep." + ExtendName.Substring(1, ExtendName.Length - 1).ToUpper();

            try
            {
                Registry.CurrentUser.OpenSubKey("Software", true).OpenSubKey("Microsoft", true).OpenSubKey("Windows", true).OpenSubKey("CurrentVersion", true).OpenSubKey("Explorer", true).OpenSubKey("FileExts", true).DeleteSubKeyTree(ExtendName);
                Registry.ClassesRoot.DeleteSubKeyTree(ExtendName);
                Registry.ClassesRoot.DeleteSubKeyTree(relationName);
            }
            catch (Exception)
            {
                try
                {
                    Registry.ClassesRoot.DeleteSubKeyTree(ExtendName);
                    Registry.ClassesRoot.DeleteSubKeyTree(relationName);
                }
                catch
                {
                    try
                    {
                        Registry.ClassesRoot.DeleteSubKeyTree(relationName);
                    }
                    catch
                    { }
                }
            }

            if (Wish)
            {
                RegistryKey fileTypeKey = Registry.ClassesRoot.CreateSubKey(ExtendName);
                fileTypeKey.SetValue("", relationName);
                fileTypeKey.Close();

                RegistryKey relationKey = Registry.ClassesRoot.CreateSubKey(relationName);
                relationKey.SetValue("", Description);

                RegistryKey iconKey = relationKey.CreateSubKey("DefaultIcon");
                iconKey.SetValue("", IcoPath);

                RegistryKey shellKey = relationKey.CreateSubKey("Shell");
                RegistryKey openKey = shellKey.CreateSubKey("Open");
                RegistryKey commandKey = openKey.CreateSubKey("Command");
                commandKey.SetValue("", "\"" + ExePath + "\"" + " \"%1\"");

                relationKey.Close();
            }
            SHChangeNotify(HChangeNotifyEventID.SHCNE_ASSOCCHANGED, HChangeNotifyFlags.SHCNF_IDLIST, IntPtr.Zero, IntPtr.Zero);
        }

        int PointX, PointY, SizeWidth, SizeHeight;
        string screen = "", backColor = "";
        int startState = 0;
        bool showInTaskbar = false;

        public Configure()
        {
            InitializeComponent();

            StringBuilder ReturnedString = new StringBuilder(255);

            GetPrivateProfileString("Location", "X", Convert.ToInt32(Screen.PrimaryScreen.Bounds.Width * 0.1).ToString(), ReturnedString, 255, Application.StartupPath + @"\configure.ini");
            Int32.TryParse(ReturnedString.ToString(), out PointX);
            GetPrivateProfileString("Location", "Y", Convert.ToInt32(Screen.PrimaryScreen.Bounds.Height * 0.1).ToString(), ReturnedString, 255, Application.StartupPath + @"\configure.ini");
            Int32.TryParse(ReturnedString.ToString(), out PointY);
            GetPrivateProfileString("Size", "Width", Convert.ToInt32(Screen.PrimaryScreen.Bounds.Width * 0.8).ToString(), ReturnedString, 255, Application.StartupPath + @"\configure.ini");
            Int32.TryParse(ReturnedString.ToString(), out SizeWidth);
            GetPrivateProfileString("Size", "Height", Convert.ToInt32(Screen.PrimaryScreen.Bounds.Height * 0.8).ToString(), ReturnedString, 255, Application.StartupPath + @"\configure.ini");
            Int32.TryParse(ReturnedString.ToString(), out SizeHeight);
            GetPrivateProfileString("Form", "Screen", "None", ReturnedString, 255, Application.StartupPath + @"\configure.ini");
            screen = ReturnedString.ToString();
            GetPrivateProfileString("Form", "BackColor", "#000000", ReturnedString, 255, Application.StartupPath + @"\configure.ini");
            backColor = ReturnedString.ToString();
            GetPrivateProfileString("Form", "StartState", "0", ReturnedString, 255, Application.StartupPath + @"\configure.ini");
            Int32.TryParse(ReturnedString.ToString(), out startState);
            GetPrivateProfileString("Form", "ShowInTaskbar", "False", ReturnedString, 255, Application.StartupPath + @"\configure.ini");
            Boolean.TryParse(ReturnedString.ToString(), out showInTaskbar);

            numWidth.Value = SizeWidth;
            numHeight.Value = SizeHeight;

            try
            {
                pnlColor.BackColor = ColorTranslator.FromHtml(backColor);
                txtColor.Text = backColor.Substring(1);
            }
            catch
            {
                pnlColor.BackColor = Color.Black;
            }

            cmbFormStartState.SelectedIndex = startState;
            chkShowInTaskbar.Checked = showInTaskbar;

        }

        private void txtColor_TextChanged(object sender, EventArgs e)
        {
            if (txtColor.Text.Length == 6)
            {
                try
                {
                    pnlColor.BackColor = ColorTranslator.FromHtml("#" + txtColor.Text);
                }
                catch (Exception)
                {
                }
            }
        }

        private void txtColor_MouseClick(object sender, MouseEventArgs e)
        {
            txtColor.SelectAll();
        }

        private void btnSetting_Click(object sender, EventArgs e)
        {
            switch (cmbFormStartState.SelectedIndex)
            {
                case 1:
                    {
                        PointX = Convert.ToInt32(Screen.PrimaryScreen.Bounds.Width * 0.1);
                        PointY = Convert.ToInt32(Screen.PrimaryScreen.Bounds.Height * 0.1);
                        SizeWidth = Convert.ToInt32(Screen.PrimaryScreen.Bounds.Width * 0.8);
                        SizeHeight = Convert.ToInt32(Screen.PrimaryScreen.Bounds.Height * 0.8);
                    }
                    break;
                case 2:
                    {
                        SizeWidth = (int)numWidth.Value;
                        SizeHeight = (int)numHeight.Value;
                        PointX = 0;
                        PointY = 0;
                    }
                    break;
            }

            WritePrivateProfileString("Location", "X", PointX.ToString(), Application.StartupPath + @"\configure.ini");
            WritePrivateProfileString("Location", "Y", PointY.ToString(), Application.StartupPath + @"\configure.ini");
            WritePrivateProfileString("Size", "Width", SizeWidth.ToString(), Application.StartupPath + @"\configure.ini");
            WritePrivateProfileString("Size", "Height", SizeHeight.ToString(), Application.StartupPath + @"\configure.ini");
            WritePrivateProfileString("Form", "Screen", "None", Application.StartupPath + @"\configure.ini");
            WritePrivateProfileString("Form", "BackColor", ColorTranslator.ToHtml(pnlColor.BackColor), Application.StartupPath + @"\configure.ini");
            WritePrivateProfileString("Form", "StartState", cmbFormStartState.SelectedIndex.ToString(), Application.StartupPath + @"\configure.ini");
            WritePrivateProfileString("Form", "ShowInTaskbar", chkShowInTaskbar.Checked.ToString(), Application.StartupPath + @"\configure.ini");

            RegisterFileType(".jpg", "Feep JPG File", Application.StartupPath + @"\Icon\JPG.ico", Application.StartupPath + @"\Feep.exe", cbJPG.Checked);
            RegisterFileType(".bmp", "Feep BMP File", Application.StartupPath + @"\Icon\BMP.ico", Application.StartupPath + @"\Feep.exe", cbBMP.Checked);
            RegisterFileType(".png", "Feep PNG File", Application.StartupPath + @"\Icon\PNG.ico", Application.StartupPath + @"\Feep.exe", cbPNG.Checked);
            RegisterFileType(".gif", "Feep GIF File", Application.StartupPath + @"\Icon\GIF.ico", Application.StartupPath + @"\Feep.exe", cbGIF.Checked);
            RegisterFileType(".tif", "Feep TIF File", Application.StartupPath + @"\Icon\TIF.ico", Application.StartupPath + @"\Feep.exe", cbTIF.Checked);

            MessageBox.Show("设置成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        private void cmbFormStartState_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (cmbFormStartState.SelectedIndex)
            {
                case 0:
                case 1:
                    {
                        numWidth.Visible = false;
                        numHeight.Visible = false;
                        lblMultiply.Visible = false;
                    }
                    break;
                case 2:
                    {
                        numWidth.Visible = true;
                        numHeight.Visible = true;
                        lblMultiply.Visible = true;
                    }
                    break;
            }
        }
    }
}


================================================
FILE: Feep.Configure/Configure.resx
================================================
<?xml version="1.0" encoding="utf-8"?>
<root>
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
      AAABAAgAEBAAAAEAIABoBAAAhgAAABgYAAABACAAiAkAAO4EAAAgIAAAAQAgAKgQAAB2DgAAMDAAAAEA
      IACoJQAAHh8AAEBAAAABACAAKEIAAMZEAABgYAAAAQAgAKiUAADuhgAAgIAAAAEAIAAoCAEAlhsBAAAA
      AAABACAA4GIAAL4jAgAoAAAAEAAAACAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAonJydlcHBwooGBgbeEhIS5hISEuYSEhLmEhIS5hISEuYSEhLmBgYG3b29voiYmJmUAAAAKAAAAAAAA
      AAp0dHTJ9fX1///////////////////////9/f3/6Ojo///////////////////////09PT/c3NzyQAA
      AAonJydl9fX1////////////+fn5/5CQkP/u7u7/yMjI/yUlJf/z8/P/8fHx/+rq6v////////////T0
      9P8mJiZlcHBwov////////////////v7+/8tLS3/Y2Nj/4ODg/8bGxv/zs7O/01NTf9gYGD/////////
      ////////b29vooGBgbf/////8PDw/29vb//BwcH/Wlpa/xsbG/8cHBz/Ghoa/yUlJf8aGhr/s7Oz//v7
      +//29vb//////4GBgbeCgoK5/////+/v7/9FRUX/Gxsb/xwcHP8dHR3/UlJS/1ZWVv8fHx//Gxsb/1tb
      W/8vLy//gYGB//////+CgoK5goKCuf/////8/Pz/0tLS/yMjI/8dHR3/t7e3////////////x8fH/yEh
      If8aGhr/WFhY/+rq6v//////goKCuYKCgrny8vL/Kysr/x4eHv8aGhr/Tk5O////////////////////
      //9iYmL/Gxsb/35+fv/CwsL/+vr6/4KCgrmCgoK5/Pz8/7u7u/90dHT/Gxsb/1BQUP//////////////
      ////////Y2Nj/xoaGv8bGxv/IiIi/97e3v+CgoK5goKCuf/////09PT/bm5u/xsbG/8eHh7/vr6+////
      ////////zc3N/yIiIv8gICD/xcXF//T09P//////goKCuYKCgrn/////k5OT/yUlJf9MTEz/HBwc/x8f
      H/9aWlr/X19f/yIiIv8bGxv/Ghoa/0NDQ//q6ur//////4KCgrmBgYG3//////b29v/19fX/xcXF/xsb
      G/8fHx//Ghoa/xoaGv8aGhr/Tk5O/7e3t/9lZWX/5OTk//////+BgYG3cHBwov///////////////3R0
      dP88PDz/yMjI/x0dHf9wcHD/Y2Nj/yYmJv/19fX/////////////////cHBwoicnJ2X19fX/////////
      ///s7Oz/5+fn//z8/P8qKir/tLS0//Hx8f+FhYX/8vLy////////////9PT0/yYmJmUAAAAKdHR0yvX1
      9f//////////////////////6Ojo//n5+f//////////////////////9PT0/3Nzc8kAAAAKAAAAAAAA
      AAonJydlcHBwooGBgbeCgoK5goKCuYKCgrmCgoK5goKCuYKCgrmBgYG3cHBwoiYmJmUAAAAKAAAAAIAB
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAB
      AAAoAAAAGAAAADAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAA
      AFIDAwN9FRUVkhsbG5YbGxuWGxsblhsbG5YbGxuWGxsblhsbG5YbGxuWGxsblhsbG5YVFRWSAwMDfQAA
      AFIAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAIODg55dnZ278fHx/7y8vL//f39////////////////////
      ///////////////////////////////////9/f3/8vLy/8bGxv51dXXvDQ0NeQAAAAIAAAAAAAAAAA4O
      DnnCwsL9///////////////////////////////////////////6+vr/1tbW//X19f//////////////
      ////////////////////////wcHB/Q0NDXkAAAAAAAAAE3d3d+////////////////////////////T0
      9P+ysrL/+/v7//////+8vLz/ISEh/42Njf////////////7+/v///////////////////////////3V1
      de8AAAATAAAAUsfHx/7//////////////////////////4ODg/8cHBz/kJCQ//////99fX3/Ghoa/29v
      b///////3d3d/0tLS/+0tLT//////////////////////8bGxv4AAABSAwMDffLy8v//////////////
      /////////////7Gxsf8aGhr/IiIi/7q6uv8/Pz//Ghoa/1RUVP/d3d3/OTk5/xoaGv+Hh4f/////////
      //////////////Ly8v8DAwN9FRUVkv39/f///////////8fHx/+ampr/7Ozs/+Tk5P8iIiL/Ghoa/yAg
      IP8bGxv/Ghoa/yEhIf8tLS3/Ghoa/yMjI//f39////////////////////////39/f8VFRWSGRkZlv7+
      /v///////////1FRUf8aGhr/Kysr/21tbf8hISH/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/1lZ
      Wf/q6ur/tbW1/3t7e//o6Oj///////////8ZGRmWGRkZlv7+/v///////////9TU1P8vLy//Ghoa/xoa
      Gv8aGhr/Gxsb/zs7O/99fX3/gYGB/0VFRf8cHBz/Ghoa/yEhIf8lJSX/Gxsb/xsbG/+enp7/////////
      //8ZGRmWGRkZlv7+/v/////////////////Ozs7/Jycn/xoaGv8aGhr/cXFx//b29v////////////v7
      +/+IiIj/HBwc/xoaGv8aGhr/Hx8f/4KCgv/4+Pj///////////8ZGRmWGRkZlv7+/v/7+/v/o6Oj/4WF
      hf9paWn/ISEh/xoaGv84ODj/9fX1///////////////////////8/Pz/T09P/xoaGv8cHBz/paWl////
      //////////////////8ZGRmWGRkZlv7+/v/l5eX/IyMj/xoaGv8aGhr/Ghoa/xoaGv92dnb/////////
      ////////////////////////lJSU/xoaGv8aGhr/Pj4+/3h4eP+xsbH/9PT0//////8ZGRmWGRkZlv7+
      /v/5+fn/qamp/2hoaP8vLy//Ghoa/xoaGv94eHj/////////////////////////////////lpaW/xoa
      Gv8aGhr/Ghoa/xoaGv8cHBz/xsbG//////8ZGRmWGRkZlv7+/v////////////////++vr7/Hx8f/xoa
      Gv88PDz/9/f3///////////////////////+/v7/VFRU/xoaGv8eHh7/S0tL/25ubv+Pj4//7u7u////
      //8ZGRmWGRkZlv7+/v///////v7+/6Wlpf8nJyf/Ghoa/xoaGv8bGxv/enp6//n5+f////////////39
      /f+Tk5P/HR0d/xoaGv8kJCT/1NTU//////////////////////8ZGRmWGRkZlv7+/v//////u7u7/x4e
      Hv8aGhr/Hh4e/x4eHv8aGhr/Gxsb/0RERP+Kior/jo6O/09PT/8cHBz/Ghoa/xoaGv8aGhr/Ly8v/87O
      zv////////////////8ZGRmWGRkZlv7+/v//////8/Pz/3BwcP+cnJz/09PT/2VlZf8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Hh4e/1JSUv8lJSX/Ghoa/zo6Ov/5+fn///////////8ZGRmWFRUVkv39
      /f//////////////////////8fHx/y4uLv8aGhr/ISEh/x4eHv8aGhr/Ghoa/xsbG/8aGhr/ICAg/9vb
      2//l5eX/lZWV/6urq/////////////39/f8VFRWSAwMDffLy8v//////////////////////qKio/xsb
      G/8oKCj/wsLC/15eXv8aGhr/Li4u/6urq/8iIiL/Ghoa/6CgoP////////////////////////////Ly
      8v8DAwN9AAAAUsfHx/7/////////////////////wMDA/z8/P//Dw8P//////4ODg/8aGhr/YmJi////
      //+YmJj/HBwc/2ZmZv///////////////////////////8fHx/4AAABSAAAAE3d3d+//////////////
      //////////////z8/P///////////6Wlpf8eHh7/nZ2d///////9/f3/qKio/+fn5///////////////
      /////////////3Z2du8AAAATAAAAAA4ODnnCwsL9//////////////////////////////////////b2
      9v/V1dX/8vLy////////////////////////////////////////////wcHB/Q4ODnkAAAAAAAAAAAAA
      AAIODg55d3d378fHx/7y8vL//f39//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
      /v/9/f3/8vLy/8fHx/52dnbvDg4OeQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAFIDAwN9FRUVkhkZ
      GZYZGRmWGRkZlhkZGZYZGRmWGRkZlhkZGZYZGRmWGRkZlhkZGZYVFRWSAwMDfQAAAFIAAAATAAAAAAAA
      AAAAAAAA4AAHAIAAAQCAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAABAIAAAQDgAAcAKAAAACAAAABAAAAAAQAgAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAADgAAABaAAAAbAAA
      AHMAAABzAAAAcwAAAHMAAABzAAAAcwAAAHMAAABzAAAAcwAAAHMAAABzAAAAcwAAAHMAAABzAAAAbAAA
      AFoAAAA4AAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJwICAp5BQUHtfn5++aKi
      ovy2trb+vb29/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//729
      vf+2trb+oqKi/H19ffk/Pz/tAgICngAAACcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExAQEDt1dXV////
      ////////////////////////////////////////////////////////////////////////////////
      ///////////////////////////////////U1NT/Pj4+7QAAAEwAAAAAAAAAAAAAAAAAAAAoQEBA7fj4
      +P////////////////////////////////////////////////////////////b29v/FxcX/3t7e////
      ///////////////////////////////////////////////////39/f/Pj4+7QAAACcAAAAAAAAAAAMD
      A57W1tb///////////////////////////////////////v7+//R0dH/////////////////sLCw/yMj
      I/8wMDD/8vLy///////////////////////////////////////////////////////U1NT/AgICngAA
      AAAAAAAKQUFB7f/////////////////////////////////////n5+f/TExM/ycnJ/+5ubn/////////
      //9ycnL/Ghoa/yUlJf/b29v////////////Gxsb/q6ur//39/f//////////////////////////////
      //8/Pz/tAAAACgAAADh+fn75//////////////////////////////////////Dw8P8rKyv/Ghoa/zU1
      Nf/i4uL/+vr6/zc3N/8aGhr/Hh4e/8bGxv//////w8PD/ywsLP8fHx//jY2N////////////////////
      /////////////319ffkAAAA4AAAAWqOjo/z//////////////////////////////////////////1VV
      Vf8aGhr/Ghoa/1lZWf+4uLj/IiIi/xoaGv8aGhr/r6+v/8PDw/8sLCz/Ghoa/x4eHv+3t7f/////////
      ////////////////////////oqKi/AAAAFoAAABstra2/v////////////////////+rq6v/zc3N//7+
      /v//////j4+P/xoaGv8aGhr/HR0d/yMjI/8aGhr/Ghoa/xoaGv82Njb/LCws/xoaGv8aGhr/Pj4+//j4
      +P////////////////////////////////+2trb+AAAAbAAAAHO9vb3/////////////////xcXF/yMj
      I/8iIiL/VFRU/7Ozs/+jo6P/HBwc/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xsb
      G/+Xl5f////////////v7+//3Nzc/////////////////729vf8AAABzAAAAc729vf//////////////
      //++vr7/Jycn/xoaGv8aGhr/Hh4e/yQkJP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/ICAg/5ubm/+ampr/W1tb/ywsLP83Nzf/7u7u////////////vb29/wAAAHMAAABzvb29////
      //////////////////+wsLD/JCQk/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Jycn/29vb/+lpaX/qKio/3x8
      fP8vLy//Ghoa/xoaGv8aGhr/Hh4e/xoaGv8aGhr/Ghoa/yIiIv+7u7v///////////+9vb3/AAAAcwAA
      AHO9vb3///////////////////////////+np6f/IyMj/xoaGv8aGhr/Ghoa/zw8PP/S0tL/////////
      /////////////+Pj4/9SUlL/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8sLCz/rKys/////////////////729
      vf8AAABzAAAAc729vf/////////////////z8/P/3Nzc/8bGxv81NTX/Ghoa/xoaGv8mJib/z8/P////
      /////////////////////////////+fn5/81NTX/Ghoa/xoaGv8bGxv/RkZG/9TU1P//////////////
      ////////vb29/wAAAHMAAABzvb29///////u7u7/QkJC/yoqKv8lJSX/Hx8f/xoaGv8aGhr/Ghoa/2dn
      Z////////////////////////////////////////////4+Pj/8aGhr/Ghoa/x4eHv+pqan/+fn5////
      //////////////////+9vb3/AAAAcwAAAHO9vb3//////9ra2v8lJSX/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/m5ub////////////////////////////////////////////wMDA/x0dHf8aGhr/Ghoa/yIi
      Iv8zMzP/Z2dn/6Ghof/r6+v//////729vf8AAABzAAAAc729vf//////9PT0/5eXl/9WVlb/KSkp/xwc
      HP8aGhr/Ghoa/xoaGv+dnZ3////////////////////////////////////////////BwcH/Hh4e/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/HBwc/7CwsP//////vb29/wAAAHMAAABzvb29////////////////////
      ///q6ur/n5+f/yAgIP8aGhr/Ghoa/21tbf///////////////////////////////////////////5WV
      lf8aGhr/Ghoa/xoaGv8aGhr/Hh4e/yUlJf8uLi7/y8vL//////+9vb3/AAAAcwAAAHO9vb3/////////
      /////////////+7u7v9sbGz/HR0d/xoaGv8aGhr/KCgo/9fX1///////////////////////////////
      ///t7e3/Ozs7/xoaGv8aGhr/Jycn/5+fn//CwsL/3Nzc//X19f///////////729vf8AAABzAAAAc729
      vf/////////////////S0tL/RUVF/xsbG/8aGhr/Ghoa/xoaGv8aGhr/RUVF/93d3f//////////////
      ////////7Ozs/15eXv8bGxv/Ghoa/xoaGv8mJib/tLS0////////////////////////////vb29/wAA
      AHMAAABzvb29////////////3Nzc/y8vL/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/LS0t/39/
      f/+1tbX/ubm5/42Njf84ODj/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8lJSX/qqqq////////////////////
      //+9vb3/AAAAcwAAAHO9vb3////////////6+vr/SEhI/yQkJP86Ojr/c3Nz/4eHh/8hISH/Ghoa/xoa
      Gv8aGhr/Ghoa/xsbG/8cHBz/Ghoa/xoaGv8aGhr/Ghoa/x4eHv8bGxv/Ghoa/xoaGv8kJCT/qamp////
      /////////////729vf8AAABzAAAAc729vf/////////////////b29v/2dnZ//z8/P//////uLi4/x4e
      Hv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8bGxv/g4OD/5ycnP9GRkb/ISEh/x0d
      Hf+YmJj/////////////////vb29/wAAAHMAAABstra2/v//////////////////////////////////
      //9gYGD/Ghoa/xoaGv8hISH/Jycn/xoaGv8aGhr/Ghoa/xsbG/8bGxv/Ghoa/xoaGv9/f3////////z8
      /P/Hx8f/j4+P//n5+f////////////////+2trb+AAAAbAAAAFqjo6P8////////////////////////
      ////////3Nzc/yYmJv8aGhr/ISEh/5aWlv+0tLT/HBwc/xoaGv8cHBz/k5OT/1ZWVv8aGhr/Ghoa/0BA
      QP/9/f3//////////////////////////////////////6KiovwAAABaAAAAOH5+fvn/////////////
      //////////////////+srKz/ISEh/yEhIf+Wlpb//////9fX1/8kJCT/Ghoa/ygoKP/n5+f/4+Pj/zk5
      Of8aGhr/JCQk/9jY2P//////////////////////////////////////fX19+QAAADgAAAAKQUFB7f//
      //////////////////////////////7+/v+ysrL/oKCg////////////8/Pz/ysrK/8aGhr/TExM////
      ////////x8fH/ygoKP8zMzP/zMzM//////////////////////////////////////9AQEDtAAAACgAA
      AAADAwOe1tbW////////////////////////////////////////////////////////////Q0ND/x4e
      Hv+Hh4f/////////////////y8vL/+3t7f//////////////////////////////////////1dXV/wIC
      Ap4AAAAAAAAAAAAAAChAQEDt+Pj4////////////////////////////////////////////////////
      ///e3t7/xcXF/+jo6P////////////////////////////////////////////////////////////f3
      9/8/Pz/tAAAAJwAAAAAAAAAAAAAAAAAAAE1AQEDt1tbW////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ///V1dX/Pz8/7QAAAE0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgDAwOeQUFB7X5+fvmjo6P8tra2/r29
      vf+9vb3/vb29/729vf+9vb3/vb29/729vf+9vb3/vb29/729vf+9vb3/vb29/729vf+9vb3/tra2/qOj
      o/x+fn75QEBA7QICAp4AAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAOAAA
      AFoAAABsAAAAcwAAAHMAAABzAAAAcwAAAHMAAABzAAAAcwAAAHMAAABzAAAAcwAAAHMAAABzAAAAcwAA
      AHMAAABsAAAAWgAAADgAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAf4AAAB8AAAAOAAAABgAAAAQAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABgAAAAcAAAAPgAAAH+AAAHygAAAAwAAAAYAAAAAEA
      IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAACQAAABoAAAAsAAAANwAAADoAAAA6AAAAOgAAADoAAAA6AAAAOgAAADoAAAA6AAAAOgAA
      ADoAAAA6AAAAOgAAADoAAAA6AAAAOgAAADoAAAA6AAAAOgAAADoAAAA6AAAANwAAACwAAAAaAAAACQAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAGAAAARQAAAIgAAAC/AAAA4QcHB+8VFRXxHR0d8iAgIPMiIiLzIiIi8yIiIvMiIiLzIiIi8yIi
      IvMiIiLzIiIi8yIiIvMiIiLzIiIi8yIiIvMiIiLzIiIi8yIiIvMiIiLzIiIi8yIiIvMgICDzHR0d8hUV
      FfEHBwfvAAAA4QAAAL8AAACIAAAARQAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAgAAAFcAAADNHh4e829vb/utra3+2dnZ//Ly8v/5+fn//f39//7+/v//////////////
      ////////////////////////////////////////////////////////////////////////////////
      ///+/v7//f39//n5+f/y8vL/2NjY/6ysrP5ubm77HBwc8wAAAM0AAABXAAAAAgAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAJAAAAmRwcHPKlpaX++/v7////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////+/v7/6Kiov4bGxvyAAAAmAAA
      AAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAACZNzc39ufn5///////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ///m5ub/NTU19gAAAJgAAAACAAAAAAAAAAAAAAAAAAAAAAAAAFccHBzy5+fn////////////////////
      /////////////////////////////////////////////////////////////////////////////+rq
      6v+kpKT/tra2/9fX1///////////////////////////////////////////////////////////////
      ////////////////////////5ubm/xsbG/IAAABXAAAAAAAAAAAAAAAAAAAABwAAAM2mpqb+////////
      /////////////////////////////////////////////////////////v7+//v7+///////////////
      /////////////5aWlv8nJyf/KSkp/zs7O//x8fH/////////////////////////////////////////
      /////////////////////////////////////////////6Kiov4AAADNAAAABgAAAAAAAAAAAAAARh8f
      H/P7+/v////////////////////////////////////////////////////////////T09P/d3d3/1hY
      WP/t7e3//////////////////v7+/1xcXP8aGhr/Ghoa/y0tLf/a2tr///////////////////////7+
      /v/9/f3///////////////////////////////////////////////////////v7+/8cHBzzAAAARQAA
      AAAAAAAAAAAAiHBwcPv//////////////////////////////////////////////////////////8nJ
      yf82Njb/HR0d/x8fH/93d3f//f39////////////5ubm/zQ0NP8aGhr/Ghoa/ykpKf/Dw8P/////////
      ////////+/v7/4SEhP9lZWX/29vb////////////////////////////////////////////////////
      //9ubm77AAAAiAAAAAAAAAAAAAAAv62trf//////////////////////////////////////////////
      /////////////9/f3/8vLy//Ghoa/xoaGv8oKCj/pKSk////////////tra2/yUlJf8aGhr/Ghoa/yIi
      Iv+urq7////////////6+vr/gYGB/yUlJf8cHBz/OTk5/729vf//////////////////////////////
      //////////////////+srKz+AAAAvwAAAAAAAAAJAAAA4tra2v//////////////////////////////
      //////////////////////////////39/f9JSUn/Ghoa/xoaGv8aGhr/ODg4/9HR0f//////f39//xwc
      HP8aGhr/Ghoa/x0dHf+ampr///////v7+/+BgYH/JSUl/xoaGv8aGhr/Jycn/7i4uP//////////////
      ///////////////////////////////////Y2Nj/AAAA4QAAAAkAAAAaBwcH7/Ly8v//////////////
      //////////////////////////////////////////////////+AgID/Gxsb/xoaGv8aGhr/Gxsb/1NT
      U//Gxsb/RkZG/xoaGv8aGhr/Ghoa/xoaGv+BgYH/+/v7/4GBgf8lJSX/Ghoa/xoaGv8aGhr/SEhI//b2
      9v/////////////////////////////////////////////////y8vL/BwcH7wAAABoAAAAtFRUV8fn5
      +f/////////////////////////////////d3d3/1dXV//39/f////////////////+ysrL/JCQk/xoa
      Gv8aGhr/Ghoa/yAgIP8rKyv/Hh4e/xoaGv8aGhr/Ghoa/xoaGv81NTX/WVlZ/yUlJf8aGhr/Ghoa/xoa
      Gv8hISH/mpqa///////////////////////////////////////////////////////5+fn/FRUV8QAA
      ACwAAAA3HR0d8v39/f////////////////////////////Ly8v9PT0//MDAw/2dnZ/+7u7v/+Pj4////
      ///f39//Ly8v/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv82Njb/5OTk////////////////////////////////////////////////////
      ///9/f3/HR0d8gAAADcAAAA5Hx8f8v7+/v///////////////////////////4mJif8hISH/Ghoa/xsb
      G/8pKSn/Tk5O/6Kiov/CwsL/Nzc3/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xwcHP96enr//////////////////v7+/93d3f+3t7f/+Pj4////
      ///////////////////+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+/v///////////////////////////3d3
      d/8iIiL/Ghoa/xoaGv8aGhr/Ghoa/yIiIv8vLy//Gxsb/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/ycnJ/+mpqb/7e3t/729vf+JiYn/Tk5O/y8v
      L/8rKyv/q6ur///////////////////////+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+/v//////////////
      //////////////X19f9sbGz/ICAg/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8dHR3/KCgo/y4uLv8uLi7/Kioq/x8fH/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv83Nzf/ODg4/ycn
      J/8cHBz/Ghoa/xoaGv8aGhr/T09P//f39//////////////////+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+
      /v/////////////////////////////////x8fH/Y2Nj/yAgIP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/HBwc/zU1Nf+CgoL/wcHB/97e3v/h4eH/y8vL/5eXl/9DQ0P/ICAg/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8dHR3/R0dH/+vr6//////////////////+/v7/Hx8f8wAA
      ADoAAAA5Hx8f8v7+/v//////////////////////////////////////7e3t/2BgYP8fHx//Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8fHx//XFxc/9ra2v/////////////////////////////////u7u7/fHx8/ycn
      J/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/yQkJP9lZWX/5eXl////////////////////
      ///+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+/v///////////////////////////////////////////+vr
      6/9JSUn/Ghoa/xoaGv8aGhr/Ghoa/xwcHP9bW1v/7Ozs////////////////////////////////////
      ////////+/v7/4GBgf8iIiL/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/LS0t/4qKiv/39/f/////////
      ///////////////////+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+/v//////////////////////+vr6/+jo
      6P/Pz8//u7u7/6SkpP83Nzf/Ghoa/xoaGv8aGhr/Ghoa/zMzM//V1dX/////////////////////////
      //////////////////////////////T09P9QUFD/Ghoa/xoaGv8aGhr/Ghoa/xsbG/88PDz/tbW1//7+
      /v/////////////////////////////////+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+/v///////////+/v
      7/9ZWVn/Ojo6/y8vL/8sLCz/JiYm/x8fH/8bGxv/Ghoa/xoaGv8aGhr/HBwc/3l5ef//////////////
      //////////////////////////////////////////////////+tra3/JCQk/xoaGv8aGhr/Ghoa/yIi
      Iv+lpaX////////////////////////////////////////////+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+
      /v///////////9HR0f8tLS3/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/JSUl/7W1
      tf/////////////////////////////////////////////////////////////////m5ub/MTEx/xoa
      Gv8aGhr/Ghoa/xsbG/9FRUX/fHx8/6+vr//c3Nz/+/v7///////////////////////+/v7/Hx8f8wAA
      ADoAAAA5Hx8f8v7+/v///////////8TExP8qKir/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/LCws/9LS0v//////////////////////////////////////////////////////////////
      ///4+Pj/Pz8//xoaGv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/yMjI/8wMDD/SkpK/4CAgP/R0dH/////////
      ///+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+/v///////////+bm5v9zc3P/Pz8//yoqKv8dHR3/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/LCws/9PT0///////////////////////////////////////////////
      ///////////////////5+fn/QUFB/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/x0d
      Hf+Dg4P////////////+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+/v//////////////////////8/Pz/8bG
      xv+RkZH/VlZW/zIyMv8bGxv/Ghoa/xoaGv8aGhr/JiYm/7q6uv//////////////////////////////
      ///////////////////////////////////q6ur/MzMz/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/x8fH/+Wlpb////////////+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+/v//////////////
      /////////////////////////Pz8/66urv8lJSX/Ghoa/xoaGv8aGhr/HBwc/4KCgv//////////////
      //////////////////////////////////////////////////+1tbX/JiYm/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Gxsb/yEhIf8pKSn/Li4u/zg4OP+9vb3////////////+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+
      /v//////////////////////////////////////5ubm/2lpaf8iIiL/Ghoa/xoaGv8aGhr/Ghoa/zc3
      N//f39////////////////////////////////////////////////////////n5+f9ZWVn/Gxsb/xoa
      Gv8aGhr/Ghoa/ykpKf9qamr/jY2N/6mpqf/ExMT/3t7e//b29v/////////////////+/v7/Hx8f8wAA
      ADoAAAA5Hx8f8v7+/v/////////////////////////////////Gxsb/SUlJ/x4eHv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/x0dHf9nZ2f/9PT0/////////////////////////////////////////////v7+/5KS
      kv8lJSX/Ghoa/xoaGv8aGhr/Ghoa/zw8PP/w8PD/////////////////////////////////////////
      ///+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+/v///////////////////////Pz8/56env8zMzP/Gxsb/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8iIiL/bGxs/+jo6P//////////////////////////////
      ///4+Pj/kJCQ/ysrK/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/yEhIf9tbW3/8vLy////////////////////
      ///////////////////+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+/v/////////////////+/v7/enp6/ycn
      J/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Hh4e/0BAQP+YmJj/1dXV//Dw
      8P/z8/P/39/f/6urq/9TU1P/JCQk/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8gICD/ZGRk/+3t
      7f/////////////////////////////////+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+/v//////////////
      ////////dnZ2/xwcHP8aGhr/Ghoa/xoaGv8dHR3/Jycn/yoqKv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8gICD/LS0t/zY2Nv84ODj/Ly8v/yMjI/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/ICAg/2BgYP/s7Oz////////////////////////////+/v7/Hx8f8wAAADoAAAA5Hx8f8v7+
      /v//////////////////////0NDQ/zExMf8mJib/MjIy/1ZWVv+Ojo7/v7+//6CgoP8pKSn/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/yIi
      Iv8cHBz/Ghoa/xoaGv8aGhr/Ghoa/x8fH/9dXV3/8/Pz///////////////////////+/v7/Hx8f8wAA
      ADoAAAA5Hx8f8v7+/v///////////////////////v7+/66urv+6urr/6Ojo/////////////////6io
      qP8jIyP/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/KSkp/4uLi/+AgID/PDw8/yQkJP8aGhr/Ghoa/xsbG/9PT0//8/Pz////////////////////
      ///+/v7/Hx8f8wAAADoAAAA3HR0d8v39/f//////////////////////////////////////////////
      /////////Pz8/1lZWf8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/LCws/9HR0f//////7Ozs/6qqqv9cXFz/Li4u/zExMf/FxcX/////////
      ///////////////////9/f3/HR0d8gAAADcAAAAtFRUV8fn5+f//////////////////////////////
      ////////////////////////y8vL/y0tLf8aGhr/Ghoa/xoaGv8cHBz/NTU1/yoqKv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/x0dHf8cHBz/Ghoa/xoaGv8aGhr/Hx8f/5ycnP/////////////////8/Pz/0NDQ/7m5
      uf/////////////////////////////////5+fn/FRUV8QAAACwAAAAaBwcH7/Ly8v//////////////
      ////////////////////////////////////////f39//xwcHP8aGhr/Ghoa/xwcHP9PT0//2tra/4mJ
      if8cHBz/Ghoa/xoaGv8aGhr/MTEx/5SUlP9NTU3/Gxsb/xoaGv8aGhr/Ghoa/2BgYP//////////////
      ///////////////////////////////////////////////////y8vL/BwcH7wAAABoAAAAJAAAA4tra
      2v/////////////////////////////////////////////////p6en/OTk5/xoaGv8aGhr/HBwc/09P
      T//g4OD//////7CwsP8jIyP/Ghoa/xoaGv8aGhr/UlJS//z8/P/Pz8//ODg4/xoaGv8aGhr/Ghoa/zQ0
      NP/r6+v////////////////////////////////////////////////////////////Z2dn/AAAA4QAA
      AAkAAAAAAAAAv66urv/////////////////////////////////////////////////d3d3/QUFB/x0d
      Hf8cHBz/Tk5O/9/f3////////////8rKyv8rKyv/Ghoa/xoaGv8cHBz/ioqK////////////ra2t/ysr
      K/8aGhr/Ghoa/yYmJv+4uLj/////////////////////////////////////////////////////////
      //+srKz/AAAAvwAAAAAAAAAAAAAAiHBwcPv/////////////////////////////////////////////
      ////////4+Pj/29vb/9SUlL/4ODg/////////////////+fn5/8xMTH/Ghoa/xoaGv8mJib/vb29////
      /////////v7+/4mJif8jIyP/Ghoa/yUlJf+Wlpb/////////////////////////////////////////
      //////////////////9vb2/7AAAAiAAAAAAAAAAAAAAARh8fH/P7+/v/////////////////////////
      //////////////////////////////39/f/19fX///////////////////////v7+/89PT3/Ghoa/xoa
      Gv80NDT/6Ojo//////////////////f39/9mZmb/TU1N/6ioqP/19fX/////////////////////////
      //////////////////////////////v7+/8dHR3zAAAARQAAAAAAAAAAAAAABgAAAM2mpqb+////////
      ////////////////////////////////////////////////////////////////////////////////
      //9cXFz/JCQk/yAgIP9aWlr//v7+///////////////////////39/f/9/f3////////////////////
      /////////////////////////////////////////////6Ojo/4AAADNAAAABgAAAAAAAAAAAAAAAAAA
      AFcdHR3y5+fn////////////////////////////////////////////////////////////////////
      ///////////////////a2tr/sbGx/6Wlpf/Ly8v/////////////////////////////////////////
      ////////////////////////////////////////////////////////5ubm/xsbG/IAAABXAAAAAAAA
      AAAAAAAAAAAAAAAAAAIAAACaNzc39+fn5///////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ///////////////////////////////////////////////////////////////////m5ub/NjY29gAA
      AJkAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAmh0dHfKmpqb++/v7////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////+/v7/6Sk
      pP4cHBzyAAAAmQAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAFcAAADNHx8f83Bw
      cPuurq7/2tra//Ly8v/5+fn//f39//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
      /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//f39//n5+f/y8vL/2dnZ/62t
      rf9vb2/7Hh4e8wAAAM0AAABXAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAHAAAARgAAAIgAAAC/AAAA4gcHB+8VFRXxHR0d8h8fH/IfHx/yHx8f8h8fH/IfHx/yHx8f8h8f
      H/IfHx/yHx8f8h8fH/IfHx/yHx8f8h8fH/IfHx/yHx8f8h8fH/IfHx/yHx8f8h8fH/IfHx/yHR0d8hUV
      FfEHBwfvAAAA4gAAAL8AAACIAAAARgAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAABoAAAAtAAAANwAAADkAAAA5AAAAOQAA
      ADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAA
      ADkAAAA5AAAANwAAAC0AAAAaAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAD/wAAAA/8AAPwAAAAAPwAA8AAAAAAPAADgAAAAAAcAAMAAAAAAAwAAwAAAAAADAACAAAAAAAEAAIAA
      AAAAAQAAgAAAAAABAACAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAADAAAAAAAMAAMAAAAAAAwAA4AAAAAAH
      AADwAAAAAA8AAPwAAAAAPwAA/8AAAAP/AAAoAAAAQAAAAIAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAJgAAAFoAAACFAAAApwAAAMAAAADSAAAA3wAAAOUAAADmAAAA5gAAAOYAAADmAAAA5gAA
      AOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAA
      AOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOUAAADfAAAA0gAAAMAAAACnAAAAhQAAAFoAAAAmAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAACMAAAB+AAAAzgAAAOoAAADwEBAQ9TY2NvhSUlL7ZmZm/XNzc/57e3v/fX19/4CA
      gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA
      gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/35+fv96enr/c3Nz/mVlZf1RUVH7NTU1+A8P
      D/UAAADwAAAA6gAAAM4AAAB+AAAAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAI0AAADlBwcH8lJSUvufn5//3d3d////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ///////////////////+/v7/29vb/52dnf9PT0/7BQUF8gAAAOUAAACNAAAAEQAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAMwFBQXxcHBw/ufn5///////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      /////////////////////////////////////////////////////////////+Xl5f9tbW3+BAQE8QAA
      AMwAAAArAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAANkfHx/3ysrK////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      /////////////8fHx/8cHBz3AAAA2QAAACsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAA
      AMwfHx/34eHh////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////39/f/xwcHPcAAADMAAAAEQAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAI0FBQXxy8vL////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ///Z2dn/g4OD/5SUlP+np6f/1NTU////////////////////////////////////////////////////
      ///////////////////////////////////////////////////////////////////Hx8f/BAQE8QAA
      AI0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMAAADlcXFx/v//////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////fHx8/ysrK/8sLCz/MDAw/0JCQv/w8PD/////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      /////////////21tbf4AAADlAAAAIwAAAAAAAAAAAAAAAAAAAAAAAAB/BwcH8ufn5///////////////
      ////////////////////////////////////////////////////////////////////////7u7u/6Cg
      oP+mpqb/////////////////////////////////+fn5/0tLS/8aGhr/Ghoa/xoaGv82Njb/2tra////
      ////////////////////////////////////////////////////////////////////////////////
      ///////////////////////////////////l5eX/BQUF8gAAAH4AAAAAAAAAAAAAAAAAAAABAAAAz1NT
      U/z/////////////////////////////////////////////////////////////////////////////
      ///z8/P/mZmZ/0hISP8sLCz/OTk5/7u7u////////////////////////////87Ozv82Njb/Ghoa/xoa
      Gv8aGhr/MjIy/8DAwP/////////////////////////////////o6Oj/2dnZ////////////////////
      /////////////////////////////////////////////////////////////09PT/sAAADOAAAAAAAA
      AAAAAAAAAAAAJwAAAOqgoKD/////////////////////////////////////////////////////////
      ////////////////////////qqqq/zQ0NP8bGxv/Ghoa/xwcHP9KSkr/4uLi////////////////////
      //+ampr/KSkp/xoaGv8aGhr/Ghoa/y0tLf+srKz////////////////////////////e3t7/U1NT/z4+
      Pv+Xl5f/9/f3////////////////////////////////////////////////////////////////////
      //+dnZ3/AAAA6gAAACYAAAAAAAAAAAAAAFsAAADw3t7e////////////////////////////////////
      /////////////////////////////////////////////83Nzf81NTX/Ghoa/xoaGv8aGhr/JCQk/2dn
      Z//4+Pj/////////////////Z2dn/xwcHP8aGhr/Ghoa/xoaGv8mJib/lpaW////////////////////
      ///e3t7/VFRU/yIiIv8aGhr/Ly8v/2BgYP/k5OT/////////////////////////////////////////
      ////////////////////////29vb/wAAAPAAAABaAAAAAAAAAAAAAACGERER9f//////////////////
      ///////////////////////////////////////////////////////////////////29vb/RERE/xoa
      Gv8aGhr/Ghoa/xoaGv8vLy//kpKS////////////6+vr/z4+Pv8aGhr/Ghoa/xoaGv8aGhr/ICAg/4OD
      g//////////////////e3t7/U1NT/yIiIv8aGhr/Ghoa/xoaGv80NDT/vLy8////////////////////
      //////////////////////////////////////////////7+/v8PDw/1AAAAhQAAAAAAAAAAAAAAqDc3
      N/j/////////////////////////////////////////////////////////////////////////////
      /////////////3BwcP8dHR3/Ghoa/xoaGv8aGhr/Ghoa/zs7O//AwMD//////7i4uP8xMTH/Ghoa/xoa
      Gv8aGhr/Ghoa/xsbG/9sbGz////////////e3t7/U1NT/yIiIv8aGhr/Ghoa/xoaGv8bGxv/UFBQ//f3
      9///////////////////////////////////////////////////////////////////////NTU1+AAA
      AKcAAAAAAAAAAAAAAMFSUlL7////////////////////////////////////////////////////////
      //////////////////////////////////+enp7/KSkp/xoaGv8aGhr/Ghoa/xoaGv8dHR3/TU1N/7i4
      uP9xcXH/IiIi/xoaGv8aGhr/Ghoa/xoaGv8bGxv/U1NT///////d3d3/U1NT/yIiIv8aGhr/Ghoa/xoa
      Gv8aGhr/Kioq/5iYmP//////////////////////////////////////////////////////////////
      /////////////1FRUfsAAADAAAAAAAAAAAAAAADTZmZm/f//////////////////////////////////
      //////////////z8/P/p6en/////////////////////////////////zc3N/zU1Nf8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/yQkJP8yMjL/Jycn/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/zc3N/9oaGj/VFRU/yIi
      Iv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/z8/P//k5OT/////////////////////////////////////////
      //////////////////////////////////9lZWX9AAAA0gAAAAAAAAAAAAAA33Nzc/7/////////////
      //////////////////////////////////+MjIz/PDw8/3R0dP/CwsL/+/v7//////////////////b2
      9v9ERET/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/HR0d/x8fH/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/yIiIv98fHz/////////////////////////
      ////////////////////////////////////////////////////////c3Nz/gAAAN8AAAAAAAAAAAAA
      AOV7e3v////////////////////////////////////////////Hx8f/Ozs7/xoaGv8gICD/NDQ0/1xc
      XP+oqKj/8vLy////////////cXFx/x0dHf8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv82Njb/yMjI////
      /////////////////////////////////////////////////////////////////////////////3p6
      ev8AAADlAAAAAAAAAAAAAADmfHx8///////////////////////////////////////19fX/V1dX/x4e
      Hv8aGhr/Ghoa/xoaGv8dHR3/Ly8v/0lJSf+RkZH/xcXF/1ZWVv8gICD/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8dHR3/X19f//39/f//////////////////////9vb2/8nJyf+cnJz/1dXV////////////////////
      //////////////////98fHz/AAAA5gAAAAAAAAAAAAAA5nx8fP//////////////////////////////
      ////////5+fn/0dHR/8eHh7/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8bGxv/KCgo/zk5Of8hISH/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Li4u/5ubm////////f39/93d3f+qqqr/eXl5/0ZGRv80NDT/KSkp/2Rk
      ZP/9/f3/////////////////////////////////fHx8/wAAAOYAAAAAAAAAAAAAAOZ8fHz/////////
      ///////////////////////////////////Kysr/RUVF/x0dHf8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xsbG/8bGxv/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/x0dHf9JSUn/iYmJ/1dXV/84ODj/LCws/x8f
      H/8aGhr/Ghoa/xoaGv81NTX/vr6+/////////////////////////////////3x8fP8AAADmAAAAAAAA
      AAAAAADmfHx8/////////////////////////////////////////////////8bGxv9DQ0P/HBwc/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8nJyf/NjY2/0RE
      RP9XV1f/Wlpa/0xMTP85OTn/LS0t/xwcHP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Hx8f/yMj
      I/8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Hx8f/2xsbP//////////////////////////////
      //98fHz/AAAA5gAAAAAAAAAAAAAA5nx8fP//////////////////////////////////////////////
      ////////urq6/0BAQP8cHBz/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/yUl
      Jf9DQ0P/jIyM/9HR0f/4+Pj////////////8/Pz/5OTk/6enp/9WVlb/Ly8v/xsbG/8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/zU1Nf+EhIT/////////
      ////////////////////////fHx8/wAAAOYAAAAAAAAAAAAAAOZ8fHz/////////////////////////
      //////////////////////////////////+zs7P/Pj4+/xsbG/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/y4uLv9tbW3/4eHh////////////////////////////////////////////9/f3/5eX
      l/89PT3/HBwc/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Hx8f/0BA
      QP+lpaX//v7+/////////////////////////////////3x8fP8AAADmAAAAAAAAAAAAAADmfHx8////
      /////////////////////////////////////////////////////////////66urv88PDz/Gxsb/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/y4uLv97e3v/+fn5////////////////////////////////////
      ////////////////////////s7Oz/z4+Pv8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/JiYm/1JSUv/MzMz///////////////////////////////////////////98fHz/AAAA5gAA
      AAAAAAAAAAAA5nx8fP//////////////////////////////////////////////////////////////
      ////////YWFh/x0dHf8aGhr/Ghoa/xoaGv8aGhr/Ghoa/yMjI/9qamr/+fn5////////////////////
      //////////////////////////////////////////////////+jo6P/MzMz/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/MDAw/25ubv/p6en/////////////////////////////////////////
      ////////fHx8/wAAAOYAAAAAAAAAAAAAAOZ8fHz//////////////////////////////////v7+//Dw
      8P/d3d3/w8PD/6+vr/+ZmZn/gYGB/zs7O/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8/Pz//2tra////
      /////////////////////////////////////////////////////////////////////////Pz8/2lp
      af8gICD/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8dHR3/Ozs7/5OTk//6+vr/////////////////////////
      /////////////////////////////3x8fP8AAADmAAAAAAAAAAAAAADmfHx8////////////////////
      ///z8/P/bW1t/01NTf89PT3/NjY2/zIyMv8tLS3/JiYm/yAgIP8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8jIyP/g4OD////////////////////////////////////////////////////////////////////
      ///////////////////BwcH/NTU1/xoaGv8aGhr/Ghoa/xoaGv8aGhr/JiYm/4qKiv//////////////
      //////////////////////////////////////////////////98fHz/AAAA5gAAAAAAAAAAAAAA5nx8
      fP//////////////////////ycnJ/zQ0NP8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/MzMz/8TExP//////////////////////////////////////////////
      ////////////////////////////////////////+vr6/01NTf8aGhr/Ghoa/xoaGv8aGhr/Ghoa/x0d
      Hf9jY2P/uLi4/+jo6P//////////////////////////////////////////////////////fHx8/wAA
      AOYAAAAAAAAAAAAAAOZ8fHz//////////////////////7y8vP8xMTH/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/z09Pf/s7Oz/////////////////////////
      //////////////////////////////////////////////////////////////////93d3f/Hh4e/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/IyMj/zAwMP87Ozv/XV1d/4+Pj/+5ubn/6urq////////////////////
      /////////////3x8fP8AAADmAAAAAAAAAAAAAADmfHx8//////////////////////+urq7/MDAw/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xsbG/9HR0f//f39////
      ////////////////////////////////////////////////////////////////////////////////
      ////////ioqK/yMjI/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xwcHP8kJCT/MTEx/zs7
      O/9gYGD/ra2t//////////////////////98fHz/AAAA5gAAAAAAAAAAAAAA5nx8fP//////////////
      ////////09PT/1JSUv83Nzf/Kysr/x0dHf8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8bGxv/SEhI//7+/v//////////////////////////////////////////////////////////////
      /////////////////////////////4uLi/8jIyP/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/HR0d/1ZWVv//////////////////////fHx8/wAAAOYAAAAAAAAAAAAA
      AOZ8fHz////////////////////////////8/Pz/2NjY/6Kiov9tbW3/Pz8//zIyMv8jIyP/Gxsb/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/z8/P//w8PD/////////////////////////////////////////
      //////////////////////////////////////////////////98fHz/Hx8f/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/x8fH/9qamr//////////////////////3x8
      fP8AAADmAAAAAAAAAAAAAADmfHx8/////////////////////////////////////////////////+/v
      7/+8vLz/iIiI/1BQUP8gICD/Ghoa/xoaGv8aGhr/Ghoa/xoaGv80NDT/zMzM////////////////////
      ///////////////////////////////////////////////////////////////////9/f3/VFRU/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8iIiL/fX19////
      //////////////////98fHz/AAAA5gAAAAAAAAAAAAAA5nx8fP//////////////////////////////
      //////////////////////////////////+mpqb/Kysr/xoaGv8aGhr/Ghoa/xoaGv8aGhr/JiYm/46O
      jv//////////////////////////////////////////////////////////////////////////////
      ////////zc3N/zc3N/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/x4eHv8kJCT/LS0t/zMz
      M/83Nzf/Q0ND/7Kysv//////////////////////fHx8/wAAAOYAAAAAAAAAAAAAAOZ8fHz/////////
      ///////////////////////////////////////////////////g4OD/ZGRk/ygoKP8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xsbG/9FRUX/5+fn////////////////////////////////////////////////////
      /////////////////////////////3Z2dv8iIiL/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8qKir/QkJC/1hY
      WP93d3f/kZGR/6urq//FxcX/4eHh//f39////////////////////////////3x8fP8AAADmAAAAAAAA
      AAAAAADmfHx8//////////////////////////////////////////////////////+8vLz/SUlJ/yMj
      I/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Jycn/3p6ev/9/f3/////////////////////////
      /////////////////////////////////////////////7i4uP83Nzf/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Pz8//+Tk5P//////////////////////////////////////////////////////////////
      //98fHz/AAAA5gAAAAAAAAAAAAAA5nx8fP////////////////////////////////////////////r6
      +v+RkZH/Ojo6/x0dHf8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8zMzP/kpKS//7+
      /v///////////////////////////////////////////////////////////8vLy/9HR0f/HBwc/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/0VFRf/Jycn/////////////////////////////////////////
      ////////////////////////fHx8/wAAAOYAAAAAAAAAAAAAAOZ8fHz/////////////////////////
      /////////////+bm5v9qamr/Ly8v/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/zQ0NP+EhIT/8vLy/////////////////////////////////////////////v7+/7Oz
      s/9GRkb/Hh4e/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8dHR3/RUVF/8PDw///////////////
      /////////////////////////////////////////////3x8fP8AAADmAAAAAAAAAAAAAADmfHx8////
      /////////////////////////////9HR0f9QUFD/JSUl/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Kysr/1JSUv+mpqb/6urq////////////////////
      ///4+Pj/wsLC/25ubv81NTX/HBwc/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/x0d
      Hf9CQkL/uLi4//////////////////////////////////////////////////////98fHz/AAAA5gAA
      AAAAAAAAAAAA5nx8fP////////////////////////////////+ioqL/LCws/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8cHBz/Li4u/z4+
      Pv9eXl7/eXl5/319ff9qamr/R0dH/zMzM/8hISH/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/HBwc/z8/P/+zs7P/////////////////////////////////////////
      ////////fHx8/wAAAOYAAAAAAAAAAAAAAOZ8fHz/////////////////////////////////7Ozs/0ZG
      Rv8bGxv/Ghoa/xoaGv8aGhr/HR0d/ykpKf81NTX/RkZG/z4+Pv8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/x4eHv8eHh7/HBwc/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8cHBz/Pj4+/6+vr///////////////
      /////////////////////////////3x8fP8AAADmAAAAAAAAAAAAAADmfHx8////////////////////
      //////////////////+UlJT/LCws/ygoKP80NDT/Q0ND/3BwcP+fn5//z8/P//j4+P+hoaH/NDQ0/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8oKCj/Hh4e/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xsb
      G/88PDz/u7u7//////////////////////////////////////98fHz/AAAA5gAAAAAAAAAAAAAA5nx8
      fP//////////////////////////////////////7e3t/4CAgP+bm5v/ysrK//X19f//////////////
      ////////mJiY/yoqKv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xsbG/82Njb/f39//2VlZf84ODj/JiYm/xsb
      G/8aGhr/Ghoa/xoaGv8aGhr/NTU1/7W1tf//////////////////////////////////////fHx8/wAA
      AOYAAAAAAAAAAAAAAOV7e3v/////////////////////////////////////////////////////////
      ////////////////////////+Pj4/1FRUf8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8bGxv/Wlpa//7+
      /v/+/v7/1dXV/42Njf9JSUn/MTEx/x4eHv8aGhr/JiYm/3d3d//+/v7/////////////////////////
      /////////////3p6ev8AAADlAAAAAAAAAAAAAADfc3Nz/v//////////////////////////////////
      /////////////////////////////////////////////7u7u/8zMzP/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/zs7O//k5OT/////////////////9PT0/7Ozs/9ra2v/OTk5/0tLS//n5+f/////////
      //////////////////////////////////9zc3P+AAAA3wAAAAAAAAAAAAAA02ZmZv3/////////////
      //////////////////////////////////////////////////////////////////9xcXH/Hx8f/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/NTU1/z09Pf8sLCz/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/x8f
      H/8eHh7/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8vLy//r6+v/////////////////////////////////9vb
      2//e3t7/////////////////////////////////////////////////ZmZm/QAAANIAAAAAAAAAAAAA
      AMFSUlL7////////////////////////////////////////////////////////////////////////
      ///e3t7/PDw8/xoaGv8aGhr/Ghoa/xoaGv8aGhr/NDQ0/5KSkv/m5ub/ZGRk/xwcHP8aGhr/Ghoa/xoa
      Gv8aGhr/Gxsb/0lJSf98fHz/SUlJ/xwcHP8aGhr/Ghoa/xoaGv8aGhr/ICAg/319ff//////////////
      /////////////////////////////////////////////////////////////////////////////1JS
      UvsAAADAAAAAAAAAAAAAAACoNzc3+P//////////////////////////////////////////////////
      ////////////////////////lJSU/ykpKf8aGhr/Ghoa/xoaGv8aGhr/NDQ0/5KSkv/+/v7//////4iI
      iP8iIiL/Ghoa/xoaGv8aGhr/Ghoa/yIiIv+JiYn//////7e3t/87Ozv/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv9KSkr/+Pj4////////////////////////////////////////////////////////////////////
      //////////////////81NTX4AAAApwAAAAAAAAAAAAAAhhEREfX/////////////////////////////
      ////////////////////////////////////////+vr6/01NTf8bGxv/Ghoa/xoaGv8aGhr/NDQ0/5KS
      kv/+/v7///////////+jo6P/Kysr/xoaGv8aGhr/Ghoa/xoaGv8wMDD/t7e3////////////k5OT/zEx
      Mf8aGhr/Ghoa/xoaGv8aGhr/NTU1/8vLy///////////////////////////////////////////////
      ///////////////////////////////////+/v7/Dw8P9QAAAIYAAAAAAAAAAAAAAFsAAADw3t7e////
      //////////////////////////////////////////////////////////////z8/P9ubm7/MzMz/xsb
      G/8aGhr/NTU1/5OTk//+/v7/////////////////vLy8/zExMf8aGhr/Ghoa/xoaGv8aGhr/PDw8/+jo
      6P////////////v7+/9ycnL/KCgo/xoaGv8aGhr/Ghoa/ycnJ/+Xl5f/////////////////////////
      ////////////////////////////////////////////////////////3Nzc/wAAAPAAAABbAAAAAAAA
      AAAAAAAnAAAA6qCgoP//////////////////////////////////////////////////////////////
      /////////Pz8/6Wlpf9FRUX/Nzc3/5OTk//+/v7//////////////////////9vb2/83Nzf/Ghoa/xoa
      Gv8aGhr/Gxsb/19fX///////////////////////7u7u/1lZWf8gICD/Ghoa/xoaGv8fHx//bW1t////
      /////////////////////////////////////////////////////////////////////////////56e
      nv8AAADqAAAAJgAAAAAAAAAAAAAAAQAAAM9TU1P8////////////////////////////////////////
      ////////////////////////////////////////39/f/7i4uP/+/v7/////////////////////////
      ///z8/P/Pz8//xoaGv8aGhr/Ghoa/yQkJP+QkJD////////////////////////////W1tb/RkZG/yAg
      IP80NDT/YGBg/8XFxf//////////////////////////////////////////////////////////////
      //////////////////9QUFD7AAAAzgAAAAAAAAAAAAAAAAAAAAAAAAB/BwcH8ujo6P//////////////
      ////////////////////////////////////////////////////////////////////////////////
      /////////////////////////v7+/1ZWVv8aGhr/Ghoa/xoaGv8yMjL/vb29////////////////////
      /////////////7q6uv9ycnL/u7u7//z8/P//////////////////////////////////////////////
      ///////////////////////////////////l5eX/BgYG8gAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAIwAA
      AOVxcXH+////////////////////////////////////////////////////////////////////////
      //////////////////////////////////////////////////9zc3P/Kioq/yUlJf8hISH/Pz8//+3t
      7f//////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////bm5u/gAAAOUAAAAjAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAACOBQUF8cvLy///////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////3Nzc/52d
      nf+RkZH/hYWF/6Kiov//////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////ycnJ/wUF
      BfEAAACNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAM0fHx/34uLi////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////4ODg/x0dHfcAAADMAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAAAA2h8f
      H/fLy8v/////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////ycnJ/x4eHvcAAADaAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAC0AAADNBQUF8XFxcf7o6Oj/////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ///////////////////////////////////m5ub/b29v/gUFBfEAAADNAAAALAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAI4AAADlBwcH8lNTU/ygoKD/3t7e////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ///////////////////////////////////+/v7/3d3d/5+fn/9RUVH8BgYG8gAAAOUAAACOAAAAEQAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAA
      AH8AAADPAAAA6gAAAPARERH1Nzc3+FNTU/tmZmb9c3Nz/nt7e/98fHz/fHx8/3x8fP98fHz/fHx8/3x8
      fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8
      fP98fHz/fHx8/3x8fP98fHz/fHx8/3t7e/9zc3P+ZmZm/VJSUvs2Njb4EBAQ9QAAAPAAAADqAAAAzwAA
      AH8AAAAjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACcAAABcAAAAhgAAAKgAAADBAAAA0wAAAN8AAADlAAAA5gAA
      AOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAA
      AOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADlAAAA3wAAANMAAADBAAAAqAAA
      AIYAAABcAAAAJwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAP///////////+AAAAAAB///AAAAAAAA//wAAAAAAAA/+AAAAAAAAB/wAAAAAAAAD+AA
      AAAAAAAH4AAAAAAAAAfAAAAAAAAAA8AAAAAAAAADgAAAAAAAAAOAAAAAAAAAAYAAAAAAAAABgAAAAAAA
      AAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAA
      AAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAA
      AAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAA
      AAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAA
      AAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAA
      AAAAAAABgAAAAAAAAAGAAAAAAAAAA8AAAAAAAAADwAAAAAAAAAPgAAAAAAAAB+AAAAAAAAAH8AAAAAAA
      AA/4AAAAAAAAH/wAAAAAAAA//wAAAAAAAP//wAAAAAAD////////////KAAAAGAAAADAAAAAAQAgAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAACAAAADAAAABgAAAApAAAAPwAAAFIAAABgAAAAagAAAHEAAABzAAAAcwAAAHMAAABzAAAAcwAA
      AHMAAABzAAAAcwAAAHMAAABzAAAAcwAAAHMAAABzAAAAcwAAAHMAAABzAAAAcwAAAHMAAABzAAAAcwAA
      AHMAAABzAAAAcwAAAHMAAABzAAAAcwAAAHMAAABzAAAAcwAAAHMAAABzAAAAcwAAAHMAAABzAAAAcwAA
      AHMAAABzAAAAcwAAAHMAAABzAAAAcQAAAGoAAABgAAAAUgAAAD8AAAApAAAAGAAAAAwAAAACAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAQAAAARgAAAHwAAACpAAAAxQAAANwAAADmAAAA5gAAAOYAAADmAAAA5gAA
      AOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAA
      AOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAA
      AOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAAAOYAAADmAAAA5gAA
      AOYAAADmAAAA3AAAAMUAAACpAAAAfAAAAEYAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAYgAAALMAAADkAAAA5gAAAOkAAADsAAAA8AAA
      APQFBQX3FRUV+SMjI/stLS39NDQ0/jo6Ov88PDz/Pz8//0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA
      QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA
      QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/z8/
      P/88PDz/Ojo6/zU1Nf4tLS39IyMj+xQUFPkFBQX3AAAA9AAAAPAAAADsAAAA6QAAAOYAAADkAAAAswAA
      AGIAAAAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIAAAAIkAAADTAAAA5gAA
      AOsDAwPzFhYW+kBAQP10dHT/n5+f/8fHx//g4OD/6enp//Dw8P/29vb/+fn5//z8/P/9/f3//v7+////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ///////////////////////////////////9/f3//Pz8//n5+f/29vb/8PDw/+np6f/g4OD/xsbG/56e
      nv9ycnL/Pj4+/RUVFfoCAgLzAAAA6wAAAOYAAADTAAAAiQAAACAAAAABAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAgAAABmAAAA1AAAAOcAAADwDg4O+mVlZf+1tbX/6urq////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      /////////////////////////////////////////////+jo6P+ysrL/YWFh/wwMDPoAAADwAAAA5wAA
      ANQAAABmAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAKsAAADmAAAA7h4eHvyMjIz/8PDw////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      /////////////+7u7v+Hh4f/Gxsb/AAAAO4AAADmAAAAqwAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmAAAAvAAAAOgHBwf2ZWVl/+np
      6f//////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////5ubm/2BgYP8GBgb2AAAA6AAA
      ALsAAAAmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      ABUAAAC8AAAA6AwMDPmhoaH//f39////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      //////////////z8/P+cnJz/CwsL+QAAAOgAAAC7AAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAKwAAADoDAwM+by8vP//////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////t7e3/wsLC/kAAADoAAAAqwAA
      AAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAZwAAAOYHBwf2oaGh////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////+/v7/+3t7f/w8PD/8/Pz//f39//7+/v/////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      /////////////5ycnP8GBgb2AAAA5gAAAGYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAhAAAA1AAAAO5mZmb//f39////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ///////////////////////////////////////////////////////////////////+/v7/r6+v/1RU
      VP9gYGD/b29v/35+fv+QkJD/1NTU////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      //////////////////////////////////////////////z8/P9gYGD/AAAA7gAAANQAAAAgAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJAAAA5x8fH/zp6en/////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ///////////////////v7+//VlZW/zQ0NP8xMTH/NTU1/zk5Of8+Pj7/SkpK/+/v7///////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ///m5ub/Gxsb/AAAAOcAAACJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAADTAAAA8I6O
      jv//////////////////////////////////////////////////////////////////////////////
      //////////////////////////////////////////////////////////////39/f/y8vL//Pz8////
      ///////////////////////////////////////////////////MzMz/RkZG/xwcHP8aGhr/Ghoa/xoa
      Gv8fHx//RERE/9XV1f//////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////h4eH/wAAAPAAAADTAAAAGQAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAGMAAADnDw8P+vHx8f//////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ///+/v7/2tra/4GBgf9cXFz/k5OT////////////////////////////////////////////////////
      //+cnJz/PDw8/xoaGv8aGhr/Ghoa/xoaGv8dHR3/QEBA/8PDw///////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////7u7u/wwM
      DPoAAADmAAAAYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALQAAADrZmZm////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      /////////////////////////f39/9HR0f9+fn7/SEhI/zs7O/8qKir/R0dH/7e3t///////////////
      //////////////////////////////z8/P9qamr/Ly8v/xoaGv8aGhr/Ghoa/xoaGv8bGxv/Pj4+/6io
      qP//////////////////////////////////////////////////////+/v7//b29v//////////////
      ////////////////////////////////////////////////////////////////////////////////
      /////////////////////////////2FhYf8AAADrAAAAswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAA
      AOQDAwPztra2////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////qKio/0tLS/86Ojr/JCQk/xsb
      G/8aGhr/Li4u/1dXV//b29v//////////////////////////////////////+Li4v9QUFD/IyMj/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/PDw8/4+Pj///////////////////////////////////////////////
      ///r6+v/dXV1/2BgYP+4uLj/+/v7////////////////////////////////////////////////////
      /////////////////////////////////////////////////////////////7Kysv8CAgLzAAAA5AAA
      ABAAAAAAAAAAAAAAAAAAAAAAAAAARwAAAOYWFhb66+vr////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ///+/v7/fn5+/zc3N/8bGxv/Ghoa/xoaGv8aGhr/Gxsb/zs7O/9tbW3/9fX1////////////////////
      /////////////7e3t/9CQkL/HBwc/xoaGv8aGhr/Ghoa/xoaGv8aGhr/NDQ0/4CAgP/+/v7/////////
      /////////////////////////////+7u7v9vb2//QEBA/zExMf9LS0v/g4OD/+3t7f//////////////
      ////////////////////////////////////////////////////////////////////////////////
      /////////////+jo6P8VFRX6AAAA5gAAAEYAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAOlCQkL9////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////////////////////qKio/z8/P/8bGxv/Ghoa/xoaGv8aGhr/Ghoa/x4e
      Hv9DQ0P/jo6O/////////////////////////////////4ODg/82Njb/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/LS0t/2xsbP/6+vr/////////////////////////////////7u7u/2lpaf9AQED/HR0d/xoa
      Gv8iIiL/Pz8//1dXV//AwMD//v7+////////////////////////////////////////////////////
      //////////////////////////////////////////////////8+Pj79AAAA6QAAAHwAAAAAAAAAAAAA
      AAAAAAACAAAAqgAAAOx1dXX/////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////19fX/0VF
      Rf8eHh7/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8mJib/SEhI/76+vv//////////////////////+/v7/1lZ
      Wf8pKSn/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Jycn/15eXv/09PT/////////////////////////
      ///r6+v/bW1t/z8/P/8eHh7/Ghoa/xoaGv8aGhr/HBwc/zIyMv9QUFD/6Ojo////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      //9ycnL/AAAA7AAAAKkAAAACAAAAAAAAAAAAAAAMAAAAxgAAAPChoaH/////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////+Pj4/1NTU/8mJib/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/MDAw/1hY
      WP/i4uL/////////////////19fX/0ZGRv8fHx//Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/IiIi/1RU
      VP/r6+v//////////////////////+7u7v9ubm7/QEBA/x0dHf8aGhr/Ghoa/xoaGv8aGhr/Ghoa/ysr
      K/9YWFj/8PDw////////////////////////////////////////////////////////////////////
      //////////////////////////////////+enp7/AAAA8AAAAMUAAAAMAAAAAAAAAAAAAAAYAAAA3QAA
      APTIyMj/////////////////////////////////////////////////////////////////////////
      /////////////////////////////////////////////////////////////3l5ef8yMjL/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/zw8PP9tbW3/9fX1////////////oaGh/z4+Pv8bGxv/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/HBwc/0tLS//c3Nz/////////////////7u7u/2hoaP8/Pz//HR0d/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/z4+Pv+Xl5f/////////////////////////////////////////
      ///////////////////////////////////////////////////////////////////Gxsb/AAAA9AAA
      ANwAAAAYAAAAAAAAAAAAAAAqAAAA5gYGBvfh4eH/////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      /////////////6ampv8+Pj7/Gxsb/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/x8fH/9ERET/lZWV//7+
      /v/6+vr/c3Nz/zIyMv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/0ZGRv/Jycn/////////
      ///q6ur/bGxs/z8/P/8eHh7/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/IiIi/1BQUP/e3t7/////////
      ////////////////////////////////////////////////////////////////////////////////
      ///////////////////g4OD/BQUF9wAAAOYAAAApAAAAAAAAAAAAAABAAAAA5hUVFfnp6en/////////
      ////////////////////////////////////////////////////////////////////////////////
      /////////////////////////////////////////////9LS0v9ISEj/Hx8f/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8nJyf/S0tL/5iYmP+FhYX/UVFR/yQkJP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Gxsb/0FBQf+0tLT//////+3t7f9ubm7/QEBA/x0dHf8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Nzc3/3d3d//7+/v/////////////////////////////////////////////////////////
      ///////////////////////////////////////////////////p6en/FBQU+QAAAOYAAAA/AAAAAAAA
      AAAAAABSAAAA5iQkJPvx8fH/////////////////////////////////////////////////////////
      //////////////////////////////////////////////////////////////////////////////Ly
      8v9cXFz/Jycn/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/MDAw/0BAQP83Nzf/Kysr/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/zs7O/9TU1P/h4eH/2lpaf8/Pz//HR0d/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8fHx//RUVF/8jIyP//////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ///w8PD/IyMj+wAAAOYAAABSAAAAAAAAAAAAAABgAAAA5i4uLv329vb/////////////////////////
      //////////////////////////////////////////////Dw8P+Hh4f/hISE/9DQ0P/4+Pj/////////
      //////////////////////////////////98fHz/MzMz/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Gxsb/xsbG/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/x0d
      Hf8pKSn/OTk5/z09Pf8eHh7/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8vLy//YWFh//r6
      +v//////////////////////////////////////////////////////////////////////////////
      ///////////////////////////////////29vb/LS0t/QAAAOYAAABgAAAAAAAAAAAAAABqAAAA5jU1
      Nf75+fn//////////////////////////////////////////////////////////////////////4+P
      j/9CQkL/Ojo6/0xMTP9vb2//t7e3//b29v////////////////////////////////+pqan/PT09/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xwcHP9BQUH/p6en////////////////////////////////////////////////////
      ///////////////////////////////////////////////////////////////////5+fn/NTU1/gAA
      AOYAAABqAAAAAAAAAAAAAABxAAAA5jo6Ov/8/Pz/////////////////////////////////////////
      ////////////////////////ycnJ/0dHR/8lJSX/Gxsb/x8fH/8zMzP/QkJC/1lZWf+fn5//4uLi////
      ///////////////////V1dX/SEhI/xwcHP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/ygoKP9UVFT/6urq////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ///////////////////8/Pz/Ojo6/wAAAOYAAABxAAAAAAAAAAAAAABzAAAA5jw8PP/9/f3/////////
      ///////////////////////////////////////////////////s7Oz/YWFh/zQ0NP8bGxv/Ghoa/xoa
      Gv8aGhr/HR0d/y0tLf9AQED/UVFR/4eHh//R0dH/+fn5///////k5OT/U1NT/yYmJv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/zs7
      O/+MjIz//v7+//////////////////////////////////////////////////v7+//6+vr/////////
      ///////////////////////////////////////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAA
      AAAAAABzAAAA5js7O//9/f3/////////////////////////////////////////////////////////
      //+UlJT/QkJC/xwcHP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8bGxv/JiYm/zs7O/9MTEz/cXFx/7e3
      t/9vb2//Q0ND/x8fH/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Hx8f/0xMTP/U1NT///////////////////////////////////////r6
      +v/X19f/n5+f/3R0dP9ycnL/4eHh////////////////////////////////////////////////////
      ///9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5jw8PP/9/f3/////////////////////////
      //////////////////////////////7+/v9wcHD/Ojo6/xsbG/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xsbG/8gICD/NDQ0/0RERP89PT3/HR0d/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/NTU1/3Nzc//7+/v/////////
      ////////+vr6/+Hh4f+1tbX/hISE/1ZWVv9DQ0P/Pj4+/zAwMP89PT3/hISE////////////////////
      ///////////////////////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5jw8
      PP/9/f3////////////////////////////////////////////////////////////Y2Nj/WVlZ/zY2
      Nv8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/x4eHv8cHBz/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/MTEx/1hYWP/V1dX/7u7u/8fHx/+UlJT/Z2dn/01NTf9CQkL/NjY2/ykpKf8fHx//Gxsb/xoa
      Gv8lJSX/TExM/9/f3//////////////////////////////////////////////////9/f3/PDw8/wAA
      AOYAAABzAAAAAAAAAAAAAABzAAAA5js7O//9/f3/////////////////////////////////////////
      ////////////////////////19fX/1JSUv8zMzP/Gxsb/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8bGxv/Gxsb/xsbG/8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/zk5Of9YWFj/WVlZ/0ZGRv87Ozv/Li4u/yIi
      Iv8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8bGxv/Pj4+/4mJif/9/f3/////////////////////////
      ///////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5jw8PP/9/f3/////////
      /////////////////////////////////////////////////////////////9TU1P9XV1f/MjIy/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xwcHP8jIyP/MDAw/zo6Ov8/Pz//QkJC/0NDQ/9BQUH/PT09/zY2
      Nv8qKir/Hh4e/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xwc
      HP8vLy//JCQk/xwcHP8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/JCQk/1BQ
      UP/h4eH////////////////////////////////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAA
      AAAAAABzAAAA5jw8PP/9/f3/////////////////////////////////////////////////////////
      ///////////////////Kysr/U1NT/zExMf8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8cHBz/KSkp/0BAQP9RUVH/cHBw/5eX
      l/+3t7f/w8PD/8bGxv+/v7//qqqq/4WFhf9fX1//SEhI/zY2Nv8hISH/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/ICAg/0VFRf/AwMD/////////////////////////////////////////
      ///9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5js7O//9/f3/////////////////////////
      ///////////////////////////////////////////////////+/v7/v7+//0tLS/8vLy//Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/yIi
      Iv8/Pz//UFBQ/5iYmP/f39///Pz8///////////////////////////////////////09PT/w8PD/25u
      bv9HR0f/MjIy/xsbG/8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8nJyf/RUVF/3R0dP/w8PD/////////
      ///////////////////////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5jw8
      PP/9/f3/////////////////////////////////////////////////////////////////////////
      /////////////7q6uv9OTk7/Ly8v/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8bGxv/Kysr/0pKSv+Dg4P/6+vr////////////////////////////////////
      //////////////////////////////39/f+/v7//XFxc/z4+Pv8fHx//Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/zEx
      Mf9NTU3/mpqa//39/f/////////////////////////////////////////////////9/f3/PDw8/wAA
      AOYAAABzAAAAAAAAAAAAAABzAAAA5jw8PP/9/f3/////////////////////////////////////////
      //////////////////////////////////////////////7+/v+0tLT/Tk5O/ywsLP8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xsbG/8vLy//TU1N/7CwsP/6+vr/////////
      ////////////////////////////////////////////////////////////////////////6enp/29v
      b/9CQkL/ICAg/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8fHx//Ozs7/1hYWP+/v7///f39////////////////////////////////////
      ///////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5js7O//9/f3/////////
      ////////////////////////////////////////////////////////////////////////////////
      ///9/f3/sbGx/0lJSf8rKyv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/yoq
      Kv9MTEz/s7Oz////////////////////////////////////////////////////////////////////
      /////////////////////////////+7u7v9wcHD/QUFB/xwcHP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/yQkJP9DQ0P/ZmZm/+Dg4P//////////////
      ///////////////////////////////////////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAA
      AAAAAABzAAAA5jw8PP/9/f3/////////////////////////////////////////////////////////
      /////////////////////////////////////////////3l5ef84ODj/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/ICAg/0hISP+srKz/////////////////////////////////////////
      ///////////////////////////////////////////////////////////////////v7+//ZWVl/zg4
      OP8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8bGxv/LCws/0tL
      S/+JiYn/9/f3////////////////////////////////////////////////////////////////////
      ///9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5jw8PP/9/f3/////////////////////////
      /////////////////////////////////////////////////////////v7+//r6+v/09PT/5eXl/1FR
      Uf8nJyf/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8bGxv/PT09/319ff/5+fn/////////
      ////////////////////////////////////////////////////////////////////////////////
      ////////////////////////1dXV/0xMTP8nJyf/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/x0dHf83Nzf/UlJS/7Kysv/7+/v/////////////////////////////////////////
      ///////////////////////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5js7
      O//9/f3//////////////////////////////////////////////////Pz8/+zs7P/b29v/x8fH/6qq
      qv+VlZX/g4OD/29vb/9iYmL/VFRU/0ZGRv8dHR3/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8mJib/TExM/+Dg4P//////////////////////////////////////////////////////////////
      /////////////////////////////////////////////////////////////42Njf8+Pj7/Gxsb/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/ICAg/0FBQf9bW1v/09PT////////////////////
      ///////////////////////////////////////////////////////////////////9/f3/PDw8/wAA
      AOYAAABzAAAAAAAAAAAAAABzAAAA5jw8PP/9/f3/////////////////////////////////+fn5/4yM
      jP9lZWX/VVVV/0pKSv9CQkL/QEBA/z4+Pv87Ozv/NTU1/y4uLv8nJyf/IiIi/x0dHf8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv88PDz/jIyM////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      /////////////+Li4v9SUlL/JiYm/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ly8v/19f
      X//t7e3/////////////////////////////////////////////////////////////////////////
      ///////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5jw8PP/9/f3/////////
      ////////////////////////xMTE/0RERP8uLi7/KCgo/yIiIv8fHx//HR0d/xsbG/8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/yAgIP9KSkr/09PT////
      ////////////////////////////////////////////////////////////////////////////////
      //////////////////////////////////////////////7+/v+BgYH/NjY2/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/JSUl/1lZWf/u7u7/////////////////////////////////////////
      ///////////////////////////////////////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAA
      AAAAAABzAAAA5js7O//9/f3/////////////////////////////////q6ur/z8/P/8bGxv/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/ysrK/9gYGD/9/f3////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      //+6urr/QkJC/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/HBwc/01NTf9zc3P/n5+f/9PT
      0//29vb/////////////////////////////////////////////////////////////////////////
      ///9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5jw8PP/9/f3/////////////////////////
      ////////nZ2d/z09Pf8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/zU1Nf+AgID/////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ///////////////////////////////////f39//TExM/x4eHv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/yQkJP8xMTH/Pj4+/0JCQv9RUVH/dXV1/6Wlpf/Pz8//8PDw//7+/v//////////////
      ///////////////////////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5jw8
      PP/9/f3/////////////////////////////////kJCQ/zs7O/8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/zs7
      O/+dnZ3/////////////////////////////////////////////////////////////////////////
      ///////////////////////////////////////////////////////////////////w8PD/VlZW/yQk
      JP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/x8fH/8nJyf/MjIy/z8/
      P/9JSUn/VlZW/3h4eP+oqKj/09PT//b29v/////////////////////////////////9/f3/PDw8/wAA
      AOYAAABzAAAAAAAAAAAAAABzAAAA5js7O//9/f3/////////////////////////////////goKC/zk5
      Of8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/z4+Pv+srKz/////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ///////////////////09PT/XFxc/ygoKP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xsbG/8eHh7/JiYm/zQ0NP89PT3/SUlJ/25ubv/h4eH/////////
      ///////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5jw8PP/9/f3/////////
      ////////////////////////oaGh/0RERP85OTn/Kysr/yAgIP8bGxv/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Gxsb/z8/P/+tra3/////////
      ////////////////////////////////////////////////////////////////////////////////
      ///////////////////////////////////////////////////09PT/XFxc/ygoKP8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8bGxv/Hh4e/0tLS/+ysrL////////////////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAA
      AAAAAABzAAAA5jw8PP/9/f3/////////////////////////////////+vr6/8LCwv+NjY3/ZGRk/0xM
      TP9AQED/MjIy/yQkJP8dHR3/Gxsb/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Gxsb/zw8PP+ioqL/////////////////////////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ///x8fH/WFhY/yYmJv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Hx8f/09PT//AwMD/////////////////////////
      ///9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5js7O//9/f3/////////////////////////
      ////////////////////////+Pj4/9jY2P+np6f/cnJy/01NTf9CQkL/Ojo6/ysrK/8fHx//Gxsb/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/zY2Nv+Hh4f/////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      ///////////////////////////////////k5OT/T09P/yAgIP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/IiIi/1VV
      Vf/Ozs7////////////////////////////9/f3/PDw8/wAAAOYAAABzAAAAAAAAAAAAAABzAAAA5jw8
      PP/9/f3///////////////////////////////////////////////////////////////////////Hx
      8f/ExMT/j4+P/2NjY/9LS0v/QkJC/yAgIP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/y4u
      Lv9nZ2f/+/v7////////////////////////////////////////////////////////////////////
      ///////////////////////////////////////////////////////////////////FxcX/RERE/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/JiYm/1paWv/d3d3////////////////////////////9/f3/PDw8/wAA
      AOYAAABzAAAAAAAAAAAAAABzAAAA5jw8PP/9/f3/////////////////////////////////////////
      //////////////////////////////////////////////X19f/V1dX/YmJi/yoqKv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/yIiIv9NTU3/3t7e////////////////////////////////////
      ////////////////////////////////////////////////////////////////////////////////
      //////////////////+Ojo7/OTk5/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoa
      Gv8aGhr/Ghoa/xoaGv8aGhr
Download .txt
gitextract_jqho2jds/

├── .gitattributes
├── .gitignore
├── Feep/
│   ├── Application.manifest
│   ├── Feep.csproj
│   ├── Program.cs
│   ├── Properties/
│   │   ├── AssemblyInfo.cs
│   │   ├── Resources.Designer.cs
│   │   ├── Resources.resx
│   │   ├── Settings.Designer.cs
│   │   └── Settings.settings
│   ├── Shadow.Designer.cs
│   ├── Shadow.cs
│   ├── Shadow.resx
│   ├── Viewer.Designer.cs
│   ├── Viewer.cs
│   └── Viewer.resx
├── Feep.Configure/
│   ├── Application.manifest
│   ├── Configure.Designer.cs
│   ├── Configure.cs
│   ├── Configure.resx
│   ├── Feep.Configure.csproj
│   ├── Program.cs
│   └── Properties/
│       ├── AssemblyInfo.cs
│       ├── Resources.Designer.cs
│       ├── Resources.resx
│       ├── Settings.Designer.cs
│       └── Settings.settings
├── Feep.sln
├── LICENSE
└── README.md
Download .txt
SYMBOL INDEX (69 symbols across 12 files)

FILE: Feep.Configure/Configure.Designer.cs
  class Configure (line 3) | partial class Configure
    method Dispose (line 7) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 16) | private void InitializeComponent()

FILE: Feep.Configure/Configure.cs
  class Configure (line 10) | public partial class Configure : Form
    method GetPrivateProfileString (line 12) | [DllImport("kernel32")]
    method WritePrivateProfileString (line 15) | [DllImport("kernel32")]
    type HChangeNotifyFlags (line 18) | [Flags]
    type HChangeNotifyEventID (line 31) | [Flags]
    method SHChangeNotify (line 57) | [DllImport("shell32.dll")]
    method RegisterFileType (line 60) | public static void RegisterFileType(string ExtendName, string Descript...
    method Configure (line 115) | public Configure()
    method txtColor_TextChanged (line 156) | private void txtColor_TextChanged(object sender, EventArgs e)
    method txtColor_MouseClick (line 170) | private void txtColor_MouseClick(object sender, MouseEventArgs e)
    method btnSetting_Click (line 175) | private void btnSetting_Click(object sender, EventArgs e)
    method cmbFormStartState_SelectedIndexChanged (line 215) | private void cmbFormStartState_SelectedIndexChanged(object sender, Eve...

FILE: Feep.Configure/Program.cs
  class Program (line 6) | static class Program
    method Main (line 8) | [STAThread]

FILE: Feep.Configure/Properties/Resources.Designer.cs
  class Resources (line 5) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Resources (line 13) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Feep.Configure/Properties/Settings.Designer.cs
  class Settings (line 4) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

FILE: Feep/Program.cs
  class Program (line 7) | static class Program
    method Main (line 10) | [STAThread]
    method GetPrivateProfileString (line 165) | [DllImport("kernel32")]

FILE: Feep/Properties/Resources.Designer.cs
  class Resources (line 5) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Resources (line 13) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Feep/Properties/Settings.Designer.cs
  class Settings (line 4) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

FILE: Feep/Shadow.Designer.cs
  class Shadow (line 3) | partial class Shadow
    method Dispose (line 7) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 16) | private void InitializeComponent()

FILE: Feep/Shadow.cs
  class Shadow (line 8) | public partial class Shadow : Form
    method GetWindowLong (line 11) | [DllImport("user32", EntryPoint = "GetWindowLong")]
    method SetWindowLong (line 13) | [DllImport("user32", EntryPoint = "SetWindowLong")]
    method Shadow (line 21) | public Shadow()
    method FillShadow (line 28) | internal void FillShadow(Rectangle rect)
    method ClearShadow (line 36) | internal void ClearShadow()

FILE: Feep/Viewer.Designer.cs
  class Viewer (line 3) | partial class Viewer
    method Dispose (line 7) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 16) | private void InitializeComponent()

FILE: Feep/Viewer.cs
  class Viewer (line 11) | sealed internal partial class Viewer : Form
    type Direction (line 14) | internal enum Direction
    type ScreenState (line 26) | internal enum ScreenState
    class StringLogicalComparer (line 36) | sealed internal class StringLogicalComparer : IComparer<string>
      method StrCmpLogicalW (line 38) | [DllImport("shlwapi.dll", CharSet = CharSet.Unicode, ExactSpelling =...
      method Compare (line 41) | public int Compare(string x, string y)
    class FilePath (line 48) | sealed internal class FilePath
      method GetPaths (line 78) | internal void GetPaths(object path)
    method WndProc (line 106) | protected override void WndProc(ref Message m)
    method WritePrivateProfileString (line 195) | [DllImport("kernel32")]
    method AnimateWindow (line 198) | [DllImportAttribute("user32.dll")]
    method Viewer (line 201) | internal Viewer(string PicturePath)
    method RotateImage (line 223) | internal void RotateImage(Bitmap bitmap)
    method ShowPicture (line 261) | internal void ShowPicture(int index, bool orientation)
    method PreviousFilePath (line 333) | private int PreviousFilePath(int index)
    method NextFilePath (line 338) | private int NextFilePath(int index)
    method PreviousPicture (line 343) | private void PreviousPicture()
    method NextPicture (line 353) | private void NextPicture()
    method ChangeSize (line 363) | private void ChangeSize()
    method ChangeScreenState (line 379) | private void ChangeScreenState(bool isKey)
    method BuildCache (line 481) | private void BuildCache(bool orientation)
    method DeleteFile (line 574) | private void DeleteFile(Image image, string filePath, bool sendToRecyc...
    method Exit (line 607) | private void Exit()
    method Viewer_Load (line 639) | private void Viewer_Load(object sender, EventArgs e)
    method Viewer_SizeChanged (line 653) | private void Viewer_SizeChanged(object sender, EventArgs e)
    method Viewer_MouseDown (line 694) | private void Viewer_MouseDown(object sender, MouseEventArgs e)
    method Viewer_MouseUp (line 833) | private void Viewer_MouseUp(object sender, MouseEventArgs e)
    method Viewer_MouseMove (line 903) | private void Viewer_MouseMove(object sender, MouseEventArgs e)
    method Viewer_MouseWheel (line 1145) | private void Viewer_MouseWheel(object sender, MouseEventArgs e)
    method Viewer_KeyUp (line 1198) | private void Viewer_KeyUp(object sender, KeyEventArgs e)
    method TimerSlideshow_Tick (line 1405) | private void TimerSlideshow_Tick(object sender, EventArgs e)
Condensed preview — 30 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (416K chars).
[
  {
    "path": ".gitattributes",
    "chars": 2518,
    "preview": "###############################################################################\n# Set default behavior to automatically "
  },
  {
    "path": ".gitignore",
    "chars": 5745,
    "preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## G"
  },
  {
    "path": "Feep/Application.manifest",
    "chars": 661,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<assembly manifestVersion=\"1.0\" xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n  <ass"
  },
  {
    "path": "Feep/Feep.csproj",
    "chars": 3863,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
  },
  {
    "path": "Feep/Program.cs",
    "chars": 8376,
    "preview": "using System;\nusing System.Windows.Forms;\nusing System.Runtime.InteropServices;\n\nnamespace Feep\n{\n    static class Prog"
  },
  {
    "path": "Feep/Properties/AssemblyInfo.cs",
    "chars": 534,
    "preview": "using System.Reflection;\nusing System.Runtime.InteropServices;\n\n[assembly: AssemblyTitle(\"Feep\")]\n[assembly: AssemblyDe"
  },
  {
    "path": "Feep/Properties/Resources.Designer.cs",
    "chars": 1708,
    "preview": "namespace Feep.Properties\n{\n    using System;\n\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Reso"
  },
  {
    "path": "Feep/Properties/Resources.resx",
    "chars": 2600,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSch"
  },
  {
    "path": "Feep/Properties/Settings.Designer.cs",
    "chars": 661,
    "preview": "namespace Feep.Properties\n{\n\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\n    [global::Sy"
  },
  {
    "path": "Feep/Properties/Settings.settings",
    "chars": 240,
    "preview": "<?xml version='1.0' encoding='utf-8'?>\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\""
  },
  {
    "path": "Feep/Shadow.Designer.cs",
    "chars": 1251,
    "preview": "namespace Feep\n{\n    partial class Shadow\n    {\n        private System.ComponentModel.IContainer components = null;\n\n  "
  },
  {
    "path": "Feep/Shadow.cs",
    "chars": 1472,
    "preview": "using System;\nusing System.Drawing;\nusing System.Runtime.InteropServices;\nusing System.Windows.Forms;\n\nnamespace Feep\n{"
  },
  {
    "path": "Feep/Shadow.resx",
    "chars": 2794,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSch"
  },
  {
    "path": "Feep/Viewer.Designer.cs",
    "chars": 2634,
    "preview": "namespace Feep\n{\n    partial class Viewer\n    {\n        private System.ComponentModel.IContainer components = null;\n\n  "
  },
  {
    "path": "Feep/Viewer.cs",
    "chars": 50642,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Drawing;\nusing System.Windows.Forms;\nusing System.Runtime."
  },
  {
    "path": "Feep/Viewer.resx",
    "chars": 2794,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSch"
  },
  {
    "path": "Feep.Configure/Application.manifest",
    "chars": 942,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<assembly manifestVersion=\"1.0\" xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n  <ass"
  },
  {
    "path": "Feep.Configure/Configure.Designer.cs",
    "chars": 14490,
    "preview": "namespace Feep.Configure\n{\n    partial class Configure\n    {\n        private System.ComponentModel.IContainer component"
  },
  {
    "path": "Feep.Configure/Configure.cs",
    "chars": 10851,
    "preview": "using System;\nusing System.Drawing;\nusing System.Text;\nusing System.Windows.Forms;\nusing Microsoft.Win32;\nusing System."
  },
  {
    "path": "Feep.Configure/Configure.resx",
    "chars": 243114,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSch"
  },
  {
    "path": "Feep.Configure/Feep.Configure.csproj",
    "chars": 3568,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
  },
  {
    "path": "Feep.Configure/Program.cs",
    "chars": 335,
    "preview": "using System;\nusing System.Windows.Forms;\n\nnamespace Feep.Configure\n{\n    static class Program\n    {\n        [STAThread"
  },
  {
    "path": "Feep.Configure/Properties/AssemblyInfo.cs",
    "chars": 554,
    "preview": "using System.Reflection;\nusing System.Runtime.InteropServices;\n\n[assembly: AssemblyTitle(\"Feep.Configure\")]\n[assembly: "
  },
  {
    "path": "Feep.Configure/Properties/Resources.Designer.cs",
    "chars": 1728,
    "preview": "namespace Feep.Configure.Properties\n{\n    using System;\n\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"S"
  },
  {
    "path": "Feep.Configure/Properties/Resources.resx",
    "chars": 2600,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSch"
  },
  {
    "path": "Feep.Configure/Properties/Settings.Designer.cs",
    "chars": 671,
    "preview": "namespace Feep.Configure.Properties\n{\n\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\n    ["
  },
  {
    "path": "Feep.Configure/Properties/Settings.settings",
    "chars": 240,
    "preview": "<?xml version='1.0' encoding='utf-8'?>\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\""
  },
  {
    "path": "Feep.sln",
    "chars": 1455,
    "preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 16\nVisualStudioVersion = 16.0.3112"
  },
  {
    "path": "LICENSE",
    "chars": 35149,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "README.md",
    "chars": 535,
    "preview": "# Feep\n\n## 鼠标操作方法\n- 查看原始比例:单击鼠标`左键`(移动鼠标可以拖动图片)。\n- 锁定原始比例:查看原始比例时单击鼠标`中键`(再次操作可解除锁定)。\n- 切换图片:`滚轮向上`为上一张,`滚轮向下`为下一张。\n- 全屏"
  }
]

About this extraction

This page contains the full source code of the poerin/Feep GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 30 files (395.2 KB), approximately 124.5k tokens, and a symbol index with 69 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!