mirror of https://github.com/oxen-io/lokinet
Merge branch 'dev' into private-keys-backup-support
commit
93b8832026
@ -1,228 +0,0 @@
|
|||||||
#include <net/net_inaddr.hpp>
|
|
||||||
|
|
||||||
std::ostream&
|
|
||||||
operator<<(std::ostream& out, const llarp::inAddr& a)
|
|
||||||
{
|
|
||||||
char tmp[128] = {0};
|
|
||||||
if(a.isIPv6Mode())
|
|
||||||
{
|
|
||||||
out << "[";
|
|
||||||
}
|
|
||||||
if(inet_ntop(a.isIPv4Mode() ? AF_INET : AF_INET6, (void*)&a._addr, tmp,
|
|
||||||
sizeof(tmp)))
|
|
||||||
{
|
|
||||||
out << tmp;
|
|
||||||
if(a.isIPv6Mode())
|
|
||||||
out << "]";
|
|
||||||
}
|
|
||||||
return out;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace llarp
|
|
||||||
{
|
|
||||||
void
|
|
||||||
inAddr::reset()
|
|
||||||
{
|
|
||||||
llarp::Zero(&this->_addr, sizeof(in6_addr));
|
|
||||||
}
|
|
||||||
|
|
||||||
bool
|
|
||||||
inAddr::from_char_array(const char* str)
|
|
||||||
{
|
|
||||||
this->reset();
|
|
||||||
|
|
||||||
// maybe refactor the family detection out
|
|
||||||
struct addrinfo hint, *res = nullptr;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
memset(&hint, '\0', sizeof hint);
|
|
||||||
|
|
||||||
hint.ai_family = PF_UNSPEC;
|
|
||||||
hint.ai_flags = AI_NUMERICHOST;
|
|
||||||
|
|
||||||
ret = getaddrinfo(str, nullptr, &hint, &res);
|
|
||||||
if(ret)
|
|
||||||
{
|
|
||||||
llarp::LogError("failed to determine address family: ", str);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(res->ai_family != AF_INET && res->ai_family != AF_INET6)
|
|
||||||
{
|
|
||||||
llarp::LogError("Address family not supported yet", str);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// convert detected-family (ipv4 or ipv6) str to in6_addr
|
|
||||||
|
|
||||||
/*
|
|
||||||
if (res->ai_family == AF_INET)
|
|
||||||
{
|
|
||||||
freeaddrinfo(res);
|
|
||||||
// get IPv4
|
|
||||||
struct in_addr addr; // basically a uint32_t network order
|
|
||||||
if(inet_aton(str, &addr) == 0)
|
|
||||||
{
|
|
||||||
llarp::LogError("failed to parse ", str);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
nuint32_t result;
|
|
||||||
result.n = addr.s_addr;
|
|
||||||
this->fromN32(result);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
ret = inet_pton(res->ai_family, str, &this->_addr);
|
|
||||||
// inet_pton won't set SIIT
|
|
||||||
// this->hexDebug();
|
|
||||||
freeaddrinfo(res);
|
|
||||||
if(ret <= 0)
|
|
||||||
{
|
|
||||||
if(ret == 0)
|
|
||||||
{
|
|
||||||
llarp::LogWarn("Not in presentation format");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
llarp::LogWarn("inet_pton failure");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
inAddr::fromSIIT()
|
|
||||||
{
|
|
||||||
if(ipv6_is_siit(this->_addr))
|
|
||||||
{
|
|
||||||
this->_addr.s6_addr[0] = this->_addr.s6_addr[12];
|
|
||||||
this->_addr.s6_addr[1] = this->_addr.s6_addr[13];
|
|
||||||
this->_addr.s6_addr[2] = this->_addr.s6_addr[14];
|
|
||||||
this->_addr.s6_addr[3] = this->_addr.s6_addr[15];
|
|
||||||
this->setIPv4Mode();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
inAddr::toSIIT()
|
|
||||||
{
|
|
||||||
if(!ipv6_is_siit(this->_addr))
|
|
||||||
{
|
|
||||||
this->_addr.s6_addr[10] = 0xff;
|
|
||||||
this->_addr.s6_addr[11] = 0xff;
|
|
||||||
this->_addr.s6_addr[12] = this->_addr.s6_addr[0];
|
|
||||||
this->_addr.s6_addr[13] = this->_addr.s6_addr[1];
|
|
||||||
this->_addr.s6_addr[14] = this->_addr.s6_addr[2];
|
|
||||||
this->_addr.s6_addr[15] = this->_addr.s6_addr[3];
|
|
||||||
llarp::Zero(&this->_addr, sizeof(in6_addr) - 6);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool
|
|
||||||
inAddr::isIPv6Mode() const
|
|
||||||
{
|
|
||||||
return !this->isIPv4Mode();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool
|
|
||||||
inAddr::isIPv4Mode() const
|
|
||||||
{
|
|
||||||
return ipv6_is_siit(this->_addr)
|
|
||||||
|| (this->_addr.s6_addr[4] == 0 && this->_addr.s6_addr[5] == 0
|
|
||||||
&& this->_addr.s6_addr[6] == 0 && this->_addr.s6_addr[7] == 0
|
|
||||||
&& this->_addr.s6_addr[8] == 0 && this->_addr.s6_addr[9] == 0
|
|
||||||
&& this->_addr.s6_addr[10] == 0 && this->_addr.s6_addr[11] == 0
|
|
||||||
&& this->_addr.s6_addr[12] == 0 && this->_addr.s6_addr[13] == 0
|
|
||||||
&& this->_addr.s6_addr[14] == 0 && this->_addr.s6_addr[15] == 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
inAddr::setIPv4Mode()
|
|
||||||
{
|
|
||||||
// keep first 4
|
|
||||||
// llarp::Zero(&this->_addr + 4, sizeof(in6_addr) - 4);
|
|
||||||
this->_addr.s6_addr[4] = 0;
|
|
||||||
this->_addr.s6_addr[5] = 0;
|
|
||||||
this->_addr.s6_addr[6] = 0;
|
|
||||||
this->_addr.s6_addr[7] = 0;
|
|
||||||
this->_addr.s6_addr[8] = 0;
|
|
||||||
this->_addr.s6_addr[9] = 0;
|
|
||||||
this->_addr.s6_addr[10] = 0;
|
|
||||||
this->_addr.s6_addr[11] = 0;
|
|
||||||
this->_addr.s6_addr[12] = 0;
|
|
||||||
this->_addr.s6_addr[13] = 0;
|
|
||||||
this->_addr.s6_addr[14] = 0;
|
|
||||||
this->_addr.s6_addr[15] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
inAddr::hexDebug()
|
|
||||||
{
|
|
||||||
char hex_buffer[16 * 3 + 1];
|
|
||||||
hex_buffer[16 * 3] = 0;
|
|
||||||
for(unsigned int j = 0; j < 16; j++)
|
|
||||||
sprintf(&hex_buffer[3 * j], "%02X ", this->_addr.s6_addr[j]);
|
|
||||||
printf("in6_addr: [%s]\n", hex_buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// IPv4 specific functions
|
|
||||||
//
|
|
||||||
|
|
||||||
in_addr
|
|
||||||
inAddr::toIAddr()
|
|
||||||
{
|
|
||||||
in_addr res;
|
|
||||||
res.s_addr = toN32().n;
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
inAddr::from4int(const uint8_t one, const uint8_t two, const uint8_t three,
|
|
||||||
const uint8_t four)
|
|
||||||
{
|
|
||||||
this->reset();
|
|
||||||
this->setIPv4Mode();
|
|
||||||
// Network byte order
|
|
||||||
this->_addr.s6_addr[0] = one;
|
|
||||||
this->_addr.s6_addr[1] = two;
|
|
||||||
this->_addr.s6_addr[2] = three;
|
|
||||||
this->_addr.s6_addr[3] = four;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
inAddr::fromN32(nuint32_t in)
|
|
||||||
{
|
|
||||||
this->reset();
|
|
||||||
this->setIPv4Mode();
|
|
||||||
memcpy(&this->_addr, &in.n, sizeof(uint32_t));
|
|
||||||
}
|
|
||||||
void
|
|
||||||
inAddr::fromH32(huint32_t in)
|
|
||||||
{
|
|
||||||
this->fromN32(xhtonl(in));
|
|
||||||
}
|
|
||||||
|
|
||||||
nuint32_t
|
|
||||||
inAddr::toN32()
|
|
||||||
{
|
|
||||||
nuint32_t result;
|
|
||||||
result.n = 0; // return 0 for IPv6
|
|
||||||
if(this->isIPv4Mode())
|
|
||||||
{
|
|
||||||
memcpy(&result.n, &this->_addr, sizeof(uint32_t));
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
huint32_t
|
|
||||||
inAddr::toH32()
|
|
||||||
{
|
|
||||||
return xntohl(this->toN32());
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// IPv6 specific functions
|
|
||||||
//
|
|
||||||
|
|
||||||
} // namespace llarp
|
|
@ -1,81 +0,0 @@
|
|||||||
#ifndef LLARP_NET_INADDR_HPP
|
|
||||||
#define LLARP_NET_INADDR_HPP
|
|
||||||
|
|
||||||
#include <net/net.hpp>
|
|
||||||
|
|
||||||
namespace llarp
|
|
||||||
{
|
|
||||||
/// IPv4 or IPv6 holder
|
|
||||||
struct inAddr
|
|
||||||
{
|
|
||||||
// unsigned char s6_addr[16];
|
|
||||||
struct in6_addr _addr; // store in network order
|
|
||||||
|
|
||||||
/// zero out
|
|
||||||
void
|
|
||||||
reset();
|
|
||||||
|
|
||||||
/// from char*
|
|
||||||
bool
|
|
||||||
from_char_array(const char* str);
|
|
||||||
|
|
||||||
/// convert from SIIT to IPv4 Mode
|
|
||||||
void
|
|
||||||
fromSIIT();
|
|
||||||
|
|
||||||
/// convert from IPv4 Mode to SIIT
|
|
||||||
void
|
|
||||||
toSIIT();
|
|
||||||
|
|
||||||
/// not IPv4 Mode (an actual IPv6 address)
|
|
||||||
inline bool
|
|
||||||
isIPv6Mode() const;
|
|
||||||
|
|
||||||
/// IPv4 mode (not SIIT)
|
|
||||||
bool
|
|
||||||
isIPv4Mode() const;
|
|
||||||
|
|
||||||
/// clear out bytes 5-15 (Last 12 bytes)
|
|
||||||
/// This is how inet_pton works with IPv4 addresses
|
|
||||||
void
|
|
||||||
setIPv4Mode();
|
|
||||||
|
|
||||||
/// make debugging/testing easier
|
|
||||||
void
|
|
||||||
hexDebug();
|
|
||||||
|
|
||||||
//
|
|
||||||
// IPv4 specific functions
|
|
||||||
//
|
|
||||||
|
|
||||||
/// make ipv4 in_addr struct
|
|
||||||
in_addr
|
|
||||||
toIAddr();
|
|
||||||
|
|
||||||
/// set an IPv4 addr
|
|
||||||
void
|
|
||||||
from4int(const uint8_t one, const uint8_t two, const uint8_t three,
|
|
||||||
const uint8_t four);
|
|
||||||
|
|
||||||
/// set from an net-order uint32_t
|
|
||||||
void
|
|
||||||
fromN32(nuint32_t in);
|
|
||||||
/// set from an host-order uint32_t
|
|
||||||
void
|
|
||||||
fromH32(huint32_t in);
|
|
||||||
/// output as net-order uint32_t
|
|
||||||
nuint32_t
|
|
||||||
toN32();
|
|
||||||
/// output as host-order uint32_t
|
|
||||||
huint32_t
|
|
||||||
toH32();
|
|
||||||
|
|
||||||
//
|
|
||||||
// IPv6 specific functions
|
|
||||||
//
|
|
||||||
// coming soon
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace llarp
|
|
||||||
|
|
||||||
#endif
|
|
@ -0,0 +1,35 @@
|
|||||||
|
#include <util/lokinet_init.h>
|
||||||
|
#if defined(_WIN32)
|
||||||
|
#include <windows.h>
|
||||||
|
#include <winuser.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
Lokinet_INIT(void)
|
||||||
|
{
|
||||||
|
static const char *(CDECL * pwine_get_version)(void);
|
||||||
|
HMODULE hntdll = GetModuleHandle("ntdll.dll");
|
||||||
|
if(hntdll)
|
||||||
|
{
|
||||||
|
pwine_get_version = (void *)GetProcAddress(hntdll, "wine_get_version");
|
||||||
|
if(pwine_get_version)
|
||||||
|
{
|
||||||
|
static const char *text =
|
||||||
|
"dont run lokinet in wine like wtf man we support linux and pretty "
|
||||||
|
"much every flavour of BSD, and even some flavours of unix system "
|
||||||
|
"5.x.\nThis Program Will now crash lmao.";
|
||||||
|
static const char *title = "srsly fam wtf";
|
||||||
|
MessageBoxA(NULL, text, title, MB_ICONHAND);
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
int
|
||||||
|
Lokinet_INIT(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,24 @@
|
|||||||
|
#ifndef LLARP_UTIL_LOKINET_INIT_H
|
||||||
|
#define LLARP_UTIL_LOKINET_INIT_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef Lokinet_INIT
|
||||||
|
#if defined(_WIN32)
|
||||||
|
#define Lokinet_INIT \
|
||||||
|
DieInCaseSomehowThisGetsRunInWineButLikeWTFThatShouldNotHappenButJustInCaseHandleItWithAPopupOrSomeShit
|
||||||
|
#else
|
||||||
|
#define Lokinet_INIT _lokinet_non_shit_platform_INIT
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
Lokinet_INIT(void);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
@ -1,106 +0,0 @@
|
|||||||
#include <gtest/gtest.h>
|
|
||||||
|
|
||||||
#include <net/net_inaddr.hpp>
|
|
||||||
|
|
||||||
struct TestNetInAddr : public ::testing::Test
|
|
||||||
{
|
|
||||||
};
|
|
||||||
|
|
||||||
TEST_F(TestNetInAddr, TestinAddrFrom4Int)
|
|
||||||
{
|
|
||||||
llarp::inAddr test;
|
|
||||||
test.from4int(127, 0, 0, 1);
|
|
||||||
char str[INET6_ADDRSTRLEN];
|
|
||||||
if(inet_ntop(AF_INET, &test._addr, str, INET6_ADDRSTRLEN) == NULL)
|
|
||||||
{
|
|
||||||
ASSERT_TRUE(false);
|
|
||||||
}
|
|
||||||
ASSERT_TRUE(strcmp("127.0.0.1", str) == 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_F(TestNetInAddr, TestinAddrFromStr)
|
|
||||||
{
|
|
||||||
llarp::inAddr test;
|
|
||||||
test.from_char_array("127.0.0.1");
|
|
||||||
char str[INET6_ADDRSTRLEN];
|
|
||||||
if(inet_ntop(AF_INET, &test._addr, str, INET6_ADDRSTRLEN) == NULL)
|
|
||||||
{
|
|
||||||
ASSERT_TRUE(false);
|
|
||||||
}
|
|
||||||
ASSERT_TRUE(strcmp("127.0.0.1", str) == 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_F(TestNetInAddr, TestinAddrReset)
|
|
||||||
{
|
|
||||||
llarp::inAddr test;
|
|
||||||
test.from_char_array("127.0.0.1");
|
|
||||||
test.reset();
|
|
||||||
char str[INET6_ADDRSTRLEN];
|
|
||||||
if(inet_ntop(AF_INET, &test._addr, str, INET6_ADDRSTRLEN) == NULL)
|
|
||||||
{
|
|
||||||
ASSERT_TRUE(false);
|
|
||||||
}
|
|
||||||
ASSERT_TRUE(strcmp("0.0.0.0", str) == 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_F(TestNetInAddr, TestinAddrModeSet)
|
|
||||||
{
|
|
||||||
llarp::inAddr test;
|
|
||||||
test.from_char_array("127.0.0.1");
|
|
||||||
// test.hexDebug();
|
|
||||||
ASSERT_TRUE(test.isIPv4Mode());
|
|
||||||
|
|
||||||
// corrupt it
|
|
||||||
test._addr.s6_addr[10] = 0xfe;
|
|
||||||
test._addr.s6_addr[11] = 0xfe;
|
|
||||||
|
|
||||||
test.setIPv4Mode();
|
|
||||||
// test.hexDebug();
|
|
||||||
ASSERT_TRUE(test.isIPv4Mode());
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_F(TestNetInAddr, TestinAddrSIIT)
|
|
||||||
{
|
|
||||||
llarp::inAddr test;
|
|
||||||
test.from_char_array("127.0.0.1");
|
|
||||||
|
|
||||||
test.toSIIT();
|
|
||||||
// test.hexDebug();
|
|
||||||
ASSERT_TRUE(llarp::ipv6_is_siit(test._addr));
|
|
||||||
|
|
||||||
test.fromSIIT();
|
|
||||||
// test.hexDebug();
|
|
||||||
ASSERT_TRUE(!llarp::ipv6_is_siit(test._addr));
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_F(TestNetInAddr, TestinAddrN32)
|
|
||||||
{
|
|
||||||
llarp::inAddr test;
|
|
||||||
test.from_char_array("127.0.0.1");
|
|
||||||
llarp::nuint32_t netOrder = test.toN32();
|
|
||||||
llarp::inAddr test2;
|
|
||||||
test2.fromN32(netOrder);
|
|
||||||
char str[INET6_ADDRSTRLEN];
|
|
||||||
if(inet_ntop(AF_INET, &test2._addr, str, INET6_ADDRSTRLEN) == NULL)
|
|
||||||
{
|
|
||||||
ASSERT_TRUE(false);
|
|
||||||
}
|
|
||||||
// printf("[%s]\n", str);
|
|
||||||
ASSERT_TRUE(strcmp("127.0.0.1", str) == 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_F(TestNetInAddr, TestinAddrH32)
|
|
||||||
{
|
|
||||||
llarp::inAddr test;
|
|
||||||
test.from_char_array("127.0.0.1");
|
|
||||||
llarp::huint32_t netOrder = test.toH32();
|
|
||||||
llarp::inAddr test2;
|
|
||||||
test2.fromH32(netOrder);
|
|
||||||
char str[INET6_ADDRSTRLEN];
|
|
||||||
if(inet_ntop(AF_INET, &test2._addr, str, INET6_ADDRSTRLEN) == NULL)
|
|
||||||
{
|
|
||||||
ASSERT_TRUE(false);
|
|
||||||
}
|
|
||||||
// printf("[%s]\n", str);
|
|
||||||
ASSERT_TRUE(strcmp("127.0.0.1", str) == 0);
|
|
||||||
}
|
|
@ -1,276 +1,279 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<root>
|
<root>
|
||||||
<!--
|
<!--
|
||||||
Microsoft ResX Schema
|
Microsoft ResX Schema
|
||||||
|
|
||||||
Version 2.0
|
Version 2.0
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
The primary goals of this format is to allow a simple XML format
|
||||||
that is mostly human readable. The generation and parsing of the
|
that is mostly human readable. The generation and parsing of the
|
||||||
various data types are done through the TypeConverter classes
|
various data types are done through the TypeConverter classes
|
||||||
associated with the data types.
|
associated with the data types.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
... ado.net/XML headers & schema ...
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
<resheader name="version">2.0</resheader>
|
<resheader name="version">2.0</resheader>
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
<comment>This is a comment</comment>
|
<comment>This is a comment</comment>
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
There are any number of "resheader" rows that contain simple
|
||||||
name/value pairs.
|
name/value pairs.
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
Each data row contains a name, and value. The row also contains a
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
text/value conversion through the TypeConverter architecture.
|
text/value conversion through the TypeConverter architecture.
|
||||||
Classes that don't support this are serialized and stored with the
|
Classes that don't support this are serialized and stored with the
|
||||||
mimetype set.
|
mimetype set.
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
The mimetype is used for serialized objects, and tells the
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
read any of the formats listed below.
|
read any of the formats listed below.
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
value : The object must be serialized with
|
value : The object must be serialized with
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
value : The object must be serialized with
|
value : The object must be serialized with
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
value : The object must be serialized into a byte array
|
value : The object must be serialized into a byte array
|
||||||
: using a System.ComponentModel.TypeConverter
|
: using a System.ComponentModel.TypeConverter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
-->
|
-->
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
<xsd: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:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:choice maxOccurs="unbounded">
|
<xsd:choice maxOccurs="unbounded">
|
||||||
<xsd:element name="metadata">
|
<xsd:element name="metadata">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
<xsd:attribute ref="xml:space" />
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="assembly">
|
<xsd:element name="assembly">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="data">
|
<xsd:element name="data">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
<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:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
<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="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
<xsd:attribute ref="xml:space" />
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="resheader">
|
<xsd:element name="resheader">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:choice>
|
</xsd:choice>
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:schema>
|
</xsd:schema>
|
||||||
<resheader name="resmimetype">
|
<resheader name="resmimetype">
|
||||||
<value>text/microsoft-resx</value>
|
<value>text/microsoft-resx</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="version">
|
<resheader name="version">
|
||||||
<value>2.0</value>
|
<value>2.0</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="reader">
|
<resheader name="reader">
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>13, 13</value>
|
<value>13, 13</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>196, 13</value>
|
<value>196, 13</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label1.Text" xml:space="preserve">
|
<data name="label1.Text" xml:space="preserve">
|
||||||
<value>Enter a URI to a node to bootstrap from:</value>
|
<value>Enter a URI to a node to bootstrap from:</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label1.Name" xml:space="preserve">
|
<data name=">>label1.Name" xml:space="preserve">
|
||||||
<value>label1</value>
|
<value>label1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label1.Type" xml:space="preserve">
|
<data name=">>label1.Type" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label1.Parent" xml:space="preserve">
|
<data name=">>label1.Parent" xml:space="preserve">
|
||||||
<value>$this</value>
|
<value>$this</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
<data name=">>label1.ZOrder" xml:space="preserve">
|
||||||
<value>4</value>
|
<value>4</value>
|
||||||
</data>
|
</data>
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
<data name="uriBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
<data name="uriBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||||
<value>Left, Right</value>
|
<value>Left, Right</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="uriBox.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="uriBox.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>12, 29</value>
|
<value>12, 29</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="uriBox.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="uriBox.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>520, 20</value>
|
<value>520, 20</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="uriBox.TabIndex" type="System.Int32, mscorlib">
|
<data name="uriBox.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>1</value>
|
<value>1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>uriBox.Name" xml:space="preserve">
|
<data name="uriBox.Text" xml:space="preserve">
|
||||||
<value>uriBox</value>
|
<value>https://seed.lokinet.org/bootstrap.signed</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>uriBox.Type" xml:space="preserve">
|
<data name=">>uriBox.Name" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>uriBox</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>uriBox.Parent" xml:space="preserve">
|
<data name=">>uriBox.Type" xml:space="preserve">
|
||||||
<value>$this</value>
|
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>uriBox.ZOrder" xml:space="preserve">
|
<data name=">>uriBox.Parent" xml:space="preserve">
|
||||||
<value>3</value>
|
<value>$this</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
<data name=">>uriBox.ZOrder" xml:space="preserve">
|
||||||
<value>True</value>
|
<value>3</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>12, 52</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>347, 13</value>
|
<value>12, 52</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>2</value>
|
<value>347, 13</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="label2.Text" xml:space="preserve">
|
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>This file is automatically saved as $APPDATA\.lokinet\bootstrap.signed.</value>
|
<value>2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label2.Name" xml:space="preserve">
|
<data name="label2.Text" xml:space="preserve">
|
||||||
<value>label2</value>
|
<value>This file is automatically saved as $APPDATA\.lokinet\bootstrap.signed.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label2.Type" xml:space="preserve">
|
<data name=">>label2.Name" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>label2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label2.Parent" xml:space="preserve">
|
<data name=">>label2.Type" xml:space="preserve">
|
||||||
<value>$this</value>
|
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>label2.ZOrder" xml:space="preserve">
|
<data name=">>label2.Parent" xml:space="preserve">
|
||||||
<value>2</value>
|
<value>$this</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnDownload.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
<data name=">>label2.ZOrder" xml:space="preserve">
|
||||||
<value>Bottom</value>
|
<value>2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnDownload.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="btnDownload.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||||
<value>196, 75</value>
|
<value>Bottom</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnDownload.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="btnDownload.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>75, 23</value>
|
<value>196, 75</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnDownload.TabIndex" type="System.Int32, mscorlib">
|
<data name="btnDownload.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>3</value>
|
<value>75, 23</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnDownload.Text" xml:space="preserve">
|
<data name="btnDownload.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>OK</value>
|
<value>3</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnDownload.Name" xml:space="preserve">
|
<data name="btnDownload.Text" xml:space="preserve">
|
||||||
<value>btnDownload</value>
|
<value>OK</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnDownload.Type" xml:space="preserve">
|
<data name=">>btnDownload.Name" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>btnDownload</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnDownload.Parent" xml:space="preserve">
|
<data name=">>btnDownload.Type" xml:space="preserve">
|
||||||
<value>$this</value>
|
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnDownload.ZOrder" xml:space="preserve">
|
<data name=">>btnDownload.Parent" xml:space="preserve">
|
||||||
<value>1</value>
|
<value>$this</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnCancel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
<data name=">>btnDownload.ZOrder" xml:space="preserve">
|
||||||
<value>Bottom</value>
|
<value>1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnCancel.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="btnCancel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||||
<value>278, 75</value>
|
<value>Bottom</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnCancel.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="btnCancel.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>75, 23</value>
|
<value>278, 75</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnCancel.TabIndex" type="System.Int32, mscorlib">
|
<data name="btnCancel.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>4</value>
|
<value>75, 23</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnCancel.Text" xml:space="preserve">
|
<data name="btnCancel.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>Cancel</value>
|
<value>4</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnCancel.Name" xml:space="preserve">
|
<data name="btnCancel.Text" xml:space="preserve">
|
||||||
<value>btnCancel</value>
|
<value>Cancel</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnCancel.Type" xml:space="preserve">
|
<data name=">>btnCancel.Name" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>btnCancel</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnCancel.Parent" xml:space="preserve">
|
<data name=">>btnCancel.Type" xml:space="preserve">
|
||||||
<value>$this</value>
|
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>btnCancel.ZOrder" xml:space="preserve">
|
<data name=">>btnCancel.Parent" xml:space="preserve">
|
||||||
<value>0</value>
|
<value>$this</value>
|
||||||
</data>
|
</data>
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<data name=">>btnCancel.ZOrder" xml:space="preserve">
|
||||||
<value>True</value>
|
<value>0</value>
|
||||||
</metadata>
|
</data>
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>6, 13</value>
|
<value>True</value>
|
||||||
</data>
|
</metadata>
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||||
<value>548, 111</value>
|
<value>6, 13</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
|
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>CenterParent</value>
|
<value>548, 111</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.Text" xml:space="preserve">
|
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
|
||||||
<value>bootstrap from web...</value>
|
<value>CenterParent</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
<data name="$this.Text" xml:space="preserve">
|
||||||
<value>bootstrap</value>
|
<value>bootstrap from web...</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
<data name=">>$this.Name" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>dlgBootstrap</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name=">>$this.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
Loading…
Reference in New Issue