--- /dev/null
+ .gitignore | 71 +-
+ Freeswitch.2008.sln | 5902 +++++++--------
+ Freeswitch.2010.sln | 7876 ++++++++++----------
+ configure.in | 33 +-
+ libs/.gitignore | 8 +-
+ .../win32/apr-util/libaprutil.2010.vcxproj.filters | 609 +-
+ libs/xmlrpc-c/.cvsignore | 18 -
+ libs/xmlrpc-c/.update | 1 -
+ libs/xmlrpc-c/GNUmakefile | 53 +-
+ libs/xmlrpc-c/Makefile.common | 272 -
+ libs/xmlrpc-c/Makefile.config.in | 79 -
+ libs/xmlrpc-c/Makefile.srcdir.in | 1 -
+ libs/xmlrpc-c/Makefile.version | 11 -
+ libs/xmlrpc-c/Windows/CleanWin32.bat | 73 +-
+ libs/xmlrpc-c/Windows/ReadMeWin32.txt | 130 +-
+ libs/xmlrpc-c/Windows/abyss.2008.vcproj | 1298 ----
+ libs/xmlrpc-c/Windows/abyss.2010.vcxproj | 437 --
+ libs/xmlrpc-c/Windows/abyss.2010.vcxproj.filters | 131 -
+ libs/xmlrpc-c/Windows/cpptest.dsp | 249 +-
+ libs/xmlrpc-c/Windows/gennmtab.2008.vcproj | 242 -
+ libs/xmlrpc-c/Windows/mkvers.bat | 106 +-
+ libs/xmlrpc-c/Windows/query_meerkat.dsp | 100 -
+ libs/xmlrpc-c/Windows/rpctest.dsp | 428 +-
+ libs/xmlrpc-c/Windows/transport_config.h | 13 -
+ libs/xmlrpc-c/Windows/win32_config.h | 80 +-
+ libs/xmlrpc-c/Windows/xmlparse.2008.vcproj | 387 -
+ libs/xmlrpc-c/Windows/xmlparse.2010.vcxproj | 198 -
+ libs/xmlrpc-c/Windows/xmlrpc-c/config.h | 38 -
+ libs/xmlrpc-c/Windows/xmlrpc.2008.vcproj | 2042 -----
+ libs/xmlrpc-c/Windows/xmlrpc.2010.vcxproj | 620 --
+ libs/xmlrpc-c/Windows/xmlrpc.2010.vcxproj.filters | 287 -
+ libs/xmlrpc-c/Windows/xmlrpc.dsp | 950 +--
+ libs/xmlrpc-c/Windows/xmlrpc.dsw | 514 +-
+ libs/xmlrpc-c/Windows/xmlrpc_config.h | 158 -
+ libs/xmlrpc-c/Windows/xmlrpc_win32_config.h | 69 +-
+ libs/xmlrpc-c/Windows/xmlrpccpp.dsp | 361 +-
+ libs/xmlrpc-c/Windows/xmltok.2008.vcproj | 455 --
+ libs/xmlrpc-c/Windows/xmltok.2010.vcxproj | 213 -
+ libs/xmlrpc-c/Windows/xmltok.dsp | 276 +-
+ libs/xmlrpc-c/common.mk | 130 +-
+ libs/xmlrpc-c/conf/abyss_root/conf/abyss.conf | 56 -
+ libs/xmlrpc-c/conf/abyss_root/conf/mime.types | 276 -
+ libs/xmlrpc-c/conf/abyss_root/htdocs/index.htm | 21 -
+ libs/xmlrpc-c/config.mk.in | 97 +-
+ libs/xmlrpc-c/configure.gnu | 4 -
+ libs/xmlrpc-c/configure.in | 165 +-
+ libs/xmlrpc-c/debian/README.Debian | 7 -
+ libs/xmlrpc-c/debian/changelog | 22 -
+ libs/xmlrpc-c/debian/control | 30 -
+ libs/xmlrpc-c/debian/copyright | 128 -
+ libs/xmlrpc-c/debian/postinst | 47 -
+ libs/xmlrpc-c/debian/postrm | 39 -
+ libs/xmlrpc-c/debian/rules | 97 -
+ libs/xmlrpc-c/debian/xmlrpc-c-apps.files | 4 -
+ libs/xmlrpc-c/debian/xmlrpc-c-dev.files | 10 -
+ libs/xmlrpc-c/debian/xmlrpc-c0.docs | 6 -
+ libs/xmlrpc-c/debian/xmlrpc-c0.examples | 3 -
+ libs/xmlrpc-c/debian/xmlrpc-c0.files | 2 -
+ libs/xmlrpc-c/dll-common.make | 22 -
+ libs/xmlrpc-c/doc/INSTALL | 44 +-
+ libs/xmlrpc-c/dylib-common.make | 37 -
+ libs/xmlrpc-c/examples/.cvsignore | 11 -
+ libs/xmlrpc-c/examples/Makefile | 57 +-
+ libs/xmlrpc-c/examples/README | 15 +-
+ libs/xmlrpc-c/examples/auth_client.c | 2 +-
+ libs/xmlrpc-c/examples/cpp/.cvsignore | 4 -
+ libs/xmlrpc-c/examples/cpp/Makefile | 58 +-
+ libs/xmlrpc-c/examples/cpp/meerkat-app-list.cpp | 108 -
+ libs/xmlrpc-c/examples/cpp/pstream_client.cpp | 2 +-
+ .../xmlrpc-c/examples/cpp/pstream_inetd_server.cpp | 9 +-
+ libs/xmlrpc-c/examples/cpp/xmlrpc_inetd_server.cpp | 25 +-
+ .../examples/cpp/xmlrpc_sample_add_server.cpp | 7 +-
+ libs/xmlrpc-c/examples/gen_sample_add_xml.c | 2 +-
+ libs/xmlrpc-c/examples/interrupted_client.c | 3 +-
+ libs/xmlrpc-c/examples/interrupted_server.c | 17 +-
+ libs/xmlrpc-c/examples/query-meerkat.c | 156 -
+ libs/xmlrpc-c/examples/synch_client.c | 4 +-
+ libs/xmlrpc-c/examples/xmlrpc_asynch_client.c | 6 +-
+ libs/xmlrpc-c/examples/xmlrpc_inetd_server.c | 15 +-
+ libs/xmlrpc-c/examples/xmlrpc_loop_server.c | 15 +-
+ libs/xmlrpc-c/examples/xmlrpc_sample_add_client.c | 21 +-
+ libs/xmlrpc-c/examples/xmlrpc_sample_add_server.c | 33 +-
+ .../examples/xmlrpc_sample_add_server_cgi.c | 22 +-
+ libs/xmlrpc-c/examples/xmlrpc_server_validatee.c | 18 +-
+ libs/xmlrpc-c/examples/xmlrpc_socket_server.c | 21 +-
+ libs/xmlrpc-c/include/Makefile | 18 +-
+ libs/xmlrpc-c/include/xmlrpc-c/abyss.h | 144 +-
+ libs/xmlrpc-c/include/xmlrpc-c/abyss_winsock.h | 4 +-
+ libs/xmlrpc-c/include/xmlrpc-c/base.h | 282 +-
+ libs/xmlrpc-c/include/xmlrpc-c/base.hpp | 252 +-
+ libs/xmlrpc-c/include/xmlrpc-c/base64.hpp | 5 +-
+ libs/xmlrpc-c/include/xmlrpc-c/base_int.h | 40 +-
+ libs/xmlrpc-c/include/xmlrpc-c/c_util.h | 23 +-
+ libs/xmlrpc-c/include/xmlrpc-c/client.h | 141 +-
+ libs/xmlrpc-c/include/xmlrpc-c/client.hpp | 59 +-
+ libs/xmlrpc-c/include/xmlrpc-c/client_global.h | 17 +
+ libs/xmlrpc-c/include/xmlrpc-c/client_int.h | 29 +
+ libs/xmlrpc-c/include/xmlrpc-c/client_simple.hpp | 4 +-
+ .../xmlrpc-c/include/xmlrpc-c/client_transport.hpp | 128 +-
+ libs/xmlrpc-c/include/xmlrpc-c/config.h.in | 37 -
+ libs/xmlrpc-c/include/xmlrpc-c/girerr.hpp | 9 +-
+ libs/xmlrpc-c/include/xmlrpc-c/girmem.hpp | 10 +-
+ libs/xmlrpc-c/include/xmlrpc-c/inttypes.h | 3 +
+ libs/xmlrpc-c/include/xmlrpc-c/oldcppwrapper.hpp | 19 +-
+ libs/xmlrpc-c/include/xmlrpc-c/packetsocket.hpp | 64 +-
+ libs/xmlrpc-c/include/xmlrpc-c/registry.hpp | 90 +-
+ libs/xmlrpc-c/include/xmlrpc-c/select_int.h | 4 +-
+ libs/xmlrpc-c/include/xmlrpc-c/server.h | 42 +
+ libs/xmlrpc-c/include/xmlrpc-c/server_abyss.h | 81 +-
+ libs/xmlrpc-c/include/xmlrpc-c/server_abyss.hpp | 110 +-
+ libs/xmlrpc-c/include/xmlrpc-c/server_cgi.h | 11 +-
+ libs/xmlrpc-c/include/xmlrpc-c/server_pstream.hpp | 139 +-
+ libs/xmlrpc-c/include/xmlrpc-c/server_w32httpsys.h | 4 +-
+ libs/xmlrpc-c/include/xmlrpc-c/sleep_int.h | 11 +
+ libs/xmlrpc-c/include/xmlrpc-c/string_int.h | 53 +-
+ libs/xmlrpc-c/include/xmlrpc-c/time_int.h | 4 +
+ libs/xmlrpc-c/include/xmlrpc-c/timeout.hpp | 7 +-
+ libs/xmlrpc-c/include/xmlrpc-c/transport.h | 5 +
+ libs/xmlrpc-c/include/xmlrpc-c/transport_int.h | 42 -
+ libs/xmlrpc-c/include/xmlrpc-c/util.h | 36 +-
+ libs/xmlrpc-c/include/xmlrpc-c/util_int.h | 13 +-
+ libs/xmlrpc-c/include/xmlrpc-c/xml.hpp | 24 +-
+ libs/xmlrpc-c/irix-common.make | 31 -
+ libs/xmlrpc-c/lib/abyss/change.log | 34 -
+ libs/xmlrpc-c/lib/abyss/htdocs/index.htm | 21 -
+ libs/xmlrpc-c/lib/abyss/patch_notes.txt | 114 -
+ libs/xmlrpc-c/lib/abyss/readme.txt | 160 -
+ libs/xmlrpc-c/lib/abyss/src/Abyss.dsp | 136 -
+ libs/xmlrpc-c/lib/abyss/src/Abyss.dsw | 29 -
+ libs/xmlrpc-c/lib/abyss/src/Makefile | 28 +-
+ libs/xmlrpc-c/lib/abyss/src/channel.c | 3 +-
+ libs/xmlrpc-c/lib/abyss/src/channel.h | 2 +-
+ libs/xmlrpc-c/lib/abyss/src/chanswitch.c | 3 +-
+ libs/xmlrpc-c/lib/abyss/src/chanswitch.h | 2 +-
+ libs/xmlrpc-c/lib/abyss/src/conf.c | 7 +-
+ libs/xmlrpc-c/lib/abyss/src/conn.c | 302 +-
+ libs/xmlrpc-c/lib/abyss/src/conn.h | 19 +-
+ libs/xmlrpc-c/lib/abyss/src/data.c | 22 +-
+ libs/xmlrpc-c/lib/abyss/src/file.c | 1 +
+ libs/xmlrpc-c/lib/abyss/src/handler.c | 49 +-
+ libs/xmlrpc-c/lib/abyss/src/handler.h | 2 +
+ libs/xmlrpc-c/lib/abyss/src/http.c | 407 +-
+ libs/xmlrpc-c/lib/abyss/src/http.h | 8 +-
+ libs/xmlrpc-c/lib/abyss/src/main.c | 8 +-
+ libs/xmlrpc-c/lib/abyss/src/response.c | 275 +-
+ libs/xmlrpc-c/lib/abyss/src/server.c | 338 +-
+ libs/xmlrpc-c/lib/abyss/src/server.h | 8 +-
+ libs/xmlrpc-c/lib/abyss/src/session.c | 55 +-
+ libs/xmlrpc-c/lib/abyss/src/session.h | 24 +-
+ libs/xmlrpc-c/lib/abyss/src/socket.c | 3 +-
+ libs/xmlrpc-c/lib/abyss/src/socket.h | 4 +-
+ libs/xmlrpc-c/lib/abyss/src/socket_openssl.c | 2 +
+ libs/xmlrpc-c/lib/abyss/src/socket_unix.c | 175 +-
+ libs/xmlrpc-c/lib/abyss/src/socket_win.c | 319 +-
+ libs/xmlrpc-c/lib/abyss/src/thread.c | 228 -
+ libs/xmlrpc-c/lib/abyss/src/thread.h | 4 +-
+ libs/xmlrpc-c/lib/abyss/src/thread_fork.c | 11 +-
+ libs/xmlrpc-c/lib/abyss/src/thread_pthread.c | 72 +-
+ libs/xmlrpc-c/lib/abyss/src/thread_windows.c | 27 +-
+ libs/xmlrpc-c/lib/abyss/version.txt | 1 -
+ libs/xmlrpc-c/lib/curl_transport/Makefile | 20 +-
+ .../lib/curl_transport/xmlrpc_curl_transport.c | 1838 ++---
+ .../lib/curl_transport/xmlrpc_curl_transport.h | 8 -
+ libs/xmlrpc-c/lib/expat/.cvsignore | 1 -
+ libs/xmlrpc-c/lib/expat/Makefile.in | 314 -
+ libs/xmlrpc-c/lib/expat/expat.dsw | 74 -
+ libs/xmlrpc-c/lib/expat/gennmtab/.cvsignore | 1 -
+ libs/xmlrpc-c/lib/expat/gennmtab/Makefile | 8 +-
+ libs/xmlrpc-c/lib/expat/gennmtab/gennmtab.dsp | 110 -
+ libs/xmlrpc-c/lib/expat/sample/.cvsignore | 1 -
+ libs/xmlrpc-c/lib/expat/sample/Makefile.in | 208 -
+ libs/xmlrpc-c/lib/expat/sample/build.bat | 4 -
+ libs/xmlrpc-c/lib/expat/sample/elements.c | 46 -
+ libs/xmlrpc-c/lib/expat/xmlparse/.cvsignore | 1 -
+ libs/xmlrpc-c/lib/expat/xmlparse/Makefile.in | 344 -
+ libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.c | 207 +-
+ libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.dsp | 279 -
+ libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.h | 94 +-
+ libs/xmlrpc-c/lib/expat/xmltok/.cvsignore | 1 -
+ libs/xmlrpc-c/lib/expat/xmltok/Makefile | 21 +-
+ libs/xmlrpc-c/lib/expat/xmltok/nametab.h | 300 +-
+ libs/xmlrpc-c/lib/expat/xmltok/xmlrole.h | 9 +-
+ libs/xmlrpc-c/lib/expat/xmltok/xmltok.c | 62 +-
+ libs/xmlrpc-c/lib/expat/xmltok/xmltok.dsp | 259 -
+ libs/xmlrpc-c/lib/expat/xmltok/xmltok.h | 41 +-
+ libs/xmlrpc-c/lib/expat/xmltok/xmltok_impl.c | 391 +-
+ libs/xmlrpc-c/lib/expat/xmlwf/.cvsignore | 1 -
+ libs/xmlrpc-c/lib/expat/xmlwf/xmlfile.c | 2 +-
+ libs/xmlrpc-c/lib/libutil/Makefile | 18 +-
+ libs/xmlrpc-c/lib/libutil/asprintf.c | 135 +-
+ libs/xmlrpc-c/lib/libutil/error.c | 4 +-
+ libs/xmlrpc-c/lib/libutil/make_printable.c | 2 +-
+ libs/xmlrpc-c/lib/libutil/memblock.c | 47 +-
+ libs/xmlrpc-c/lib/libutil/select.c | 6 +-
+ libs/xmlrpc-c/lib/libutil/utf8.c | 370 +-
+ libs/xmlrpc-c/lib/libwww_transport/Makefile | 15 +-
+ .../lib/libwww_transport/xmlrpc_libwww_transport.c | 1 +
+ .../lib/libwww_transport/xmlrpc_libwww_transport.h | 8 -
+ libs/xmlrpc-c/lib/util/Makefile | 15 +-
+ libs/xmlrpc-c/lib/util/casprintf.c | 86 +-
+ libs/xmlrpc-c/lib/util/cmdline_parser.c | 2 +
+ libs/xmlrpc-c/lib/util/include/int.h | 16 +-
+ libs/xmlrpc-c/lib/util/include/mallocvar.h | 4 +-
+ libs/xmlrpc-c/lib/util/include/pthreadx.h | 18 +-
+ libs/xmlrpc-c/lib/util/include/sstring.h | 15 -
+ libs/xmlrpc-c/lib/util/include/stdargx.h | 2 +-
+ libs/xmlrpc-c/lib/util/pthreadx_win32.c | 54 +-
+ libs/xmlrpc-c/lib/util/string_parser.c | 10 +-
+ libs/xmlrpc-c/lib/util/stripcaseeq.c | 1 -
+ libs/xmlrpc-c/lib/wininet_transport/Makefile | 13 +-
+ .../wininet_transport/xmlrpc_wininet_transport.c | 19 +-
+ .../wininet_transport/xmlrpc_wininet_transport.h | 8 -
+ libs/xmlrpc-c/ltconfig | 3078 --------
+ libs/xmlrpc-c/src/.cvsignore | 6 -
+ libs/xmlrpc-c/src/Makefile | 64 +-
+ libs/xmlrpc-c/src/cpp/.cvsignore | 1 -
+ libs/xmlrpc-c/src/cpp/Makefile | 179 +-
+ libs/xmlrpc-c/src/cpp/base64.cpp | 2 +-
+ libs/xmlrpc-c/src/cpp/client.cpp | 47 +-
+ libs/xmlrpc-c/src/cpp/cpptest.cpp | 1187 ---
+ libs/xmlrpc-c/src/cpp/curl.cpp | 147 +-
+ libs/xmlrpc-c/src/cpp/env_wrap.hpp | 3 +-
+ libs/xmlrpc-c/src/cpp/libwww.cpp | 3 +-
+ libs/xmlrpc-c/src/cpp/packetsocket.cpp | 561 +-
+ libs/xmlrpc-c/src/cpp/pstream.cpp | 49 +-
+ libs/xmlrpc-c/src/cpp/registry.cpp | 170 +-
+ libs/xmlrpc-c/src/cpp/server_abyss.cpp | 571 +-
+ libs/xmlrpc-c/src/cpp/server_pstream.cpp | 265 +-
+ libs/xmlrpc-c/src/cpp/test/Makefile | 33 +-
+ libs/xmlrpc-c/src/cpp/test/registry.cpp | 270 +-
+ libs/xmlrpc-c/src/cpp/test/server_abyss.cpp | 61 +-
+ libs/xmlrpc-c/src/cpp/test/server_pstream.cpp | 777 +-
+ libs/xmlrpc-c/src/cpp/test/test.cpp | 403 +-
+ libs/xmlrpc-c/src/cpp/test/testclient.cpp | 81 +-
+ libs/xmlrpc-c/src/cpp/value.cpp | 232 +-
+ libs/xmlrpc-c/src/cpp/xml.cpp | 155 +-
+ libs/xmlrpc-c/src/double.c | 29 +-
+ libs/xmlrpc-c/src/method.c | 18 +-
+ libs/xmlrpc-c/src/method.h | 5 +
+ libs/xmlrpc-c/src/parse_value.c | 95 +-
+ libs/xmlrpc-c/src/registry.c | 73 +-
+ libs/xmlrpc-c/src/system_method.c | 172 +-
+ libs/xmlrpc-c/src/test/.cvsignore | 3 -
+ libs/xmlrpc-c/src/test/Makefile | 21 +-
+ libs/xmlrpc-c/src/test/abyss.c | 13 +-
+ libs/xmlrpc-c/src/test/cgi.c | 2 +-
+ libs/xmlrpc-c/src/test/cgitest1.c | 2 +-
+ libs/xmlrpc-c/src/test/client.c | 76 +-
+ libs/xmlrpc-c/src/test/method_registry.c | 201 +-
+ libs/xmlrpc-c/src/test/parse_xml.c | 62 +-
+ libs/xmlrpc-c/src/test/req_out_of_order.xml | 12 -
+ libs/xmlrpc-c/src/test/req_value_name.xml | 14 -
+ libs/xmlrpc-c/src/test/sample_add_call.xml | 8 -
+ libs/xmlrpc-c/src/test/serialize.c | 12 +-
+ libs/xmlrpc-c/src/test/serialize_value.c | 3 +-
+ libs/xmlrpc-c/src/test/server_abyss.c | 43 +-
+ libs/xmlrpc-c/src/test/test.c | 87 +-
+ libs/xmlrpc-c/src/test/test.h | 109 -
+ libs/xmlrpc-c/src/test/value.c | 258 +-
+ libs/xmlrpc-c/src/test/xml_data.h | 3 +
+ libs/xmlrpc-c/src/trace.c | 3 +-
+ libs/xmlrpc-c/src/version.c | 11 +
+ libs/xmlrpc-c/src/xmlrpc_array.c | 37 +-
+ libs/xmlrpc-c/src/xmlrpc_base64.c | 195 +-
+ libs/xmlrpc-c/src/xmlrpc_build.c | 26 +-
+ libs/xmlrpc-c/src/xmlrpc_builddecomp.c | 973 ---
+ libs/xmlrpc-c/src/xmlrpc_client.c | 403 +-
+ libs/xmlrpc-c/src/xmlrpc_client_global.c | 114 +-
+ libs/xmlrpc-c/src/xmlrpc_data.c | 37 +-
+ libs/xmlrpc-c/src/xmlrpc_datetime.c | 587 +-
+ libs/xmlrpc-c/src/xmlrpc_decompose.c | 7 +-
+ libs/xmlrpc-c/src/xmlrpc_expat.c | 32 +-
+ libs/xmlrpc-c/src/xmlrpc_libxml2.c | 15 +-
+ libs/xmlrpc-c/src/xmlrpc_parse.c | 161 +-
+ libs/xmlrpc-c/src/xmlrpc_registry.c | 830 ---
+ libs/xmlrpc-c/src/xmlrpc_serialize.c | 176 +-
+ libs/xmlrpc-c/src/xmlrpc_server_abyss.c | 672 +-
+ libs/xmlrpc-c/src/xmlrpc_server_cgi.c | 13 +-
+ libs/xmlrpc-c/src/xmlrpc_server_info.c | 7 +
+ libs/xmlrpc-c/src/xmlrpc_server_w32httpsys.c | 42 +-
+ libs/xmlrpc-c/src/xmlrpc_string.c | 34 +-
+ libs/xmlrpc-c/src/xmlrpc_struct.c | 114 +-
+ libs/xmlrpc-c/src/xmlrpc_strutil.c | 75 -
+ libs/xmlrpc-c/src/xmlrpc_support.c | 394 -
+ libs/xmlrpc-c/src/xmlrpc_transport.c | 143 -
+ libs/xmlrpc-c/src/xmlrpc_utf8.c | 376 -
+ libs/xmlrpc-c/tools/.cvsignore | 1 -
+ libs/xmlrpc-c/tools/Makefile | 13 +-
+ libs/xmlrpc-c/tools/Makefile.common | 47 -
+ libs/xmlrpc-c/tools/common.mk | 2 +-
+ libs/xmlrpc-c/tools/lib/Makefile | 8 +-
+ libs/xmlrpc-c/tools/lib/dumpvalue.c | 12 +-
+ libs/xmlrpc-c/tools/turbocharger/.cvsignore | 1 -
+ libs/xmlrpc-c/tools/xml-rpc-api2cpp/.cvsignore | 1 -
+ libs/xmlrpc-c/tools/xml-rpc-api2cpp/Makefile | 29 +-
+ libs/xmlrpc-c/tools/xml-rpc-api2cpp/README | 6 -
+ libs/xmlrpc-c/tools/xml-rpc-api2txt | 147 -
+ libs/xmlrpc-c/tools/xml-rpc-api2txt.1 | 47 -
+ libs/xmlrpc-c/tools/xmlrpc/.cvsignore | 1 -
+ libs/xmlrpc-c/tools/xmlrpc/Makefile | 8 +-
+ libs/xmlrpc-c/tools/xmlrpc/xmlrpc.c | 74 +-
+ libs/xmlrpc-c/tools/xmlrpc/xmlrpc.html | 6 +-
+ libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/Makefile | 10 +-
+ libs/xmlrpc-c/tools/xmlrpc_pstream/Makefile | 10 +-
+ .../tools/xmlrpc_pstream/xmlrpc_pstream.cpp | 7 +-
+ .../tools/xmlrpc_pstream/xmlrpc_pstream.html | 2 +-
+ libs/xmlrpc-c/tools/xmlrpc_transport/.cvsignore | 1 -
+ libs/xmlrpc-c/tools/xmlrpc_transport/Makefile | 17 +-
+ .../tools/xmlrpc_transport/xmlrpc_transport | 120 -
+ .../tools/xmlrpc_transport/xmlrpc_transport.c | 2 +-
+ libs/xmlrpc-c/transport_config.make | 39 -
+ libs/xmlrpc-c/unix-common.make | 79 -
+ libs/xmlrpc-c/version.h | 16 +-
+ libs/xmlrpc-c/xmlrpc-c-config.in | 180 -
+ libs/xmlrpc-c/xmlrpc-c-config.main | 24 +-
+ libs/xmlrpc-c/xmlrpc-c-config.test.in | 153 -
+ libs/xmlrpc-c/xmlrpc-c-config.test.main | 33 +-
+ libs/xmlrpc-c/xmlrpc_amconfig.h.in | 9 +-
+ libs/xmlrpc-c/xmlrpc_config.h.in | 76 +-
+ src/include/switch_event.h | 16 +-
+ src/include/switch_xml.h | 8 +-
+ src/mod/applications/mod_commands/mod_commands.c | 750 +-
+ src/mod/languages/mod_lua/mod_lua.cpp | 10 +-
+ src/mod/xml_int/mod_xml_rpc/Makefile | 27 +-
+ .../xml_int/mod_xml_rpc/mod_xml_rpc.2010.vcxproj | 320 +-
+ src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c | 467 +-
+ src/switch_loadable_module.c | 4 +-
+ src/switch_xml.c | 25 +-
+ 328 files changed, 20770 insertions(+), 34260 deletions(-)
+
+diff --git a/.gitignore b/.gitignore
+index 1039628..ffc7fb1 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -29,6 +29,7 @@
+ *.ilk
+ *.bsc
+ *.pch
++*.opensdf
+ *.tar
+ *.gz
+ *.tgz
+@@ -50,6 +51,7 @@ TAGS
+ *.unsuccessfulbuild
+ *.cache
+ *.lastbuildstate
++*.sdf
+
+ /w32/Library/lastversion
+ /w32/Library/tmpVersion.Bat
+@@ -81,9 +83,9 @@ TAGS
+ /tone2wav
+
+ /All/
+-/Debug/
++Debug/
+ /bin/
+-/Release/
++Release/
+ /ipch/
+ /*.log
+
+@@ -165,63 +167,18 @@ TAGS
+ /src/mod/say/mod_say_zh/Makefile
+
+ BuildLog.htm
+-/w32/Console/Debug/
+-/w32/Console/Release/
+-/w32/Library/Debug/
+-/w32/Library/Release/
+
+-Freeswitch.2010.sdf
++Win32/
++win32/
++!/libs/win32/
++*.suo
++*.sdf
++x64/
++ipch/
+
+-/Win32/
+-/x64/
+
+-src/mod/codecs/mod_celt/*/*/mod_celt.log
+-src/mod/endpoints/mod_skinny/*/*/mod_skinny_2010.log
+-src/mod/formats/mod_shout/*/*/mod_shout.log
++/libs/xmlrpc-c/tools/xml-rpc-api2txt
+
+ /w32/Setup/obj
+-/src/mod/asr_tts/mod_pocketsphinx/x64/Debug/mod_pocketsphinx_manifest.rc
+-/src/mod/endpoints/mod_h323/x64/Debug/mod_h323_manifest.rc
+-/src/mod/endpoints/mod_rtmp/Win32/Debug/mod_rtmp_2010.log
+-/src/mod/endpoints/mod_rtmp/Win32/Release/mod_rtmp_2010.log
+-/src/mod/endpoints/mod_rtmp/x64/Debug/mod_rtmp_2010.log
+-/src/mod/endpoints/mod_rtmp/x64/Debug/mod_rtmp_manifest.rc
+-/src/mod/endpoints/mod_rtmp/x64/Release/mod_rtmp_2010.log
+-/src/mod/endpoints/mod_skinny/x64/Debug/mod_skinny_manifest.rc
+-/src/mod/languages/mod_managed/x64/Debug_CLR/FREESWITCH.MANAGED.DLL.metagen
+-/src/mod/languages/mod_managed/x64/Debug_CLR/RSAENH.DLL.bi
+-/src/mod/languages/mod_managed/x64/Debug_CLR/TZRES.DLL.bi
+-/w32/Library/x64/Debug/FreeSwitch_manifest.rc
+-/src/mod/endpoints/mod_h323/Win32/Debug/mod_h323_manifest.rc
+-/src/mod/endpoints/mod_rtmp/Win32/Debug/mod_rtmp_manifest.rc
+-/src/mod/endpoints/mod_skinny/Win32/Debug/mod_skinny_manifest.rc
+-/src/mod/languages/mod_managed/Win32/Debug_CLR/FREESWITCH.MANAGED.DLL.metagen
+-/src/mod/languages/mod_managed/Win32/Debug_CLR/RSAENH.DLL.bi
+-/src/mod/languages/mod_managed/Win32/Debug_CLR/TZRES.DLL.bi
+-/w32/Library/Win32/Debug/FreeSwitch_manifest.rc
+-/src/mod/languages/mod_managed/Win32/Release_CLR/FREESWITCH.MANAGED.DLL.metagen
+-/src/mod/languages/mod_managed/Win32/Release_CLR/RSAENH.DLL.bi
+-/src/mod/languages/mod_managed/Win32/Release_CLR/TZRES.DLL.bi
+-/src/mod/languages/mod_managed/x64/Release_CLR/FREESWITCH.MANAGED.DLL.metagen
+-/src/mod/languages/mod_managed/x64/Release_CLR/RSAENH.DLL.bi
+-/src/mod/languages/mod_managed/x64/Release_CLR/TZRES.DLL.bi
+-libs/apr-util/a.out.dSYM/Contents/Info.plist
+-libs/apr-util/a.out.dSYM/Contents/Resources/DWARF/a.out
+-libs/apr/a.out.dSYM/Contents/Info.plist
+-libs/apr/a.out.dSYM/Contents/Resources/DWARF/a.out
+-libs/iksemel/a.out.dSYM/Contents/Info.plist
+-libs/iksemel/a.out.dSYM/Contents/Resources/DWARF/a.out
+-libs/ilbc/a.out.dSYM/Contents/Info.plist
+-libs/ilbc/a.out.dSYM/Contents/Resources/DWARF/a.out
+-libs/libedit/a.out.dSYM/Contents/Info.plist
+-libs/libedit/a.out.dSYM/Contents/Resources/DWARF/a.out
+-libs/pcre/a.out.dSYM/Contents/Info.plist
+-libs/pcre/a.out.dSYM/Contents/Resources/DWARF/a.out
+-libs/sqlite/lemon.dSYM/Contents/Info.plist
+-libs/sqlite/lemon.dSYM/Contents/Resources/DWARF/lemon
+-libs/sqlite/mkkeywordhash.dSYM/Contents/Info.plist
+-libs/sqlite/mkkeywordhash.dSYM/Contents/Resources/DWARF/mkkeywordhash
+-libs/sqlite/sqlite3.dSYM/Contents/Info.plist
+-libs/sqlite/sqlite3.dSYM/Contents/Resources/DWARF/sqlite3
+-libs/srtp/a.out.dSYM/Contents/Info.plist
+-libs/srtp/a.out.dSYM/Contents/Resources/DWARF/a.out
++*dSYM*
++/libs/xmlrpc-c/lib/expat/xmltok/nametab.h
+diff --git a/Freeswitch.2008.sln b/Freeswitch.2008.sln
+index 62b2459..c3e0c0f 100644
+--- a/Freeswitch.2008.sln
++++ b/Freeswitch.2008.sln
+@@ -1,2941 +1,2961 @@
+-\r
+-Microsoft Visual Studio Solution File, Format Version 10.00\r
+-# Visual Studio 2008\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Codecs", "Codecs", "{F881ADA2-2F1A-4046-9FEB-191D9422D781}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Endpoints", "Endpoints", "{9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Applications", "Applications", "{E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Dialplans", "Dialplans", "{C5F182F9-754A-4EC5-B50F-76ED02BE13F4}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Event Handlers", "Event Handlers", "{9ADF1E48-2F5C-4ED7-A893-596259FABFE0}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Formats", "Formats", "{A5A27244-AD24-46E5-B01B-840CD296C91D}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Docs", "Docs", "{CBD81696-EFB4-4D2F-8451-1B8DAA86155A}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Directories", "Directories", "{B8F5B47B-8568-46EB-B320-64C17D2A98BC}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Languages", "Languages", "{0C808854-54D1-4230-BFF5-77B5FD905000}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ASR-TTS", "ASR-TTS", "{4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Loggers", "Loggers", "{A7AB4405-FDB7-4853-9FBB-1516B1C3D80A}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "XML Interfaces", "XML Interfaces", "{F69A4A6B-9360-4EBB-A280-22AA3C455AC5}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Libraries", "_Libraries", "{EB910B0D-F27D-4B62-B67B-DE834C99AC5B}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Downloads", "_Downloads", "{C120A020-773F-4EA3-923F-B67AF28B750D}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "say", "say", "{6CD61A1D-797C-470A-BE08-8C31B68BB336}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Config", "_Config", "{57D119DC-484F-420F-B9E9-8589FD9A8DF8}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Default", "Default", "{3B08FEFD-4D3D-4C16-BA94-EE83509E32A0}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\freeswitch.xml = conf\vanilla\freeswitch.xml\r
+- conf\vanilla\vars.xml = conf\vanilla\vars.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Build System", "_Build System", "{DB1024A8-41BF-4AD7-9AE6-13202230D1F3}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- acsite.m4 = acsite.m4\r
+- bootstrap.sh = bootstrap.sh\r
+- build\buildlib.sh = build\buildlib.sh\r
+- configure.in = configure.in\r
+- Makefile.am = Makefile.am\r
+- build\modmake.rules.in = build\modmake.rules.in\r
+- build\modules.conf.in = build\modules.conf.in\r
+- libs\win32\util.vbs = libs\win32\util.vbs\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "m4", "m4", "{CDE9B06A-3C27-4987-8FAE-DF1006BC705D}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- build\config\ac_cflags_gcc_option.m4 = build\config\ac_cflags_gcc_option.m4\r
+- build\config\ac_cflags_sun_option.m4 = build\config\ac_cflags_sun_option.m4\r
+- build\config\ac_gcc_archflag.m4 = build\config\ac_gcc_archflag.m4\r
+- build\config\ac_gcc_x86_cpuid.m4 = build\config\ac_gcc_x86_cpuid.m4\r
+- build\config\ac_prog_gzip.m4 = build\config\ac_prog_gzip.m4\r
+- build\config\ac_prog_wget.m4 = build\config\ac_prog_wget.m4\r
+- build\config\ax_cc_maxopt.m4 = build\config\ax_cc_maxopt.m4\r
+- build\config\ax_cflags_warn_all_ansi.m4 = build\config\ax_cflags_warn_all_ansi.m4\r
+- build\config\ax_check_compiler_flags.m4 = build\config\ax_check_compiler_flags.m4\r
+- build\config\ax_compiler_vendor.m4 = build\config\ax_compiler_vendor.m4\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "autoload_configs", "autoload_configs", "{3C90CCF0-2CDD-4A7A-ACFF-208C1E271692}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\autoload_configs\alsa.conf.xml = conf\vanilla\autoload_configs\alsa.conf.xml\r
+- conf\vanilla\autoload_configs\conference.conf.xml = conf\vanilla\autoload_configs\conference.conf.xml\r
+- conf\vanilla\autoload_configs\console.conf.xml = conf\vanilla\autoload_configs\console.conf.xml\r
+- conf\vanilla\autoload_configs\dialplan_directory.conf.xml = conf\vanilla\autoload_configs\dialplan_directory.conf.xml\r
+- conf\vanilla\autoload_configs\dingaling.conf.xml = conf\vanilla\autoload_configs\dingaling.conf.xml\r
+- conf\vanilla\autoload_configs\enum.conf.xml = conf\vanilla\autoload_configs\enum.conf.xml\r
+- conf\vanilla\autoload_configs\event_multicast.conf.xml = conf\vanilla\autoload_configs\event_multicast.conf.xml\r
+- conf\vanilla\autoload_configs\event_socket.conf.xml = conf\vanilla\autoload_configs\event_socket.conf.xml\r
+- conf\vanilla\autoload_configs\ivr.conf.xml = conf\vanilla\autoload_configs\ivr.conf.xml\r
+- conf\vanilla\autoload_configs\java.conf.xml = conf\vanilla\autoload_configs\java.conf.xml\r
+- conf\vanilla\autoload_configs\limit.conf.xml = conf\vanilla\autoload_configs\limit.conf.xml\r
+- conf\vanilla\autoload_configs\local_stream.conf.xml = conf\vanilla\autoload_configs\local_stream.conf.xml\r
+- conf\vanilla\autoload_configs\logfile.conf.xml = conf\vanilla\autoload_configs\logfile.conf.xml\r
+- conf\vanilla\autoload_configs\modules.conf.xml = conf\vanilla\autoload_configs\modules.conf.xml\r
+- conf\vanilla\autoload_configs\openmrcp.conf.xml = conf\vanilla\autoload_configs\openmrcp.conf.xml\r
+- conf\vanilla\autoload_configs\portaudio.conf.xml = conf\vanilla\autoload_configs\portaudio.conf.xml\r
+- conf\vanilla\autoload_configs\rss.conf.xml = conf\vanilla\autoload_configs\rss.conf.xml\r
+- conf\vanilla\autoload_configs\sofia.conf.xml = conf\vanilla\autoload_configs\sofia.conf.xml\r
+- conf\vanilla\autoload_configs\spidermonkey.conf.xml = conf\vanilla\autoload_configs\spidermonkey.conf.xml\r
+- conf\vanilla\autoload_configs\switch.conf.xml = conf\vanilla\autoload_configs\switch.conf.xml\r
+- conf\vanilla\autoload_configs\syslog.conf.xml = conf\vanilla\autoload_configs\syslog.conf.xml\r
+- conf\vanilla\autoload_configs\voicemail.conf.xml = conf\vanilla\autoload_configs\voicemail.conf.xml\r
+- conf\vanilla\autoload_configs\wanpipe.conf.xml = conf\vanilla\autoload_configs\wanpipe.conf.xml\r
+- conf\vanilla\autoload_configs\woomera.conf.xml = conf\vanilla\autoload_configs\woomera.conf.xml\r
+- conf\vanilla\autoload_configs\xml_cdr.conf.xml = conf\vanilla\autoload_configs\xml_cdr.conf.xml\r
+- conf\vanilla\autoload_configs\xml_curl.conf.xml = conf\vanilla\autoload_configs\xml_curl.conf.xml\r
+- conf\vanilla\autoload_configs\xml_rpc.conf.xml = conf\vanilla\autoload_configs\xml_rpc.conf.xml\r
+- conf\vanilla\autoload_configs\zeroconf.conf.xml = conf\vanilla\autoload_configs\zeroconf.conf.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dialplan", "dialplan", "{C7E2382E-2C22-4D18-BF93-80C6A1FFA7AC}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\dialplan\default.xml = conf\vanilla\dialplan\default.xml\r
+- conf\vanilla\dialplan\public.xml = conf\vanilla\dialplan\public.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "directory", "directory", "{FC71C66E-E268-4EAD-B1F5-F008DC382E83}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\directory\default.xml = conf\vanilla\directory\default.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sip_profiles", "sip_profiles", "{8E2E8798-8B6F-4A55-8E4F-4E6FDE40ED26}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\sip_profiles\external.xml = conf\vanilla\sip_profiles\external.xml\r
+- conf\vanilla\sip_profiles\internal.xml = conf\vanilla\sip_profiles\internal.xml\r
+- conf\vanilla\sip_profiles\nat.xml = conf\vanilla\sip_profiles\nat.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "lang", "lang", "{09455AA9-C243-4F16-A1A1-A016881A2765}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\directory\default.xml = conf\vanilla\directory\default.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "en", "en", "{57199684-EC63-4A60-9DC6-11815AF6B413}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\lang\en\en.xml = conf\vanilla\lang\en\en.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "de", "de", "{2DED4BA2-D6B0-4064-BB2A-76DE3AA49E7C}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\lang\de\de.xml = conf\vanilla\lang\de\de.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "fr", "fr", "{D4A12E4C-DBDA-4614-BA26-3425AE9F60F5}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\lang\fr\fr.xml = conf\vanilla\lang\fr\fr.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "demo", "demo", "{D3E5C8ED-3A6A-4FEA-92A2-48A0BA865358}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\lang\de\demo\demo.xml = conf\vanilla\lang\de\demo\demo.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vm", "vm", "{CC3E7F48-2590-49CB-AD8B-BE3650F55462}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\lang\de\vm\tts.xml = conf\vanilla\lang\de\vm\tts.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "demo", "demo", "{765EF1B9-5027-4820-BC37-A44466A51631}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\lang\en\demo\demo.xml = conf\vanilla\lang\en\demo\demo.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vm", "vm", "{713E4747-1126-40B1-BD84-58F9A7745423}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\lang\en\vm\sounds.xml = conf\vanilla\lang\en\vm\sounds.xml\r
+- conf\vanilla\lang\en\vm\tts.xml = conf\vanilla\lang\en\vm\tts.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "demo", "demo", "{F1B71990-EB04-4EB5-B28A-BC3EB6F7E843}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\lang\fr\demo\demo.xml = conf\vanilla\lang\fr\demo\demo.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vm", "vm", "{3DAF028C-AB5B-4183-A01B-DCC43F5A87F0}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\lang\fr\vm\sounds.xml = conf\vanilla\lang\fr\vm\sounds.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FreeSwitchConsole", "w32\Console\FreeSwitchConsole.2008.vcproj", "{1AF3A893-F7BE-43DD-B697-8AB2397C0D67}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FreeSwitchCoreLib", "w32\Library\FreeSwitchCore.2008.vcproj", "{202D7A4E-760D-4D0E-AFA1-D7459CED30FF}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE} = {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9} = {8D04B550-D240-4A44-8A18-35DA3F7038D9}\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C} = {89385C74-5860-4174-9CAF-A39E7C48909C}\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5} = {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD} = {03207781-0D1C-4DB3-A71D-45C608F28DBD}\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EEF031CB-FED8-451E-A471-91EC8D4F6750}\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g729", "src\mod\codecs\mod_g729\mod_g729.2008.vcproj", "{1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sndfile", "src\mod\formats\mod_sndfile\mod_sndfile.2008.vcproj", "{AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4} = {3D0370CA-BED2-4657-A475-32375CBCB6E4}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_PortAudio", "src\mod\endpoints\mod_portaudio\mod_PortAudio.2008.vcproj", "{5FD31A25-5D83-4794-8BEE-904DAD84CE71}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99} = {0A18A071-125E-442F-AFF7-A3F68ABECF99}\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_speex", "src\mod\codecs\mod_speex\mod_speex.2008.vcproj", "{5580D60E-0F77-4716-9CD4-B8E5986FA375}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4} = {E972C52F-9E85-4D65-B19C-031E511E9DB4}\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD} = {03207781-0D1C-4DB3-A71D-45C608F28DBD}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "docs", "docs\docs.2008.vcproj", "{1A1FF289-4FD6-4285-A422-D31DD67A4723}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dialplan_xml", "src\mod\dialplans\mod_dialplan_xml\mod_dialplan_xml.2008.vcproj", "{07113B25-D3AF-4E04-BA77-4CD1171F022C}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_ldap", "src\mod\directories\mod_ldap\mod_ldap.2008.vcproj", "{EC3E5C7F-EE09-47E2-80FE-546363D14A98}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dialplan_directory", "src\mod\dialplans\mod_dialplan_directory\mod_dialplan_directory.2008.vcproj", "{A27CCA23-1541-4337-81A4-F0A6413078A0}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_event_multicast", "src\mod\event_handlers\mod_event_multicast\mod_event_multicast.2008.vcproj", "{784113EF-44D9-4949-835D-7065D3C7AD08}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libteletone", "libs\libteletone\libteletone.2008.vcproj", "{89385C74-5860-4174-9CAF-A39E7C48909C}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey", "src\mod\languages\mod_spidermonkey\mod_spidermonkey.2008.vcproj", "{1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_cepstral", "src\mod\asr_tts\mod_cepstral\mod_cepstral.2008.vcproj", "{692F6330-4D87-4C82-81DF-40DB5892636E}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_ilbc", "src\mod\codecs\mod_ilbc\mod_ilbc.2008.vcproj", "{D3EC0AFF-76FC-4210-A825-9A17410660A3}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD} = {9A5DDF08-C88C-4A35-B7F6-D605228446BD}\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dingaling", "src\mod\endpoints\mod_dingaling\mod_dingaling.2008.vcproj", "{FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54} = {1906D736-08BD-4EE1-924F-B536249B9A54}\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE} = {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39} = {B4B62169-5AD4-4559-8707-3D933AC5DB39}\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3} = {E727E8F6-935D-46FE-8B0E-37834748A0E3}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_commands", "src\mod\applications\mod_commands\mod_commands.2008.vcproj", "{30A5B29C-983E-4580-9FD0-D647CCDCC7EB}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_console", "src\mod\loggers\mod_console\mod_console.2008.vcproj", "{1C453396-D912-4213-89FD-9B489162B7B5}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xml_rpc", "src\mod\xml_int\mod_xml_rpc\mod_xml_rpc.2008.vcproj", "{CBEC7225-0C21-4DA8-978E-1F158F8AD950}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647} = {0D108721-EAE8-4BAF-8102-D8960EC93647}\r
+- {B535402E-38D2-4D54-8360-423ACBD17192} = {B535402E-38D2-4D54-8360-423ACBD17192}\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA} = {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9} = {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_rss", "src\mod\applications\mod_rss\mod_rss.2008.vcproj", "{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_conference", "src\mod\applications\mod_conference\mod_conference.2008.vcproj", "{C24FB505-05D7-4319-8485-7540B44C8603}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dptools", "src\mod\applications\mod_dptools\mod_dptools.2008.vcproj", "{B5881A85-FE70-4F64-8607-2CAAE52669C6}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_event_socket", "src\mod\event_handlers\mod_event_socket\mod_event_socket.2008.vcproj", "{05515420-16DE-4E63-BE73-85BE85BA5142}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libdingaling", "libs\libdingaling\libdingaling.2008.vcproj", "{1906D736-08BD-4EE1-924F-B536249B9A54}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3} = {E727E8F6-935D-46FE-8B0E-37834748A0E3}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsrtp", "libs\srtp\libsrtp.2008.vcproj", "{EEF031CB-FED8-451E-A471-91EC8D4F6750}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsqlite", "libs\win32\sqlite\sqlite.2008.vcproj", "{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpcre", "libs\win32\pcre\libpcre.2008.vcproj", "{8D04B550-D240-4A44-8A18-35DA3F7038D9}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94} = {1CED5987-A529-46DC-B30F-870D85FF9C94}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpcre Generate pcre_chartables.c", "libs\win32\pcre\pcre_chartables.c.2008.vcproj", "{1CED5987-A529-46DC-B30F-870D85FF9C94}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libapr", "libs\win32\apr\libapr.2008.vcproj", "{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libaprutil", "libs\win32\apr-util\libaprutil.2008.vcproj", "{F057DA7F-79E5-4B00-845C-EF446EF055E3}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F} = {155844C3-EC5F-407F-97A4-A2DDADED9B2F}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iksemel", "libs\win32\iksemel\iksemel.2008.vcproj", "{E727E8F6-935D-46FE-8B0E-37834748A0E3}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsndfile", "libs\win32\libsndfile\libsndfile.2008.vcproj", "{3D0370CA-BED2-4657-A475-32375CBCB6E4}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curllib", "libs\win32\curl\curllib.2008.vcproj", "{87EE9DA4-DE1E-4448-8324-183C98DCA588}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xml", "libs\win32\apr-util\xml.2008.vcproj", "{155844C3-EC5F-407F-97A4-A2DDADED9B2F}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "js", "libs\win32\js\js.2008.vcproj", "{204FA0DE-305D-4414-AE2E-F195A23F390D}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sofia", "src\mod\endpoints\mod_sofia\mod_sofia.2008.vcproj", "{0DF3ABD0-DDC0-4265-B778-07C66780979B}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE} = {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39} = {B4B62169-5AD4-4559-8707-3D933AC5DB39}\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0} = {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsofia_sip_ua_static", "libs\win32\sofia\libsofia_sip_ua_static.2008.vcproj", "{70A49BC2-7500-41D0-B75D-EDCC5BE987A0}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A} = {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE} = {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39} = {B4B62169-5AD4-4559-8707-3D933AC5DB39}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download PTHREAD", "libs\win32\Download PTHREAD.2008.vcproj", "{8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pthread", "libs\win32\pthread\pthread.2008.vcproj", "{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A} = {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g723_1", "src\mod\codecs\mod_g723_1\mod_g723_1.2008.vcproj", "{FEA1EEF7-876F-48DE-88BF-C0E3E606D758}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_native_file", "src\mod\formats\mod_native_file\mod_native_file.2008.vcproj", "{9254C4B0-6F60-42B6-BB3A-36D63FC001C7}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_core_db", "src\mod\languages\mod_spidermonkey\mod_spidermonkey_core_db.2008.vcproj", "{ACFFF684-4D19-4D48-AF12-88EA1D778BDF}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_teletone", "src\mod\languages\mod_spidermonkey\mod_spidermonkey_teletone.2008.vcproj", "{8F992C49-6C51-412F-B2A3-34EAB708EB65}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C} = {89385C74-5860-4174-9CAF-A39E7C48909C}\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_enum", "src\mod\applications\mod_enum\mod_enum.2008.vcproj", "{71A967D5-0E99-4CEF-A587-98836EE6F2EF}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940} = {23B4D303-79FC-49E0-89E2-2280E7E28940}\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_odbc", "src\mod\languages\mod_spidermonkey\mod_spidermonkey_odbc.2008.vcproj", "{0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xml_curl", "src\mod\xml_int\mod_xml_curl\mod_xml_curl.2008.vcproj", "{AB91A099-7690-4ECF-8994-E458F4EA1ED4}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_en", "src\mod\say\mod_say_en\mod_say_en.2008.vcproj", "{988CACF7-3FCB-4992-BE69-77872AE67DC8}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "portaudio", "libs\portaudio\build\msvc\portaudio.2008.vcproj", "{0A18A071-125E-442F-AFF7-A3F68ABECF99}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xml_cdr", "src\mod\xml_int\mod_xml_cdr\mod_xml_cdr.2008.vcproj", "{08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_amr", "src\mod\codecs\mod_amr\mod_amr.2008.vcproj", "{8DEB383C-4091-4F42-A56F-C9E46D552D79}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_h26x", "src\mod\codecs\mod_h26x\mod_h26x.2008.vcproj", "{2C3C2423-234B-4772-8899-D3B137E5CA35}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_esf", "src\mod\applications\mod_esf\mod_esf.2008.vcproj", "{3850D93A-5F24-4922-BC1C-74D08C37C256}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_local_stream", "src\mod\formats\mod_local_stream\mod_local_stream.2008.vcproj", "{2CA40887-1622-46A1-A7F9-17FD7E7E545B}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_socket", "src\mod\languages\mod_spidermonkey\mod_spidermonkey_socket.2008.vcproj", "{028C7278-05D7-4E18-82FE-BE231B844F41}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_voicemail", "src\mod\applications\mod_voicemail\mod_voicemail.2008.vcproj", "{D7F1E3F2-A3F4-474C-8555-15122571AF52}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_de", "src\mod\say\mod_say_de\mod_say_de.2008.vcproj", "{5BC072DB-3826-48EA-AF34-FE32AA01E83B}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_es", "src\mod\say\mod_say_es\mod_say_es.2008.vcproj", "{FA429E98-8B03-45E6-A096-A4BC5E821DE4}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_fr", "src\mod\say\mod_say_fr\mod_say_fr.2008.vcproj", "{06E3A538-AB32-44F2-B477-755FF9CB5D37}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_it", "src\mod\say\mod_say_it\mod_say_it.2008.vcproj", "{6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_nl", "src\mod\say\mod_say_nl\mod_say_nl.2008.vcproj", "{A4B122CF-5196-476B-8C0E-D8BD59AC3C14}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_fifo", "src\mod\applications\mod_fifo\mod_fifo.2008.vcproj", "{75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_db", "src\mod\applications\mod_db\mod_db.2008.vcproj", "{F6A33240-8F29-48BD-98F0-826995911799}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_expr", "src\mod\applications\mod_expr\mod_expr.2008.vcproj", "{65A6273D-FCAB-4C55-B09E-65100141A5D4}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dialplan_asterisk", "src\mod\dialplans\mod_dialplan_asterisk\mod_dialplan_asterisk.2008.vcproj", "{E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_logfile", "src\mod\loggers\mod_logfile\mod_logfile.2008.vcproj", "{D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_cdr_csv", "src\mod\event_handlers\mod_cdr_csv\mod_cdr_csv.2008.vcproj", "{44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_tone_stream", "src\mod\formats\mod_tone_stream\mod_tone_stream.2008.vcproj", "{6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C} = {89385C74-5860-4174-9CAF-A39E7C48909C}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_fsv", "src\mod\applications\mod_fsv\mod_fsv.2008.vcproj", "{E3246D17-E29B-4AB5-962A-C69B0C5837BB}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_curl", "src\mod\languages\mod_spidermonkey\mod_spidermonkey_curl.2008.vcproj", "{36E854E3-CE12-4348-A125-CCF3F9D74813}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_lua", "src\mod\languages\mod_lua\mod_lua.2008.vcproj", "{7B077E7F-1BE7-4291-AB86-55E527B25CAC}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {D0B36172-CD76-454A-9B89-990025266C2A} = {D0B36172-CD76-454A-9B89-990025266C2A}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "abyss", "libs\xmlrpc-c\Windows\abyss.2008.vcproj", "{D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlrpc", "libs\xmlrpc-c\Windows\xmlrpc.2008.vcproj", "{CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlparse", "libs\xmlrpc-c\Windows\xmlparse.2008.vcproj", "{0D108721-EAE8-4BAF-8102-D8960EC93647}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmltok", "libs\xmlrpc-c\Windows\xmltok.2008.vcproj", "{B535402E-38D2-4D54-8360-423ACBD17192}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download sphinxbase", "libs\win32\Download sphinxbase.2008.vcproj", "{4F92B672-DADB-4047-8D6A-4BB3796733FD}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download sphinxmodel", "libs\win32\Download sphinxmodel.2008.vcproj", "{2DEE4895-1134-439C-B688-52203E57D878}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download pocketsphinx", "libs\win32\Download pocketsphinx.2008.vcproj", "{AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sphinxbase", "libs\win32\sphinxbase\sphinxbase.2008.vcproj", "{2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD} = {4F92B672-DADB-4047-8D6A-4BB3796733FD}\r
+- {2DEE4895-1134-439C-B688-52203E57D878} = {2DEE4895-1134-439C-B688-52203E57D878}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pocketsphinx", "libs\win32\pocketsphinx\pocketsphinx.2008.vcproj", "{94001A0E-A837-445C-8004-F918F10D0226}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D} = {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E} = {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_pocketsphinx", "src\mod\asr_tts\mod_pocketsphinx\mod_pocketsphinx.2008.vcproj", "{2286DA73-9FC5-45BC-A508-85994C3317AB}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {94001A0E-A837-445C-8004-F918F10D0226} = {94001A0E-A837-445C-8004-F918F10D0226}\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD} = {4F92B672-DADB-4047-8D6A-4BB3796733FD}\r
+- {2DEE4895-1134-439C-B688-52203E57D878} = {2DEE4895-1134-439C-B688-52203E57D878}\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D} = {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E} = {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 8khzsound", "libs\win32\Download 8khz Sounds.2008.vcproj", "{3CE1DC99-8246-4DB1-A709-74F19F08EC67}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Sound Files", "Sound Files", "{4F227C26-768F-46A3-8684-1D08A46FB374}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 16khzsound", "libs\win32\Download 16khz Sounds.2008.vcproj", "{87A1FE3D-F410-4C8E-9591-8C625985BC70}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "8khz", "libs\win32\Sound_Files\8khz.2008.vcproj", "{7A8D8174-B355-4114-AFC1-04777CB9DE0A}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67} = {3CE1DC99-8246-4DB1-A709-74F19F08EC67}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "16khz", "libs\win32\Sound_Files\16khz.2008.vcproj", "{7EB71250-F002-4ED8-92CA-CA218114537A}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {87A1FE3D-F410-4C8E-9591-8C625985BC70} = {87A1FE3D-F410-4C8E-9591-8C625985BC70}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 32khzsound", "libs\win32\Dowload 32khz Sounds.2008.vcproj", "{6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "32khz", "libs\win32\Sound_Files\32khz.2008.vcproj", "{464AAB78-5489-4916-BE51-BF8D61822311}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F} = {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flite", "libs\win32\flite\flite.2008.vcproj", "{0AD1177E-1FD8-4643-9391-431467A11084}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B} = {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_flite", "src\mod\asr_tts\mod_flite\mod_flite.2008.vcproj", "{66444AEE-554C-11DD-A9F0-8C5D56D89593}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B} = {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}\r
+- {0AD1177E-1FD8-4643-9391-431467A11084} = {0AD1177E-1FD8-4643-9391-431467A11084}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download FLITE", "libs\win32\Download FLITE.2008.vcproj", "{D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download LAME", "libs\win32\Download LAME.2008.vcproj", "{D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download LIBSHOUT", "libs\win32\Download LIBSHOUT.2008.vcproj", "{D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download OGG", "libs\win32\Download OGG.2008.vcproj", "{D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmp3lame", "libs\win32\libmp3lame\libmp3lame_vc7.vcproj", "{E316772F-5D8F-4F2A-8F71-094C3E859D34}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B} = {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libshout", "libs\win32\libshout\libshout.vcproj", "{D3D8B329-20BE-475E-9E83-653CEA0E0EF5}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B} = {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4} = {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_shout", "src\mod\formats\mod_shout\mod_shout.vcproj", "{38FE0559-9910-43A8-9E45-3E5004C27692}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5} = {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34} = {E316772F-5D8F-4F2A-8F71-094C3E859D34}\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {419C8F80-D858-4B48-A25C-AF4007608137} = {419C8F80-D858-4B48-A25C-AF4007608137}\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libogg", "libs\win32\libogg\libogg.2008.vcproj", "{0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B} = {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_snom", "src\mod\applications\mod_snom\mod_snom.2008.vcproj", "{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_zh", "src\mod\say\mod_say_zh\mod_say_zh.2008.vcproj", "{B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_managed", "src\mod\languages\mod_managed\mod_managed.vcproj", "{7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0} = {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FreeSWITCH.Managed", "src\mod\languages\mod_managed\managed\FreeSWITCH.Managed.csproj", "{834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download mpg123", "libs\win32\Download mpg123.2008.vcproj", "{E796E337-DE78-4303-8614-9A590862EE95}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmpg123", "libs\win32\mpg123\libmpg123.2008.vcproj", "{419C8F80-D858-4B48-A25C-AF4007608137}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {E796E337-DE78-4303-8614-9A590862EE95} = {E796E337-DE78-4303-8614-9A590862EE95}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_loopback", "src\mod\endpoints\mod_loopback\mod_loopback.2008.vcproj", "{B3F424EC-3D8F-417C-B244-3919D5E1A577}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_vmd", "src\mod\applications\mod_vmd\mod_vmd.2008.vcproj", "{14E4A972-9CFB-436D-B0A5-4943F3F80D47}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libg722_1", "libs\win32\libg722_1\libg722_1.vcproj", "{1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_siren", "src\mod\codecs\mod_siren\mod_siren.2008.vcproj", "{0B6C905B-142E-4999-B39D-92FF7951E921}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C} = {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "esl", "libs\esl\src\esl.2008.vcproj", "{CF405366-9558-4AE8-90EF-5E21B51CCB4E}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fs_cli", "libs\esl\fs_cli.2008.vcproj", "{D2FB8043-D208-4AEE-8F18-3B5857C871B9}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E} = {CF405366-9558-4AE8-90EF-5E21B51CCB4E}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_easyroute", "src\mod\applications\mod_easyroute\mod_easyroute.2008.vcproj", "{329FD5B0-EF28-4606-86D0-F6EA21CF8E36}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_lcr", "src\mod\applications\mod_lcr\mod_lcr.2008.vcproj", "{1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtiff", "libs\spandsp\src\libtiff.2008.vcproj", "{401A40CD-5DB4-4E34-AC68-FA99E9FAC014}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspandsp", "libs\spandsp\src\libspandsp.2008.vcproj", "{1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A} = {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838} = {329A6FA0-0FCC-4435-A950-E670AEFA9838}\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330} = {DEE932AB-5911-4700-9EEB-8C7090A0A330}\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014} = {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspeex", "libs\speex\win32\VS2008\libspeex\libspeex.vcproj", "{E972C52F-9E85-4D65-B19C-031E511E9DB4}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspeexdsp", "libs\speex\win32\VS2008\libspeexdsp\libspeexdsp.vcproj", "{03207781-0D1C-4DB3-A71D-45C608F28DBD}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libilbc", "libs\ilbc\libilbc.2008.vcproj", "{9A5DDF08-C88C-4A35-B7F6-D605228446BD}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lua51", "src\mod\languages\mod_lua\lua\lua.2008.vcproj", "{D0B36172-CD76-454A-9B89-990025266C2A}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_opal", "src\mod\endpoints\mod_opal\mod_opal_2008.vcproj", "{05C9FB27-480E-4D53-B3B7-6338E2526666}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_h323", "src\mod\endpoints\mod_h323\mod_h323_2008.vcproj", "{05C9FB27-480E-4D53-B3B7-7338E2514666}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_iSAC", "src\mod\codecs\mod_isac\mod_iSAC.2008.vcproj", "{7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_skinny", "src\mod\endpoints\mod_skinny\mod_skinny_2008.vcproj", "{CC1DD008-9406-448D-A0AD-33C3186CFADB}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_rtmp", "src\mod\endpoints\mod_rtmp\mod_rtmp_2008.vcproj", "{48414740-C693-4968-9846-EE058020C64F}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_at_dictionary", "libs\spandsp\src\msvc\make_at_dictionary.2008.vcproj", "{DEE932AB-5911-4700-9EEB-8C7090A0A330}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_modem_filter", "libs\spandsp\src\msvc\make_modem_filter.2008.vcproj", "{329A6FA0-0FCC-4435-A950-E670AEFA9838}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_skel", "src\mod\applications\mod_skel\mod_skel.2008.vcproj", "{11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_skypopen", "src\mod\endpoints\mod_skypopen\mod_skypopen.2008.vcproj", "{C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 32khz music", "libs\win32\Dowload 32khz music.2008.vcproj", "{1F0A8A77-E661-418F-BB92-82172AE43803}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 8khz music", "libs\win32\Download 8khz music.2008.vcproj", "{4F5C9D55-98EF-4256-8311-32D7BD360406}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 16khz music", "libs\win32\Download 16khz music.2008.vcproj", "{E10571C4-E7F4-4608-B5F2-B22E7EB95400}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "8khz music", "libs\win32\Sound_Files\8khzmusic.2008.vcproj", "{D1ABE208-6442-4FB4-9AAD-1677E41BC870}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406} = {4F5C9D55-98EF-4256-8311-32D7BD360406}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "16khz music", "libs\win32\Sound_Files\16khzmusic.2008.vcproj", "{BA599D0A-4310-4505-91DA-6A6447B3E289}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {E10571C4-E7F4-4608-B5F2-B22E7EB95400} = {E10571C4-E7F4-4608-B5F2-B22E7EB95400}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "32khz music", "libs\win32\Sound_Files\32khzmusic.2008.vcproj", "{EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {1F0A8A77-E661-418F-BB92-82172AE43803} = {1F0A8A77-E661-418F-BB92-82172AE43803}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_nibblebill", "src\mod\applications\mod_nibblebill\mod_nibblebill.2008.vcproj", "{3C977801-FE88-48F2-83D3-FA2EBFF6688E}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_ru", "src\mod\say\mod_say_ru\mod_say_ru.2008.vcproj", "{0382E8FD-CFDC-41C0-8B03-792C7C84FC31}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_valet_parking", "src\mod\applications\mod_valet_parking\mod_valet_parking.2008.vcproj", "{432DB165-1EB2-4781-A9C0-71E62610B20A}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbroadvoice", "libs\broadvoice\src\libbroadvoice.2008.vcproj", "{CF70F278-3364-4395-A2E1-23501C9B8AD2}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_bv", "src\mod\codecs\mod_bv\mod_bv.2008.vcproj", "{D5C87B19-150D-4EF3-A671-96589BD2D14A}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2} = {CF70F278-3364-4395-A2E1-23501C9B8AD2}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "unimrcp", "unimrcp", "{62F27B1A-C919-4A70-8478-51F178F3B18F}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aprtoolkit", "libs\unimrcp\libs\apr-toolkit\aprtoolkit.2008.vcproj", "{13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mpf", "libs\unimrcp\libs\mpf\mpf.2008.vcproj", "{B5A00BFA-6083-4FAE-A097-71642D6473B5}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcp", "libs\unimrcp\libs\mrcp\mrcp.2008.vcproj", "{1C320193-46A6-4B34-9C56-8AB584FC1B56}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpclient", "libs\unimrcp\libs\mrcp-client\mrcpclient.2008.vcproj", "{72782932-37CC-46AE-8C7F-9A7B1A6EE108}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpsignaling", "libs\unimrcp\libs\mrcp-signaling\mrcpsignaling.2008.vcproj", "{12A49562-BAB9-43A3-A21D-15B60BBB4C31}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpv2transport", "libs\unimrcp\libs\mrcpv2-transport\mrcpv2transport.2008.vcproj", "{A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unirtsp", "libs\unimrcp\libs\uni-rtsp\unirtsp.2008.vcproj", "{504B3154-7A4F-459D-9877-B951021C3F1F}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpsofiasip", "libs\unimrcp\modules\mrcp-sofiasip\mrcpsofiasip.2008.vcproj", "{746F3632-5BB2-4570-9453-31D6D58A7D8E}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0} = {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpunirtsp", "libs\unimrcp\modules\mrcp-unirtsp\mrcpunirtsp.2008.vcproj", "{DEB01ACB-D65F-4A62-AED9-58C1054499E9}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_unimrcp", "src\mod\asr_tts\mod_unimrcp\mod_unimrcp.2008.vcproj", "{D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA} = {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108} = {72782932-37CC-46AE-8C7F-9A7B1A6EE108}\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E} = {746F3632-5BB2-4570-9453-31D6D58A7D8E}\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE} = {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F} = {504B3154-7A4F-459D-9877-B951021C3F1F}\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31} = {12A49562-BAB9-43A3-A21D-15B60BBB4C31}\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39} = {B4B62169-5AD4-4559-8707-3D933AC5DB39}\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56} = {1C320193-46A6-4B34-9C56-8AB584FC1B56}\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2} = {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0} = {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9} = {DEB01ACB-D65F-4A62-AED9-58C1054499E9}\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5} = {B5A00BFA-6083-4FAE-A097-71642D6473B5}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download CELT", "libs\win32\Download CELT.vcproj", "{FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcelt", "libs\win32\celt\libcelt.vcproj", "{ABB71A76-42B0-47A4-973A-42E3D920C6FD}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19} = {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_celt", "src\mod\codecs\mod_celt\mod_celt.vcproj", "{4D418176-3B33-47E6-A63E-01BA34ADD21C}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD} = {ABB71A76-42B0-47A4-973A-42E3D920C6FD}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FSComm", "fscomm\FSComm.2008.vcproj", "{7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_curl", "src\mod\applications\mod_curl\mod_curl.2008.vcproj", "{EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A} = {9778F1C0-09BC-4698-8EBC-BD982247209A}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download JSON", "libs\win32\Download JSON.2008.vcproj", "{B808178B-82F0-4CF4-A2B1-921939FA24D0}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libjson", "libs\win32\json\libjson.2008.vcproj", "{9778F1C0-09BC-4698-8EBC-BD982247209A}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0} = {B808178B-82F0-4CF4-A2B1-921939FA24D0}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_silk", "src\mod\codecs\mod_silk\mod_silk.2008.vcproj", "{AFA983D6-4569-4F88-BA94-555ED00FD9A8}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76} = {56B91D01-9150-4BBF-AFA1-5B68AB991B76}\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Silk_FIX", "libs\silk\src\Silk_FIX.2008.vcproj", "{56B91D01-9150-4BBF-AFA1-5B68AB991B76}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_avmd", "src\mod\applications\mod_avmd\mod_avmd.2008.vcproj", "{990BAA76-89D3-4E38-8479-C7B28784EFC8}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spandsp", "src\mod\applications\mod_spandsp\mod_spandsp.2008.vcproj", "{1E21AFE0-6FDB-41D2-942D-863607C24B91}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5} = {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_hash", "src\mod\applications\mod_hash\mod_hash.2008.vcproj", "{2E250296-0C08-4342-9C8A-BCBDD0E7DF65}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E} = {CF405366-9558-4AE8-90EF-5E21B51CCB4E}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download OPENSSL", "libs\win32\Download OPENSSL.2008.vcproj", "{D578E676-7EC8-4548-BD8B-845C635F14AD}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "openssl", "openssl", "{B376D494-D7DD-4B2A-99E2-52916D5A8CD8}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libeay32", "libs\win32\openssl\libeay32.2008.vcproj", "{D331904D-A00A-4694-A5A3-FCFF64AB5DBE}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD} = {D578E676-7EC8-4548-BD8B-845C635F14AD}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ssleay32", "libs\win32\openssl\ssleay32.2008.vcproj", "{B4B62169-5AD4-4559-8707-3D933AC5DB39}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE} = {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openssl", "libs\win32\openssl\openssl.2008.vcproj", "{25BD39B1-C8BF-4676-A738-9CABD9C6BC79}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE} = {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39} = {B4B62169-5AD4-4559-8707-3D933AC5DB39}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_directory", "src\mod\applications\mod_directory\mod_directory.2008.vcproj", "{42E721FD-43D6-4B04-A34B-42567199FFB8}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ldns", "libs\win32\ldns\ldns-lib\ldns-lib.2008.vcproj", "{23B4D303-79FC-49E0-89E2-2280E7E28940}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_httapi", "src\mod\applications\mod_httapi\mod_httapi.2008.vcproj", "{0807C5CB-F6FF-451D-89F0-1F7B2E1D9169}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_abstraction", "src\mod\applications\mod_abstraction\mod_abstraction.2008.vcproj", "{BDA173DB-F8EF-4270-9553-B453AF92E43A}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_gsmopen", "src\mod\endpoints\mod_gsmopen\mod_gsmopen.2008.vcproj", "{74B120FF-6935-4DFE-A142-CDB6BEA99C90}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} = {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsmlib", "src\mod\endpoints\mod_gsmopen\gsmlib\gsmlib-1.10-patched-13ubuntu\win32\gsmlib.vcproj", "{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libjpeg", "libs\win32\libjpeg\libjpeg.2008.vcproj", "{FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {21A7DA70-555E-49FA-942B-D84A38B61243} = {21A7DA70-555E-49FA-942B-D84A38B61243}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download libjpeg", "libs\win32\Download libjpeg.2008.vcproj", "{21A7DA70-555E-49FA-942B-D84A38B61243}"\r
+-EndProject\r
+-Global\r
+- GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+- All|Win32 = All|Win32\r
+- All|x64 = All|x64\r
+- Debug|Win32 = Debug|Win32\r
+- Debug|x64 = Debug|x64\r
+- Release|Win32 = Release|Win32\r
+- Release|x64 = Release|x64\r
+- EndGlobalSection\r
+- GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.All|Win32.ActiveCfg = Release|x64\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.All|x64.ActiveCfg = Release|x64\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.All|x64.Build.0 = Release|x64\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|Win32.Build.0 = Debug|Win32\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|x64.ActiveCfg = Debug|x64\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|x64.Build.0 = Debug|x64\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|Win32.ActiveCfg = Release|Win32\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|Win32.Build.0 = Release|Win32\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|x64.ActiveCfg = Release|x64\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|x64.Build.0 = Release|x64\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.All|Win32.ActiveCfg = Release|x64\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.All|x64.ActiveCfg = Release|x64\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.All|x64.Build.0 = Release|x64\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|Win32.Build.0 = Debug|Win32\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|x64.ActiveCfg = Debug|x64\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|x64.Build.0 = Debug|x64\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|Win32.ActiveCfg = Release|Win32\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|Win32.Build.0 = Release|Win32\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|x64.ActiveCfg = Release|x64\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|x64.Build.0 = Release|x64\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.All|Win32.ActiveCfg = Release Passthrough|x64\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.All|x64.ActiveCfg = Release Passthrough|x64\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.All|x64.Build.0 = Release Passthrough|x64\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|Win32.Build.0 = Debug Passthrough|Win32\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|x64.ActiveCfg = Debug Passthrough|x64\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|x64.Build.0 = Debug Passthrough|x64\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|Win32.ActiveCfg = Release Passthrough|Win32\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|Win32.Build.0 = Release Passthrough|Win32\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|x64.ActiveCfg = Release Passthrough|x64\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|x64.Build.0 = Release Passthrough|x64\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.All|Win32.ActiveCfg = Release|x64\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.All|x64.ActiveCfg = Release|x64\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.All|x64.Build.0 = Release|x64\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|Win32.Build.0 = Debug|Win32\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|x64.ActiveCfg = Debug|x64\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|x64.Build.0 = Debug|x64\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|Win32.ActiveCfg = Release|Win32\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|Win32.Build.0 = Release|Win32\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|x64.ActiveCfg = Release|x64\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|x64.Build.0 = Release|x64\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.All|Win32.ActiveCfg = Release|x64\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.All|x64.ActiveCfg = Release|x64\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.All|x64.Build.0 = Release|x64\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Win32.Build.0 = Debug|Win32\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|x64.ActiveCfg = Debug|x64\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|x64.Build.0 = Debug|x64\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Win32.ActiveCfg = Release|Win32\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Win32.Build.0 = Release|Win32\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|x64.ActiveCfg = Release|x64\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|x64.Build.0 = Release|x64\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.All|Win32.ActiveCfg = Release|x64\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.All|x64.ActiveCfg = Release|x64\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.All|x64.Build.0 = Release|x64\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|Win32.Build.0 = Debug|Win32\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|x64.ActiveCfg = Debug|x64\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|x64.Build.0 = Debug|x64\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|Win32.ActiveCfg = Release|Win32\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|Win32.Build.0 = Release|Win32\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|x64.ActiveCfg = Release|x64\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|x64.Build.0 = Release|x64\r
+- {1A1FF289-4FD6-4285-A422-D31DD67A4723}.All|Win32.ActiveCfg = Release|Win32\r
+- {1A1FF289-4FD6-4285-A422-D31DD67A4723}.All|x64.ActiveCfg = Release|Win32\r
+- {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|Win32.ActiveCfg = Release|Win32\r
+- {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|x64.ActiveCfg = Release|Win32\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.All|Win32.ActiveCfg = Release|x64\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.All|x64.ActiveCfg = Release|x64\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.All|x64.Build.0 = Release|x64\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|Win32.Build.0 = Debug|Win32\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|x64.ActiveCfg = Debug|x64\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|x64.Build.0 = Debug|x64\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|Win32.ActiveCfg = Release|Win32\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|Win32.Build.0 = Release|Win32\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|x64.ActiveCfg = Release|x64\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|x64.Build.0 = Release|x64\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.All|Win32.ActiveCfg = Release MS-LDAP|x64\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.All|x64.ActiveCfg = Release MS-LDAP|x64\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.All|x64.Build.0 = Release MS-LDAP|x64\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|Win32.ActiveCfg = Debug MS-LDAP|Win32\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|Win32.Build.0 = Debug MS-LDAP|Win32\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|x64.ActiveCfg = Debug MS-LDAP|x64\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|x64.Build.0 = Debug MS-LDAP|x64\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|Win32.ActiveCfg = Release MS-LDAP|Win32\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|Win32.Build.0 = Release MS-LDAP|Win32\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|x64.ActiveCfg = Release MS-LDAP|x64\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|x64.Build.0 = Release MS-LDAP|x64\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.All|Win32.ActiveCfg = Release|x64\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.All|x64.ActiveCfg = Release|x64\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.All|x64.Build.0 = Release|x64\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|Win32.Build.0 = Debug|Win32\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|x64.ActiveCfg = Debug|x64\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|x64.Build.0 = Debug|x64\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|Win32.ActiveCfg = Release|Win32\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|Win32.Build.0 = Release|Win32\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|x64.ActiveCfg = Release|x64\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|x64.Build.0 = Release|x64\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.All|Win32.ActiveCfg = Release|x64\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.All|x64.ActiveCfg = Release|x64\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.All|x64.Build.0 = Release|x64\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|Win32.Build.0 = Debug|Win32\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|x64.ActiveCfg = Debug|x64\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|x64.Build.0 = Debug|x64\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|Win32.ActiveCfg = Release|Win32\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|Win32.Build.0 = Release|Win32\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|x64.ActiveCfg = Release|x64\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|x64.Build.0 = Release|x64\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.All|Win32.ActiveCfg = Release|x64\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.All|x64.ActiveCfg = Release|x64\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.All|x64.Build.0 = Release|x64\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|Win32.Build.0 = Debug|Win32\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|x64.ActiveCfg = Debug|x64\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|x64.Build.0 = Debug|x64\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|Win32.ActiveCfg = Release|Win32\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|Win32.Build.0 = Release|Win32\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|x64.ActiveCfg = Release|x64\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|x64.Build.0 = Release|x64\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.All|Win32.ActiveCfg = Release|x64\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.All|x64.ActiveCfg = Release|x64\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.All|x64.Build.0 = Release|x64\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|Win32.Build.0 = Debug|Win32\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|x64.ActiveCfg = Debug|x64\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|Win32.ActiveCfg = Release|Win32\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|Win32.Build.0 = Release|Win32\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|x64.ActiveCfg = Release|x64\r
+- {692F6330-4D87-4C82-81DF-40DB5892636E}.All|Win32.ActiveCfg = Release|x64\r
+- {692F6330-4D87-4C82-81DF-40DB5892636E}.All|x64.ActiveCfg = Release|x64\r
+- {692F6330-4D87-4C82-81DF-40DB5892636E}.All|x64.Build.0 = Release|x64\r
+- {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|x64.ActiveCfg = Debug|x64\r
+- {692F6330-4D87-4C82-81DF-40DB5892636E}.Release|Win32.ActiveCfg = Release|Win32\r
+- {692F6330-4D87-4C82-81DF-40DB5892636E}.Release|x64.ActiveCfg = Release|x64\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|Win32.ActiveCfg = Release|x64\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|x64.ActiveCfg = Release|x64\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|x64.Build.0 = Release|x64\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|x64.ActiveCfg = Debug|x64\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|x64.Build.0 = Debug|x64\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|Win32.Build.0 = Release|Win32\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|x64.ActiveCfg = Release|x64\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|x64.Build.0 = Release|x64\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.All|Win32.ActiveCfg = Release|x64\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.All|x64.ActiveCfg = Release|x64\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.All|x64.Build.0 = Release|x64\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Win32.Build.0 = Debug|Win32\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|x64.ActiveCfg = Debug|x64\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|x64.Build.0 = Debug|x64\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Win32.ActiveCfg = Release|Win32\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Win32.Build.0 = Release|Win32\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|x64.ActiveCfg = Release|x64\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|x64.Build.0 = Release|x64\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.All|Win32.ActiveCfg = Release|x64\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.All|x64.ActiveCfg = Release|x64\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.All|x64.Build.0 = Release|x64\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|Win32.Build.0 = Debug|Win32\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|x64.ActiveCfg = Debug|x64\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|x64.Build.0 = Debug|x64\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|Win32.ActiveCfg = Release|Win32\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|Win32.Build.0 = Release|Win32\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|x64.ActiveCfg = Release|x64\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|x64.Build.0 = Release|x64\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.All|Win32.ActiveCfg = Release|x64\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.All|x64.ActiveCfg = Release|x64\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.All|x64.Build.0 = Release|x64\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|Win32.Build.0 = Debug|Win32\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|x64.ActiveCfg = Debug|x64\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|x64.Build.0 = Debug|x64\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.Release|Win32.ActiveCfg = Release|Win32\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.Release|Win32.Build.0 = Release|Win32\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.Release|x64.ActiveCfg = Release|x64\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.Release|x64.Build.0 = Release|x64\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.All|Win32.ActiveCfg = Release|x64\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.All|x64.ActiveCfg = Release|x64\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.All|x64.Build.0 = Release|x64\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|Win32.Build.0 = Debug|Win32\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|x64.ActiveCfg = Debug|x64\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|x64.Build.0 = Debug|x64\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Win32.ActiveCfg = Release|Win32\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Win32.Build.0 = Release|Win32\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|x64.ActiveCfg = Release|x64\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|x64.Build.0 = Release|x64\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|Win32.ActiveCfg = Release|x64\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|x64.ActiveCfg = Release|x64\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|x64.Build.0 = Release|x64\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Win32.Build.0 = Debug|Win32\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|x64.ActiveCfg = Debug|x64\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|x64.Build.0 = Debug|x64\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Win32.ActiveCfg = Release|Win32\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Win32.Build.0 = Release|Win32\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|x64.ActiveCfg = Release|x64\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|x64.Build.0 = Release|x64\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.All|Win32.ActiveCfg = Release|x64\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.All|x64.ActiveCfg = Release|x64\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.All|x64.Build.0 = Release|x64\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|Win32.Build.0 = Debug|Win32\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|x64.ActiveCfg = Debug|x64\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|x64.Build.0 = Debug|x64\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.Release|Win32.ActiveCfg = Release|Win32\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.Release|Win32.Build.0 = Release|Win32\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.Release|x64.ActiveCfg = Release|x64\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.Release|x64.Build.0 = Release|x64\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.All|Win32.ActiveCfg = Release|x64\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.All|x64.ActiveCfg = Release|x64\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.All|x64.Build.0 = Release|x64\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|Win32.Build.0 = Debug|Win32\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|x64.ActiveCfg = Debug|x64\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|x64.Build.0 = Debug|x64\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|Win32.ActiveCfg = Release|Win32\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|Win32.Build.0 = Release|Win32\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|x64.ActiveCfg = Release|x64\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|x64.Build.0 = Release|x64\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.All|Win32.ActiveCfg = Release|x64\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.All|x64.ActiveCfg = Release|x64\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.All|x64.Build.0 = Release|x64\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|Win32.Build.0 = Debug|Win32\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|x64.ActiveCfg = Debug|x64\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|x64.Build.0 = Debug|x64\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|Win32.ActiveCfg = Release|Win32\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|Win32.Build.0 = Release|Win32\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|x64.ActiveCfg = Release|x64\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|x64.Build.0 = Release|x64\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.All|Win32.ActiveCfg = Release DLL|x64\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.All|x64.ActiveCfg = Release DLL|x64\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.All|x64.Build.0 = Release DLL|x64\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.Build.0 = Debug|Win32\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|x64.ActiveCfg = Debug|x64\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|x64.Build.0 = Debug|x64\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Win32.ActiveCfg = Release|Win32\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Win32.Build.0 = Release|Win32\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|x64.ActiveCfg = Release|x64\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|x64.Build.0 = Release|x64\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.All|Win32.ActiveCfg = Release Dll|x64\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.All|x64.ActiveCfg = Release Dll|x64\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.All|x64.Build.0 = Release Dll|x64\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Win32.Build.0 = Debug|Win32\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|x64.ActiveCfg = Debug|x64\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|x64.Build.0 = Debug|x64\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Win32.ActiveCfg = Release|Win32\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Win32.Build.0 = Release|Win32\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|x64.ActiveCfg = Release|x64\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|x64.Build.0 = Release|x64\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.All|Win32.ActiveCfg = Release DLL|x64\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.All|x64.ActiveCfg = Release DLL|x64\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.All|x64.Build.0 = Release DLL|x64\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|Win32.Build.0 = Debug|Win32\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|x64.ActiveCfg = Debug|x64\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|x64.Build.0 = Debug|x64\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|Win32.ActiveCfg = Release|Win32\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|Win32.Build.0 = Release|Win32\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|x64.ActiveCfg = Release|x64\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|x64.Build.0 = Release|x64\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.All|Win32.ActiveCfg = Release DLL|x64\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.All|x64.ActiveCfg = Release DLL|x64\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.All|x64.Build.0 = Release DLL|x64\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|Win32.Build.0 = Debug|Win32\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|x64.ActiveCfg = Debug|x64\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|x64.Build.0 = Debug|x64\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|Win32.ActiveCfg = Release|Win32\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|Win32.Build.0 = Release|Win32\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|x64.ActiveCfg = Release|x64\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|x64.Build.0 = Release|x64\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.All|Win32.ActiveCfg = Release|x64\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.All|x64.ActiveCfg = Release|x64\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.All|x64.Build.0 = Release|x64\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Win32.Build.0 = Debug|Win32\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|x64.ActiveCfg = Debug|x64\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|x64.Build.0 = Debug|x64\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.ActiveCfg = Release|Win32\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.Build.0 = Release|Win32\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|x64.ActiveCfg = Release|x64\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|x64.Build.0 = Release|x64\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.All|Win32.ActiveCfg = Release|x64\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.All|x64.ActiveCfg = Release|x64\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.All|x64.Build.0 = Release|x64\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|Win32.Build.0 = Debug|Win32\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|x64.ActiveCfg = Debug|x64\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|x64.Build.0 = Debug|x64\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.ActiveCfg = Release|Win32\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.Build.0 = Release|Win32\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64.ActiveCfg = Release|x64\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64.Build.0 = Release|x64\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.All|Win32.ActiveCfg = Release|x64\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.All|x64.ActiveCfg = Release|x64\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.All|x64.Build.0 = Release|x64\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.Build.0 = Debug|Win32\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|x64.ActiveCfg = Debug|x64\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|x64.Build.0 = Debug|x64\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Win32.ActiveCfg = Release|Win32\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Win32.Build.0 = Release|Win32\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|x64.ActiveCfg = Release|x64\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|x64.Build.0 = Release|x64\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|Win32.ActiveCfg = Release|x64\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|x64.ActiveCfg = Release|x64\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|x64.Build.0 = Release|x64\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Win32.Build.0 = Debug|Win32\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|x64.ActiveCfg = Debug|x64\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|x64.Build.0 = Debug|x64\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Win32.ActiveCfg = Release|Win32\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Win32.Build.0 = Release|Win32\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|x64.ActiveCfg = Release|x64\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|x64.Build.0 = Release|x64\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.All|Win32.ActiveCfg = Release|x64\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.All|x64.ActiveCfg = Release|x64\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.All|x64.Build.0 = Release|x64\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|Win32.Build.0 = Debug|Win32\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|x64.ActiveCfg = Debug|x64\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|x64.Build.0 = Debug|x64\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|Win32.ActiveCfg = Release|Win32\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|Win32.Build.0 = Release|Win32\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|x64.ActiveCfg = Release|x64\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|x64.Build.0 = Release|x64\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.All|Win32.ActiveCfg = Debug|x64\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.All|x64.ActiveCfg = Debug|x64\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.All|x64.Build.0 = Debug|x64\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|Win32.Build.0 = Debug|Win32\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|x64.ActiveCfg = Debug|x64\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|x64.Build.0 = Debug|x64\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|Win32.ActiveCfg = Release|Win32\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|Win32.Build.0 = Release|Win32\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|x64.ActiveCfg = Release|x64\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|x64.Build.0 = Release|x64\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.All|Win32.ActiveCfg = Debug|x64\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.All|x64.ActiveCfg = Debug|x64\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.All|x64.Build.0 = Debug|x64\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Win32.Build.0 = Debug|Win32\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|x64.ActiveCfg = Debug|x64\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|x64.Build.0 = Debug|x64\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Win32.ActiveCfg = Release|Win32\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Win32.Build.0 = Release|Win32\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|x64.ActiveCfg = Release|x64\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|x64.Build.0 = Release|x64\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.All|Win32.ActiveCfg = Debug|x64\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.All|x64.ActiveCfg = Debug|x64\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.All|x64.Build.0 = Debug|x64\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|Win32.Build.0 = Debug|Win32\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|x64.ActiveCfg = Debug|x64\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|x64.Build.0 = Debug|x64\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|Win32.ActiveCfg = Release|Win32\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|Win32.Build.0 = Release|Win32\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|x64.ActiveCfg = Release|x64\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|x64.Build.0 = Release|x64\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|Win32.ActiveCfg = Release|x64\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x64.ActiveCfg = Release|x64\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x64.Build.0 = Release|x64\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|Win32.Build.0 = Debug|Win32\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|x64.ActiveCfg = Debug|x64\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|x64.Build.0 = Debug|x64\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|Win32.ActiveCfg = Release|Win32\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|Win32.Build.0 = Release|Win32\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|x64.ActiveCfg = Release|x64\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|x64.Build.0 = Release|x64\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.All|Win32.ActiveCfg = Release|x64\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.All|x64.ActiveCfg = Release|x64\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.All|x64.Build.0 = Release|x64\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|Win32.Build.0 = Debug|Win32\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|x64.ActiveCfg = Debug|x64\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|x64.Build.0 = Debug|x64\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|Win32.ActiveCfg = Release|Win32\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|Win32.Build.0 = Release|Win32\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|x64.ActiveCfg = Release|x64\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|x64.Build.0 = Release|x64\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|Win32.ActiveCfg = Release|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|Win32.Build.0 = Release|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|x64.ActiveCfg = Release|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|x64.Build.0 = Release|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|Win32.Build.0 = Debug|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|x64.Build.0 = Debug|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Win32.ActiveCfg = Release|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Win32.Build.0 = Release|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|x64.ActiveCfg = Release|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|x64.Build.0 = Release|Win32\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.All|Win32.ActiveCfg = Release DLL|x64\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.All|x64.ActiveCfg = Release DLL|x64\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.All|x64.Build.0 = Release DLL|x64\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Win32.ActiveCfg = Debug DLL|Win32\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Win32.Build.0 = Debug DLL|Win32\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|x64.ActiveCfg = Debug DLL|x64\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|x64.Build.0 = Debug DLL|x64\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Win32.ActiveCfg = Release DLL|Win32\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Win32.Build.0 = Release DLL|Win32\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|x64.ActiveCfg = Release DLL|x64\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|x64.Build.0 = Release DLL|x64\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.All|Win32.ActiveCfg = Release Passthrough|x64\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.All|x64.ActiveCfg = Release Passthrough|x64\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.All|x64.Build.0 = Release Passthrough|x64\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|Win32.Build.0 = Debug Passthrough|Win32\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|x64.ActiveCfg = Debug Passthrough|x64\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|x64.Build.0 = Debug Passthrough|x64\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|Win32.ActiveCfg = Release Passthrough|Win32\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|Win32.Build.0 = Release Passthrough|Win32\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|x64.ActiveCfg = Release Passthrough|x64\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|x64.Build.0 = Release Passthrough|x64\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.All|Win32.ActiveCfg = Release|x64\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.All|x64.ActiveCfg = Release|x64\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.All|x64.Build.0 = Release|x64\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|Win32.Build.0 = Debug|Win32\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|x64.ActiveCfg = Debug|x64\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|x64.Build.0 = Debug|x64\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|Win32.ActiveCfg = Release|Win32\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|Win32.Build.0 = Release|Win32\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|x64.ActiveCfg = Release|x64\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|x64.Build.0 = Release|x64\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.All|Win32.ActiveCfg = Release|x64\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.All|x64.ActiveCfg = Release|x64\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.All|x64.Build.0 = Release|x64\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|Win32.Build.0 = Debug|Win32\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|x64.ActiveCfg = Debug|x64\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|Win32.ActiveCfg = Release|Win32\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|Win32.Build.0 = Release|Win32\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|x64.ActiveCfg = Release|x64\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.All|Win32.ActiveCfg = Release|x64\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.All|x64.ActiveCfg = Release|x64\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.All|x64.Build.0 = Release|x64\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|Win32.Build.0 = Debug|Win32\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|x64.ActiveCfg = Debug|x64\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|Win32.ActiveCfg = Release|Win32\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|Win32.Build.0 = Release|Win32\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|x64.ActiveCfg = Release|x64\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.All|Win32.ActiveCfg = Release|x64\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.All|x64.ActiveCfg = Release|x64\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.All|x64.Build.0 = Release|x64\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|Win32.Build.0 = Debug|Win32\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|x64.ActiveCfg = Debug|x64\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|x64.Build.0 = Debug|x64\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|Win32.ActiveCfg = Release|Win32\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|Win32.Build.0 = Release|Win32\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|x64.ActiveCfg = Release|x64\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|x64.Build.0 = Release|x64\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.All|Win32.ActiveCfg = Release|x64\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.All|x64.ActiveCfg = Release|x64\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.All|x64.Build.0 = Release|x64\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|Win32.Build.0 = Debug|Win32\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|x64.ActiveCfg = Debug|x64\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|Win32.ActiveCfg = Release|Win32\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|Win32.Build.0 = Release|Win32\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|x64.ActiveCfg = Release|x64\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.All|Win32.ActiveCfg = Release|x64\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.All|x64.ActiveCfg = Release|x64\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.All|x64.Build.0 = Release|x64\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|Win32.Build.0 = Debug|Win32\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|x64.ActiveCfg = Debug|x64\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|x64.Build.0 = Debug|x64\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|Win32.ActiveCfg = Release|Win32\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|Win32.Build.0 = Release|Win32\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|x64.ActiveCfg = Release|x64\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|x64.Build.0 = Release|x64\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.All|Win32.ActiveCfg = Release|x64\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.All|x64.ActiveCfg = Release|x64\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.All|x64.Build.0 = Release|x64\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|Win32.Build.0 = Debug|Win32\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|x64.ActiveCfg = Debug|x64\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|x64.Build.0 = Debug|x64\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|Win32.ActiveCfg = Release|Win32\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|Win32.Build.0 = Release|Win32\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|x64.ActiveCfg = Release|x64\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|x64.Build.0 = Release|x64\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|Win32.ActiveCfg = Release DirectSound|x64\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64.ActiveCfg = Release DirectSound|x64\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64.Build.0 = Release DirectSound|x64\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug|Win32\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug|x64\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.Build.0 = Debug|x64\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release|Win32\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release|Win32\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release|x64\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.Build.0 = Release|x64\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|Win32.ActiveCfg = Release|x64\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64.ActiveCfg = Release|x64\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64.Build.0 = Release|x64\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|Win32.Build.0 = Debug|Win32\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|x64.ActiveCfg = Debug|x64\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|x64.Build.0 = Debug|x64\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|Win32.ActiveCfg = Release|Win32\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|Win32.Build.0 = Release|Win32\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|x64.ActiveCfg = Release|x64\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|x64.Build.0 = Release|x64\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.All|Win32.ActiveCfg = Release Passthrough|x64\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.All|x64.ActiveCfg = Release Passthrough|x64\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.All|x64.Build.0 = Release Passthrough|x64\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|Win32.Build.0 = Debug Passthrough|Win32\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|x64.ActiveCfg = Debug Passthrough|x64\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|x64.Build.0 = Debug Passthrough|x64\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|Win32.ActiveCfg = Release Passthrough|Win32\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|Win32.Build.0 = Release Passthrough|Win32\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|x64.ActiveCfg = Release Passthrough|x64\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|x64.Build.0 = Release Passthrough|x64\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.All|Win32.ActiveCfg = Release|x64\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.All|x64.ActiveCfg = Release|x64\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.All|x64.Build.0 = Release|x64\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|Win32.Build.0 = Debug|Win32\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|x64.ActiveCfg = Debug|x64\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|x64.Build.0 = Debug|x64\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|Win32.ActiveCfg = Release|Win32\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|Win32.Build.0 = Release|Win32\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|x64.ActiveCfg = Release|x64\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|x64.Build.0 = Release|x64\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.All|Win32.ActiveCfg = Release|x64\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.All|x64.ActiveCfg = Release|x64\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.All|x64.Build.0 = Release|x64\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|Win32.Build.0 = Debug|Win32\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|x64.ActiveCfg = Debug|x64\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|x64.Build.0 = Debug|x64\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|Win32.ActiveCfg = Release|Win32\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|Win32.Build.0 = Release|Win32\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|x64.ActiveCfg = Release|x64\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|x64.Build.0 = Release|x64\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.All|Win32.ActiveCfg = Release|x64\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.All|x64.ActiveCfg = Release|x64\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.All|x64.Build.0 = Release|x64\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|Win32.Build.0 = Debug|Win32\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|x64.ActiveCfg = Debug|x64\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|x64.Build.0 = Debug|x64\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|Win32.ActiveCfg = Release|Win32\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|Win32.Build.0 = Release|Win32\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|x64.ActiveCfg = Release|x64\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|x64.Build.0 = Release|x64\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.All|Win32.ActiveCfg = Release|x64\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.All|x64.ActiveCfg = Release|x64\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.All|x64.Build.0 = Release|x64\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|Win32.Build.0 = Debug|Win32\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|x64.ActiveCfg = Debug|x64\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|Win32.ActiveCfg = Release|Win32\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|Win32.Build.0 = Release|Win32\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|x64.ActiveCfg = Release|x64\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.All|Win32.ActiveCfg = Release|x64\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.All|x64.ActiveCfg = Release|x64\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.All|x64.Build.0 = Release|x64\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|x64.ActiveCfg = Debug|x64\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|x64.Build.0 = Debug|x64\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|Win32.Build.0 = Release|Win32\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|x64.ActiveCfg = Release|x64\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|x64.Build.0 = Release|x64\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.All|Win32.ActiveCfg = Release|x64\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.All|x64.ActiveCfg = Release|x64\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.All|x64.Build.0 = Release|x64\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|Win32.Build.0 = Debug|Win32\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|x64.ActiveCfg = Debug|x64\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|x64.Build.0 = Debug|x64\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|Win32.ActiveCfg = Release|Win32\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|Win32.Build.0 = Release|Win32\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|x64.ActiveCfg = Release|x64\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|x64.Build.0 = Release|x64\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.All|Win32.ActiveCfg = Release|x64\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.All|x64.ActiveCfg = Release|x64\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.All|x64.Build.0 = Release|x64\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|Win32.Build.0 = Debug|Win32\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|x64.ActiveCfg = Debug|x64\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|x64.Build.0 = Debug|x64\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|Win32.ActiveCfg = Release|Win32\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|Win32.Build.0 = Release|Win32\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|x64.ActiveCfg = Release|x64\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|x64.Build.0 = Release|x64\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.All|Win32.ActiveCfg = Release|x64\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.All|x64.ActiveCfg = Release|x64\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.All|x64.Build.0 = Release|x64\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|Win32.Build.0 = Debug|Win32\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|x64.ActiveCfg = Debug|x64\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|x64.Build.0 = Debug|x64\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|Win32.ActiveCfg = Release|Win32\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|Win32.Build.0 = Release|Win32\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|x64.ActiveCfg = Release|x64\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|x64.Build.0 = Release|x64\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.All|Win32.ActiveCfg = Release|x64\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.All|x64.ActiveCfg = Release|x64\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.All|x64.Build.0 = Release|x64\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|Win32.Build.0 = Debug|Win32\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|x64.ActiveCfg = Debug|x64\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|x64.Build.0 = Debug|x64\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|Win32.ActiveCfg = Release|Win32\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|Win32.Build.0 = Release|Win32\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|x64.ActiveCfg = Release|x64\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|x64.Build.0 = Release|x64\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.All|Win32.ActiveCfg = Release|x64\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.All|x64.ActiveCfg = Release|x64\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.All|x64.Build.0 = Release|x64\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|Win32.Build.0 = Debug|Win32\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|x64.ActiveCfg = Debug|x64\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|x64.Build.0 = Debug|x64\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|Win32.ActiveCfg = Release|Win32\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|Win32.Build.0 = Release|Win32\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|x64.ActiveCfg = Release|x64\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|x64.Build.0 = Release|x64\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.All|Win32.ActiveCfg = Release|x64\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.All|x64.ActiveCfg = Release|x64\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.All|x64.Build.0 = Release|x64\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|Win32.Build.0 = Debug|Win32\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|x64.ActiveCfg = Debug|x64\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|x64.Build.0 = Debug|x64\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|Win32.ActiveCfg = Release|Win32\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|Win32.Build.0 = Release|Win32\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|x64.ActiveCfg = Release|x64\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|x64.Build.0 = Release|x64\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.All|Win32.ActiveCfg = Release|x64\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.All|x64.ActiveCfg = Release|x64\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.All|x64.Build.0 = Release|x64\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.Debug|Win32.Build.0 = Debug|Win32\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.Debug|x64.ActiveCfg = Debug|x64\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.Debug|x64.Build.0 = Debug|x64\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.Release|Win32.ActiveCfg = Release|Win32\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.Release|Win32.Build.0 = Release|Win32\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.Release|x64.ActiveCfg = Release|x64\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.Release|x64.Build.0 = Release|x64\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.All|Win32.ActiveCfg = Release|x64\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.All|x64.ActiveCfg = Release|x64\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.All|x64.Build.0 = Release|x64\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|Win32.Build.0 = Debug|Win32\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|x64.ActiveCfg = Debug|x64\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|x64.Build.0 = Debug|x64\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|Win32.ActiveCfg = Release|Win32\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|Win32.Build.0 = Release|Win32\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|x64.ActiveCfg = Release|x64\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|x64.Build.0 = Release|x64\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.All|Win32.ActiveCfg = Release|x64\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.All|x64.ActiveCfg = Release|x64\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.All|x64.Build.0 = Release|x64\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|Win32.Build.0 = Debug|Win32\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|x64.ActiveCfg = Debug|x64\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|x64.Build.0 = Debug|x64\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|Win32.ActiveCfg = Release|Win32\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|Win32.Build.0 = Release|Win32\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|x64.ActiveCfg = Release|x64\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|x64.Build.0 = Release|x64\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.All|Win32.ActiveCfg = Release|x64\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.All|x64.ActiveCfg = Release|x64\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.All|x64.Build.0 = Release|x64\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|x64.ActiveCfg = Debug|x64\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|x64.Build.0 = Debug|x64\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|Win32.Build.0 = Release|Win32\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|x64.ActiveCfg = Release|x64\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|x64.Build.0 = Release|x64\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.All|Win32.ActiveCfg = Release|x64\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.All|x64.ActiveCfg = Release|x64\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.All|x64.Build.0 = Release|x64\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|Win32.Build.0 = Debug|Win32\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|x64.ActiveCfg = Debug|x64\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|x64.Build.0 = Debug|x64\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|Win32.ActiveCfg = Release|Win32\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|Win32.Build.0 = Release|Win32\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|x64.ActiveCfg = Release|x64\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|x64.Build.0 = Release|x64\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.All|Win32.ActiveCfg = Release|x64\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.All|x64.ActiveCfg = Release|x64\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.All|x64.Build.0 = Release|x64\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|Win32.Build.0 = Debug|Win32\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|x64.ActiveCfg = Debug|x64\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|x64.Build.0 = Debug|x64\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|Win32.ActiveCfg = Release|Win32\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|Win32.Build.0 = Release|Win32\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|x64.ActiveCfg = Release|x64\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|x64.Build.0 = Release|x64\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.All|Win32.ActiveCfg = Release|x64\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.All|x64.ActiveCfg = Release|x64\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.All|x64.Build.0 = Release|x64\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|Win32.Build.0 = Debug|Win32\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|x64.ActiveCfg = Debug|x64\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|x64.Build.0 = Debug|x64\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|Win32.ActiveCfg = Release|Win32\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|Win32.Build.0 = Release|Win32\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|x64.ActiveCfg = Release|x64\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|x64.Build.0 = Release|x64\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.All|Win32.ActiveCfg = Release|x64\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.All|x64.ActiveCfg = Release|x64\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.All|x64.Build.0 = Release|x64\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|Win32.Build.0 = Debug|Win32\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|x64.ActiveCfg = Debug|x64\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|Win32.ActiveCfg = Release|Win32\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|Win32.Build.0 = Release|Win32\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|x64.ActiveCfg = Release|x64\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.All|Win32.ActiveCfg = Release|x64\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.All|x64.ActiveCfg = Release|x64\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.All|x64.Build.0 = Release|x64\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|Win32.Build.0 = Debug|Win32\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|x64.ActiveCfg = Debug|x64\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|x64.Build.0 = Debug|x64\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|Win32.ActiveCfg = Release|Win32\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|Win32.Build.0 = Release|Win32\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|x64.ActiveCfg = Release|x64\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|x64.Build.0 = Release|x64\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|Win32.ActiveCfg = Release|x64\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|x64.ActiveCfg = Release|x64\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|x64.Build.0 = Release|x64\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|x64.ActiveCfg = Debug|x64\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|x64.Build.0 = Debug|x64\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|Win32.Build.0 = Release|Win32\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|x64.ActiveCfg = Release|x64\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|x64.Build.0 = Release|x64\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|Win32.ActiveCfg = Release|x64\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|x64.ActiveCfg = Release|x64\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|x64.Build.0 = Release|x64\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|Win32.Build.0 = Debug|Win32\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|x64.ActiveCfg = Debug|x64\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|x64.Build.0 = Debug|x64\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|Win32.ActiveCfg = Release|Win32\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|Win32.Build.0 = Release|Win32\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|x64.ActiveCfg = Release|x64\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|x64.Build.0 = Release|x64\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|Win32.ActiveCfg = Debug|x64\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|x64.ActiveCfg = Debug|x64\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|x64.Build.0 = Debug|x64\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|Win32.Build.0 = Debug|Win32\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|x64.ActiveCfg = Debug|x64\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|x64.Build.0 = Debug|x64\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Win32.ActiveCfg = Release|Win32\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Win32.Build.0 = Release|Win32\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x64.ActiveCfg = Release|x64\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x64.Build.0 = Release|x64\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.All|Win32.ActiveCfg = Release|x64\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.All|x64.ActiveCfg = Release|x64\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.All|x64.Build.0 = Release|x64\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|Win32.Build.0 = Debug|Win32\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|x64.ActiveCfg = Debug|x64\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|x64.Build.0 = Debug|x64\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.Release|Win32.ActiveCfg = Release|Win32\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.Release|Win32.Build.0 = Release|Win32\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.Release|x64.ActiveCfg = Release|x64\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.Release|x64.Build.0 = Release|x64\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|Win32.ActiveCfg = Release|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|Win32.Build.0 = Release|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|x64.ActiveCfg = Release|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|x64.Build.0 = Release|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|Win32.Build.0 = Debug|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|x64.Build.0 = Debug|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|Win32.ActiveCfg = Release|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|Win32.Build.0 = Release|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|x64.ActiveCfg = Release|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|x64.Build.0 = Release|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.All|Win32.ActiveCfg = Release|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.All|Win32.Build.0 = Release|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.All|x64.ActiveCfg = Release|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.All|x64.Build.0 = Release|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.Debug|Win32.Build.0 = Debug|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.Debug|x64.Build.0 = Debug|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.Release|Win32.ActiveCfg = Release|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.Release|Win32.Build.0 = Release|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.Release|x64.ActiveCfg = Release|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.Release|x64.Build.0 = Release|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|Win32.ActiveCfg = Release|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|Win32.Build.0 = Release|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|x64.ActiveCfg = Release|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|x64.Build.0 = Release|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|Win32.Build.0 = Debug|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|x64.Build.0 = Debug|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|Win32.ActiveCfg = Release|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|Win32.Build.0 = Release|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|x64.ActiveCfg = Release|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|x64.Build.0 = Release|Win32\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.All|Win32.ActiveCfg = Debug|x64\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.All|x64.ActiveCfg = Debug|x64\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.All|x64.Build.0 = Debug|x64\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|Win32.Build.0 = Debug|Win32\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|x64.ActiveCfg = Debug|x64\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|x64.Build.0 = Debug|x64\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|Win32.ActiveCfg = Release|Win32\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|Win32.Build.0 = Release|Win32\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|x64.ActiveCfg = Release|x64\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|x64.Build.0 = Release|x64\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.All|Win32.ActiveCfg = Debug|x64\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.All|x64.ActiveCfg = Debug|x64\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.All|x64.Build.0 = Debug|x64\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.Debug|Win32.Build.0 = Debug|Win32\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.Debug|x64.ActiveCfg = Debug|x64\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.Debug|x64.Build.0 = Debug|x64\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.Release|Win32.ActiveCfg = Release|Win32\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.Release|Win32.Build.0 = Release|Win32\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.Release|x64.ActiveCfg = Release|x64\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.Release|x64.Build.0 = Release|x64\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.All|Win32.ActiveCfg = Release|x64\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.All|x64.ActiveCfg = Release|x64\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.All|x64.Build.0 = Release|x64\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|Win32.Build.0 = Debug|Win32\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|x64.ActiveCfg = Debug|x64\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|x64.Build.0 = Debug|x64\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|Win32.ActiveCfg = Release|Win32\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|Win32.Build.0 = Release|Win32\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|x64.ActiveCfg = Release|x64\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|x64.Build.0 = Release|x64\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|Win32.ActiveCfg = Release|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|Win32.Build.0 = Release|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|x64.ActiveCfg = Release|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|x64.Build.0 = Release|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|Win32.Build.0 = Debug|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|x64.Build.0 = Debug|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|Win32.ActiveCfg = Release|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|Win32.Build.0 = Release|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|x64.ActiveCfg = Release|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|x64.Build.0 = Release|Win32\r
+- {87A1FE3D-F410-4C8E-9591-8C625985BC70}.All|Win32.ActiveCfg = Release|Win32\r
+- {87A1FE3D-F410-4C8E-9591-8C625985BC70}.All|x64.ActiveCfg = Release|Win32\r
+- {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release|Win32.ActiveCfg = Release|Win32\r
+- {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release|x64.ActiveCfg = Release|Win32\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|Win32.ActiveCfg = Release|Win32\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|Win32.Build.0 = Release|Win32\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|x64.ActiveCfg = Release|Win32\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|x64.Build.0 = Release|Win32\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|Win32.Build.0 = Debug|Win32\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|x64.ActiveCfg = Debug|x64\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|x64.Build.0 = Debug|x64\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|Win32.ActiveCfg = Release|Win32\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|Win32.Build.0 = Release|Win32\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|x64.ActiveCfg = Release|x64\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|x64.Build.0 = Release|x64\r
+- {7EB71250-F002-4ED8-92CA-CA218114537A}.All|Win32.ActiveCfg = Release|Win32\r
+- {7EB71250-F002-4ED8-92CA-CA218114537A}.All|x64.ActiveCfg = Release|Win32\r
+- {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|x64.ActiveCfg = Debug|x64\r
+- {7EB71250-F002-4ED8-92CA-CA218114537A}.Release|Win32.ActiveCfg = Release|Win32\r
+- {7EB71250-F002-4ED8-92CA-CA218114537A}.Release|x64.ActiveCfg = Release|x64\r
+- {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.All|Win32.ActiveCfg = Release|Win32\r
+- {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.All|x64.ActiveCfg = Release|Win32\r
+- {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release|Win32.ActiveCfg = Release|Win32\r
+- {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release|x64.ActiveCfg = Release|Win32\r
+- {464AAB78-5489-4916-BE51-BF8D61822311}.All|Win32.ActiveCfg = Release|Win32\r
+- {464AAB78-5489-4916-BE51-BF8D61822311}.All|x64.ActiveCfg = Release|Win32\r
+- {464AAB78-5489-4916-BE51-BF8D61822311}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {464AAB78-5489-4916-BE51-BF8D61822311}.Debug|x64.ActiveCfg = Debug|x64\r
+- {464AAB78-5489-4916-BE51-BF8D61822311}.Release|Win32.ActiveCfg = Release|Win32\r
+- {464AAB78-5489-4916-BE51-BF8D61822311}.Release|x64.ActiveCfg = Release|x64\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.All|Win32.ActiveCfg = Release|x64\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.All|x64.ActiveCfg = Release|x64\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.All|x64.Build.0 = Release|x64\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|Win32.Build.0 = Debug|Win32\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|x64.ActiveCfg = Debug|x64\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|x64.Build.0 = Debug|x64\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.Release|Win32.ActiveCfg = Release|Win32\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.Release|Win32.Build.0 = Release|Win32\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.Release|x64.ActiveCfg = Release|x64\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.Release|x64.Build.0 = Release|x64\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593}.All|Win32.ActiveCfg = Release Static|x64\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593}.All|x64.ActiveCfg = Release Static|x64\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593}.All|x64.Build.0 = Release Static|x64\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|x64.ActiveCfg = Debug|x64\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|Win32.ActiveCfg = Release|Win32\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|x64.ActiveCfg = Release|x64\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|Win32.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|Win32.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|x64.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|x64.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|x64.Build.0 = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|Win32.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|x64.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|x64.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|Win32.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|Win32.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|x64.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|x64.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|x64.Build.0 = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|Win32.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|x64.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|x64.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|Win32.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|Win32.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|x64.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|x64.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|x64.Build.0 = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|Win32.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|x64.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|x64.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|Win32.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|Win32.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|x64.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|x64.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|x64.Build.0 = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|Win32.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|x64.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|x64.Build.0 = Release|Win32\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.All|Win32.ActiveCfg = Debug|x64\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.All|x64.ActiveCfg = Debug|x64\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.All|x64.Build.0 = Debug|x64\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|Win32.Build.0 = Debug|Win32\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|x64.ActiveCfg = Debug|x64\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|x64.Build.0 = Debug|x64\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|Win32.ActiveCfg = Release|Win32\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|Win32.Build.0 = Release|Win32\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|x64.ActiveCfg = Release|x64\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|x64.Build.0 = Release|x64\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.All|Win32.ActiveCfg = Debug|x64\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.All|x64.ActiveCfg = Debug|x64\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.All|x64.Build.0 = Debug|x64\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|x64.ActiveCfg = Debug|x64\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|x64.Build.0 = Debug|x64\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|Win32.Build.0 = Release|Win32\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|x64.ActiveCfg = Release|x64\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|x64.Build.0 = Release|x64\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.All|Win32.ActiveCfg = Release|x64\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.All|x64.ActiveCfg = Release|x64\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.All|x64.Build.0 = Release|x64\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|Win32.Build.0 = Debug|Win32\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|x64.ActiveCfg = Debug|x64\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|x64.Build.0 = Debug|x64\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|Win32.ActiveCfg = Release|Win32\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|Win32.Build.0 = Release|Win32\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|x64.ActiveCfg = Release|x64\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|x64.Build.0 = Release|x64\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.All|Win32.ActiveCfg = Debug|x64\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.All|x64.ActiveCfg = Debug|x64\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.All|x64.Build.0 = Debug|x64\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|Win32.Build.0 = Debug|Win32\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|x64.ActiveCfg = Debug|x64\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|x64.Build.0 = Debug|x64\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|Win32.ActiveCfg = Release|Win32\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|Win32.Build.0 = Release|Win32\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|x64.ActiveCfg = Release|x64\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|x64.Build.0 = Release|x64\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.All|Win32.ActiveCfg = Release|x64\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.All|x64.ActiveCfg = Release|x64\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.All|x64.Build.0 = Release|x64\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|Win32.Build.0 = Debug|Win32\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|x64.ActiveCfg = Debug|x64\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|x64.Build.0 = Debug|x64\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Win32.ActiveCfg = Release|Win32\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Win32.Build.0 = Release|Win32\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|x64.ActiveCfg = Release|x64\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|x64.Build.0 = Release|x64\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.All|Win32.ActiveCfg = Release|x64\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.All|x64.ActiveCfg = Release|x64\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.All|x64.Build.0 = Release|x64\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|Win32.Build.0 = Debug|Win32\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|x64.ActiveCfg = Debug|x64\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|x64.Build.0 = Debug|x64\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|Win32.ActiveCfg = Release|Win32\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|Win32.Build.0 = Release|Win32\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|x64.ActiveCfg = Release|x64\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|x64.Build.0 = Release|x64\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.All|Win32.ActiveCfg = Release_Mono|x64\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.All|x64.ActiveCfg = Release_Mono|x64\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.All|x64.Build.0 = Release_Mono|x64\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|Win32.ActiveCfg = Debug_CLR|Win32\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|Win32.Build.0 = Debug_CLR|Win32\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|x64.ActiveCfg = Debug_CLR|x64\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|x64.Build.0 = Debug_CLR|x64\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|Win32.ActiveCfg = Release_CLR|Win32\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|Win32.Build.0 = Release_CLR|Win32\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|x64.ActiveCfg = Release_CLR|x64\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|x64.Build.0 = Release_CLR|x64\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.All|Win32.ActiveCfg = Release|Any CPU\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.All|x64.ActiveCfg = Release|Any CPU\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|Win32.ActiveCfg = Debug|Any CPU\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|Win32.Build.0 = Debug|Any CPU\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|x64.ActiveCfg = Debug|x64\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|x64.Build.0 = Debug|x64\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|Win32.ActiveCfg = Release|Any CPU\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|Win32.Build.0 = Release|Any CPU\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|x64.ActiveCfg = Release|x64\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|x64.Build.0 = Release|x64\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.All|Win32.ActiveCfg = Release|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.All|Win32.Build.0 = Release|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.All|x64.ActiveCfg = Release|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.All|x64.Build.0 = Release|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.Debug|Win32.Build.0 = Debug|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.Debug|x64.Build.0 = Debug|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.Release|Win32.ActiveCfg = Release|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.Release|Win32.Build.0 = Release|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.Release|x64.ActiveCfg = Release|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.Release|x64.Build.0 = Release|Win32\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.All|Win32.ActiveCfg = Release|x64\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.All|x64.ActiveCfg = Release|x64\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.All|x64.Build.0 = Release|x64\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|Win32.Build.0 = Debug|Win32\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|x64.ActiveCfg = Debug|x64\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|x64.Build.0 = Debug|x64\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.Release|Win32.ActiveCfg = Release|Win32\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.Release|Win32.Build.0 = Release|Win32\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.Release|x64.ActiveCfg = Release|x64\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.Release|x64.Build.0 = Release|x64\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.All|Win32.ActiveCfg = Release|x64\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.All|x64.ActiveCfg = Release|x64\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.All|x64.Build.0 = Release|x64\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|Win32.Build.0 = Debug|Win32\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|x64.ActiveCfg = Debug|x64\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|x64.Build.0 = Debug|x64\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|Win32.ActiveCfg = Release|Win32\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|Win32.Build.0 = Release|Win32\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|x64.ActiveCfg = Release|x64\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|x64.Build.0 = Release|x64\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.All|Win32.ActiveCfg = Release|x64\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.All|x64.ActiveCfg = Release|x64\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.All|x64.Build.0 = Release|x64\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|Win32.Build.0 = Debug|Win32\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|x64.ActiveCfg = Debug|x64\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|x64.Build.0 = Debug|x64\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|Win32.ActiveCfg = Release|Win32\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|Win32.Build.0 = Release|Win32\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|x64.ActiveCfg = Release|x64\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|x64.Build.0 = Release|x64\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.All|Win32.ActiveCfg = Release|x64\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.All|x64.ActiveCfg = Release|x64\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.All|x64.Build.0 = Release|x64\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|Win32.Build.0 = Debug|Win32\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|x64.ActiveCfg = Debug|x64\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|x64.Build.0 = Debug|x64\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|Win32.ActiveCfg = Release|Win32\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|Win32.Build.0 = Release|Win32\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|x64.ActiveCfg = Release|x64\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|x64.Build.0 = Release|x64\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.All|Win32.ActiveCfg = Release|x64\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.All|x64.ActiveCfg = Release|x64\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.All|x64.Build.0 = Release|x64\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|Win32.Build.0 = Debug|Win32\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|x64.ActiveCfg = Debug|x64\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|x64.Build.0 = Debug|x64\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|Win32.ActiveCfg = Release|Win32\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|Win32.Build.0 = Release|Win32\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|x64.ActiveCfg = Release|x64\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|x64.Build.0 = Release|x64\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.All|Win32.ActiveCfg = Release|x64\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.All|x64.ActiveCfg = Release|x64\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.All|x64.Build.0 = Release|x64\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|Win32.Build.0 = Debug|Win32\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|x64.ActiveCfg = Debug|x64\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|x64.Build.0 = Debug|x64\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|Win32.ActiveCfg = Release|Win32\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|Win32.Build.0 = Release|Win32\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|x64.ActiveCfg = Release|x64\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|x64.Build.0 = Release|x64\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.All|Win32.ActiveCfg = Release|x64\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.All|x64.ActiveCfg = Release|x64\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.All|x64.Build.0 = Release|x64\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|x64.ActiveCfg = Debug|x64\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|x64.Build.0 = Debug|x64\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|Win32.Build.0 = Release|Win32\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|x64.ActiveCfg = Release|x64\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|x64.Build.0 = Release|x64\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.All|Win32.ActiveCfg = Release|x64\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.All|x64.ActiveCfg = Release|x64\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.All|x64.Build.0 = Release|x64\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|Win32.Build.0 = Debug|Win32\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|x64.ActiveCfg = Debug|x64\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|x64.Build.0 = Debug|x64\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|Win32.ActiveCfg = Release|Win32\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|Win32.Build.0 = Release|Win32\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|x64.ActiveCfg = Release|x64\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|x64.Build.0 = Release|x64\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.All|Win32.ActiveCfg = Release|x64\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.All|x64.ActiveCfg = Release|x64\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.All|x64.Build.0 = Release|x64\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|Win32.Build.0 = Debug|Win32\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|x64.ActiveCfg = Debug|x64\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|x64.Build.0 = Debug|x64\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|Win32.ActiveCfg = Release|Win32\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|Win32.Build.0 = Release|Win32\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|x64.ActiveCfg = Release|x64\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|x64.Build.0 = Release|x64\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.All|Win32.ActiveCfg = Release|x64\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.All|x64.ActiveCfg = Release|x64\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.All|x64.Build.0 = Release|x64\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|Win32.Build.0 = Debug|Win32\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|x64.ActiveCfg = Debug|x64\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|x64.Build.0 = Debug|x64\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|Win32.ActiveCfg = Release|Win32\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|Win32.Build.0 = Release|Win32\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|x64.ActiveCfg = Release|x64\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|x64.Build.0 = Release|x64\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.All|Win32.ActiveCfg = Release|x64\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.All|x64.ActiveCfg = Release|x64\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.All|x64.Build.0 = Release|x64\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|Win32.Build.0 = Debug|Win32\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|x64.ActiveCfg = Debug|x64\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|x64.Build.0 = Debug|x64\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|Win32.ActiveCfg = Release|Win32\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|Win32.Build.0 = Release|Win32\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|x64.ActiveCfg = Release|x64\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|x64.Build.0 = Release|x64\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.All|Win32.ActiveCfg = Release_WM5_PPC_ARM|x64\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.All|x64.ActiveCfg = Release_WM5_PPC_ARM|x64\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.All|x64.Build.0 = Release_WM5_PPC_ARM|x64\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Debug|Win32.Build.0 = Debug|Win32\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Debug|x64.ActiveCfg = Debug|x64\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Debug|x64.Build.0 = Debug|x64\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Release|Win32.ActiveCfg = Release|Win32\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Release|Win32.Build.0 = Release|Win32\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Release|x64.ActiveCfg = Release|x64\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Release|x64.Build.0 = Release|x64\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.All|Win32.ActiveCfg = Release_Static_SSE|x64\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.All|x64.ActiveCfg = Release_Static_SSE|x64\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.All|x64.Build.0 = Release_Static_SSE|x64\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Debug|Win32.Build.0 = Debug|Win32\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Debug|x64.ActiveCfg = Debug|x64\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Debug|x64.Build.0 = Debug|x64\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Release|Win32.ActiveCfg = Release|Win32\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Release|Win32.Build.0 = Release|Win32\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Release|x64.ActiveCfg = Release|x64\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Release|x64.Build.0 = Release|x64\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.All|Win32.ActiveCfg = Release|x64\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.All|x64.ActiveCfg = Release|x64\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.All|x64.Build.0 = Release|x64\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Debug|Win32.Build.0 = Debug|Win32\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Debug|x64.ActiveCfg = Debug|x64\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Debug|x64.Build.0 = Debug|x64\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Release|Win32.ActiveCfg = Release|Win32\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Release|Win32.Build.0 = Release|Win32\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Release|x64.ActiveCfg = Release|x64\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Release|x64.Build.0 = Release|x64\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.All|Win32.ActiveCfg = Release|x64\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.All|x64.ActiveCfg = Release|x64\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.All|x64.Build.0 = Release|x64\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.Debug|x64.ActiveCfg = Debug|x64\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.Debug|x64.Build.0 = Debug|x64\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.Release|Win32.Build.0 = Release|Win32\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.Release|x64.ActiveCfg = Release|x64\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.Release|x64.Build.0 = Release|x64\r
+- {05C9FB27-480E-4D53-B3B7-6338E2526666}.All|Win32.ActiveCfg = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-6338E2526666}.All|Win32.Build.0 = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-6338E2526666}.All|x64.ActiveCfg = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-6338E2526666}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {05C9FB27-480E-4D53-B3B7-6338E2526666}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {05C9FB27-480E-4D53-B3B7-6338E2526666}.Release|Win32.ActiveCfg = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-6338E2526666}.Release|x64.ActiveCfg = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-7338E2514666}.All|Win32.ActiveCfg = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-7338E2514666}.All|Win32.Build.0 = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-7338E2514666}.All|x64.ActiveCfg = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-7338E2514666}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {05C9FB27-480E-4D53-B3B7-7338E2514666}.Debug|x64.ActiveCfg = Debug|x64\r
+- {05C9FB27-480E-4D53-B3B7-7338E2514666}.Release|Win32.ActiveCfg = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-7338E2514666}.Release|x64.ActiveCfg = Release|Win32\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.All|Win32.ActiveCfg = All|Win32\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.All|Win32.Build.0 = All|Win32\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.All|x64.ActiveCfg = All|Win32\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Debug|x64.ActiveCfg = Debug|x64\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Release|Win32.ActiveCfg = Release|Win32\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Release|x64.ActiveCfg = Release|x64\r
+- {CC1DD008-9406-448D-A0AD-33C3186CFADB}.All|Win32.ActiveCfg = Release|Win32\r
+- {CC1DD008-9406-448D-A0AD-33C3186CFADB}.All|x64.ActiveCfg = Release|Win32\r
+- {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Debug|x64.ActiveCfg = Debug|x64\r
+- {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Release|Win32.ActiveCfg = Release|Win32\r
+- {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Release|x64.ActiveCfg = Release|x64\r
+- {48414740-C693-4968-9846-EE058020C64F}.All|Win32.ActiveCfg = Release|Win32\r
+- {48414740-C693-4968-9846-EE058020C64F}.All|x64.ActiveCfg = Release|Win32\r
+- {48414740-C693-4968-9846-EE058020C64F}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {48414740-C693-4968-9846-EE058020C64F}.Debug|x64.ActiveCfg = Debug|x64\r
+- {48414740-C693-4968-9846-EE058020C64F}.Release|Win32.ActiveCfg = Release|Win32\r
+- {48414740-C693-4968-9846-EE058020C64F}.Release|x64.ActiveCfg = Release|x64\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.All|Win32.ActiveCfg = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.All|Win32.Build.0 = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.All|x64.ActiveCfg = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Debug|Win32.ActiveCfg = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Debug|Win32.Build.0 = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Debug|x64.ActiveCfg = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Debug|x64.Build.0 = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Release|Win32.ActiveCfg = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Release|Win32.Build.0 = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Release|x64.ActiveCfg = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Release|x64.Build.0 = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.All|Win32.ActiveCfg = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.All|Win32.Build.0 = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.All|x64.ActiveCfg = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Debug|Win32.ActiveCfg = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Debug|Win32.Build.0 = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Debug|x64.ActiveCfg = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Debug|x64.Build.0 = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Release|Win32.ActiveCfg = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Release|Win32.Build.0 = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Release|x64.ActiveCfg = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Release|x64.Build.0 = All|Win32\r
+- {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.All|Win32.ActiveCfg = Release|x64\r
+- {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.All|x64.ActiveCfg = Release|x64\r
+- {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.All|x64.Build.0 = Release|x64\r
+- {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Debug|x64.ActiveCfg = Debug|x64\r
+- {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Release|Win32.ActiveCfg = Release|Win32\r
+- {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Release|x64.ActiveCfg = Release|x64\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.All|Win32.ActiveCfg = Release|Win32\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.All|Win32.Build.0 = Release|Win32\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.All|x64.ActiveCfg = Release|Win32\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Release|Win32.ActiveCfg = Release|Win32\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Release|x64.ActiveCfg = Release|Win32\r
+- {1F0A8A77-E661-418F-BB92-82172AE43803}.All|Win32.ActiveCfg = Release|Win32\r
+- {1F0A8A77-E661-418F-BB92-82172AE43803}.All|x64.ActiveCfg = Release|Win32\r
+- {1F0A8A77-E661-418F-BB92-82172AE43803}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {1F0A8A77-E661-418F-BB92-82172AE43803}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {1F0A8A77-E661-418F-BB92-82172AE43803}.Release|Win32.ActiveCfg = Release|Win32\r
+- {1F0A8A77-E661-418F-BB92-82172AE43803}.Release|x64.ActiveCfg = Release|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|Win32.ActiveCfg = Release|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|Win32.Build.0 = Release|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|x64.ActiveCfg = Release|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|x64.Build.0 = Release|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.Debug|Win32.Build.0 = Debug|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.Debug|x64.Build.0 = Debug|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.Release|Win32.ActiveCfg = Release|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.Release|Win32.Build.0 = Release|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.Release|x64.ActiveCfg = Release|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.Release|x64.Build.0 = Release|Win32\r
+- {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.All|Win32.ActiveCfg = Release|Win32\r
+- {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.All|x64.ActiveCfg = Release|Win32\r
+- {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Release|Win32.ActiveCfg = Release|Win32\r
+- {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Release|x64.ActiveCfg = Release|Win32\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|Win32.ActiveCfg = Release|Win32\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|Win32.Build.0 = Release|Win32\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|x64.ActiveCfg = Release|Win32\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|x64.Build.0 = Release|Win32\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|x64.ActiveCfg = Debug|x64\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|x64.Build.0 = Debug|x64\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|Win32.Build.0 = Release|Win32\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|x64.ActiveCfg = Release|x64\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|x64.Build.0 = Release|x64\r
+- {BA599D0A-4310-4505-91DA-6A6447B3E289}.All|Win32.ActiveCfg = Release|Win32\r
+- {BA599D0A-4310-4505-91DA-6A6447B3E289}.All|x64.ActiveCfg = Release|Win32\r
+- {BA599D0A-4310-4505-91DA-6A6447B3E289}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {BA599D0A-4310-4505-91DA-6A6447B3E289}.Debug|x64.ActiveCfg = Debug|x64\r
+- {BA599D0A-4310-4505-91DA-6A6447B3E289}.Release|Win32.ActiveCfg = Release|Win32\r
+- {BA599D0A-4310-4505-91DA-6A6447B3E289}.Release|x64.ActiveCfg = Release|x64\r
+- {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.All|Win32.ActiveCfg = Release|Win32\r
+- {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.All|x64.ActiveCfg = Release|Win32\r
+- {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Debug|x64.ActiveCfg = Debug|x64\r
+- {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Release|Win32.ActiveCfg = Release|Win32\r
+- {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Release|x64.ActiveCfg = Release|x64\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.All|Win32.ActiveCfg = Release|x64\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.All|x64.ActiveCfg = Release|x64\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.All|x64.Build.0 = Release|x64\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Debug|Win32.Build.0 = Debug|Win32\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Debug|x64.ActiveCfg = Debug|x64\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Debug|x64.Build.0 = Debug|x64\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Release|Win32.ActiveCfg = Release|Win32\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Release|Win32.Build.0 = Release|Win32\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Release|x64.ActiveCfg = Release|x64\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Release|x64.Build.0 = Release|x64\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|Win32.ActiveCfg = Release|x64\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|Win32.Build.0 = Release|x64\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|x64.ActiveCfg = Release|x64\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|x64.Build.0 = Release|x64\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Debug|Win32.Build.0 = Debug|Win32\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Debug|x64.ActiveCfg = Debug|x64\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Debug|x64.Build.0 = Debug|x64\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Release|Win32.ActiveCfg = Release|Win32\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Release|Win32.Build.0 = Release|Win32\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Release|x64.ActiveCfg = Release|x64\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Release|x64.Build.0 = Release|x64\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.All|Win32.ActiveCfg = Release|x64\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.All|x64.ActiveCfg = Release|x64\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.Debug|Win32.Build.0 = Debug|Win32\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.Debug|x64.ActiveCfg = Debug|x64\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.Debug|x64.Build.0 = Debug|x64\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|Win32.ActiveCfg = Release|Win32\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|Win32.Build.0 = Release|Win32\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|x64.ActiveCfg = Release|x64\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|x64.Build.0 = Release|x64\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.All|Win32.ActiveCfg = Release|Win32\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.All|Win32.Build.0 = Release|Win32\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.All|x64.ActiveCfg = Release|Win32\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Win32.Build.0 = Debug|Win32\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|x64.ActiveCfg = Debug|x64\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|x64.Build.0 = Debug|x64\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Win32.ActiveCfg = Release|Win32\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Win32.Build.0 = Release|Win32\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|x64.ActiveCfg = Release|x64\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|x64.Build.0 = Release|x64\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.All|Win32.ActiveCfg = Release|x64\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.All|x64.ActiveCfg = Release|x64\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.All|x64.Build.0 = Release|x64\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Debug|x64.ActiveCfg = Debug|x64\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Debug|x64.Build.0 = Debug|x64\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|Win32.Build.0 = Release|Win32\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|x64.ActiveCfg = Release|x64\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|x64.Build.0 = Release|x64\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.All|Win32.ActiveCfg = Release|Win32\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.All|Win32.Build.0 = Release|Win32\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.All|x64.ActiveCfg = Release|Win32\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Win32.Build.0 = Debug|Win32\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|x64.ActiveCfg = Debug|x64\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|x64.Build.0 = Debug|x64\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Win32.ActiveCfg = Release|Win32\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Win32.Build.0 = Release|Win32\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|x64.ActiveCfg = Release|x64\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|x64.Build.0 = Release|x64\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.All|Win32.ActiveCfg = Release|Win32\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.All|Win32.Build.0 = Release|Win32\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.All|x64.ActiveCfg = Release|Win32\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|Win32.Build.0 = Debug|Win32\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|x64.ActiveCfg = Debug|x64\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|x64.Build.0 = Debug|x64\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|Win32.ActiveCfg = Release|Win32\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|Win32.Build.0 = Release|Win32\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|x64.ActiveCfg = Release|x64\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|x64.Build.0 = Release|x64\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.All|Win32.ActiveCfg = Release|Win32\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.All|Win32.Build.0 = Release|Win32\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.All|x64.ActiveCfg = Release|Win32\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|Win32.Build.0 = Debug|Win32\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|x64.ActiveCfg = Debug|x64\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|x64.Build.0 = Debug|x64\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|Win32.ActiveCfg = Release|Win32\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|Win32.Build.0 = Release|Win32\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|x64.ActiveCfg = Release|x64\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|x64.Build.0 = Release|x64\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.All|Win32.ActiveCfg = Release|Win32\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.All|Win32.Build.0 = Release|Win32\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.All|x64.ActiveCfg = Release|Win32\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|Win32.Build.0 = Debug|Win32\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|x64.ActiveCfg = Debug|x64\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|x64.Build.0 = Debug|x64\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|Win32.ActiveCfg = Release|Win32\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|Win32.Build.0 = Release|Win32\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|x64.ActiveCfg = Release|x64\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|x64.Build.0 = Release|x64\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.All|Win32.ActiveCfg = Release|Win32\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.All|Win32.Build.0 = Release|Win32\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.All|x64.ActiveCfg = Release|Win32\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|Win32.Build.0 = Debug|Win32\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|x64.ActiveCfg = Debug|x64\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|x64.Build.0 = Debug|x64\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|Win32.ActiveCfg = Release|Win32\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|Win32.Build.0 = Release|Win32\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|x64.ActiveCfg = Release|x64\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|x64.Build.0 = Release|x64\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.All|Win32.ActiveCfg = Release|Win32\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.All|Win32.Build.0 = Release|Win32\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.All|x64.ActiveCfg = Release|Win32\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|Win32.Build.0 = Debug|Win32\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|x64.ActiveCfg = Debug|x64\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|x64.Build.0 = Debug|x64\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|Win32.ActiveCfg = Release|Win32\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|Win32.Build.0 = Release|Win32\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|x64.ActiveCfg = Release|x64\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|x64.Build.0 = Release|x64\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.All|Win32.ActiveCfg = Release|Win32\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.All|Win32.Build.0 = Release|Win32\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.All|x64.ActiveCfg = Release|Win32\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|Win32.Build.0 = Debug|Win32\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|x64.ActiveCfg = Debug|x64\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|x64.Build.0 = Debug|x64\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|Win32.ActiveCfg = Release|Win32\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|Win32.Build.0 = Release|Win32\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|x64.ActiveCfg = Release|x64\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|x64.Build.0 = Release|x64\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.All|Win32.ActiveCfg = Release|Win32\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.All|Win32.Build.0 = Release|Win32\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.All|x64.ActiveCfg = Release|Win32\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|Win32.Build.0 = Debug|Win32\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|x64.ActiveCfg = Debug|x64\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|x64.Build.0 = Debug|x64\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|Win32.ActiveCfg = Release|Win32\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|Win32.Build.0 = Release|Win32\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|x64.ActiveCfg = Release|x64\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|x64.Build.0 = Release|x64\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.All|Win32.ActiveCfg = Release|Win32\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.All|Win32.Build.0 = Release|Win32\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.All|x64.ActiveCfg = Release|Win32\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|Win32.Build.0 = Debug|Win32\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|x64.ActiveCfg = Debug|x64\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|x64.Build.0 = Debug|x64\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|Win32.ActiveCfg = Release|Win32\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|Win32.Build.0 = Release|Win32\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|x64.ActiveCfg = Release|x64\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|x64.Build.0 = Release|x64\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.All|Win32.ActiveCfg = Release|x64\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.All|x64.ActiveCfg = Release|x64\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.All|x64.Build.0 = Release|x64\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|x64.ActiveCfg = Debug|x64\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|x64.Build.0 = Debug|x64\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|Win32.Build.0 = Release|Win32\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|x64.ActiveCfg = Release|x64\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|x64.Build.0 = Release|x64\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.All|Win32.ActiveCfg = Release|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.All|Win32.Build.0 = Release|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.All|x64.ActiveCfg = Release|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Debug|Win32.Build.0 = Debug|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Debug|x64.Build.0 = Debug|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Release|Win32.ActiveCfg = Release|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Release|Win32.Build.0 = Release|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Release|x64.ActiveCfg = Release|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Release|x64.Build.0 = Release|Win32\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.All|Win32.ActiveCfg = Release|x64\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.All|x64.ActiveCfg = Release|x64\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.All|x64.Build.0 = Release|x64\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Debug|Win32.Build.0 = Debug|Win32\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Debug|x64.ActiveCfg = Debug|x64\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Debug|x64.Build.0 = Debug|x64\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Release|Win32.ActiveCfg = Release|Win32\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Release|Win32.Build.0 = Release|Win32\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Release|x64.ActiveCfg = Release|x64\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Release|x64.Build.0 = Release|x64\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.All|Win32.ActiveCfg = Release Passthrough|x64\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.All|x64.ActiveCfg = Release Passthrough|x64\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.All|x64.Build.0 = Release Passthrough|x64\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Debug|Win32.Build.0 = Debug|Win32\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Debug|x64.ActiveCfg = Debug|x64\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Debug|x64.Build.0 = Debug|x64\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Release|Win32.ActiveCfg = Release|Win32\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Release|Win32.Build.0 = Release|Win32\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Release|x64.ActiveCfg = Release|x64\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Release|x64.Build.0 = Release|x64\r
+- {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.All|Win32.ActiveCfg = Release|Win32\r
+- {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.All|Win32.Build.0 = Release|Win32\r
+- {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.All|x64.ActiveCfg = Release|Win32\r
+- {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Release|Win32.ActiveCfg = Release|Win32\r
+- {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Release|x64.ActiveCfg = Release|Win32\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.All|Win32.ActiveCfg = Release|x64\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.All|x64.ActiveCfg = Release|x64\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.All|x64.Build.0 = Release|x64\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|Win32.Build.0 = Debug|Win32\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|x64.ActiveCfg = Debug|x64\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|x64.Build.0 = Debug|x64\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|Win32.ActiveCfg = Release|Win32\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|Win32.Build.0 = Release|Win32\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|x64.ActiveCfg = Release|x64\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|x64.Build.0 = Release|x64\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.All|Win32.ActiveCfg = Release|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.All|Win32.Build.0 = Release|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.All|x64.ActiveCfg = Release|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|Win32.Build.0 = Debug|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|x64.Build.0 = Debug|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|Win32.ActiveCfg = Release|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|Win32.Build.0 = Release|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|x64.ActiveCfg = Release|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|x64.Build.0 = Release|Win32\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.All|Win32.ActiveCfg = Release|x64\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.All|x64.ActiveCfg = Release|x64\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.All|x64.Build.0 = Release|x64\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|Win32.Build.0 = Debug|Win32\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|x64.ActiveCfg = Debug|x64\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|x64.Build.0 = Debug|x64\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|Win32.ActiveCfg = Release|Win32\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|Win32.Build.0 = Release|Win32\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|x64.ActiveCfg = Release|x64\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|x64.Build.0 = Release|x64\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.All|Win32.ActiveCfg = Release|x64\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.All|x64.ActiveCfg = Release|x64\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.All|x64.Build.0 = Release|x64\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Debug|Win32.Build.0 = Debug|Win32\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Debug|x64.ActiveCfg = Debug|x64\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Debug|x64.Build.0 = Debug|x64\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Release|Win32.ActiveCfg = Release|Win32\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Release|Win32.Build.0 = Release|Win32\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Release|x64.ActiveCfg = Release|x64\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Release|x64.Build.0 = Release|x64\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.All|Win32.ActiveCfg = Release|Win32\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.All|Win32.Build.0 = Release|Win32\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.All|x64.ActiveCfg = Release|Win32\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Debug|Win32.Build.0 = Debug|Win32\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Debug|x64.ActiveCfg = Debug|x64\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Debug|x64.Build.0 = Debug|x64\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Release|Win32.ActiveCfg = Release|Win32\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Release|Win32.Build.0 = Release|Win32\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Release|x64.ActiveCfg = Release|x64\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Release|x64.Build.0 = Release|x64\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.All|Win32.ActiveCfg = Release|Win32\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.All|Win32.Build.0 = Release|Win32\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.All|x64.ActiveCfg = Release|Win32\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Debug|Win32.Build.0 = Debug|Win32\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Debug|x64.ActiveCfg = Debug|x64\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Debug|x64.Build.0 = Debug|x64\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Release|Win32.ActiveCfg = Release|Win32\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Release|Win32.Build.0 = Release|Win32\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Release|x64.ActiveCfg = Release|x64\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Release|x64.Build.0 = Release|x64\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.All|Win32.ActiveCfg = Release|x64\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.All|x64.ActiveCfg = Release|x64\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.All|x64.Build.0 = Release|x64\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Debug|Win32.Build.0 = Debug|Win32\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Debug|x64.ActiveCfg = Debug|x64\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Debug|x64.Build.0 = Debug|x64\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Release|Win32.ActiveCfg = Release|Win32\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Release|Win32.Build.0 = Release|Win32\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Release|x64.ActiveCfg = Release|x64\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Release|x64.Build.0 = Release|x64\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.All|Win32.ActiveCfg = Release|x64\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.All|x64.ActiveCfg = Release|x64\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.All|x64.Build.0 = Release|x64\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Debug|Win32.Build.0 = Debug|Win32\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Debug|x64.ActiveCfg = Debug|x64\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Debug|x64.Build.0 = Debug|x64\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Release|Win32.ActiveCfg = Release|Win32\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Release|Win32.Build.0 = Release|Win32\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Release|x64.ActiveCfg = Release|x64\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Release|x64.Build.0 = Release|x64\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.All|Win32.ActiveCfg = Release|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.All|Win32.Build.0 = Release|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.All|x64.ActiveCfg = Release|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.Debug|x64.Build.0 = Debug|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.Release|Win32.Build.0 = Release|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.Release|x64.ActiveCfg = Release|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.Release|x64.Build.0 = Release|Win32\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.All|Win32.ActiveCfg = Release|Win32\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.All|Win32.Build.0 = Release|Win32\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.All|x64.ActiveCfg = Release|Win32\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Debug|x64.ActiveCfg = Debug|x64\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Debug|x64.Build.0 = Debug|x64\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Release|Win32.Build.0 = Release|Win32\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Release|x64.ActiveCfg = Release|x64\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Release|x64.Build.0 = Release|x64\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.All|Win32.ActiveCfg = Release|Win32\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.All|Win32.Build.0 = Release|Win32\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.All|x64.ActiveCfg = Release|Win32\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Debug|Win32.Build.0 = Debug|Win32\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Debug|x64.ActiveCfg = Debug|x64\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Debug|x64.Build.0 = Debug|x64\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Release|Win32.ActiveCfg = Release|Win32\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Release|Win32.Build.0 = Release|Win32\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Release|x64.ActiveCfg = Release|x64\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Release|x64.Build.0 = Release|x64\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.All|Win32.ActiveCfg = Release|Win32\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.All|Win32.Build.0 = Release|Win32\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.All|x64.ActiveCfg = Release|Win32\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Debug|Win32.Build.0 = Debug|Win32\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Debug|x64.ActiveCfg = Debug|x64\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Debug|x64.Build.0 = Debug|x64\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Release|Win32.ActiveCfg = Release|Win32\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Release|Win32.Build.0 = Release|Win32\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Release|x64.ActiveCfg = Release|x64\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Release|x64.Build.0 = Release|x64\r
+- {42E721FD-43D6-4B04-A34B-42567199FFB8}.All|Win32.ActiveCfg = Release|x64\r
+- {42E721FD-43D6-4B04-A34B-42567199FFB8}.All|x64.ActiveCfg = Release|x64\r
+- {42E721FD-43D6-4B04-A34B-42567199FFB8}.All|x64.Build.0 = Release|x64\r
+- {42E721FD-43D6-4B04-A34B-42567199FFB8}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {42E721FD-43D6-4B04-A34B-42567199FFB8}.Debug|x64.ActiveCfg = Debug|x64\r
+- {42E721FD-43D6-4B04-A34B-42567199FFB8}.Release|Win32.ActiveCfg = Release|Win32\r
+- {42E721FD-43D6-4B04-A34B-42567199FFB8}.Release|x64.ActiveCfg = Release|x64\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.All|Win32.ActiveCfg = Release|x64\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.All|x64.ActiveCfg = Release|x64\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.All|x64.Build.0 = Release|x64\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.Debug|Win32.Build.0 = Debug|Win32\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.Debug|x64.ActiveCfg = Debug|x64\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.Debug|x64.Build.0 = Debug|x64\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.Release|Win32.ActiveCfg = Release|Win32\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.Release|Win32.Build.0 = Release|Win32\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.Release|x64.ActiveCfg = Release|x64\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.Release|x64.Build.0 = Release|x64\r
+- {0807C5CB-F6FF-451D-89F0-1F7B2E1D9169}.All|Win32.ActiveCfg = Release|x64\r
+- {0807C5CB-F6FF-451D-89F0-1F7B2E1D9169}.All|x64.ActiveCfg = Release|x64\r
+- {0807C5CB-F6FF-451D-89F0-1F7B2E1D9169}.All|x64.Build.0 = Release|x64\r
+- {0807C5CB-F6FF-451D-89F0-1F7B2E1D9169}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {0807C5CB-F6FF-451D-89F0-1F7B2E1D9169}.Debug|Win32.Build.0 = Debug|Win32\r
+- {0807C5CB-F6FF-451D-89F0-1F7B2E1D9169}.Debug|x64.ActiveCfg = Debug|x64\r
+- {0807C5CB-F6FF-451D-89F0-1F7B2E1D9169}.Debug|x64.Build.0 = Debug|x64\r
+- {0807C5CB-F6FF-451D-89F0-1F7B2E1D9169}.Release|Win32.ActiveCfg = Release|Win32\r
+- {0807C5CB-F6FF-451D-89F0-1F7B2E1D9169}.Release|Win32.Build.0 = Release|Win32\r
+- {0807C5CB-F6FF-451D-89F0-1F7B2E1D9169}.Release|x64.ActiveCfg = Release|x64\r
+- {0807C5CB-F6FF-451D-89F0-1F7B2E1D9169}.Release|x64.Build.0 = Release|x64\r
+- {BDA173DB-F8EF-4270-9553-B453AF92E43A}.All|Win32.ActiveCfg = Release|x64\r
+- {BDA173DB-F8EF-4270-9553-B453AF92E43A}.All|x64.ActiveCfg = Release|x64\r
+- {BDA173DB-F8EF-4270-9553-B453AF92E43A}.All|x64.Build.0 = Release|x64\r
+- {BDA173DB-F8EF-4270-9553-B453AF92E43A}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {BDA173DB-F8EF-4270-9553-B453AF92E43A}.Debug|Win32.Build.0 = Debug|Win32\r
+- {BDA173DB-F8EF-4270-9553-B453AF92E43A}.Debug|x64.ActiveCfg = Debug|x64\r
+- {BDA173DB-F8EF-4270-9553-B453AF92E43A}.Debug|x64.Build.0 = Debug|x64\r
+- {BDA173DB-F8EF-4270-9553-B453AF92E43A}.Release|Win32.ActiveCfg = Release|Win32\r
+- {BDA173DB-F8EF-4270-9553-B453AF92E43A}.Release|Win32.Build.0 = Release|Win32\r
+- {BDA173DB-F8EF-4270-9553-B453AF92E43A}.Release|x64.ActiveCfg = Release|x64\r
+- {BDA173DB-F8EF-4270-9553-B453AF92E43A}.Release|x64.Build.0 = Release|x64\r
+- {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|Win32.ActiveCfg = Release|Win32\r
+- {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|Win32.Build.0 = Release|Win32\r
+- {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|x64.ActiveCfg = Release|Win32\r
+- {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|x64.ActiveCfg = Debug|x64\r
+- {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|Win32.ActiveCfg = Release|Win32\r
+- {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|x64.ActiveCfg = Release|x64\r
+- {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|Win32.ActiveCfg = Debug|Win32\r
+- {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|Win32.Build.0 = Debug|Win32\r
+- {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|x64.ActiveCfg = Debug|Win32\r
+- {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|x64.ActiveCfg = Debug|x64\r
+- {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|Win32.ActiveCfg = Release|Win32\r
+- {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|x64.ActiveCfg = Release|x64\r
+- {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}.All|Win32.ActiveCfg = Debug|x64\r
+- {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}.All|x64.ActiveCfg = Debug|x64\r
+- {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}.All|x64.Build.0 = Debug|x64\r
+- {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}.Debug|Win32.Build.0 = Debug|Win32\r
+- {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}.Debug|x64.ActiveCfg = Debug|x64\r
+- {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}.Debug|x64.Build.0 = Debug|x64\r
+- {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}.Release|Win32.ActiveCfg = Release|Win32\r
+- {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}.Release|Win32.Build.0 = Release|Win32\r
+- {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}.Release|x64.ActiveCfg = Release|x64\r
+- {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}.Release|x64.Build.0 = Release|x64\r
+- {21A7DA70-555E-49FA-942B-D84A38B61243}.All|Win32.ActiveCfg = Release|Win32\r
+- {21A7DA70-555E-49FA-942B-D84A38B61243}.All|Win32.Build.0 = Release|Win32\r
+- {21A7DA70-555E-49FA-942B-D84A38B61243}.All|x64.ActiveCfg = Release|Win32\r
+- {21A7DA70-555E-49FA-942B-D84A38B61243}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {21A7DA70-555E-49FA-942B-D84A38B61243}.Debug|Win32.Build.0 = Debug|Win32\r
+- {21A7DA70-555E-49FA-942B-D84A38B61243}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {21A7DA70-555E-49FA-942B-D84A38B61243}.Debug|x64.Build.0 = Debug|Win32\r
+- {21A7DA70-555E-49FA-942B-D84A38B61243}.Release|Win32.ActiveCfg = Release|Win32\r
+- {21A7DA70-555E-49FA-942B-D84A38B61243}.Release|Win32.Build.0 = Release|Win32\r
+- {21A7DA70-555E-49FA-942B-D84A38B61243}.Release|x64.ActiveCfg = Release|Win32\r
+- {21A7DA70-555E-49FA-942B-D84A38B61243}.Release|x64.Build.0 = Release|Win32\r
+- EndGlobalSection\r
+- GlobalSection(SolutionProperties) = preSolution\r
+- HideSolutionNode = FALSE\r
+- EndGlobalSection\r
+- GlobalSection(NestedProjects) = preSolution\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}\r
+- {05C9FB27-480E-4D53-B3B7-6338E2526666} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}\r
+- {05C9FB27-480E-4D53-B3B7-7338E2514666} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}\r
+- {CC1DD008-9406-448D-A0AD-33C3186CFADB} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}\r
+- {48414740-C693-4968-9846-EE058020C64F} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}\r
+- {74B120FF-6935-4DFE-A142-CDB6BEA99C90} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {C24FB505-05D7-4319-8485-7540B44C8603} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {F6A33240-8F29-48BD-98F0-826995911799} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {42E721FD-43D6-4B04-A34B-42567199FFB8} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {0807C5CB-F6FF-451D-89F0-1F7B2E1D9169} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {BDA173DB-F8EF-4270-9553-B453AF92E43A} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4}\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4}\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4}\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08} = {9ADF1E48-2F5C-4ED7-A893-596259FABFE0}\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142} = {9ADF1E48-2F5C-4ED7-A893-596259FABFE0}\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E} = {9ADF1E48-2F5C-4ED7-A893-596259FABFE0}\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6} = {A5A27244-AD24-46E5-B01B-840CD296C91D}\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7} = {A5A27244-AD24-46E5-B01B-840CD296C91D}\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B} = {A5A27244-AD24-46E5-B01B-840CD296C91D}\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52} = {A5A27244-AD24-46E5-B01B-840CD296C91D}\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692} = {A5A27244-AD24-46E5-B01B-840CD296C91D}\r
+- {1A1FF289-4FD6-4285-A422-D31DD67A4723} = {CBD81696-EFB4-4D2F-8451-1B8DAA86155A}\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98} = {B8F5B47B-8568-46EB-B320-64C17D2A98BC}\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {0C808854-54D1-4230-BFF5-77B5FD905000}\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF} = {0C808854-54D1-4230-BFF5-77B5FD905000}\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65} = {0C808854-54D1-4230-BFF5-77B5FD905000}\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF} = {0C808854-54D1-4230-BFF5-77B5FD905000}\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41} = {0C808854-54D1-4230-BFF5-77B5FD905000}\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813} = {0C808854-54D1-4230-BFF5-77B5FD905000}\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC} = {0C808854-54D1-4230-BFF5-77B5FD905000}\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E} = {0C808854-54D1-4230-BFF5-77B5FD905000}\r
+- {692F6330-4D87-4C82-81DF-40DB5892636E} = {4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB} = {4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593} = {4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD} = {4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}\r
+- {1C453396-D912-4213-89FD-9B489162B7B5} = {A7AB4405-FDB7-4853-9FBB-1516B1C3D80A}\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909} = {A7AB4405-FDB7-4853-9FBB-1516B1C3D80A}\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950} = {F69A4A6B-9360-4EBB-A280-22AA3C455AC5}\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4} = {F69A4A6B-9360-4EBB-A280-22AA3C455AC5}\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836} = {F69A4A6B-9360-4EBB-A280-22AA3C455AC5}\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {B535402E-38D2-4D54-8360-423ACBD17192} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {94001A0E-A837-445C-8004-F918F10D0226} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {0AD1177E-1FD8-4643-9391-431467A11084} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {419C8F80-D858-4B48-A25C-AF4007608137} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {D0B36172-CD76-454A-9B89-990025266C2A} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {62F27B1A-C919-4A70-8478-51F178F3B18F} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {B376D494-D7DD-4B2A-99E2-52916D5A8CD8} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {2DEE4895-1134-439C-B688-52203E57D878} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {87A1FE3D-F410-4C8E-9591-8C625985BC70} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {E796E337-DE78-4303-8614-9A590862EE95} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {1F0A8A77-E661-418F-BB92-82172AE43803} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {E10571C4-E7F4-4608-B5F2-B22E7EB95400} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {21A7DA70-555E-49FA-942B-D84A38B61243} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}\r
+- {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0} = {57D119DC-484F-420F-B9E9-8589FD9A8DF8}\r
+- {3C90CCF0-2CDD-4A7A-ACFF-208C1E271692} = {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0}\r
+- {C7E2382E-2C22-4D18-BF93-80C6A1FFA7AC} = {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0}\r
+- {FC71C66E-E268-4EAD-B1F5-F008DC382E83} = {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0}\r
+- {8E2E8798-8B6F-4A55-8E4F-4E6FDE40ED26} = {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0}\r
+- {09455AA9-C243-4F16-A1A1-A016881A2765} = {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0}\r
+- {CDE9B06A-3C27-4987-8FAE-DF1006BC705D} = {DB1024A8-41BF-4AD7-9AE6-13202230D1F3}\r
+- {57199684-EC63-4A60-9DC6-11815AF6B413} = {09455AA9-C243-4F16-A1A1-A016881A2765}\r
+- {2DED4BA2-D6B0-4064-BB2A-76DE3AA49E7C} = {09455AA9-C243-4F16-A1A1-A016881A2765}\r
+- {D4A12E4C-DBDA-4614-BA26-3425AE9F60F5} = {09455AA9-C243-4F16-A1A1-A016881A2765}\r
+- {765EF1B9-5027-4820-BC37-A44466A51631} = {57199684-EC63-4A60-9DC6-11815AF6B413}\r
+- {713E4747-1126-40B1-BD84-58F9A7745423} = {57199684-EC63-4A60-9DC6-11815AF6B413}\r
+- {D3E5C8ED-3A6A-4FEA-92A2-48A0BA865358} = {2DED4BA2-D6B0-4064-BB2A-76DE3AA49E7C}\r
+- {CC3E7F48-2590-49CB-AD8B-BE3650F55462} = {2DED4BA2-D6B0-4064-BB2A-76DE3AA49E7C}\r
+- {F1B71990-EB04-4EB5-B28A-BC3EB6F7E843} = {D4A12E4C-DBDA-4614-BA26-3425AE9F60F5}\r
+- {3DAF028C-AB5B-4183-A01B-DCC43F5A87F0} = {D4A12E4C-DBDA-4614-BA26-3425AE9F60F5}\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A} = {4F227C26-768F-46A3-8684-1D08A46FB374}\r
+- {7EB71250-F002-4ED8-92CA-CA218114537A} = {4F227C26-768F-46A3-8684-1D08A46FB374}\r
+- {464AAB78-5489-4916-BE51-BF8D61822311} = {4F227C26-768F-46A3-8684-1D08A46FB374}\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870} = {4F227C26-768F-46A3-8684-1D08A46FB374}\r
+- {BA599D0A-4310-4505-91DA-6A6447B3E289} = {4F227C26-768F-46A3-8684-1D08A46FB374}\r
+- {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959} = {4F227C26-768F-46A3-8684-1D08A46FB374}\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2} = {62F27B1A-C919-4A70-8478-51F178F3B18F}\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5} = {62F27B1A-C919-4A70-8478-51F178F3B18F}\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56} = {62F27B1A-C919-4A70-8478-51F178F3B18F}\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108} = {62F27B1A-C919-4A70-8478-51F178F3B18F}\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31} = {62F27B1A-C919-4A70-8478-51F178F3B18F}\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA} = {62F27B1A-C919-4A70-8478-51F178F3B18F}\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F} = {62F27B1A-C919-4A70-8478-51F178F3B18F}\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E} = {62F27B1A-C919-4A70-8478-51F178F3B18F}\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9} = {62F27B1A-C919-4A70-8478-51F178F3B18F}\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE} = {B376D494-D7DD-4B2A-99E2-52916D5A8CD8}\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39} = {B376D494-D7DD-4B2A-99E2-52916D5A8CD8}\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79} = {B376D494-D7DD-4B2A-99E2-52916D5A8CD8}\r
+- EndGlobalSection\r
+-EndGlobal\r
++
++Microsoft Visual Studio Solution File, Format Version 10.00
++# Visual Studio 2008
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Codecs", "Codecs", "{F881ADA2-2F1A-4046-9FEB-191D9422D781}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Endpoints", "Endpoints", "{9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Applications", "Applications", "{E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Dialplans", "Dialplans", "{C5F182F9-754A-4EC5-B50F-76ED02BE13F4}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Event Handlers", "Event Handlers", "{9ADF1E48-2F5C-4ED7-A893-596259FABFE0}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Formats", "Formats", "{A5A27244-AD24-46E5-B01B-840CD296C91D}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Docs", "Docs", "{CBD81696-EFB4-4D2F-8451-1B8DAA86155A}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Directories", "Directories", "{B8F5B47B-8568-46EB-B320-64C17D2A98BC}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Languages", "Languages", "{0C808854-54D1-4230-BFF5-77B5FD905000}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ASR-TTS", "ASR-TTS", "{4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Loggers", "Loggers", "{A7AB4405-FDB7-4853-9FBB-1516B1C3D80A}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "XML Interfaces", "XML Interfaces", "{F69A4A6B-9360-4EBB-A280-22AA3C455AC5}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Libraries", "_Libraries", "{EB910B0D-F27D-4B62-B67B-DE834C99AC5B}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Downloads", "_Downloads", "{C120A020-773F-4EA3-923F-B67AF28B750D}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "say", "say", "{6CD61A1D-797C-470A-BE08-8C31B68BB336}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Config", "_Config", "{57D119DC-484F-420F-B9E9-8589FD9A8DF8}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Default", "Default", "{3B08FEFD-4D3D-4C16-BA94-EE83509E32A0}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\freeswitch.xml = conf\vanilla\freeswitch.xml
++ conf\vanilla\vars.xml = conf\vanilla\vars.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Build System", "_Build System", "{DB1024A8-41BF-4AD7-9AE6-13202230D1F3}"
++ ProjectSection(SolutionItems) = preProject
++ acsite.m4 = acsite.m4
++ bootstrap.sh = bootstrap.sh
++ build\buildlib.sh = build\buildlib.sh
++ configure.in = configure.in
++ Makefile.am = Makefile.am
++ build\modmake.rules.in = build\modmake.rules.in
++ build\modules.conf.in = build\modules.conf.in
++ libs\win32\util.vbs = libs\win32\util.vbs
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "m4", "m4", "{CDE9B06A-3C27-4987-8FAE-DF1006BC705D}"
++ ProjectSection(SolutionItems) = preProject
++ build\config\ac_cflags_gcc_option.m4 = build\config\ac_cflags_gcc_option.m4
++ build\config\ac_cflags_sun_option.m4 = build\config\ac_cflags_sun_option.m4
++ build\config\ac_gcc_archflag.m4 = build\config\ac_gcc_archflag.m4
++ build\config\ac_gcc_x86_cpuid.m4 = build\config\ac_gcc_x86_cpuid.m4
++ build\config\ac_prog_gzip.m4 = build\config\ac_prog_gzip.m4
++ build\config\ac_prog_wget.m4 = build\config\ac_prog_wget.m4
++ build\config\ax_cc_maxopt.m4 = build\config\ax_cc_maxopt.m4
++ build\config\ax_cflags_warn_all_ansi.m4 = build\config\ax_cflags_warn_all_ansi.m4
++ build\config\ax_check_compiler_flags.m4 = build\config\ax_check_compiler_flags.m4
++ build\config\ax_compiler_vendor.m4 = build\config\ax_compiler_vendor.m4
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "autoload_configs", "autoload_configs", "{3C90CCF0-2CDD-4A7A-ACFF-208C1E271692}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\autoload_configs\alsa.conf.xml = conf\vanilla\autoload_configs\alsa.conf.xml
++ conf\vanilla\autoload_configs\conference.conf.xml = conf\vanilla\autoload_configs\conference.conf.xml
++ conf\vanilla\autoload_configs\console.conf.xml = conf\vanilla\autoload_configs\console.conf.xml
++ conf\vanilla\autoload_configs\dialplan_directory.conf.xml = conf\vanilla\autoload_configs\dialplan_directory.conf.xml
++ conf\vanilla\autoload_configs\dingaling.conf.xml = conf\vanilla\autoload_configs\dingaling.conf.xml
++ conf\vanilla\autoload_configs\enum.conf.xml = conf\vanilla\autoload_configs\enum.conf.xml
++ conf\vanilla\autoload_configs\event_multicast.conf.xml = conf\vanilla\autoload_configs\event_multicast.conf.xml
++ conf\vanilla\autoload_configs\event_socket.conf.xml = conf\vanilla\autoload_configs\event_socket.conf.xml
++ conf\vanilla\autoload_configs\ivr.conf.xml = conf\vanilla\autoload_configs\ivr.conf.xml
++ conf\vanilla\autoload_configs\java.conf.xml = conf\vanilla\autoload_configs\java.conf.xml
++ conf\vanilla\autoload_configs\limit.conf.xml = conf\vanilla\autoload_configs\limit.conf.xml
++ conf\vanilla\autoload_configs\local_stream.conf.xml = conf\vanilla\autoload_configs\local_stream.conf.xml
++ conf\vanilla\autoload_configs\logfile.conf.xml = conf\vanilla\autoload_configs\logfile.conf.xml
++ conf\vanilla\autoload_configs\modules.conf.xml = conf\vanilla\autoload_configs\modules.conf.xml
++ conf\vanilla\autoload_configs\openmrcp.conf.xml = conf\vanilla\autoload_configs\openmrcp.conf.xml
++ conf\vanilla\autoload_configs\portaudio.conf.xml = conf\vanilla\autoload_configs\portaudio.conf.xml
++ conf\vanilla\autoload_configs\rss.conf.xml = conf\vanilla\autoload_configs\rss.conf.xml
++ conf\vanilla\autoload_configs\sofia.conf.xml = conf\vanilla\autoload_configs\sofia.conf.xml
++ conf\vanilla\autoload_configs\spidermonkey.conf.xml = conf\vanilla\autoload_configs\spidermonkey.conf.xml
++ conf\vanilla\autoload_configs\switch.conf.xml = conf\vanilla\autoload_configs\switch.conf.xml
++ conf\vanilla\autoload_configs\syslog.conf.xml = conf\vanilla\autoload_configs\syslog.conf.xml
++ conf\vanilla\autoload_configs\voicemail.conf.xml = conf\vanilla\autoload_configs\voicemail.conf.xml
++ conf\vanilla\autoload_configs\wanpipe.conf.xml = conf\vanilla\autoload_configs\wanpipe.conf.xml
++ conf\vanilla\autoload_configs\woomera.conf.xml = conf\vanilla\autoload_configs\woomera.conf.xml
++ conf\vanilla\autoload_configs\xml_cdr.conf.xml = conf\vanilla\autoload_configs\xml_cdr.conf.xml
++ conf\vanilla\autoload_configs\xml_curl.conf.xml = conf\vanilla\autoload_configs\xml_curl.conf.xml
++ conf\vanilla\autoload_configs\xml_rpc.conf.xml = conf\vanilla\autoload_configs\xml_rpc.conf.xml
++ conf\vanilla\autoload_configs\zeroconf.conf.xml = conf\vanilla\autoload_configs\zeroconf.conf.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dialplan", "dialplan", "{C7E2382E-2C22-4D18-BF93-80C6A1FFA7AC}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\dialplan\default.xml = conf\vanilla\dialplan\default.xml
++ conf\vanilla\dialplan\public.xml = conf\vanilla\dialplan\public.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "directory", "directory", "{FC71C66E-E268-4EAD-B1F5-F008DC382E83}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\directory\default.xml = conf\vanilla\directory\default.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sip_profiles", "sip_profiles", "{8E2E8798-8B6F-4A55-8E4F-4E6FDE40ED26}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\sip_profiles\external.xml = conf\vanilla\sip_profiles\external.xml
++ conf\vanilla\sip_profiles\internal.xml = conf\vanilla\sip_profiles\internal.xml
++ conf\vanilla\sip_profiles\nat.xml = conf\vanilla\sip_profiles\nat.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "lang", "lang", "{09455AA9-C243-4F16-A1A1-A016881A2765}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\directory\default.xml = conf\vanilla\directory\default.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "en", "en", "{57199684-EC63-4A60-9DC6-11815AF6B413}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\lang\en\en.xml = conf\vanilla\lang\en\en.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "de", "de", "{2DED4BA2-D6B0-4064-BB2A-76DE3AA49E7C}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\lang\de\de.xml = conf\vanilla\lang\de\de.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "fr", "fr", "{D4A12E4C-DBDA-4614-BA26-3425AE9F60F5}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\lang\fr\fr.xml = conf\vanilla\lang\fr\fr.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "demo", "demo", "{D3E5C8ED-3A6A-4FEA-92A2-48A0BA865358}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\lang\de\demo\demo.xml = conf\vanilla\lang\de\demo\demo.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vm", "vm", "{CC3E7F48-2590-49CB-AD8B-BE3650F55462}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\lang\de\vm\tts.xml = conf\vanilla\lang\de\vm\tts.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "demo", "demo", "{765EF1B9-5027-4820-BC37-A44466A51631}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\lang\en\demo\demo.xml = conf\vanilla\lang\en\demo\demo.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vm", "vm", "{713E4747-1126-40B1-BD84-58F9A7745423}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\lang\en\vm\sounds.xml = conf\vanilla\lang\en\vm\sounds.xml
++ conf\vanilla\lang\en\vm\tts.xml = conf\vanilla\lang\en\vm\tts.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "demo", "demo", "{F1B71990-EB04-4EB5-B28A-BC3EB6F7E843}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\lang\fr\demo\demo.xml = conf\vanilla\lang\fr\demo\demo.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vm", "vm", "{3DAF028C-AB5B-4183-A01B-DCC43F5A87F0}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\lang\fr\vm\sounds.xml = conf\vanilla\lang\fr\vm\sounds.xml
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FreeSwitchConsole", "w32\Console\FreeSwitchConsole.2008.vcproj", "{1AF3A893-F7BE-43DD-B697-8AB2397C0D67}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FreeSwitchCoreLib", "w32\Library\FreeSwitchCore.2008.vcproj", "{202D7A4E-760D-4D0E-AFA1-D7459CED30FF}"
++ ProjectSection(ProjectDependencies) = postProject
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE} = {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9} = {8D04B550-D240-4A44-8A18-35DA3F7038D9}
++ {89385C74-5860-4174-9CAF-A39E7C48909C} = {89385C74-5860-4174-9CAF-A39E7C48909C}
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5} = {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD} = {03207781-0D1C-4DB3-A71D-45C608F28DBD}
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EEF031CB-FED8-451E-A471-91EC8D4F6750}
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g729", "src\mod\codecs\mod_g729\mod_g729.2008.vcproj", "{1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sndfile", "src\mod\formats\mod_sndfile\mod_sndfile.2008.vcproj", "{AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4} = {3D0370CA-BED2-4657-A475-32375CBCB6E4}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_PortAudio", "src\mod\endpoints\mod_portaudio\mod_PortAudio.2008.vcproj", "{5FD31A25-5D83-4794-8BEE-904DAD84CE71}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99} = {0A18A071-125E-442F-AFF7-A3F68ABECF99}
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_speex", "src\mod\codecs\mod_speex\mod_speex.2008.vcproj", "{5580D60E-0F77-4716-9CD4-B8E5986FA375}"
++ ProjectSection(ProjectDependencies) = postProject
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4} = {E972C52F-9E85-4D65-B19C-031E511E9DB4}
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD} = {03207781-0D1C-4DB3-A71D-45C608F28DBD}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "docs", "docs\docs.2008.vcproj", "{1A1FF289-4FD6-4285-A422-D31DD67A4723}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dialplan_xml", "src\mod\dialplans\mod_dialplan_xml\mod_dialplan_xml.2008.vcproj", "{07113B25-D3AF-4E04-BA77-4CD1171F022C}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_ldap", "src\mod\directories\mod_ldap\mod_ldap.2008.vcproj", "{EC3E5C7F-EE09-47E2-80FE-546363D14A98}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dialplan_directory", "src\mod\dialplans\mod_dialplan_directory\mod_dialplan_directory.2008.vcproj", "{A27CCA23-1541-4337-81A4-F0A6413078A0}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_event_multicast", "src\mod\event_handlers\mod_event_multicast\mod_event_multicast.2008.vcproj", "{784113EF-44D9-4949-835D-7065D3C7AD08}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libteletone", "libs\libteletone\libteletone.2008.vcproj", "{89385C74-5860-4174-9CAF-A39E7C48909C}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey", "src\mod\languages\mod_spidermonkey\mod_spidermonkey.2008.vcproj", "{1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}
++ {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_cepstral", "src\mod\asr_tts\mod_cepstral\mod_cepstral.2008.vcproj", "{692F6330-4D87-4C82-81DF-40DB5892636E}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_ilbc", "src\mod\codecs\mod_ilbc\mod_ilbc.2008.vcproj", "{D3EC0AFF-76FC-4210-A825-9A17410660A3}"
++ ProjectSection(ProjectDependencies) = postProject
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD} = {9A5DDF08-C88C-4A35-B7F6-D605228446BD}
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dingaling", "src\mod\endpoints\mod_dingaling\mod_dingaling.2008.vcproj", "{FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}"
++ ProjectSection(ProjectDependencies) = postProject
++ {1906D736-08BD-4EE1-924F-B536249B9A54} = {1906D736-08BD-4EE1-924F-B536249B9A54}
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE} = {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39} = {B4B62169-5AD4-4559-8707-3D933AC5DB39}
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3} = {E727E8F6-935D-46FE-8B0E-37834748A0E3}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_commands", "src\mod\applications\mod_commands\mod_commands.2008.vcproj", "{30A5B29C-983E-4580-9FD0-D647CCDCC7EB}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_console", "src\mod\loggers\mod_console\mod_console.2008.vcproj", "{1C453396-D912-4213-89FD-9B489162B7B5}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xml_rpc", "src\mod\xml_int\mod_xml_rpc\mod_xml_rpc.2008.vcproj", "{CBEC7225-0C21-4DA8-978E-1F158F8AD950}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B} = {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}
++ {A4D67895-E709-40C7-82B6-DE1D12DDDE04} = {A4D67895-E709-40C7-82B6-DE1D12DDDE04}
++ {510BDAA8-C04D-47DB-8482-E6AF380D3E07} = {510BDAA8-C04D-47DB-8482-E6AF380D3E07}
++ {E5A9BCDA-B82D-4B08-B23E-9A782E367888} = {E5A9BCDA-B82D-4B08-B23E-9A782E367888}
++ {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268} = {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_rss", "src\mod\applications\mod_rss\mod_rss.2008.vcproj", "{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_conference", "src\mod\applications\mod_conference\mod_conference.2008.vcproj", "{C24FB505-05D7-4319-8485-7540B44C8603}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dptools", "src\mod\applications\mod_dptools\mod_dptools.2008.vcproj", "{B5881A85-FE70-4F64-8607-2CAAE52669C6}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_event_socket", "src\mod\event_handlers\mod_event_socket\mod_event_socket.2008.vcproj", "{05515420-16DE-4E63-BE73-85BE85BA5142}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libdingaling", "libs\libdingaling\libdingaling.2008.vcproj", "{1906D736-08BD-4EE1-924F-B536249B9A54}"
++ ProjectSection(ProjectDependencies) = postProject
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3} = {E727E8F6-935D-46FE-8B0E-37834748A0E3}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsrtp", "libs\srtp\libsrtp.2008.vcproj", "{EEF031CB-FED8-451E-A471-91EC8D4F6750}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsqlite", "libs\win32\sqlite\sqlite.2008.vcproj", "{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpcre", "libs\win32\pcre\libpcre.2008.vcproj", "{8D04B550-D240-4A44-8A18-35DA3F7038D9}"
++ ProjectSection(ProjectDependencies) = postProject
++ {1CED5987-A529-46DC-B30F-870D85FF9C94} = {1CED5987-A529-46DC-B30F-870D85FF9C94}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpcre Generate pcre_chartables.c", "libs\win32\pcre\pcre_chartables.c.2008.vcproj", "{1CED5987-A529-46DC-B30F-870D85FF9C94}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libapr", "libs\win32\apr\libapr.2008.vcproj", "{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libaprutil", "libs\win32\apr-util\libaprutil.2008.vcproj", "{F057DA7F-79E5-4B00-845C-EF446EF055E3}"
++ ProjectSection(ProjectDependencies) = postProject
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F} = {155844C3-EC5F-407F-97A4-A2DDADED9B2F}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iksemel", "libs\win32\iksemel\iksemel.2008.vcproj", "{E727E8F6-935D-46FE-8B0E-37834748A0E3}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsndfile", "libs\win32\libsndfile\libsndfile.2008.vcproj", "{3D0370CA-BED2-4657-A475-32375CBCB6E4}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curllib", "libs\win32\curl\curllib.2008.vcproj", "{87EE9DA4-DE1E-4448-8324-183C98DCA588}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xml", "libs\win32\apr-util\xml.2008.vcproj", "{155844C3-EC5F-407F-97A4-A2DDADED9B2F}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "js", "libs\win32\js\js.2008.vcproj", "{204FA0DE-305D-4414-AE2E-F195A23F390D}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sofia", "src\mod\endpoints\mod_sofia\mod_sofia.2008.vcproj", "{0DF3ABD0-DDC0-4265-B778-07C66780979B}"
++ ProjectSection(ProjectDependencies) = postProject
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE} = {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39} = {B4B62169-5AD4-4559-8707-3D933AC5DB39}
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0} = {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsofia_sip_ua_static", "libs\win32\sofia\libsofia_sip_ua_static.2008.vcproj", "{70A49BC2-7500-41D0-B75D-EDCC5BE987A0}"
++ ProjectSection(ProjectDependencies) = postProject
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A} = {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE} = {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39} = {B4B62169-5AD4-4559-8707-3D933AC5DB39}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download PTHREAD", "libs\win32\Download PTHREAD.2008.vcproj", "{8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pthread", "libs\win32\pthread\pthread.2008.vcproj", "{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}"
++ ProjectSection(ProjectDependencies) = postProject
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A} = {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g723_1", "src\mod\codecs\mod_g723_1\mod_g723_1.2008.vcproj", "{FEA1EEF7-876F-48DE-88BF-C0E3E606D758}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_native_file", "src\mod\formats\mod_native_file\mod_native_file.2008.vcproj", "{9254C4B0-6F60-42B6-BB3A-36D63FC001C7}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_core_db", "src\mod\languages\mod_spidermonkey\mod_spidermonkey_core_db.2008.vcproj", "{ACFFF684-4D19-4D48-AF12-88EA1D778BDF}"
++ ProjectSection(ProjectDependencies) = postProject
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
++ {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_teletone", "src\mod\languages\mod_spidermonkey\mod_spidermonkey_teletone.2008.vcproj", "{8F992C49-6C51-412F-B2A3-34EAB708EB65}"
++ ProjectSection(ProjectDependencies) = postProject
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {89385C74-5860-4174-9CAF-A39E7C48909C} = {89385C74-5860-4174-9CAF-A39E7C48909C}
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
++ {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_enum", "src\mod\applications\mod_enum\mod_enum.2008.vcproj", "{71A967D5-0E99-4CEF-A587-98836EE6F2EF}"
++ ProjectSection(ProjectDependencies) = postProject
++ {23B4D303-79FC-49E0-89E2-2280E7E28940} = {23B4D303-79FC-49E0-89E2-2280E7E28940}
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_odbc", "src\mod\languages\mod_spidermonkey\mod_spidermonkey_odbc.2008.vcproj", "{0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}"
++ ProjectSection(ProjectDependencies) = postProject
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
++ {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xml_curl", "src\mod\xml_int\mod_xml_curl\mod_xml_curl.2008.vcproj", "{AB91A099-7690-4ECF-8994-E458F4EA1ED4}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_en", "src\mod\say\mod_say_en\mod_say_en.2008.vcproj", "{988CACF7-3FCB-4992-BE69-77872AE67DC8}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "portaudio", "libs\portaudio\build\msvc\portaudio.2008.vcproj", "{0A18A071-125E-442F-AFF7-A3F68ABECF99}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xml_cdr", "src\mod\xml_int\mod_xml_cdr\mod_xml_cdr.2008.vcproj", "{08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_amr", "src\mod\codecs\mod_amr\mod_amr.2008.vcproj", "{8DEB383C-4091-4F42-A56F-C9E46D552D79}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_h26x", "src\mod\codecs\mod_h26x\mod_h26x.2008.vcproj", "{2C3C2423-234B-4772-8899-D3B137E5CA35}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_esf", "src\mod\applications\mod_esf\mod_esf.2008.vcproj", "{3850D93A-5F24-4922-BC1C-74D08C37C256}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_local_stream", "src\mod\formats\mod_local_stream\mod_local_stream.2008.vcproj", "{2CA40887-1622-46A1-A7F9-17FD7E7E545B}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_socket", "src\mod\languages\mod_spidermonkey\mod_spidermonkey_socket.2008.vcproj", "{028C7278-05D7-4E18-82FE-BE231B844F41}"
++ ProjectSection(ProjectDependencies) = postProject
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_voicemail", "src\mod\applications\mod_voicemail\mod_voicemail.2008.vcproj", "{D7F1E3F2-A3F4-474C-8555-15122571AF52}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_de", "src\mod\say\mod_say_de\mod_say_de.2008.vcproj", "{5BC072DB-3826-48EA-AF34-FE32AA01E83B}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_es", "src\mod\say\mod_say_es\mod_say_es.2008.vcproj", "{FA429E98-8B03-45E6-A096-A4BC5E821DE4}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_fr", "src\mod\say\mod_say_fr\mod_say_fr.2008.vcproj", "{06E3A538-AB32-44F2-B477-755FF9CB5D37}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_it", "src\mod\say\mod_say_it\mod_say_it.2008.vcproj", "{6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_nl", "src\mod\say\mod_say_nl\mod_say_nl.2008.vcproj", "{A4B122CF-5196-476B-8C0E-D8BD59AC3C14}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_fifo", "src\mod\applications\mod_fifo\mod_fifo.2008.vcproj", "{75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_db", "src\mod\applications\mod_db\mod_db.2008.vcproj", "{F6A33240-8F29-48BD-98F0-826995911799}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_expr", "src\mod\applications\mod_expr\mod_expr.2008.vcproj", "{65A6273D-FCAB-4C55-B09E-65100141A5D4}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dialplan_asterisk", "src\mod\dialplans\mod_dialplan_asterisk\mod_dialplan_asterisk.2008.vcproj", "{E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_logfile", "src\mod\loggers\mod_logfile\mod_logfile.2008.vcproj", "{D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_cdr_csv", "src\mod\event_handlers\mod_cdr_csv\mod_cdr_csv.2008.vcproj", "{44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_tone_stream", "src\mod\formats\mod_tone_stream\mod_tone_stream.2008.vcproj", "{6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {89385C74-5860-4174-9CAF-A39E7C48909C} = {89385C74-5860-4174-9CAF-A39E7C48909C}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_fsv", "src\mod\applications\mod_fsv\mod_fsv.2008.vcproj", "{E3246D17-E29B-4AB5-962A-C69B0C5837BB}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_curl", "src\mod\languages\mod_spidermonkey\mod_spidermonkey_curl.2008.vcproj", "{36E854E3-CE12-4348-A125-CCF3F9D74813}"
++ ProjectSection(ProjectDependencies) = postProject
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}
++ {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_lua", "src\mod\languages\mod_lua\mod_lua.2008.vcproj", "{7B077E7F-1BE7-4291-AB86-55E527B25CAC}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {D0B36172-CD76-454A-9B89-990025266C2A} = {D0B36172-CD76-454A-9B89-990025266C2A}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download sphinxbase", "libs\win32\Download sphinxbase.2008.vcproj", "{4F92B672-DADB-4047-8D6A-4BB3796733FD}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download sphinxmodel", "libs\win32\Download sphinxmodel.2008.vcproj", "{2DEE4895-1134-439C-B688-52203E57D878}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download pocketsphinx", "libs\win32\Download pocketsphinx.2008.vcproj", "{AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sphinxbase", "libs\win32\sphinxbase\sphinxbase.2008.vcproj", "{2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}"
++ ProjectSection(ProjectDependencies) = postProject
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD} = {4F92B672-DADB-4047-8D6A-4BB3796733FD}
++ {2DEE4895-1134-439C-B688-52203E57D878} = {2DEE4895-1134-439C-B688-52203E57D878}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pocketsphinx", "libs\win32\pocketsphinx\pocketsphinx.2008.vcproj", "{94001A0E-A837-445C-8004-F918F10D0226}"
++ ProjectSection(ProjectDependencies) = postProject
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D} = {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E} = {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_pocketsphinx", "src\mod\asr_tts\mod_pocketsphinx\mod_pocketsphinx.2008.vcproj", "{2286DA73-9FC5-45BC-A508-85994C3317AB}"
++ ProjectSection(ProjectDependencies) = postProject
++ {94001A0E-A837-445C-8004-F918F10D0226} = {94001A0E-A837-445C-8004-F918F10D0226}
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD} = {4F92B672-DADB-4047-8D6A-4BB3796733FD}
++ {2DEE4895-1134-439C-B688-52203E57D878} = {2DEE4895-1134-439C-B688-52203E57D878}
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D} = {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E} = {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 8khzsound", "libs\win32\Download 8khz Sounds.2008.vcproj", "{3CE1DC99-8246-4DB1-A709-74F19F08EC67}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Sound Files", "Sound Files", "{4F227C26-768F-46A3-8684-1D08A46FB374}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 16khzsound", "libs\win32\Download 16khz Sounds.2008.vcproj", "{87A1FE3D-F410-4C8E-9591-8C625985BC70}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "8khz", "libs\win32\Sound_Files\8khz.2008.vcproj", "{7A8D8174-B355-4114-AFC1-04777CB9DE0A}"
++ ProjectSection(ProjectDependencies) = postProject
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67} = {3CE1DC99-8246-4DB1-A709-74F19F08EC67}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "16khz", "libs\win32\Sound_Files\16khz.2008.vcproj", "{7EB71250-F002-4ED8-92CA-CA218114537A}"
++ ProjectSection(ProjectDependencies) = postProject
++ {87A1FE3D-F410-4C8E-9591-8C625985BC70} = {87A1FE3D-F410-4C8E-9591-8C625985BC70}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 32khzsound", "libs\win32\Dowload 32khz Sounds.2008.vcproj", "{6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "32khz", "libs\win32\Sound_Files\32khz.2008.vcproj", "{464AAB78-5489-4916-BE51-BF8D61822311}"
++ ProjectSection(ProjectDependencies) = postProject
++ {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F} = {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flite", "libs\win32\flite\flite.2008.vcproj", "{0AD1177E-1FD8-4643-9391-431467A11084}"
++ ProjectSection(ProjectDependencies) = postProject
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B} = {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_flite", "src\mod\asr_tts\mod_flite\mod_flite.2008.vcproj", "{66444AEE-554C-11DD-A9F0-8C5D56D89593}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B} = {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}
++ {0AD1177E-1FD8-4643-9391-431467A11084} = {0AD1177E-1FD8-4643-9391-431467A11084}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download FLITE", "libs\win32\Download FLITE.2008.vcproj", "{D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download LAME", "libs\win32\Download LAME.2008.vcproj", "{D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download LIBSHOUT", "libs\win32\Download LIBSHOUT.2008.vcproj", "{D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download OGG", "libs\win32\Download OGG.2008.vcproj", "{D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmp3lame", "libs\win32\libmp3lame\libmp3lame_vc7.vcproj", "{E316772F-5D8F-4F2A-8F71-094C3E859D34}"
++ ProjectSection(ProjectDependencies) = postProject
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B} = {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libshout", "libs\win32\libshout\libshout.vcproj", "{D3D8B329-20BE-475E-9E83-653CEA0E0EF5}"
++ ProjectSection(ProjectDependencies) = postProject
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B} = {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4} = {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_shout", "src\mod\formats\mod_shout\mod_shout.vcproj", "{38FE0559-9910-43A8-9E45-3E5004C27692}"
++ ProjectSection(ProjectDependencies) = postProject
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5} = {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34} = {E316772F-5D8F-4F2A-8F71-094C3E859D34}
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {419C8F80-D858-4B48-A25C-AF4007608137} = {419C8F80-D858-4B48-A25C-AF4007608137}
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libogg", "libs\win32\libogg\libogg.2008.vcproj", "{0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}"
++ ProjectSection(ProjectDependencies) = postProject
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B} = {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_snom", "src\mod\applications\mod_snom\mod_snom.2008.vcproj", "{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_zh", "src\mod\say\mod_say_zh\mod_say_zh.2008.vcproj", "{B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_managed", "src\mod\languages\mod_managed\mod_managed.vcproj", "{7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}"
++ ProjectSection(ProjectDependencies) = postProject
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0} = {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FreeSWITCH.Managed", "src\mod\languages\mod_managed\managed\FreeSWITCH.Managed.csproj", "{834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download mpg123", "libs\win32\Download mpg123.2008.vcproj", "{E796E337-DE78-4303-8614-9A590862EE95}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmpg123", "libs\win32\mpg123\libmpg123.2008.vcproj", "{419C8F80-D858-4B48-A25C-AF4007608137}"
++ ProjectSection(ProjectDependencies) = postProject
++ {E796E337-DE78-4303-8614-9A590862EE95} = {E796E337-DE78-4303-8614-9A590862EE95}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_loopback", "src\mod\endpoints\mod_loopback\mod_loopback.2008.vcproj", "{B3F424EC-3D8F-417C-B244-3919D5E1A577}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_vmd", "src\mod\applications\mod_vmd\mod_vmd.2008.vcproj", "{14E4A972-9CFB-436D-B0A5-4943F3F80D47}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libg722_1", "libs\win32\libg722_1\libg722_1.vcproj", "{1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_siren", "src\mod\codecs\mod_siren\mod_siren.2008.vcproj", "{0B6C905B-142E-4999-B39D-92FF7951E921}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C} = {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "esl", "libs\esl\src\esl.2008.vcproj", "{CF405366-9558-4AE8-90EF-5E21B51CCB4E}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fs_cli", "libs\esl\fs_cli.2008.vcproj", "{D2FB8043-D208-4AEE-8F18-3B5857C871B9}"
++ ProjectSection(ProjectDependencies) = postProject
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E} = {CF405366-9558-4AE8-90EF-5E21B51CCB4E}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_easyroute", "src\mod\applications\mod_easyroute\mod_easyroute.2008.vcproj", "{329FD5B0-EF28-4606-86D0-F6EA21CF8E36}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_lcr", "src\mod\applications\mod_lcr\mod_lcr.2008.vcproj", "{1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtiff", "libs\spandsp\src\libtiff.2008.vcproj", "{401A40CD-5DB4-4E34-AC68-FA99E9FAC014}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspandsp", "libs\spandsp\src\libspandsp.2008.vcproj", "{1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}"
++ ProjectSection(ProjectDependencies) = postProject
++ {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A} = {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838} = {329A6FA0-0FCC-4435-A950-E670AEFA9838}
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330} = {DEE932AB-5911-4700-9EEB-8C7090A0A330}
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014} = {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspeex", "libs\speex\win32\VS2008\libspeex\libspeex.vcproj", "{E972C52F-9E85-4D65-B19C-031E511E9DB4}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspeexdsp", "libs\speex\win32\VS2008\libspeexdsp\libspeexdsp.vcproj", "{03207781-0D1C-4DB3-A71D-45C608F28DBD}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libilbc", "libs\ilbc\libilbc.2008.vcproj", "{9A5DDF08-C88C-4A35-B7F6-D605228446BD}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lua51", "src\mod\languages\mod_lua\lua\lua.2008.vcproj", "{D0B36172-CD76-454A-9B89-990025266C2A}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_opal", "src\mod\endpoints\mod_opal\mod_opal_2008.vcproj", "{05C9FB27-480E-4D53-B3B7-6338E2526666}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_h323", "src\mod\endpoints\mod_h323\mod_h323_2008.vcproj", "{05C9FB27-480E-4D53-B3B7-7338E2514666}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_iSAC", "src\mod\codecs\mod_isac\mod_iSAC.2008.vcproj", "{7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_skinny", "src\mod\endpoints\mod_skinny\mod_skinny_2008.vcproj", "{CC1DD008-9406-448D-A0AD-33C3186CFADB}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_rtmp", "src\mod\endpoints\mod_rtmp\mod_rtmp_2008.vcproj", "{48414740-C693-4968-9846-EE058020C64F}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_at_dictionary", "libs\spandsp\src\msvc\make_at_dictionary.2008.vcproj", "{DEE932AB-5911-4700-9EEB-8C7090A0A330}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_modem_filter", "libs\spandsp\src\msvc\make_modem_filter.2008.vcproj", "{329A6FA0-0FCC-4435-A950-E670AEFA9838}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_skel", "src\mod\applications\mod_skel\mod_skel.2008.vcproj", "{11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_skypopen", "src\mod\endpoints\mod_skypopen\mod_skypopen.2008.vcproj", "{C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 32khz music", "libs\win32\Dowload 32khz music.2008.vcproj", "{1F0A8A77-E661-418F-BB92-82172AE43803}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 8khz music", "libs\win32\Download 8khz music.2008.vcproj", "{4F5C9D55-98EF-4256-8311-32D7BD360406}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 16khz music", "libs\win32\Download 16khz music.2008.vcproj", "{E10571C4-E7F4-4608-B5F2-B22E7EB95400}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "8khz music", "libs\win32\Sound_Files\8khzmusic.2008.vcproj", "{D1ABE208-6442-4FB4-9AAD-1677E41BC870}"
++ ProjectSection(ProjectDependencies) = postProject
++ {4F5C9D55-98EF-4256-8311-32D7BD360406} = {4F5C9D55-98EF-4256-8311-32D7BD360406}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "16khz music", "libs\win32\Sound_Files\16khzmusic.2008.vcproj", "{BA599D0A-4310-4505-91DA-6A6447B3E289}"
++ ProjectSection(ProjectDependencies) = postProject
++ {E10571C4-E7F4-4608-B5F2-B22E7EB95400} = {E10571C4-E7F4-4608-B5F2-B22E7EB95400}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "32khz music", "libs\win32\Sound_Files\32khzmusic.2008.vcproj", "{EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}"
++ ProjectSection(ProjectDependencies) = postProject
++ {1F0A8A77-E661-418F-BB92-82172AE43803} = {1F0A8A77-E661-418F-BB92-82172AE43803}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_nibblebill", "src\mod\applications\mod_nibblebill\mod_nibblebill.2008.vcproj", "{3C977801-FE88-48F2-83D3-FA2EBFF6688E}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_ru", "src\mod\say\mod_say_ru\mod_say_ru.2008.vcproj", "{0382E8FD-CFDC-41C0-8B03-792C7C84FC31}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_valet_parking", "src\mod\applications\mod_valet_parking\mod_valet_parking.2008.vcproj", "{432DB165-1EB2-4781-A9C0-71E62610B20A}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbroadvoice", "libs\broadvoice\src\libbroadvoice.2008.vcproj", "{CF70F278-3364-4395-A2E1-23501C9B8AD2}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_bv", "src\mod\codecs\mod_bv\mod_bv.2008.vcproj", "{D5C87B19-150D-4EF3-A671-96589BD2D14A}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2} = {CF70F278-3364-4395-A2E1-23501C9B8AD2}
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "unimrcp", "unimrcp", "{62F27B1A-C919-4A70-8478-51F178F3B18F}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aprtoolkit", "libs\unimrcp\libs\apr-toolkit\aprtoolkit.2008.vcproj", "{13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}"
++ ProjectSection(ProjectDependencies) = postProject
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mpf", "libs\unimrcp\libs\mpf\mpf.2008.vcproj", "{B5A00BFA-6083-4FAE-A097-71642D6473B5}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcp", "libs\unimrcp\libs\mrcp\mrcp.2008.vcproj", "{1C320193-46A6-4B34-9C56-8AB584FC1B56}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpclient", "libs\unimrcp\libs\mrcp-client\mrcpclient.2008.vcproj", "{72782932-37CC-46AE-8C7F-9A7B1A6EE108}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpsignaling", "libs\unimrcp\libs\mrcp-signaling\mrcpsignaling.2008.vcproj", "{12A49562-BAB9-43A3-A21D-15B60BBB4C31}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpv2transport", "libs\unimrcp\libs\mrcpv2-transport\mrcpv2transport.2008.vcproj", "{A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unirtsp", "libs\unimrcp\libs\uni-rtsp\unirtsp.2008.vcproj", "{504B3154-7A4F-459D-9877-B951021C3F1F}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpsofiasip", "libs\unimrcp\modules\mrcp-sofiasip\mrcpsofiasip.2008.vcproj", "{746F3632-5BB2-4570-9453-31D6D58A7D8E}"
++ ProjectSection(ProjectDependencies) = postProject
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0} = {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpunirtsp", "libs\unimrcp\modules\mrcp-unirtsp\mrcpunirtsp.2008.vcproj", "{DEB01ACB-D65F-4A62-AED9-58C1054499E9}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_unimrcp", "src\mod\asr_tts\mod_unimrcp\mod_unimrcp.2008.vcproj", "{D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}"
++ ProjectSection(ProjectDependencies) = postProject
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA} = {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108} = {72782932-37CC-46AE-8C7F-9A7B1A6EE108}
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E} = {746F3632-5BB2-4570-9453-31D6D58A7D8E}
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE} = {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {504B3154-7A4F-459D-9877-B951021C3F1F} = {504B3154-7A4F-459D-9877-B951021C3F1F}
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31} = {12A49562-BAB9-43A3-A21D-15B60BBB4C31}
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39} = {B4B62169-5AD4-4559-8707-3D933AC5DB39}
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56} = {1C320193-46A6-4B34-9C56-8AB584FC1B56}
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2} = {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0} = {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9} = {DEB01ACB-D65F-4A62-AED9-58C1054499E9}
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5} = {B5A00BFA-6083-4FAE-A097-71642D6473B5}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download CELT", "libs\win32\Download CELT.vcproj", "{FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcelt", "libs\win32\celt\libcelt.vcproj", "{ABB71A76-42B0-47A4-973A-42E3D920C6FD}"
++ ProjectSection(ProjectDependencies) = postProject
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19} = {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_celt", "src\mod\codecs\mod_celt\mod_celt.vcproj", "{4D418176-3B33-47E6-A63E-01BA34ADD21C}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD} = {ABB71A76-42B0-47A4-973A-42E3D920C6FD}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FSComm", "fscomm\FSComm.2008.vcproj", "{7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_curl", "src\mod\applications\mod_curl\mod_curl.2008.vcproj", "{EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}
++ {9778F1C0-09BC-4698-8EBC-BD982247209A} = {9778F1C0-09BC-4698-8EBC-BD982247209A}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download JSON", "libs\win32\Download JSON.2008.vcproj", "{B808178B-82F0-4CF4-A2B1-921939FA24D0}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libjson", "libs\win32\json\libjson.2008.vcproj", "{9778F1C0-09BC-4698-8EBC-BD982247209A}"
++ ProjectSection(ProjectDependencies) = postProject
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0} = {B808178B-82F0-4CF4-A2B1-921939FA24D0}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_silk", "src\mod\codecs\mod_silk\mod_silk.2008.vcproj", "{AFA983D6-4569-4F88-BA94-555ED00FD9A8}"
++ ProjectSection(ProjectDependencies) = postProject
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76} = {56B91D01-9150-4BBF-AFA1-5B68AB991B76}
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Silk_FIX", "libs\silk\src\Silk_FIX.2008.vcproj", "{56B91D01-9150-4BBF-AFA1-5B68AB991B76}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_avmd", "src\mod\applications\mod_avmd\mod_avmd.2008.vcproj", "{990BAA76-89D3-4E38-8479-C7B28784EFC8}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spandsp", "src\mod\applications\mod_spandsp\mod_spandsp.2008.vcproj", "{1E21AFE0-6FDB-41D2-942D-863607C24B91}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5} = {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_hash", "src\mod\applications\mod_hash\mod_hash.2008.vcproj", "{2E250296-0C08-4342-9C8A-BCBDD0E7DF65}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E} = {CF405366-9558-4AE8-90EF-5E21B51CCB4E}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download OPENSSL", "libs\win32\Download OPENSSL.2008.vcproj", "{D578E676-7EC8-4548-BD8B-845C635F14AD}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "openssl", "openssl", "{B376D494-D7DD-4B2A-99E2-52916D5A8CD8}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libeay32", "libs\win32\openssl\libeay32.2008.vcproj", "{D331904D-A00A-4694-A5A3-FCFF64AB5DBE}"
++ ProjectSection(ProjectDependencies) = postProject
++ {D578E676-7EC8-4548-BD8B-845C635F14AD} = {D578E676-7EC8-4548-BD8B-845C635F14AD}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ssleay32", "libs\win32\openssl\ssleay32.2008.vcproj", "{B4B62169-5AD4-4559-8707-3D933AC5DB39}"
++ ProjectSection(ProjectDependencies) = postProject
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE} = {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openssl", "libs\win32\openssl\openssl.2008.vcproj", "{25BD39B1-C8BF-4676-A738-9CABD9C6BC79}"
++ ProjectSection(ProjectDependencies) = postProject
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE} = {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39} = {B4B62169-5AD4-4559-8707-3D933AC5DB39}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_directory", "src\mod\applications\mod_directory\mod_directory.2008.vcproj", "{42E721FD-43D6-4B04-A34B-42567199FFB8}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ldns", "libs\win32\ldns\ldns-lib\ldns-lib.2008.vcproj", "{23B4D303-79FC-49E0-89E2-2280E7E28940}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_httapi", "src\mod\applications\mod_httapi\mod_httapi.2008.vcproj", "{0807C5CB-F6FF-451D-89F0-1F7B2E1D9169}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_abstraction", "src\mod\applications\mod_abstraction\mod_abstraction.2008.vcproj", "{BDA173DB-F8EF-4270-9553-B453AF92E43A}"
++ ProjectSection(ProjectDependencies) = postProject
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_gsmopen", "src\mod\endpoints\mod_gsmopen\mod_gsmopen.2008.vcproj", "{74B120FF-6935-4DFE-A142-CDB6BEA99C90}"
++ ProjectSection(ProjectDependencies) = postProject
++ {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} = {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsmlib", "src\mod\endpoints\mod_gsmopen\gsmlib\gsmlib-1.10-patched-13ubuntu\win32\gsmlib.vcproj", "{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libjpeg", "libs\win32\libjpeg\libjpeg.2008.vcproj", "{FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}"
++ ProjectSection(ProjectDependencies) = postProject
++ {21A7DA70-555E-49FA-942B-D84A38B61243} = {21A7DA70-555E-49FA-942B-D84A38B61243}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download libjpeg", "libs\win32\Download libjpeg.2008.vcproj", "{21A7DA70-555E-49FA-942B-D84A38B61243}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "xmlrpc-c", "xmlrpc-c", "{3783935D-7C0A-4166-A376-C3D8E64F3A9C}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "abyss", "libs\win32\xmlrpc-c\abyss.2008.vcproj", "{A4D67895-E709-40C7-82B6-DE1D12DDDE04}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gennmtab", "libs\win32\xmlrpc-c\gennmtab.2008.vcproj", "{2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}"
++ ProjectSection(ProjectDependencies) = postProject
++ {E5A9BCDA-B82D-4B08-B23E-9A782E367888} = {E5A9BCDA-B82D-4B08-B23E-9A782E367888}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlparse", "libs\win32\xmlrpc-c\xmlparse.2008.vcproj", "{E5A9BCDA-B82D-4B08-B23E-9A782E367888}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlrpc", "libs\win32\xmlrpc-c\xmlrpc.2008.vcproj", "{510BDAA8-C04D-47DB-8482-E6AF380D3E07}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmltok", "libs\win32\xmlrpc-c\xmltok.2008.vcproj", "{3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}"
++EndProject
++Global
++ GlobalSection(SolutionConfigurationPlatforms) = preSolution
++ All|Win32 = All|Win32
++ All|x64 = All|x64
++ Debug|Win32 = Debug|Win32
++ Debug|x64 = Debug|x64
++ Release|Win32 = Release|Win32
++ Release|x64 = Release|x64
++ EndGlobalSection
++ GlobalSection(ProjectConfigurationPlatforms) = postSolution
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.All|Win32.ActiveCfg = Release|x64
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.All|x64.ActiveCfg = Release|x64
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.All|x64.Build.0 = Release|x64
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|Win32.ActiveCfg = Debug|Win32
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|Win32.Build.0 = Debug|Win32
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|x64.ActiveCfg = Debug|x64
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|x64.Build.0 = Debug|x64
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|Win32.ActiveCfg = Release|Win32
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|Win32.Build.0 = Release|Win32
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|x64.ActiveCfg = Release|x64
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|x64.Build.0 = Release|x64
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.All|Win32.ActiveCfg = Release|x64
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.All|x64.ActiveCfg = Release|x64
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.All|x64.Build.0 = Release|x64
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|Win32.ActiveCfg = Debug|Win32
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|Win32.Build.0 = Debug|Win32
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|x64.ActiveCfg = Debug|x64
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|x64.Build.0 = Debug|x64
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|Win32.ActiveCfg = Release|Win32
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|Win32.Build.0 = Release|Win32
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|x64.ActiveCfg = Release|x64
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|x64.Build.0 = Release|x64
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.All|Win32.ActiveCfg = Release Passthrough|x64
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.All|x64.ActiveCfg = Release Passthrough|x64
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.All|x64.Build.0 = Release Passthrough|x64
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|Win32.Build.0 = Debug Passthrough|Win32
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|x64.ActiveCfg = Debug Passthrough|x64
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|x64.Build.0 = Debug Passthrough|x64
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|Win32.ActiveCfg = Release Passthrough|Win32
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|Win32.Build.0 = Release Passthrough|Win32
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|x64.ActiveCfg = Release Passthrough|x64
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|x64.Build.0 = Release Passthrough|x64
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.All|Win32.ActiveCfg = Release|x64
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.All|x64.ActiveCfg = Release|x64
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.All|x64.Build.0 = Release|x64
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|Win32.ActiveCfg = Debug|Win32
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|Win32.Build.0 = Debug|Win32
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|x64.ActiveCfg = Debug|x64
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|x64.Build.0 = Debug|x64
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|Win32.ActiveCfg = Release|Win32
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|Win32.Build.0 = Release|Win32
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|x64.ActiveCfg = Release|x64
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|x64.Build.0 = Release|x64
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.All|Win32.ActiveCfg = Release|x64
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.All|x64.ActiveCfg = Release|x64
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.All|x64.Build.0 = Release|x64
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Win32.ActiveCfg = Debug|Win32
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Win32.Build.0 = Debug|Win32
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|x64.ActiveCfg = Debug|x64
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|x64.Build.0 = Debug|x64
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Win32.ActiveCfg = Release|Win32
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Win32.Build.0 = Release|Win32
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|x64.ActiveCfg = Release|x64
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|x64.Build.0 = Release|x64
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.All|Win32.ActiveCfg = Release|x64
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.All|x64.ActiveCfg = Release|x64
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.All|x64.Build.0 = Release|x64
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|Win32.ActiveCfg = Debug|Win32
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|Win32.Build.0 = Debug|Win32
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|x64.ActiveCfg = Debug|x64
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|x64.Build.0 = Debug|x64
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|Win32.ActiveCfg = Release|Win32
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|Win32.Build.0 = Release|Win32
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|x64.ActiveCfg = Release|x64
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|x64.Build.0 = Release|x64
++ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.All|Win32.ActiveCfg = Release|Win32
++ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.All|x64.ActiveCfg = Release|Win32
++ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|Win32.ActiveCfg = Debug|Win32
++ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|x64.ActiveCfg = Debug|Win32
++ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|Win32.ActiveCfg = Release|Win32
++ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|x64.ActiveCfg = Release|Win32
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.All|Win32.ActiveCfg = Release|x64
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.All|x64.ActiveCfg = Release|x64
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.All|x64.Build.0 = Release|x64
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|Win32.ActiveCfg = Debug|Win32
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|Win32.Build.0 = Debug|Win32
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|x64.ActiveCfg = Debug|x64
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|x64.Build.0 = Debug|x64
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|Win32.ActiveCfg = Release|Win32
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|Win32.Build.0 = Release|Win32
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|x64.ActiveCfg = Release|x64
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|x64.Build.0 = Release|x64
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.All|Win32.ActiveCfg = Release MS-LDAP|x64
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.All|x64.ActiveCfg = Release MS-LDAP|x64
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.All|x64.Build.0 = Release MS-LDAP|x64
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|Win32.ActiveCfg = Debug MS-LDAP|Win32
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|Win32.Build.0 = Debug MS-LDAP|Win32
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|x64.ActiveCfg = Debug MS-LDAP|x64
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|x64.Build.0 = Debug MS-LDAP|x64
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|Win32.ActiveCfg = Release MS-LDAP|Win32
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|Win32.Build.0 = Release MS-LDAP|Win32
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|x64.ActiveCfg = Release MS-LDAP|x64
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|x64.Build.0 = Release MS-LDAP|x64
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.All|Win32.ActiveCfg = Release|x64
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.All|x64.ActiveCfg = Release|x64
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.All|x64.Build.0 = Release|x64
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|Win32.ActiveCfg = Debug|Win32
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|Win32.Build.0 = Debug|Win32
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|x64.ActiveCfg = Debug|x64
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|x64.Build.0 = Debug|x64
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|Win32.ActiveCfg = Release|Win32
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|Win32.Build.0 = Release|Win32
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|x64.ActiveCfg = Release|x64
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|x64.Build.0 = Release|x64
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.All|Win32.ActiveCfg = Release|x64
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.All|x64.ActiveCfg = Release|x64
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.All|x64.Build.0 = Release|x64
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|Win32.ActiveCfg = Debug|Win32
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|Win32.Build.0 = Debug|Win32
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|x64.ActiveCfg = Debug|x64
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|x64.Build.0 = Debug|x64
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|Win32.ActiveCfg = Release|Win32
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|Win32.Build.0 = Release|Win32
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|x64.ActiveCfg = Release|x64
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|x64.Build.0 = Release|x64
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.All|Win32.ActiveCfg = Release|x64
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.All|x64.ActiveCfg = Release|x64
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.All|x64.Build.0 = Release|x64
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|Win32.ActiveCfg = Debug|Win32
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|Win32.Build.0 = Debug|Win32
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|x64.ActiveCfg = Debug|x64
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|x64.Build.0 = Debug|x64
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|Win32.ActiveCfg = Release|Win32
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|Win32.Build.0 = Release|Win32
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|x64.ActiveCfg = Release|x64
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|x64.Build.0 = Release|x64
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.All|Win32.ActiveCfg = Release|x64
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.All|x64.ActiveCfg = Release|x64
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.All|x64.Build.0 = Release|x64
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|Win32.ActiveCfg = Debug|Win32
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|Win32.Build.0 = Debug|Win32
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|x64.ActiveCfg = Debug|x64
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|Win32.ActiveCfg = Release|Win32
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|Win32.Build.0 = Release|Win32
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|x64.ActiveCfg = Release|x64
++ {692F6330-4D87-4C82-81DF-40DB5892636E}.All|Win32.ActiveCfg = Release|x64
++ {692F6330-4D87-4C82-81DF-40DB5892636E}.All|x64.ActiveCfg = Release|x64
++ {692F6330-4D87-4C82-81DF-40DB5892636E}.All|x64.Build.0 = Release|x64
++ {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|Win32.ActiveCfg = Debug|Win32
++ {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|x64.ActiveCfg = Debug|x64
++ {692F6330-4D87-4C82-81DF-40DB5892636E}.Release|Win32.ActiveCfg = Release|Win32
++ {692F6330-4D87-4C82-81DF-40DB5892636E}.Release|x64.ActiveCfg = Release|x64
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|Win32.ActiveCfg = Release|x64
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|x64.ActiveCfg = Release|x64
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|x64.Build.0 = Release|x64
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|Win32.Build.0 = Debug|Win32
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|x64.ActiveCfg = Debug|x64
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|x64.Build.0 = Debug|x64
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|Win32.ActiveCfg = Release|Win32
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|Win32.Build.0 = Release|Win32
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|x64.ActiveCfg = Release|x64
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|x64.Build.0 = Release|x64
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.All|Win32.ActiveCfg = Release|x64
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.All|x64.ActiveCfg = Release|x64
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.All|x64.Build.0 = Release|x64
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Win32.ActiveCfg = Debug|Win32
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Win32.Build.0 = Debug|Win32
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|x64.ActiveCfg = Debug|x64
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|x64.Build.0 = Debug|x64
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Win32.ActiveCfg = Release|Win32
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Win32.Build.0 = Release|Win32
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|x64.ActiveCfg = Release|x64
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|x64.Build.0 = Release|x64
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.All|Win32.ActiveCfg = Release|x64
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.All|x64.ActiveCfg = Release|x64
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.All|x64.Build.0 = Release|x64
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|Win32.ActiveCfg = Debug|Win32
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|Win32.Build.0 = Debug|Win32
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|x64.ActiveCfg = Debug|x64
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|x64.Build.0 = Debug|x64
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|Win32.ActiveCfg = Release|Win32
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|Win32.Build.0 = Release|Win32
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|x64.ActiveCfg = Release|x64
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|x64.Build.0 = Release|x64
++ {1C453396-D912-4213-89FD-9B489162B7B5}.All|Win32.ActiveCfg = Release|x64
++ {1C453396-D912-4213-89FD-9B489162B7B5}.All|x64.ActiveCfg = Release|x64
++ {1C453396-D912-4213-89FD-9B489162B7B5}.All|x64.Build.0 = Release|x64
++ {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|Win32.ActiveCfg = Debug|Win32
++ {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|Win32.Build.0 = Debug|Win32
++ {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|x64.ActiveCfg = Debug|x64
++ {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|x64.Build.0 = Debug|x64
++ {1C453396-D912-4213-89FD-9B489162B7B5}.Release|Win32.ActiveCfg = Release|Win32
++ {1C453396-D912-4213-89FD-9B489162B7B5}.Release|Win32.Build.0 = Release|Win32
++ {1C453396-D912-4213-89FD-9B489162B7B5}.Release|x64.ActiveCfg = Release|x64
++ {1C453396-D912-4213-89FD-9B489162B7B5}.Release|x64.Build.0 = Release|x64
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.All|Win32.ActiveCfg = Release|x64
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.All|x64.ActiveCfg = Release|x64
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.All|x64.Build.0 = Release|x64
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|Win32.ActiveCfg = Debug|Win32
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|Win32.Build.0 = Debug|Win32
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|x64.ActiveCfg = Debug|x64
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|x64.Build.0 = Debug|x64
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Win32.ActiveCfg = Release|Win32
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Win32.Build.0 = Release|Win32
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|x64.ActiveCfg = Release|x64
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|x64.Build.0 = Release|x64
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|Win32.ActiveCfg = Release|x64
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|x64.ActiveCfg = Release|x64
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|x64.Build.0 = Release|x64
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Win32.ActiveCfg = Debug|Win32
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Win32.Build.0 = Debug|Win32
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|x64.ActiveCfg = Debug|x64
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|x64.Build.0 = Debug|x64
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Win32.ActiveCfg = Release|Win32
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Win32.Build.0 = Release|Win32
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|x64.ActiveCfg = Release|x64
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|x64.Build.0 = Release|x64
++ {C24FB505-05D7-4319-8485-7540B44C8603}.All|Win32.ActiveCfg = Release|x64
++ {C24FB505-05D7-4319-8485-7540B44C8603}.All|x64.ActiveCfg = Release|x64
++ {C24FB505-05D7-4319-8485-7540B44C8603}.All|x64.Build.0 = Release|x64
++ {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|Win32.ActiveCfg = Debug|Win32
++ {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|Win32.Build.0 = Debug|Win32
++ {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|x64.ActiveCfg = Debug|x64
++ {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|x64.Build.0 = Debug|x64
++ {C24FB505-05D7-4319-8485-7540B44C8603}.Release|Win32.ActiveCfg = Release|Win32
++ {C24FB505-05D7-4319-8485-7540B44C8603}.Release|Win32.Build.0 = Release|Win32
++ {C24FB505-05D7-4319-8485-7540B44C8603}.Release|x64.ActiveCfg = Release|x64
++ {C24FB505-05D7-4319-8485-7540B44C8603}.Release|x64.Build.0 = Release|x64
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.All|Win32.ActiveCfg = Release|x64
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.All|x64.ActiveCfg = Release|x64
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.All|x64.Build.0 = Release|x64
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|Win32.ActiveCfg = Debug|Win32
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|Win32.Build.0 = Debug|Win32
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|x64.ActiveCfg = Debug|x64
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|x64.Build.0 = Debug|x64
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|Win32.ActiveCfg = Release|Win32
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|Win32.Build.0 = Release|Win32
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|x64.ActiveCfg = Release|x64
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|x64.Build.0 = Release|x64
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.All|Win32.ActiveCfg = Release|x64
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.All|x64.ActiveCfg = Release|x64
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.All|x64.Build.0 = Release|x64
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|Win32.ActiveCfg = Debug|Win32
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|Win32.Build.0 = Debug|Win32
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|x64.ActiveCfg = Debug|x64
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|x64.Build.0 = Debug|x64
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|Win32.ActiveCfg = Release|Win32
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|Win32.Build.0 = Release|Win32
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|x64.ActiveCfg = Release|x64
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|x64.Build.0 = Release|x64
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.All|Win32.ActiveCfg = Release DLL|x64
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.All|x64.ActiveCfg = Release DLL|x64
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.All|x64.Build.0 = Release DLL|x64
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.ActiveCfg = Debug|Win32
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.Build.0 = Debug|Win32
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|x64.ActiveCfg = Debug|x64
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|x64.Build.0 = Debug|x64
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Win32.ActiveCfg = Release|Win32
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Win32.Build.0 = Release|Win32
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|x64.ActiveCfg = Release|x64
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|x64.Build.0 = Release|x64
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.All|Win32.ActiveCfg = Release Dll|x64
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.All|x64.ActiveCfg = Release Dll|x64
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.All|x64.Build.0 = Release Dll|x64
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Win32.ActiveCfg = Debug|Win32
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Win32.Build.0 = Debug|Win32
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|x64.ActiveCfg = Debug|x64
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|x64.Build.0 = Debug|x64
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Win32.ActiveCfg = Release|Win32
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Win32.Build.0 = Release|Win32
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|x64.ActiveCfg = Release|x64
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|x64.Build.0 = Release|x64
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.All|Win32.ActiveCfg = Release DLL|x64
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.All|x64.ActiveCfg = Release DLL|x64
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.All|x64.Build.0 = Release DLL|x64
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|Win32.ActiveCfg = Debug|Win32
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|Win32.Build.0 = Debug|Win32
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|x64.ActiveCfg = Debug|x64
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|x64.Build.0 = Debug|x64
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|Win32.ActiveCfg = Release|Win32
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|Win32.Build.0 = Release|Win32
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|x64.ActiveCfg = Release|x64
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|x64.Build.0 = Release|x64
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.All|Win32.ActiveCfg = Release DLL|x64
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.All|x64.ActiveCfg = Release DLL|x64
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.All|x64.Build.0 = Release DLL|x64
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|Win32.ActiveCfg = Debug|Win32
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|Win32.Build.0 = Debug|Win32
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|x64.ActiveCfg = Debug|x64
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|x64.Build.0 = Debug|x64
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|Win32.ActiveCfg = Release|Win32
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|Win32.Build.0 = Release|Win32
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|x64.ActiveCfg = Release|x64
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|x64.Build.0 = Release|x64
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.All|Win32.ActiveCfg = Release|x64
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.All|x64.ActiveCfg = Release|x64
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.All|x64.Build.0 = Release|x64
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Win32.ActiveCfg = Debug|Win32
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Win32.Build.0 = Debug|Win32
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|x64.ActiveCfg = Debug|x64
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|x64.Build.0 = Debug|x64
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.ActiveCfg = Release|Win32
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.Build.0 = Release|Win32
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|x64.ActiveCfg = Release|x64
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|x64.Build.0 = Release|x64
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.All|Win32.ActiveCfg = Release|x64
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.All|x64.ActiveCfg = Release|x64
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.All|x64.Build.0 = Release|x64
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|Win32.ActiveCfg = Debug|Win32
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|Win32.Build.0 = Debug|Win32
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|x64.ActiveCfg = Debug|x64
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|x64.Build.0 = Debug|x64
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.ActiveCfg = Release|Win32
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.Build.0 = Release|Win32
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64.ActiveCfg = Release|x64
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64.Build.0 = Release|x64
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.All|Win32.ActiveCfg = Release|x64
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.All|x64.ActiveCfg = Release|x64
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.All|x64.Build.0 = Release|x64
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.ActiveCfg = Debug|Win32
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.Build.0 = Debug|Win32
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|x64.ActiveCfg = Debug|x64
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|x64.Build.0 = Debug|x64
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Win32.ActiveCfg = Release|Win32
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Win32.Build.0 = Release|Win32
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|x64.ActiveCfg = Release|x64
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|x64.Build.0 = Release|x64
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|Win32.ActiveCfg = Release|x64
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|x64.ActiveCfg = Release|x64
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|x64.Build.0 = Release|x64
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Win32.ActiveCfg = Debug|Win32
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Win32.Build.0 = Debug|Win32
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|x64.ActiveCfg = Debug|x64
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|x64.Build.0 = Debug|x64
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Win32.ActiveCfg = Release|Win32
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Win32.Build.0 = Release|Win32
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|x64.ActiveCfg = Release|x64
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|x64.Build.0 = Release|x64
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.All|Win32.ActiveCfg = Release|x64
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.All|x64.ActiveCfg = Release|x64
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.All|x64.Build.0 = Release|x64
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|Win32.ActiveCfg = Debug|Win32
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|Win32.Build.0 = Debug|Win32
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|x64.ActiveCfg = Debug|x64
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|x64.Build.0 = Debug|x64
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|Win32.ActiveCfg = Release|Win32
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|Win32.Build.0 = Release|Win32
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|x64.ActiveCfg = Release|x64
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|x64.Build.0 = Release|x64
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.All|Win32.ActiveCfg = Debug|x64
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.All|x64.ActiveCfg = Debug|x64
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.All|x64.Build.0 = Debug|x64
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|Win32.ActiveCfg = Debug|Win32
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|Win32.Build.0 = Debug|Win32
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|x64.ActiveCfg = Debug|x64
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|x64.Build.0 = Debug|x64
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|Win32.ActiveCfg = Release|Win32
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|Win32.Build.0 = Release|Win32
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|x64.ActiveCfg = Release|x64
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|x64.Build.0 = Release|x64
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.All|Win32.ActiveCfg = Debug|x64
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.All|x64.ActiveCfg = Debug|x64
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.All|x64.Build.0 = Debug|x64
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Win32.ActiveCfg = Debug|Win32
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Win32.Build.0 = Debug|Win32
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|x64.ActiveCfg = Debug|x64
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|x64.Build.0 = Debug|x64
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Win32.ActiveCfg = Release|Win32
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Win32.Build.0 = Release|Win32
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|x64.ActiveCfg = Release|x64
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|x64.Build.0 = Release|x64
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.All|Win32.ActiveCfg = Debug|x64
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.All|x64.ActiveCfg = Debug|x64
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.All|x64.Build.0 = Debug|x64
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|Win32.ActiveCfg = Debug|Win32
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|Win32.Build.0 = Debug|Win32
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|x64.ActiveCfg = Debug|x64
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|x64.Build.0 = Debug|x64
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|Win32.ActiveCfg = Release|Win32
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|Win32.Build.0 = Release|Win32
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|x64.ActiveCfg = Release|x64
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|x64.Build.0 = Release|x64
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|Win32.ActiveCfg = Release|x64
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x64.ActiveCfg = Release|x64
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x64.Build.0 = Release|x64
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|Win32.ActiveCfg = Debug|Win32
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|Win32.Build.0 = Debug|Win32
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|x64.ActiveCfg = Debug|x64
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|x64.Build.0 = Debug|x64
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|Win32.ActiveCfg = Release|Win32
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|Win32.Build.0 = Release|Win32
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|x64.ActiveCfg = Release|x64
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|x64.Build.0 = Release|x64
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.All|Win32.ActiveCfg = Release|x64
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.All|x64.ActiveCfg = Release|x64
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.All|x64.Build.0 = Release|x64
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|Win32.ActiveCfg = Debug|Win32
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|Win32.Build.0 = Debug|Win32
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|x64.ActiveCfg = Debug|x64
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|x64.Build.0 = Debug|x64
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|Win32.ActiveCfg = Release|Win32
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|Win32.Build.0 = Release|Win32
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|x64.ActiveCfg = Release|x64
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|x64.Build.0 = Release|x64
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|Win32.ActiveCfg = Release|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|Win32.Build.0 = Release|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|x64.ActiveCfg = Release|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|x64.Build.0 = Release|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|Win32.ActiveCfg = Debug|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|Win32.Build.0 = Debug|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|x64.ActiveCfg = Debug|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|x64.Build.0 = Debug|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Win32.ActiveCfg = Release|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Win32.Build.0 = Release|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|x64.ActiveCfg = Release|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|x64.Build.0 = Release|Win32
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.All|Win32.ActiveCfg = Release DLL|x64
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.All|x64.ActiveCfg = Release DLL|x64
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.All|x64.Build.0 = Release DLL|x64
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Win32.ActiveCfg = Debug DLL|Win32
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Win32.Build.0 = Debug DLL|Win32
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|x64.ActiveCfg = Debug DLL|x64
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|x64.Build.0 = Debug DLL|x64
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Win32.ActiveCfg = Release DLL|Win32
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Win32.Build.0 = Release DLL|Win32
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|x64.ActiveCfg = Release DLL|x64
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|x64.Build.0 = Release DLL|x64
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.All|Win32.ActiveCfg = Release Passthrough|x64
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.All|x64.ActiveCfg = Release Passthrough|x64
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.All|x64.Build.0 = Release Passthrough|x64
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|Win32.Build.0 = Debug Passthrough|Win32
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|x64.ActiveCfg = Debug Passthrough|x64
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|x64.Build.0 = Debug Passthrough|x64
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|Win32.ActiveCfg = Release Passthrough|Win32
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|Win32.Build.0 = Release Passthrough|Win32
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|x64.ActiveCfg = Release Passthrough|x64
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|x64.Build.0 = Release Passthrough|x64
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.All|Win32.ActiveCfg = Release|x64
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.All|x64.ActiveCfg = Release|x64
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.All|x64.Build.0 = Release|x64
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|Win32.ActiveCfg = Debug|Win32
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|Win32.Build.0 = Debug|Win32
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|x64.ActiveCfg = Debug|x64
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|x64.Build.0 = Debug|x64
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|Win32.ActiveCfg = Release|Win32
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|Win32.Build.0 = Release|Win32
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|x64.ActiveCfg = Release|x64
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|x64.Build.0 = Release|x64
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.All|Win32.ActiveCfg = Release|x64
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.All|x64.ActiveCfg = Release|x64
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.All|x64.Build.0 = Release|x64
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|Win32.ActiveCfg = Debug|Win32
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|Win32.Build.0 = Debug|Win32
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|x64.ActiveCfg = Debug|x64
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|Win32.ActiveCfg = Release|Win32
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|Win32.Build.0 = Release|Win32
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|x64.ActiveCfg = Release|x64
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.All|Win32.ActiveCfg = Release|x64
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.All|x64.ActiveCfg = Release|x64
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.All|x64.Build.0 = Release|x64
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|Win32.ActiveCfg = Debug|Win32
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|Win32.Build.0 = Debug|Win32
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|x64.ActiveCfg = Debug|x64
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|Win32.ActiveCfg = Release|Win32
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|Win32.Build.0 = Release|Win32
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|x64.ActiveCfg = Release|x64
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.All|Win32.ActiveCfg = Release|x64
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.All|x64.ActiveCfg = Release|x64
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.All|x64.Build.0 = Release|x64
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|Win32.ActiveCfg = Debug|Win32
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|Win32.Build.0 = Debug|Win32
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|x64.ActiveCfg = Debug|x64
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|x64.Build.0 = Debug|x64
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|Win32.ActiveCfg = Release|Win32
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|Win32.Build.0 = Release|Win32
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|x64.ActiveCfg = Release|x64
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|x64.Build.0 = Release|x64
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.All|Win32.ActiveCfg = Release|x64
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.All|x64.ActiveCfg = Release|x64
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.All|x64.Build.0 = Release|x64
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|Win32.ActiveCfg = Debug|Win32
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|Win32.Build.0 = Debug|Win32
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|x64.ActiveCfg = Debug|x64
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|Win32.ActiveCfg = Release|Win32
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|Win32.Build.0 = Release|Win32
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|x64.ActiveCfg = Release|x64
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.All|Win32.ActiveCfg = Release|x64
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.All|x64.ActiveCfg = Release|x64
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.All|x64.Build.0 = Release|x64
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|Win32.ActiveCfg = Debug|Win32
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|Win32.Build.0 = Debug|Win32
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|x64.ActiveCfg = Debug|x64
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|x64.Build.0 = Debug|x64
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|Win32.ActiveCfg = Release|Win32
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|Win32.Build.0 = Release|Win32
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|x64.ActiveCfg = Release|x64
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|x64.Build.0 = Release|x64
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.All|Win32.ActiveCfg = Release|x64
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.All|x64.ActiveCfg = Release|x64
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.All|x64.Build.0 = Release|x64
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|Win32.ActiveCfg = Debug|Win32
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|Win32.Build.0 = Debug|Win32
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|x64.ActiveCfg = Debug|x64
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|x64.Build.0 = Debug|x64
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|Win32.ActiveCfg = Release|Win32
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|Win32.Build.0 = Release|Win32
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|x64.ActiveCfg = Release|x64
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|x64.Build.0 = Release|x64
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|Win32.ActiveCfg = Release DirectSound|x64
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64.ActiveCfg = Release DirectSound|x64
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64.Build.0 = Release DirectSound|x64
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug|Win32
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug|Win32
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug|x64
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.Build.0 = Debug|x64
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release|Win32
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release|Win32
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release|x64
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.Build.0 = Release|x64
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|Win32.ActiveCfg = Release|x64
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64.ActiveCfg = Release|x64
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64.Build.0 = Release|x64
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|Win32.ActiveCfg = Debug|Win32
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|Win32.Build.0 = Debug|Win32
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|x64.ActiveCfg = Debug|x64
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|x64.Build.0 = Debug|x64
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|Win32.ActiveCfg = Release|Win32
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|Win32.Build.0 = Release|Win32
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|x64.ActiveCfg = Release|x64
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|x64.Build.0 = Release|x64
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.All|Win32.ActiveCfg = Release Passthrough|x64
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.All|x64.ActiveCfg = Release Passthrough|x64
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.All|x64.Build.0 = Release Passthrough|x64
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|Win32.Build.0 = Debug Passthrough|Win32
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|x64.ActiveCfg = Debug Passthrough|x64
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|x64.Build.0 = Debug Passthrough|x64
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|Win32.ActiveCfg = Release Passthrough|Win32
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|Win32.Build.0 = Release Passthrough|Win32
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|x64.ActiveCfg = Release Passthrough|x64
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|x64.Build.0 = Release Passthrough|x64
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.All|Win32.ActiveCfg = Release|x64
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.All|x64.ActiveCfg = Release|x64
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.All|x64.Build.0 = Release|x64
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|Win32.ActiveCfg = Debug|Win32
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|Win32.Build.0 = Debug|Win32
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|x64.ActiveCfg = Debug|x64
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|x64.Build.0 = Debug|x64
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|Win32.ActiveCfg = Release|Win32
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|Win32.Build.0 = Release|Win32
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|x64.ActiveCfg = Release|x64
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|x64.Build.0 = Release|x64
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.All|Win32.ActiveCfg = Release|x64
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.All|x64.ActiveCfg = Release|x64
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.All|x64.Build.0 = Release|x64
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|Win32.ActiveCfg = Debug|Win32
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|Win32.Build.0 = Debug|Win32
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|x64.ActiveCfg = Debug|x64
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|x64.Build.0 = Debug|x64
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|Win32.ActiveCfg = Release|Win32
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|Win32.Build.0 = Release|Win32
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|x64.ActiveCfg = Release|x64
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|x64.Build.0 = Release|x64
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.All|Win32.ActiveCfg = Release|x64
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.All|x64.ActiveCfg = Release|x64
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.All|x64.Build.0 = Release|x64
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|Win32.ActiveCfg = Debug|Win32
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|Win32.Build.0 = Debug|Win32
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|x64.ActiveCfg = Debug|x64
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|x64.Build.0 = Debug|x64
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|Win32.ActiveCfg = Release|Win32
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|Win32.Build.0 = Release|Win32
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|x64.ActiveCfg = Release|x64
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|x64.Build.0 = Release|x64
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.All|Win32.ActiveCfg = Release|x64
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.All|x64.ActiveCfg = Release|x64
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.All|x64.Build.0 = Release|x64
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|Win32.ActiveCfg = Debug|Win32
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|Win32.Build.0 = Debug|Win32
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|x64.ActiveCfg = Debug|x64
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|Win32.ActiveCfg = Release|Win32
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|Win32.Build.0 = Release|Win32
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|x64.ActiveCfg = Release|x64
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.All|Win32.ActiveCfg = Release|x64
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.All|x64.ActiveCfg = Release|x64
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.All|x64.Build.0 = Release|x64
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|Win32.Build.0 = Debug|Win32
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|x64.ActiveCfg = Debug|x64
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|x64.Build.0 = Debug|x64
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|Win32.ActiveCfg = Release|Win32
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|Win32.Build.0 = Release|Win32
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|x64.ActiveCfg = Release|x64
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|x64.Build.0 = Release|x64
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.All|Win32.ActiveCfg = Release|x64
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.All|x64.ActiveCfg = Release|x64
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.All|x64.Build.0 = Release|x64
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|Win32.ActiveCfg = Debug|Win32
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|Win32.Build.0 = Debug|Win32
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|x64.ActiveCfg = Debug|x64
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|x64.Build.0 = Debug|x64
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|Win32.ActiveCfg = Release|Win32
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|Win32.Build.0 = Release|Win32
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|x64.ActiveCfg = Release|x64
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|x64.Build.0 = Release|x64
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.All|Win32.ActiveCfg = Release|x64
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.All|x64.ActiveCfg = Release|x64
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.All|x64.Build.0 = Release|x64
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|Win32.ActiveCfg = Debug|Win32
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|Win32.Build.0 = Debug|Win32
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|x64.ActiveCfg = Debug|x64
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|x64.Build.0 = Debug|x64
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|Win32.ActiveCfg = Release|Win32
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|Win32.Build.0 = Release|Win32
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|x64.ActiveCfg = Release|x64
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|x64.Build.0 = Release|x64
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.All|Win32.ActiveCfg = Release|x64
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.All|x64.ActiveCfg = Release|x64
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.All|x64.Build.0 = Release|x64
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|Win32.ActiveCfg = Debug|Win32
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|Win32.Build.0 = Debug|Win32
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|x64.ActiveCfg = Debug|x64
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|x64.Build.0 = Debug|x64
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|Win32.ActiveCfg = Release|Win32
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|Win32.Build.0 = Release|Win32
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|x64.ActiveCfg = Release|x64
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|x64.Build.0 = Release|x64
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.All|Win32.ActiveCfg = Release|x64
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.All|x64.ActiveCfg = Release|x64
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.All|x64.Build.0 = Release|x64
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|Win32.ActiveCfg = Debug|Win32
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|Win32.Build.0 = Debug|Win32
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|x64.ActiveCfg = Debug|x64
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|x64.Build.0 = Debug|x64
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|Win32.ActiveCfg = Release|Win32
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|Win32.Build.0 = Release|Win32
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|x64.ActiveCfg = Release|x64
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|x64.Build.0 = Release|x64
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.All|Win32.ActiveCfg = Release|x64
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.All|x64.ActiveCfg = Release|x64
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.All|x64.Build.0 = Release|x64
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|Win32.ActiveCfg = Debug|Win32
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|Win32.Build.0 = Debug|Win32
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|x64.ActiveCfg = Debug|x64
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|x64.Build.0 = Debug|x64
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|Win32.ActiveCfg = Release|Win32
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|Win32.Build.0 = Release|Win32
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|x64.ActiveCfg = Release|x64
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|x64.Build.0 = Release|x64
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.All|Win32.ActiveCfg = Release|x64
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.All|x64.ActiveCfg = Release|x64
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.All|x64.Build.0 = Release|x64
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|Win32.ActiveCfg = Debug|Win32
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|Win32.Build.0 = Debug|Win32
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|x64.ActiveCfg = Debug|x64
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|x64.Build.0 = Debug|x64
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|Win32.ActiveCfg = Release|Win32
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|Win32.Build.0 = Release|Win32
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|x64.ActiveCfg = Release|x64
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|x64.Build.0 = Release|x64
++ {F6A33240-8F29-48BD-98F0-826995911799}.All|Win32.ActiveCfg = Release|x64
++ {F6A33240-8F29-48BD-98F0-826995911799}.All|x64.ActiveCfg = Release|x64
++ {F6A33240-8F29-48BD-98F0-826995911799}.All|x64.Build.0 = Release|x64
++ {F6A33240-8F29-48BD-98F0-826995911799}.Debug|Win32.ActiveCfg = Debug|Win32
++ {F6A33240-8F29-48BD-98F0-826995911799}.Debug|Win32.Build.0 = Debug|Win32
++ {F6A33240-8F29-48BD-98F0-826995911799}.Debug|x64.ActiveCfg = Debug|x64
++ {F6A33240-8F29-48BD-98F0-826995911799}.Debug|x64.Build.0 = Debug|x64
++ {F6A33240-8F29-48BD-98F0-826995911799}.Release|Win32.ActiveCfg = Release|Win32
++ {F6A33240-8F29-48BD-98F0-826995911799}.Release|Win32.Build.0 = Release|Win32
++ {F6A33240-8F29-48BD-98F0-826995911799}.Release|x64.ActiveCfg = Release|x64
++ {F6A33240-8F29-48BD-98F0-826995911799}.Release|x64.Build.0 = Release|x64
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.All|Win32.ActiveCfg = Release|x64
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.All|x64.ActiveCfg = Release|x64
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.All|x64.Build.0 = Release|x64
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|Win32.ActiveCfg = Debug|Win32
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|Win32.Build.0 = Debug|Win32
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|x64.ActiveCfg = Debug|x64
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|x64.Build.0 = Debug|x64
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|Win32.ActiveCfg = Release|Win32
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|Win32.Build.0 = Release|Win32
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|x64.ActiveCfg = Release|x64
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|x64.Build.0 = Release|x64
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.All|Win32.ActiveCfg = Release|x64
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.All|x64.ActiveCfg = Release|x64
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.All|x64.Build.0 = Release|x64
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|Win32.ActiveCfg = Debug|Win32
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|Win32.Build.0 = Debug|Win32
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|x64.ActiveCfg = Debug|x64
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|x64.Build.0 = Debug|x64
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|Win32.ActiveCfg = Release|Win32
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|Win32.Build.0 = Release|Win32
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|x64.ActiveCfg = Release|x64
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|x64.Build.0 = Release|x64
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.All|Win32.ActiveCfg = Release|x64
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.All|x64.ActiveCfg = Release|x64
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.All|x64.Build.0 = Release|x64
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|Win32.Build.0 = Debug|Win32
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|x64.ActiveCfg = Debug|x64
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|x64.Build.0 = Debug|x64
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|Win32.ActiveCfg = Release|Win32
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|Win32.Build.0 = Release|Win32
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|x64.ActiveCfg = Release|x64
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|x64.Build.0 = Release|x64
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.All|Win32.ActiveCfg = Release|x64
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.All|x64.ActiveCfg = Release|x64
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.All|x64.Build.0 = Release|x64
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|Win32.ActiveCfg = Debug|Win32
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|Win32.Build.0 = Debug|Win32
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|x64.ActiveCfg = Debug|x64
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|x64.Build.0 = Debug|x64
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|Win32.ActiveCfg = Release|Win32
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|Win32.Build.0 = Release|Win32
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|x64.ActiveCfg = Release|x64
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|x64.Build.0 = Release|x64
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.All|Win32.ActiveCfg = Release|x64
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.All|x64.ActiveCfg = Release|x64
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.All|x64.Build.0 = Release|x64
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|Win32.ActiveCfg = Debug|Win32
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|Win32.Build.0 = Debug|Win32
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|x64.ActiveCfg = Debug|x64
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|x64.Build.0 = Debug|x64
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|Win32.ActiveCfg = Release|Win32
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|Win32.Build.0 = Release|Win32
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|x64.ActiveCfg = Release|x64
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|x64.Build.0 = Release|x64
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.All|Win32.ActiveCfg = Release|x64
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.All|x64.ActiveCfg = Release|x64
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.All|x64.Build.0 = Release|x64
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|Win32.ActiveCfg = Debug|Win32
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|Win32.Build.0 = Debug|Win32
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|x64.ActiveCfg = Debug|x64
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|x64.Build.0 = Debug|x64
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|Win32.ActiveCfg = Release|Win32
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|Win32.Build.0 = Release|Win32
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|x64.ActiveCfg = Release|x64
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|x64.Build.0 = Release|x64
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.All|Win32.ActiveCfg = Release|x64
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.All|x64.ActiveCfg = Release|x64
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.All|x64.Build.0 = Release|x64
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|Win32.ActiveCfg = Debug|Win32
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|Win32.Build.0 = Debug|Win32
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|x64.ActiveCfg = Debug|x64
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|Win32.ActiveCfg = Release|Win32
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|Win32.Build.0 = Release|Win32
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|x64.ActiveCfg = Release|x64
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.All|Win32.ActiveCfg = Release|x64
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.All|x64.ActiveCfg = Release|x64
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.All|x64.Build.0 = Release|x64
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|Win32.ActiveCfg = Debug|Win32
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|Win32.Build.0 = Debug|Win32
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|x64.ActiveCfg = Debug|x64
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|x64.Build.0 = Debug|x64
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|Win32.ActiveCfg = Release|Win32
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|Win32.Build.0 = Release|Win32
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|x64.ActiveCfg = Release|x64
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|x64.Build.0 = Release|x64
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|Win32.ActiveCfg = Release|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|Win32.Build.0 = Release|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|x64.ActiveCfg = Release|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|x64.Build.0 = Release|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|Win32.ActiveCfg = Debug|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|Win32.Build.0 = Debug|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|x64.ActiveCfg = Debug|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|x64.Build.0 = Debug|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|Win32.ActiveCfg = Release|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|Win32.Build.0 = Release|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|x64.ActiveCfg = Release|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|x64.Build.0 = Release|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.All|Win32.ActiveCfg = Release|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.All|Win32.Build.0 = Release|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.All|x64.ActiveCfg = Release|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.All|x64.Build.0 = Release|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.Debug|Win32.ActiveCfg = Debug|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.Debug|Win32.Build.0 = Debug|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.Debug|x64.ActiveCfg = Debug|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.Debug|x64.Build.0 = Debug|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.Release|Win32.ActiveCfg = Release|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.Release|Win32.Build.0 = Release|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.Release|x64.ActiveCfg = Release|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.Release|x64.Build.0 = Release|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|Win32.ActiveCfg = Release|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|Win32.Build.0 = Release|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|x64.ActiveCfg = Release|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|x64.Build.0 = Release|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|Win32.ActiveCfg = Debug|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|Win32.Build.0 = Debug|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|x64.ActiveCfg = Debug|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|x64.Build.0 = Debug|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|Win32.ActiveCfg = Release|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|Win32.Build.0 = Release|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|x64.ActiveCfg = Release|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|x64.Build.0 = Release|Win32
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.All|Win32.ActiveCfg = Debug|x64
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.All|x64.ActiveCfg = Debug|x64
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.All|x64.Build.0 = Debug|x64
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|Win32.ActiveCfg = Debug|Win32
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|Win32.Build.0 = Debug|Win32
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|x64.ActiveCfg = Debug|x64
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|x64.Build.0 = Debug|x64
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|Win32.ActiveCfg = Release|Win32
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|Win32.Build.0 = Release|Win32
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|x64.ActiveCfg = Release|x64
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|x64.Build.0 = Release|x64
++ {94001A0E-A837-445C-8004-F918F10D0226}.All|Win32.ActiveCfg = Debug|x64
++ {94001A0E-A837-445C-8004-F918F10D0226}.All|x64.ActiveCfg = Debug|x64
++ {94001A0E-A837-445C-8004-F918F10D0226}.All|x64.Build.0 = Debug|x64
++ {94001A0E-A837-445C-8004-F918F10D0226}.Debug|Win32.ActiveCfg = Debug|Win32
++ {94001A0E-A837-445C-8004-F918F10D0226}.Debug|Win32.Build.0 = Debug|Win32
++ {94001A0E-A837-445C-8004-F918F10D0226}.Debug|x64.ActiveCfg = Debug|x64
++ {94001A0E-A837-445C-8004-F918F10D0226}.Debug|x64.Build.0 = Debug|x64
++ {94001A0E-A837-445C-8004-F918F10D0226}.Release|Win32.ActiveCfg = Release|Win32
++ {94001A0E-A837-445C-8004-F918F10D0226}.Release|Win32.Build.0 = Release|Win32
++ {94001A0E-A837-445C-8004-F918F10D0226}.Release|x64.ActiveCfg = Release|x64
++ {94001A0E-A837-445C-8004-F918F10D0226}.Release|x64.Build.0 = Release|x64
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.All|Win32.ActiveCfg = Release|x64
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.All|x64.ActiveCfg = Release|x64
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.All|x64.Build.0 = Release|x64
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|Win32.ActiveCfg = Debug|Win32
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|Win32.Build.0 = Debug|Win32
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|x64.ActiveCfg = Debug|x64
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|x64.Build.0 = Debug|x64
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|Win32.ActiveCfg = Release|Win32
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|Win32.Build.0 = Release|Win32
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|x64.ActiveCfg = Release|x64
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|x64.Build.0 = Release|x64
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|Win32.ActiveCfg = Release|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|Win32.Build.0 = Release|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|x64.ActiveCfg = Release|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|x64.Build.0 = Release|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|Win32.ActiveCfg = Debug|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|Win32.Build.0 = Debug|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|x64.ActiveCfg = Debug|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|x64.Build.0 = Debug|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|Win32.ActiveCfg = Release|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|Win32.Build.0 = Release|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|x64.ActiveCfg = Release|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|x64.Build.0 = Release|Win32
++ {87A1FE3D-F410-4C8E-9591-8C625985BC70}.All|Win32.ActiveCfg = Release|Win32
++ {87A1FE3D-F410-4C8E-9591-8C625985BC70}.All|x64.ActiveCfg = Release|Win32
++ {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug|Win32.ActiveCfg = Debug|Win32
++ {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug|x64.ActiveCfg = Debug|Win32
++ {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release|Win32.ActiveCfg = Release|Win32
++ {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release|x64.ActiveCfg = Release|Win32
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|Win32.ActiveCfg = Release|Win32
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|Win32.Build.0 = Release|Win32
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|x64.ActiveCfg = Release|Win32
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|x64.Build.0 = Release|Win32
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|Win32.ActiveCfg = Debug|Win32
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|Win32.Build.0 = Debug|Win32
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|x64.ActiveCfg = Debug|x64
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|x64.Build.0 = Debug|x64
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|Win32.ActiveCfg = Release|Win32
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|Win32.Build.0 = Release|Win32
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|x64.ActiveCfg = Release|x64
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|x64.Build.0 = Release|x64
++ {7EB71250-F002-4ED8-92CA-CA218114537A}.All|Win32.ActiveCfg = Release|Win32
++ {7EB71250-F002-4ED8-92CA-CA218114537A}.All|x64.ActiveCfg = Release|Win32
++ {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|Win32.ActiveCfg = Debug|Win32
++ {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|x64.ActiveCfg = Debug|x64
++ {7EB71250-F002-4ED8-92CA-CA218114537A}.Release|Win32.ActiveCfg = Release|Win32
++ {7EB71250-F002-4ED8-92CA-CA218114537A}.Release|x64.ActiveCfg = Release|x64
++ {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.All|Win32.ActiveCfg = Release|Win32
++ {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.All|x64.ActiveCfg = Release|Win32
++ {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug|Win32.ActiveCfg = Debug|Win32
++ {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug|x64.ActiveCfg = Debug|Win32
++ {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release|Win32.ActiveCfg = Release|Win32
++ {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release|x64.ActiveCfg = Release|Win32
++ {464AAB78-5489-4916-BE51-BF8D61822311}.All|Win32.ActiveCfg = Release|Win32
++ {464AAB78-5489-4916-BE51-BF8D61822311}.All|x64.ActiveCfg = Release|Win32
++ {464AAB78-5489-4916-BE51-BF8D61822311}.Debug|Win32.ActiveCfg = Debug|Win32
++ {464AAB78-5489-4916-BE51-BF8D61822311}.Debug|x64.ActiveCfg = Debug|x64
++ {464AAB78-5489-4916-BE51-BF8D61822311}.Release|Win32.ActiveCfg = Release|Win32
++ {464AAB78-5489-4916-BE51-BF8D61822311}.Release|x64.ActiveCfg = Release|x64
++ {0AD1177E-1FD8-4643-9391-431467A11084}.All|Win32.ActiveCfg = Release|x64
++ {0AD1177E-1FD8-4643-9391-431467A11084}.All|x64.ActiveCfg = Release|x64
++ {0AD1177E-1FD8-4643-9391-431467A11084}.All|x64.Build.0 = Release|x64
++ {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|Win32.ActiveCfg = Debug|Win32
++ {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|Win32.Build.0 = Debug|Win32
++ {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|x64.ActiveCfg = Debug|x64
++ {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|x64.Build.0 = Debug|x64
++ {0AD1177E-1FD8-4643-9391-431467A11084}.Release|Win32.ActiveCfg = Release|Win32
++ {0AD1177E-1FD8-4643-9391-431467A11084}.Release|Win32.Build.0 = Release|Win32
++ {0AD1177E-1FD8-4643-9391-431467A11084}.Release|x64.ActiveCfg = Release|x64
++ {0AD1177E-1FD8-4643-9391-431467A11084}.Release|x64.Build.0 = Release|x64
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.All|Win32.ActiveCfg = Release Static|x64
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.All|x64.ActiveCfg = Release Static|x64
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.All|x64.Build.0 = Release Static|x64
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|Win32.ActiveCfg = Debug|Win32
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|x64.ActiveCfg = Debug|x64
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|Win32.ActiveCfg = Release|Win32
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|x64.ActiveCfg = Release|x64
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|Win32.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|Win32.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|x64.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|x64.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|Win32.Build.0 = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|x64.ActiveCfg = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|x64.Build.0 = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|Win32.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|Win32.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|x64.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|x64.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|Win32.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|Win32.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|x64.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|x64.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|Win32.Build.0 = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|x64.ActiveCfg = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|x64.Build.0 = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|Win32.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|Win32.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|x64.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|x64.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|Win32.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|Win32.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|x64.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|x64.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|Win32.Build.0 = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|x64.ActiveCfg = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|x64.Build.0 = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|Win32.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|Win32.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|x64.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|x64.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|Win32.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|Win32.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|x64.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|x64.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|Win32.Build.0 = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|x64.ActiveCfg = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|x64.Build.0 = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|Win32.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|Win32.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|x64.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|x64.Build.0 = Release|Win32
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.All|Win32.ActiveCfg = Debug|x64
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.All|x64.ActiveCfg = Debug|x64
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.All|x64.Build.0 = Debug|x64
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|Win32.ActiveCfg = Debug|Win32
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|Win32.Build.0 = Debug|Win32
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|x64.ActiveCfg = Debug|x64
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|x64.Build.0 = Debug|x64
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|Win32.ActiveCfg = Release|Win32
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|Win32.Build.0 = Release|Win32
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|x64.ActiveCfg = Release|x64
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|x64.Build.0 = Release|x64
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.All|Win32.ActiveCfg = Debug|x64
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.All|x64.ActiveCfg = Debug|x64
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.All|x64.Build.0 = Debug|x64
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|Win32.Build.0 = Debug|Win32
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|x64.ActiveCfg = Debug|x64
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|x64.Build.0 = Debug|x64
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|Win32.ActiveCfg = Release|Win32
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|Win32.Build.0 = Release|Win32
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|x64.ActiveCfg = Release|x64
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|x64.Build.0 = Release|x64
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.All|Win32.ActiveCfg = Release|x64
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.All|x64.ActiveCfg = Release|x64
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.All|x64.Build.0 = Release|x64
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|Win32.ActiveCfg = Debug|Win32
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|Win32.Build.0 = Debug|Win32
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|x64.ActiveCfg = Debug|x64
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|x64.Build.0 = Debug|x64
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|Win32.ActiveCfg = Release|Win32
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|Win32.Build.0 = Release|Win32
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|x64.ActiveCfg = Release|x64
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|x64.Build.0 = Release|x64
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.All|Win32.ActiveCfg = Debug|x64
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.All|x64.ActiveCfg = Debug|x64
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.All|x64.Build.0 = Debug|x64
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|Win32.ActiveCfg = Debug|Win32
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|Win32.Build.0 = Debug|Win32
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|x64.ActiveCfg = Debug|x64
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|x64.Build.0 = Debug|x64
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|Win32.ActiveCfg = Release|Win32
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|Win32.Build.0 = Release|Win32
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|x64.ActiveCfg = Release|x64
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|x64.Build.0 = Release|x64
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.All|Win32.ActiveCfg = Release|x64
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.All|x64.ActiveCfg = Release|x64
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.All|x64.Build.0 = Release|x64
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|Win32.ActiveCfg = Debug|Win32
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|Win32.Build.0 = Debug|Win32
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|x64.ActiveCfg = Debug|x64
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|x64.Build.0 = Debug|x64
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Win32.ActiveCfg = Release|Win32
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Win32.Build.0 = Release|Win32
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|x64.ActiveCfg = Release|x64
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|x64.Build.0 = Release|x64
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.All|Win32.ActiveCfg = Release|x64
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.All|x64.ActiveCfg = Release|x64
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.All|x64.Build.0 = Release|x64
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|Win32.ActiveCfg = Debug|Win32
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|Win32.Build.0 = Debug|Win32
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|x64.ActiveCfg = Debug|x64
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|x64.Build.0 = Debug|x64
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|Win32.ActiveCfg = Release|Win32
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|Win32.Build.0 = Release|Win32
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|x64.ActiveCfg = Release|x64
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|x64.Build.0 = Release|x64
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.All|Win32.ActiveCfg = Release_Mono|x64
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.All|x64.ActiveCfg = Release_Mono|x64
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.All|x64.Build.0 = Release_Mono|x64
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|Win32.ActiveCfg = Debug_CLR|Win32
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|Win32.Build.0 = Debug_CLR|Win32
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|x64.ActiveCfg = Debug_CLR|x64
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|x64.Build.0 = Debug_CLR|x64
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|Win32.ActiveCfg = Release_CLR|Win32
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|Win32.Build.0 = Release_CLR|Win32
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|x64.ActiveCfg = Release_CLR|x64
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|x64.Build.0 = Release_CLR|x64
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.All|Win32.ActiveCfg = Release|Any CPU
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.All|x64.ActiveCfg = Release|Any CPU
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|Win32.ActiveCfg = Debug|Any CPU
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|Win32.Build.0 = Debug|Any CPU
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|x64.ActiveCfg = Debug|x64
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|x64.Build.0 = Debug|x64
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|Win32.ActiveCfg = Release|Any CPU
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|Win32.Build.0 = Release|Any CPU
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|x64.ActiveCfg = Release|x64
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|x64.Build.0 = Release|x64
++ {E796E337-DE78-4303-8614-9A590862EE95}.All|Win32.ActiveCfg = Release|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.All|Win32.Build.0 = Release|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.All|x64.ActiveCfg = Release|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.All|x64.Build.0 = Release|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.Debug|Win32.ActiveCfg = Debug|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.Debug|Win32.Build.0 = Debug|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.Debug|x64.ActiveCfg = Debug|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.Debug|x64.Build.0 = Debug|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.Release|Win32.ActiveCfg = Release|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.Release|Win32.Build.0 = Release|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.Release|x64.ActiveCfg = Release|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.Release|x64.Build.0 = Release|Win32
++ {419C8F80-D858-4B48-A25C-AF4007608137}.All|Win32.ActiveCfg = Release|x64
++ {419C8F80-D858-4B48-A25C-AF4007608137}.All|x64.ActiveCfg = Release|x64
++ {419C8F80-D858-4B48-A25C-AF4007608137}.All|x64.Build.0 = Release|x64
++ {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|Win32.ActiveCfg = Debug|Win32
++ {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|Win32.Build.0 = Debug|Win32
++ {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|x64.ActiveCfg = Debug|x64
++ {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|x64.Build.0 = Debug|x64
++ {419C8F80-D858-4B48-A25C-AF4007608137}.Release|Win32.ActiveCfg = Release|Win32
++ {419C8F80-D858-4B48-A25C-AF4007608137}.Release|Win32.Build.0 = Release|Win32
++ {419C8F80-D858-4B48-A25C-AF4007608137}.Release|x64.ActiveCfg = Release|x64
++ {419C8F80-D858-4B48-A25C-AF4007608137}.Release|x64.Build.0 = Release|x64
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.All|Win32.ActiveCfg = Release|x64
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.All|x64.ActiveCfg = Release|x64
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.All|x64.Build.0 = Release|x64
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|Win32.ActiveCfg = Debug|Win32
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|Win32.Build.0 = Debug|Win32
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|x64.ActiveCfg = Debug|x64
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|x64.Build.0 = Debug|x64
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|Win32.ActiveCfg = Release|Win32
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|Win32.Build.0 = Release|Win32
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|x64.ActiveCfg = Release|x64
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|x64.Build.0 = Release|x64
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.All|Win32.ActiveCfg = Release|x64
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.All|x64.ActiveCfg = Release|x64
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.All|x64.Build.0 = Release|x64
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|Win32.ActiveCfg = Debug|Win32
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|Win32.Build.0 = Debug|Win32
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|x64.ActiveCfg = Debug|x64
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|x64.Build.0 = Debug|x64
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|Win32.ActiveCfg = Release|Win32
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|Win32.Build.0 = Release|Win32
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|x64.ActiveCfg = Release|x64
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|x64.Build.0 = Release|x64
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.All|Win32.ActiveCfg = Release|x64
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.All|x64.ActiveCfg = Release|x64
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.All|x64.Build.0 = Release|x64
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|Win32.ActiveCfg = Debug|Win32
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|Win32.Build.0 = Debug|Win32
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|x64.ActiveCfg = Debug|x64
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|x64.Build.0 = Debug|x64
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|Win32.ActiveCfg = Release|Win32
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|Win32.Build.0 = Release|Win32
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|x64.ActiveCfg = Release|x64
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|x64.Build.0 = Release|x64
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.All|Win32.ActiveCfg = Release|x64
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.All|x64.ActiveCfg = Release|x64
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.All|x64.Build.0 = Release|x64
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|Win32.ActiveCfg = Debug|Win32
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|Win32.Build.0 = Debug|Win32
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|x64.ActiveCfg = Debug|x64
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|x64.Build.0 = Debug|x64
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|Win32.ActiveCfg = Release|Win32
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|Win32.Build.0 = Release|Win32
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|x64.ActiveCfg = Release|x64
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|x64.Build.0 = Release|x64
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.All|Win32.ActiveCfg = Release|x64
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.All|x64.ActiveCfg = Release|x64
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.All|x64.Build.0 = Release|x64
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|Win32.ActiveCfg = Debug|Win32
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|Win32.Build.0 = Debug|Win32
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|x64.ActiveCfg = Debug|x64
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|x64.Build.0 = Debug|x64
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|Win32.ActiveCfg = Release|Win32
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|Win32.Build.0 = Release|Win32
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|x64.ActiveCfg = Release|x64
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|x64.Build.0 = Release|x64
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.All|Win32.ActiveCfg = Release|x64
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.All|x64.ActiveCfg = Release|x64
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.All|x64.Build.0 = Release|x64
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|Win32.Build.0 = Debug|Win32
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|x64.ActiveCfg = Debug|x64
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|x64.Build.0 = Debug|x64
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|Win32.ActiveCfg = Release|Win32
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|Win32.Build.0 = Release|Win32
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|x64.ActiveCfg = Release|x64
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|x64.Build.0 = Release|x64
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.All|Win32.ActiveCfg = Release|x64
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.All|x64.ActiveCfg = Release|x64
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.All|x64.Build.0 = Release|x64
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|Win32.ActiveCfg = Debug|Win32
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|Win32.Build.0 = Debug|Win32
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|x64.ActiveCfg = Debug|x64
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|x64.Build.0 = Debug|x64
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|Win32.ActiveCfg = Release|Win32
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|Win32.Build.0 = Release|Win32
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|x64.ActiveCfg = Release|x64
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|x64.Build.0 = Release|x64
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.All|Win32.ActiveCfg = Release|x64
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.All|x64.ActiveCfg = Release|x64
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.All|x64.Build.0 = Release|x64
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|Win32.ActiveCfg = Debug|Win32
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|Win32.Build.0 = Debug|Win32
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|x64.ActiveCfg = Debug|x64
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|x64.Build.0 = Debug|x64
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|Win32.ActiveCfg = Release|Win32
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|Win32.Build.0 = Release|Win32
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|x64.ActiveCfg = Release|x64
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|x64.Build.0 = Release|x64
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.All|Win32.ActiveCfg = Release|x64
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.All|x64.ActiveCfg = Release|x64
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.All|x64.Build.0 = Release|x64
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|Win32.ActiveCfg = Debug|Win32
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|Win32.Build.0 = Debug|Win32
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|x64.ActiveCfg = Debug|x64
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|x64.Build.0 = Debug|x64
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|Win32.ActiveCfg = Release|Win32
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|Win32.Build.0 = Release|Win32
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|x64.ActiveCfg = Release|x64
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|x64.Build.0 = Release|x64
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.All|Win32.ActiveCfg = Release|x64
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.All|x64.ActiveCfg = Release|x64
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.All|x64.Build.0 = Release|x64
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|Win32.ActiveCfg = Debug|Win32
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|Win32.Build.0 = Debug|Win32
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|x64.ActiveCfg = Debug|x64
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|x64.Build.0 = Debug|x64
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|Win32.ActiveCfg = Release|Win32
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|Win32.Build.0 = Release|Win32
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|x64.ActiveCfg = Release|x64
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|x64.Build.0 = Release|x64
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.All|Win32.ActiveCfg = Release_WM5_PPC_ARM|x64
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.All|x64.ActiveCfg = Release_WM5_PPC_ARM|x64
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.All|x64.Build.0 = Release_WM5_PPC_ARM|x64
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Debug|Win32.ActiveCfg = Debug|Win32
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Debug|Win32.Build.0 = Debug|Win32
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Debug|x64.ActiveCfg = Debug|x64
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Debug|x64.Build.0 = Debug|x64
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Release|Win32.ActiveCfg = Release|Win32
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Release|Win32.Build.0 = Release|Win32
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Release|x64.ActiveCfg = Release|x64
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Release|x64.Build.0 = Release|x64
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.All|Win32.ActiveCfg = Release_Static_SSE|x64
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.All|x64.ActiveCfg = Release_Static_SSE|x64
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.All|x64.Build.0 = Release_Static_SSE|x64
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Debug|Win32.ActiveCfg = Debug|Win32
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Debug|Win32.Build.0 = Debug|Win32
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Debug|x64.ActiveCfg = Debug|x64
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Debug|x64.Build.0 = Debug|x64
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Release|Win32.ActiveCfg = Release|Win32
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Release|Win32.Build.0 = Release|Win32
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Release|x64.ActiveCfg = Release|x64
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Release|x64.Build.0 = Release|x64
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.All|Win32.ActiveCfg = Release|x64
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.All|x64.ActiveCfg = Release|x64
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.All|x64.Build.0 = Release|x64
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Debug|Win32.ActiveCfg = Debug|Win32
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Debug|Win32.Build.0 = Debug|Win32
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Debug|x64.ActiveCfg = Debug|x64
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Debug|x64.Build.0 = Debug|x64
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Release|Win32.ActiveCfg = Release|Win32
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Release|Win32.Build.0 = Release|Win32
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Release|x64.ActiveCfg = Release|x64
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Release|x64.Build.0 = Release|x64
++ {D0B36172-CD76-454A-9B89-990025266C2A}.All|Win32.ActiveCfg = Release|x64
++ {D0B36172-CD76-454A-9B89-990025266C2A}.All|x64.ActiveCfg = Release|x64
++ {D0B36172-CD76-454A-9B89-990025266C2A}.All|x64.Build.0 = Release|x64
++ {D0B36172-CD76-454A-9B89-990025266C2A}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D0B36172-CD76-454A-9B89-990025266C2A}.Debug|Win32.Build.0 = Debug|Win32
++ {D0B36172-CD76-454A-9B89-990025266C2A}.Debug|x64.ActiveCfg = Debug|x64
++ {D0B36172-CD76-454A-9B89-990025266C2A}.Debug|x64.Build.0 = Debug|x64
++ {D0B36172-CD76-454A-9B89-990025266C2A}.Release|Win32.ActiveCfg = Release|Win32
++ {D0B36172-CD76-454A-9B89-990025266C2A}.Release|Win32.Build.0 = Release|Win32
++ {D0B36172-CD76-454A-9B89-990025266C2A}.Release|x64.ActiveCfg = Release|x64
++ {D0B36172-CD76-454A-9B89-990025266C2A}.Release|x64.Build.0 = Release|x64
++ {05C9FB27-480E-4D53-B3B7-6338E2526666}.All|Win32.ActiveCfg = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-6338E2526666}.All|Win32.Build.0 = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-6338E2526666}.All|x64.ActiveCfg = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-6338E2526666}.Debug|Win32.ActiveCfg = Debug|Win32
++ {05C9FB27-480E-4D53-B3B7-6338E2526666}.Debug|x64.ActiveCfg = Debug|Win32
++ {05C9FB27-480E-4D53-B3B7-6338E2526666}.Release|Win32.ActiveCfg = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-6338E2526666}.Release|x64.ActiveCfg = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-7338E2514666}.All|Win32.ActiveCfg = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-7338E2514666}.All|Win32.Build.0 = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-7338E2514666}.All|x64.ActiveCfg = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-7338E2514666}.Debug|Win32.ActiveCfg = Debug|Win32
++ {05C9FB27-480E-4D53-B3B7-7338E2514666}.Debug|x64.ActiveCfg = Debug|x64
++ {05C9FB27-480E-4D53-B3B7-7338E2514666}.Release|Win32.ActiveCfg = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-7338E2514666}.Release|x64.ActiveCfg = Release|Win32
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.All|Win32.ActiveCfg = All|Win32
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.All|Win32.Build.0 = All|Win32
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.All|x64.ActiveCfg = All|Win32
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Debug|Win32.ActiveCfg = Debug|Win32
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Debug|x64.ActiveCfg = Debug|x64
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Release|Win32.ActiveCfg = Release|Win32
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Release|x64.ActiveCfg = Release|x64
++ {CC1DD008-9406-448D-A0AD-33C3186CFADB}.All|Win32.ActiveCfg = Release|Win32
++ {CC1DD008-9406-448D-A0AD-33C3186CFADB}.All|x64.ActiveCfg = Release|Win32
++ {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Debug|Win32.ActiveCfg = Debug|Win32
++ {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Debug|x64.ActiveCfg = Debug|x64
++ {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Release|Win32.ActiveCfg = Release|Win32
++ {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Release|x64.ActiveCfg = Release|x64
++ {48414740-C693-4968-9846-EE058020C64F}.All|Win32.ActiveCfg = Release|Win32
++ {48414740-C693-4968-9846-EE058020C64F}.All|x64.ActiveCfg = Release|Win32
++ {48414740-C693-4968-9846-EE058020C64F}.Debug|Win32.ActiveCfg = Debug|Win32
++ {48414740-C693-4968-9846-EE058020C64F}.Debug|x64.ActiveCfg = Debug|x64
++ {48414740-C693-4968-9846-EE058020C64F}.Release|Win32.ActiveCfg = Release|Win32
++ {48414740-C693-4968-9846-EE058020C64F}.Release|x64.ActiveCfg = Release|x64
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.All|Win32.ActiveCfg = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.All|Win32.Build.0 = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.All|x64.ActiveCfg = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Debug|Win32.ActiveCfg = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Debug|Win32.Build.0 = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Debug|x64.ActiveCfg = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Debug|x64.Build.0 = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Release|Win32.ActiveCfg = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Release|Win32.Build.0 = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Release|x64.ActiveCfg = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Release|x64.Build.0 = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.All|Win32.ActiveCfg = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.All|Win32.Build.0 = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.All|x64.ActiveCfg = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Debug|Win32.ActiveCfg = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Debug|Win32.Build.0 = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Debug|x64.ActiveCfg = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Debug|x64.Build.0 = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Release|Win32.ActiveCfg = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Release|Win32.Build.0 = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Release|x64.ActiveCfg = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Release|x64.Build.0 = All|Win32
++ {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.All|Win32.ActiveCfg = Release|x64
++ {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.All|x64.ActiveCfg = Release|x64
++ {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.All|x64.Build.0 = Release|x64
++ {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Debug|Win32.ActiveCfg = Debug|Win32
++ {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Debug|x64.ActiveCfg = Debug|x64
++ {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Release|Win32.ActiveCfg = Release|Win32
++ {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Release|x64.ActiveCfg = Release|x64
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.All|Win32.ActiveCfg = Release|Win32
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.All|Win32.Build.0 = Release|Win32
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.All|x64.ActiveCfg = Release|Win32
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Debug|Win32.ActiveCfg = Debug|Win32
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Debug|x64.ActiveCfg = Debug|Win32
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Release|Win32.ActiveCfg = Release|Win32
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Release|x64.ActiveCfg = Release|Win32
++ {1F0A8A77-E661-418F-BB92-82172AE43803}.All|Win32.ActiveCfg = Release|Win32
++ {1F0A8A77-E661-418F-BB92-82172AE43803}.All|x64.ActiveCfg = Release|Win32
++ {1F0A8A77-E661-418F-BB92-82172AE43803}.Debug|Win32.ActiveCfg = Debug|Win32
++ {1F0A8A77-E661-418F-BB92-82172AE43803}.Debug|x64.ActiveCfg = Debug|Win32
++ {1F0A8A77-E661-418F-BB92-82172AE43803}.Release|Win32.ActiveCfg = Release|Win32
++ {1F0A8A77-E661-418F-BB92-82172AE43803}.Release|x64.ActiveCfg = Release|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|Win32.ActiveCfg = Release|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|Win32.Build.0 = Release|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|x64.ActiveCfg = Release|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|x64.Build.0 = Release|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.Debug|Win32.ActiveCfg = Debug|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.Debug|Win32.Build.0 = Debug|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.Debug|x64.ActiveCfg = Debug|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.Debug|x64.Build.0 = Debug|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.Release|Win32.ActiveCfg = Release|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.Release|Win32.Build.0 = Release|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.Release|x64.ActiveCfg = Release|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.Release|x64.Build.0 = Release|Win32
++ {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.All|Win32.ActiveCfg = Release|Win32
++ {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.All|x64.ActiveCfg = Release|Win32
++ {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Debug|Win32.ActiveCfg = Debug|Win32
++ {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Debug|x64.ActiveCfg = Debug|Win32
++ {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Release|Win32.ActiveCfg = Release|Win32
++ {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Release|x64.ActiveCfg = Release|Win32
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|Win32.ActiveCfg = Release|Win32
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|Win32.Build.0 = Release|Win32
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|x64.ActiveCfg = Release|Win32
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|x64.Build.0 = Release|Win32
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|Win32.Build.0 = Debug|Win32
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|x64.ActiveCfg = Debug|x64
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|x64.Build.0 = Debug|x64
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|Win32.ActiveCfg = Release|Win32
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|Win32.Build.0 = Release|Win32
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|x64.ActiveCfg = Release|x64
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|x64.Build.0 = Release|x64
++ {BA599D0A-4310-4505-91DA-6A6447B3E289}.All|Win32.ActiveCfg = Release|Win32
++ {BA599D0A-4310-4505-91DA-6A6447B3E289}.All|x64.ActiveCfg = Release|Win32
++ {BA599D0A-4310-4505-91DA-6A6447B3E289}.Debug|Win32.ActiveCfg = Debug|Win32
++ {BA599D0A-4310-4505-91DA-6A6447B3E289}.Debug|x64.ActiveCfg = Debug|x64
++ {BA599D0A-4310-4505-91DA-6A6447B3E289}.Release|Win32.ActiveCfg = Release|Win32
++ {BA599D0A-4310-4505-91DA-6A6447B3E289}.Release|x64.ActiveCfg = Release|x64
++ {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.All|Win32.ActiveCfg = Release|Win32
++ {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.All|x64.ActiveCfg = Release|Win32
++ {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Debug|Win32.ActiveCfg = Debug|Win32
++ {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Debug|x64.ActiveCfg = Debug|x64
++ {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Release|Win32.ActiveCfg = Release|Win32
++ {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Release|x64.ActiveCfg = Release|x64
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.All|Win32.ActiveCfg = Release|x64
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.All|x64.ActiveCfg = Release|x64
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.All|x64.Build.0 = Release|x64
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Debug|Win32.ActiveCfg = Debug|Win32
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Debug|Win32.Build.0 = Debug|Win32
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Debug|x64.ActiveCfg = Debug|x64
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Debug|x64.Build.0 = Debug|x64
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Release|Win32.ActiveCfg = Release|Win32
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Release|Win32.Build.0 = Release|Win32
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Release|x64.ActiveCfg = Release|x64
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Release|x64.Build.0 = Release|x64
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|Win32.ActiveCfg = Release|x64
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|Win32.Build.0 = Release|x64
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|x64.ActiveCfg = Release|x64
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|x64.Build.0 = Release|x64
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Debug|Win32.ActiveCfg = Debug|Win32
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Debug|Win32.Build.0 = Debug|Win32
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Debug|x64.ActiveCfg = Debug|x64
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Debug|x64.Build.0 = Debug|x64
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Release|Win32.ActiveCfg = Release|Win32
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Release|Win32.Build.0 = Release|Win32
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Release|x64.ActiveCfg = Release|x64
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Release|x64.Build.0 = Release|x64
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.All|Win32.ActiveCfg = Release|x64
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.All|x64.ActiveCfg = Release|x64
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.Debug|Win32.ActiveCfg = Debug|Win32
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.Debug|Win32.Build.0 = Debug|Win32
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.Debug|x64.ActiveCfg = Debug|x64
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.Debug|x64.Build.0 = Debug|x64
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|Win32.ActiveCfg = Release|Win32
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|Win32.Build.0 = Release|Win32
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|x64.ActiveCfg = Release|x64
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|x64.Build.0 = Release|x64
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.All|Win32.ActiveCfg = Release|Win32
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.All|Win32.Build.0 = Release|Win32
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.All|x64.ActiveCfg = Release|Win32
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Win32.ActiveCfg = Debug|Win32
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Win32.Build.0 = Debug|Win32
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|x64.ActiveCfg = Debug|x64
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|x64.Build.0 = Debug|x64
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Win32.ActiveCfg = Release|Win32
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Win32.Build.0 = Release|Win32
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|x64.ActiveCfg = Release|x64
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|x64.Build.0 = Release|x64
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.All|Win32.ActiveCfg = Release|x64
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.All|x64.ActiveCfg = Release|x64
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.All|x64.Build.0 = Release|x64
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Debug|Win32.Build.0 = Debug|Win32
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Debug|x64.ActiveCfg = Debug|x64
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Debug|x64.Build.0 = Debug|x64
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|Win32.ActiveCfg = Release|Win32
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|Win32.Build.0 = Release|Win32
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|x64.ActiveCfg = Release|x64
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|x64.Build.0 = Release|x64
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.All|Win32.ActiveCfg = Release|Win32
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.All|Win32.Build.0 = Release|Win32
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.All|x64.ActiveCfg = Release|Win32
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Win32.ActiveCfg = Debug|Win32
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Win32.Build.0 = Debug|Win32
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|x64.ActiveCfg = Debug|x64
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|x64.Build.0 = Debug|x64
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Win32.ActiveCfg = Release|Win32
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Win32.Build.0 = Release|Win32
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|x64.ActiveCfg = Release|x64
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|x64.Build.0 = Release|x64
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.All|Win32.ActiveCfg = Release|Win32
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.All|Win32.Build.0 = Release|Win32
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.All|x64.ActiveCfg = Release|Win32
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|Win32.ActiveCfg = Debug|Win32
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|Win32.Build.0 = Debug|Win32
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|x64.ActiveCfg = Debug|x64
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|x64.Build.0 = Debug|x64
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|Win32.ActiveCfg = Release|Win32
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|Win32.Build.0 = Release|Win32
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|x64.ActiveCfg = Release|x64
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|x64.Build.0 = Release|x64
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.All|Win32.ActiveCfg = Release|Win32
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.All|Win32.Build.0 = Release|Win32
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.All|x64.ActiveCfg = Release|Win32
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|Win32.ActiveCfg = Debug|Win32
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|Win32.Build.0 = Debug|Win32
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|x64.ActiveCfg = Debug|x64
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|x64.Build.0 = Debug|x64
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|Win32.ActiveCfg = Release|Win32
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|Win32.Build.0 = Release|Win32
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|x64.ActiveCfg = Release|x64
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|x64.Build.0 = Release|x64
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.All|Win32.ActiveCfg = Release|Win32
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.All|Win32.Build.0 = Release|Win32
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.All|x64.ActiveCfg = Release|Win32
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|Win32.ActiveCfg = Debug|Win32
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|Win32.Build.0 = Debug|Win32
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|x64.ActiveCfg = Debug|x64
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|x64.Build.0 = Debug|x64
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|Win32.ActiveCfg = Release|Win32
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|Win32.Build.0 = Release|Win32
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|x64.ActiveCfg = Release|x64
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|x64.Build.0 = Release|x64
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.All|Win32.ActiveCfg = Release|Win32
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.All|Win32.Build.0 = Release|Win32
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.All|x64.ActiveCfg = Release|Win32
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|Win32.ActiveCfg = Debug|Win32
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|Win32.Build.0 = Debug|Win32
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|x64.ActiveCfg = Debug|x64
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|x64.Build.0 = Debug|x64
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|Win32.ActiveCfg = Release|Win32
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|Win32.Build.0 = Release|Win32
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|x64.ActiveCfg = Release|x64
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|x64.Build.0 = Release|x64
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.All|Win32.ActiveCfg = Release|Win32
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.All|Win32.Build.0 = Release|Win32
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.All|x64.ActiveCfg = Release|Win32
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|Win32.ActiveCfg = Debug|Win32
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|Win32.Build.0 = Debug|Win32
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|x64.ActiveCfg = Debug|x64
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|x64.Build.0 = Debug|x64
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|Win32.ActiveCfg = Release|Win32
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|Win32.Build.0 = Release|Win32
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|x64.ActiveCfg = Release|x64
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|x64.Build.0 = Release|x64
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.All|Win32.ActiveCfg = Release|Win32
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.All|Win32.Build.0 = Release|Win32
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.All|x64.ActiveCfg = Release|Win32
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|Win32.ActiveCfg = Debug|Win32
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|Win32.Build.0 = Debug|Win32
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|x64.ActiveCfg = Debug|x64
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|x64.Build.0 = Debug|x64
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|Win32.ActiveCfg = Release|Win32
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|Win32.Build.0 = Release|Win32
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|x64.ActiveCfg = Release|x64
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|x64.Build.0 = Release|x64
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.All|Win32.ActiveCfg = Release|Win32
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.All|Win32.Build.0 = Release|Win32
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.All|x64.ActiveCfg = Release|Win32
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|Win32.ActiveCfg = Debug|Win32
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|Win32.Build.0 = Debug|Win32
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|x64.ActiveCfg = Debug|x64
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|x64.Build.0 = Debug|x64
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|Win32.ActiveCfg = Release|Win32
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|Win32.Build.0 = Release|Win32
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|x64.ActiveCfg = Release|x64
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|x64.Build.0 = Release|x64
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.All|Win32.ActiveCfg = Release|Win32
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.All|Win32.Build.0 = Release|Win32
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.All|x64.ActiveCfg = Release|Win32
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|Win32.ActiveCfg = Debug|Win32
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|Win32.Build.0 = Debug|Win32
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|x64.ActiveCfg = Debug|x64
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|x64.Build.0 = Debug|x64
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|Win32.ActiveCfg = Release|Win32
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|Win32.Build.0 = Release|Win32
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|x64.ActiveCfg = Release|x64
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|x64.Build.0 = Release|x64
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.All|Win32.ActiveCfg = Release|x64
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.All|x64.ActiveCfg = Release|x64
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.All|x64.Build.0 = Release|x64
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|Win32.Build.0 = Debug|Win32
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|x64.ActiveCfg = Debug|x64
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|x64.Build.0 = Debug|x64
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|Win32.ActiveCfg = Release|Win32
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|Win32.Build.0 = Release|Win32
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|x64.ActiveCfg = Release|x64
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|x64.Build.0 = Release|x64
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.All|Win32.ActiveCfg = Release|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.All|Win32.Build.0 = Release|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.All|x64.ActiveCfg = Release|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Debug|Win32.ActiveCfg = Debug|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Debug|Win32.Build.0 = Debug|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Debug|x64.ActiveCfg = Debug|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Debug|x64.Build.0 = Debug|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Release|Win32.ActiveCfg = Release|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Release|Win32.Build.0 = Release|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Release|x64.ActiveCfg = Release|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Release|x64.Build.0 = Release|Win32
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.All|Win32.ActiveCfg = Release|x64
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.All|x64.ActiveCfg = Release|x64
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.All|x64.Build.0 = Release|x64
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Debug|Win32.ActiveCfg = Debug|Win32
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Debug|Win32.Build.0 = Debug|Win32
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Debug|x64.ActiveCfg = Debug|x64
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Debug|x64.Build.0 = Debug|x64
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Release|Win32.ActiveCfg = Release|Win32
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Release|Win32.Build.0 = Release|Win32
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Release|x64.ActiveCfg = Release|x64
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Release|x64.Build.0 = Release|x64
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.All|Win32.ActiveCfg = Release Passthrough|x64
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.All|x64.ActiveCfg = Release Passthrough|x64
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.All|x64.Build.0 = Release Passthrough|x64
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Debug|Win32.ActiveCfg = Debug|Win32
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Debug|Win32.Build.0 = Debug|Win32
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Debug|x64.ActiveCfg = Debug|x64
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Debug|x64.Build.0 = Debug|x64
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Release|Win32.ActiveCfg = Release|Win32
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Release|Win32.Build.0 = Release|Win32
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Release|x64.ActiveCfg = Release|x64
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Release|x64.Build.0 = Release|x64
++ {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.All|Win32.ActiveCfg = Release|Win32
++ {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.All|Win32.Build.0 = Release|Win32
++ {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.All|x64.ActiveCfg = Release|Win32
++ {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Debug|Win32.ActiveCfg = Debug|Win32
++ {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Debug|x64.ActiveCfg = Debug|Win32
++ {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Release|Win32.ActiveCfg = Release|Win32
++ {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Release|x64.ActiveCfg = Release|Win32
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.All|Win32.ActiveCfg = Release|x64
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.All|x64.ActiveCfg = Release|x64
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.All|x64.Build.0 = Release|x64
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|Win32.ActiveCfg = Debug|Win32
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|Win32.Build.0 = Debug|Win32
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|x64.ActiveCfg = Debug|x64
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|x64.Build.0 = Debug|x64
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|Win32.ActiveCfg = Release|Win32
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|Win32.Build.0 = Release|Win32
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|x64.ActiveCfg = Release|x64
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|x64.Build.0 = Release|x64
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.All|Win32.ActiveCfg = Release|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.All|Win32.Build.0 = Release|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.All|x64.ActiveCfg = Release|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|Win32.ActiveCfg = Debug|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|Win32.Build.0 = Debug|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|x64.ActiveCfg = Debug|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|x64.Build.0 = Debug|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|Win32.ActiveCfg = Release|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|Win32.Build.0 = Release|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|x64.ActiveCfg = Release|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|x64.Build.0 = Release|Win32
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.All|Win32.ActiveCfg = Release|x64
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.All|x64.ActiveCfg = Release|x64
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.All|x64.Build.0 = Release|x64
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|Win32.ActiveCfg = Debug|Win32
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|Win32.Build.0 = Debug|Win32
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|x64.ActiveCfg = Debug|x64
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|x64.Build.0 = Debug|x64
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|Win32.ActiveCfg = Release|Win32
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|Win32.Build.0 = Release|Win32
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|x64.ActiveCfg = Release|x64
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|x64.Build.0 = Release|x64
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.All|Win32.ActiveCfg = Release|x64
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.All|x64.ActiveCfg = Release|x64
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.All|x64.Build.0 = Release|x64
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Debug|Win32.ActiveCfg = Debug|Win32
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Debug|Win32.Build.0 = Debug|Win32
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Debug|x64.ActiveCfg = Debug|x64
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Debug|x64.Build.0 = Debug|x64
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Release|Win32.ActiveCfg = Release|Win32
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Release|Win32.Build.0 = Release|Win32
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Release|x64.ActiveCfg = Release|x64
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Release|x64.Build.0 = Release|x64
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.All|Win32.ActiveCfg = Release|Win32
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.All|Win32.Build.0 = Release|Win32
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.All|x64.ActiveCfg = Release|Win32
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Debug|Win32.ActiveCfg = Debug|Win32
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Debug|Win32.Build.0 = Debug|Win32
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Debug|x64.ActiveCfg = Debug|x64
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Debug|x64.Build.0 = Debug|x64
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Release|Win32.ActiveCfg = Release|Win32
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Release|Win32.Build.0 = Release|Win32
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Release|x64.ActiveCfg = Release|x64
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Release|x64.Build.0 = Release|x64
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.All|Win32.ActiveCfg = Release|Win32
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.All|Win32.Build.0 = Release|Win32
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.All|x64.ActiveCfg = Release|Win32
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Debug|Win32.ActiveCfg = Debug|Win32
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Debug|Win32.Build.0 = Debug|Win32
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Debug|x64.ActiveCfg = Debug|x64
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Debug|x64.Build.0 = Debug|x64
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Release|Win32.ActiveCfg = Release|Win32
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Release|Win32.Build.0 = Release|Win32
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Release|x64.ActiveCfg = Release|x64
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Release|x64.Build.0 = Release|x64
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.All|Win32.ActiveCfg = Release|x64
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.All|x64.ActiveCfg = Release|x64
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.All|x64.Build.0 = Release|x64
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Debug|Win32.ActiveCfg = Debug|Win32
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Debug|Win32.Build.0 = Debug|Win32
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Debug|x64.ActiveCfg = Debug|x64
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Debug|x64.Build.0 = Debug|x64
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Release|Win32.ActiveCfg = Release|Win32
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Release|Win32.Build.0 = Release|Win32
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Release|x64.ActiveCfg = Release|x64
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Release|x64.Build.0 = Release|x64
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.All|Win32.ActiveCfg = Release|x64
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.All|x64.ActiveCfg = Release|x64
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.All|x64.Build.0 = Release|x64
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Debug|Win32.ActiveCfg = Debug|Win32
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Debug|Win32.Build.0 = Debug|Win32
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Debug|x64.ActiveCfg = Debug|x64
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Debug|x64.Build.0 = Debug|x64
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Release|Win32.ActiveCfg = Release|Win32
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Release|Win32.Build.0 = Release|Win32
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Release|x64.ActiveCfg = Release|x64
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Release|x64.Build.0 = Release|x64
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.All|Win32.ActiveCfg = Release|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.All|Win32.Build.0 = Release|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.All|x64.ActiveCfg = Release|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.Debug|Win32.Build.0 = Debug|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.Debug|x64.ActiveCfg = Debug|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.Debug|x64.Build.0 = Debug|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.Release|Win32.ActiveCfg = Release|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.Release|Win32.Build.0 = Release|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.Release|x64.ActiveCfg = Release|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.Release|x64.Build.0 = Release|Win32
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.All|Win32.ActiveCfg = Release|Win32
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.All|Win32.Build.0 = Release|Win32
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.All|x64.ActiveCfg = Release|Win32
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Debug|Win32.Build.0 = Debug|Win32
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Debug|x64.ActiveCfg = Debug|x64
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Debug|x64.Build.0 = Debug|x64
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Release|Win32.ActiveCfg = Release|Win32
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Release|Win32.Build.0 = Release|Win32
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Release|x64.ActiveCfg = Release|x64
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Release|x64.Build.0 = Release|x64
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.All|Win32.ActiveCfg = Release|Win32
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.All|Win32.Build.0 = Release|Win32
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.All|x64.ActiveCfg = Release|Win32
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Debug|Win32.ActiveCfg = Debug|Win32
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Debug|Win32.Build.0 = Debug|Win32
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Debug|x64.ActiveCfg = Debug|x64
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Debug|x64.Build.0 = Debug|x64
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Release|Win32.ActiveCfg = Release|Win32
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Release|Win32.Build.0 = Release|Win32
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Release|x64.ActiveCfg = Release|x64
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Release|x64.Build.0 = Release|x64
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.All|Win32.ActiveCfg = Release|Win32
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.All|Win32.Build.0 = Release|Win32
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.All|x64.ActiveCfg = Release|Win32
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Debug|Win32.ActiveCfg = Debug|Win32
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Debug|Win32.Build.0 = Debug|Win32
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Debug|x64.ActiveCfg = Debug|x64
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Debug|x64.Build.0 = Debug|x64
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Release|Win32.ActiveCfg = Release|Win32
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Release|Win32.Build.0 = Release|Win32
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Release|x64.ActiveCfg = Release|x64
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Release|x64.Build.0 = Release|x64
++ {42E721FD-43D6-4B04-A34B-42567199FFB8}.All|Win32.ActiveCfg = Release|x64
++ {42E721FD-43D6-4B04-A34B-42567199FFB8}.All|x64.ActiveCfg = Release|x64
++ {42E721FD-43D6-4B04-A34B-42567199FFB8}.All|x64.Build.0 = Release|x64
++ {42E721FD-43D6-4B04-A34B-42567199FFB8}.Debug|Win32.ActiveCfg = Debug|Win32
++ {42E721FD-43D6-4B04-A34B-42567199FFB8}.Debug|x64.ActiveCfg = Debug|x64
++ {42E721FD-43D6-4B04-A34B-42567199FFB8}.Release|Win32.ActiveCfg = Release|Win32
++ {42E721FD-43D6-4B04-A34B-42567199FFB8}.Release|x64.ActiveCfg = Release|x64
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.All|Win32.ActiveCfg = Release|x64
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.All|x64.ActiveCfg = Release|x64
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.All|x64.Build.0 = Release|x64
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.Debug|Win32.ActiveCfg = Debug|Win32
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.Debug|Win32.Build.0 = Debug|Win32
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.Debug|x64.ActiveCfg = Debug|x64
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.Debug|x64.Build.0 = Debug|x64
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.Release|Win32.ActiveCfg = Release|Win32
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.Release|Win32.Build.0 = Release|Win32
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.Release|x64.ActiveCfg = Release|x64
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.Release|x64.Build.0 = Release|x64
++ {0807C5CB-F6FF-451D-89F0-1F7B2E1D9169}.All|Win32.ActiveCfg = Release|x64
++ {0807C5CB-F6FF-451D-89F0-1F7B2E1D9169}.All|x64.ActiveCfg = Release|x64
++ {0807C5CB-F6FF-451D-89F0-1F7B2E1D9169}.All|x64.Build.0 = Release|x64
++ {0807C5CB-F6FF-451D-89F0-1F7B2E1D9169}.Debug|Win32.ActiveCfg = Debug|Win32
++ {0807C5CB-F6FF-451D-89F0-1F7B2E1D9169}.Debug|Win32.Build.0 = Debug|Win32
++ {0807C5CB-F6FF-451D-89F0-1F7B2E1D9169}.Debug|x64.ActiveCfg = Debug|x64
++ {0807C5CB-F6FF-451D-89F0-1F7B2E1D9169}.Debug|x64.Build.0 = Debug|x64
++ {0807C5CB-F6FF-451D-89F0-1F7B2E1D9169}.Release|Win32.ActiveCfg = Release|Win32
++ {0807C5CB-F6FF-451D-89F0-1F7B2E1D9169}.Release|Win32.Build.0 = Release|Win32
++ {0807C5CB-F6FF-451D-89F0-1F7B2E1D9169}.Release|x64.ActiveCfg = Release|x64
++ {0807C5CB-F6FF-451D-89F0-1F7B2E1D9169}.Release|x64.Build.0 = Release|x64
++ {BDA173DB-F8EF-4270-9553-B453AF92E43A}.All|Win32.ActiveCfg = Release|x64
++ {BDA173DB-F8EF-4270-9553-B453AF92E43A}.All|x64.ActiveCfg = Release|x64
++ {BDA173DB-F8EF-4270-9553-B453AF92E43A}.All|x64.Build.0 = Release|x64
++ {BDA173DB-F8EF-4270-9553-B453AF92E43A}.Debug|Win32.ActiveCfg = Debug|Win32
++ {BDA173DB-F8EF-4270-9553-B453AF92E43A}.Debug|Win32.Build.0 = Debug|Win32
++ {BDA173DB-F8EF-4270-9553-B453AF92E43A}.Debug|x64.ActiveCfg = Debug|x64
++ {BDA173DB-F8EF-4270-9553-B453AF92E43A}.Debug|x64.Build.0 = Debug|x64
++ {BDA173DB-F8EF-4270-9553-B453AF92E43A}.Release|Win32.ActiveCfg = Release|Win32
++ {BDA173DB-F8EF-4270-9553-B453AF92E43A}.Release|Win32.Build.0 = Release|Win32
++ {BDA173DB-F8EF-4270-9553-B453AF92E43A}.Release|x64.ActiveCfg = Release|x64
++ {BDA173DB-F8EF-4270-9553-B453AF92E43A}.Release|x64.Build.0 = Release|x64
++ {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|Win32.ActiveCfg = Release|Win32
++ {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|Win32.Build.0 = Release|Win32
++ {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|x64.ActiveCfg = Release|Win32
++ {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|Win32.ActiveCfg = Debug|Win32
++ {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|x64.ActiveCfg = Debug|x64
++ {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|Win32.ActiveCfg = Release|Win32
++ {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|x64.ActiveCfg = Release|x64
++ {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|Win32.ActiveCfg = Debug|Win32
++ {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|Win32.Build.0 = Debug|Win32
++ {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|x64.ActiveCfg = Debug|Win32
++ {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|Win32.ActiveCfg = Debug|Win32
++ {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|x64.ActiveCfg = Debug|x64
++ {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|Win32.ActiveCfg = Release|Win32
++ {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|x64.ActiveCfg = Release|x64
++ {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}.All|Win32.ActiveCfg = Debug|x64
++ {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}.All|x64.ActiveCfg = Debug|x64
++ {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}.All|x64.Build.0 = Debug|x64
++ {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}.Debug|Win32.ActiveCfg = Debug|Win32
++ {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}.Debug|Win32.Build.0 = Debug|Win32
++ {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}.Debug|x64.ActiveCfg = Debug|x64
++ {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}.Debug|x64.Build.0 = Debug|x64
++ {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}.Release|Win32.ActiveCfg = Release|Win32
++ {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}.Release|Win32.Build.0 = Release|Win32
++ {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}.Release|x64.ActiveCfg = Release|x64
++ {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A}.Release|x64.Build.0 = Release|x64
++ {21A7DA70-555E-49FA-942B-D84A38B61243}.All|Win32.ActiveCfg = Release|Win32
++ {21A7DA70-555E-49FA-942B-D84A38B61243}.All|Win32.Build.0 = Release|Win32
++ {21A7DA70-555E-49FA-942B-D84A38B61243}.All|x64.ActiveCfg = Release|Win32
++ {21A7DA70-555E-49FA-942B-D84A38B61243}.Debug|Win32.ActiveCfg = Debug|Win32
++ {21A7DA70-555E-49FA-942B-D84A38B61243}.Debug|Win32.Build.0 = Debug|Win32
++ {21A7DA70-555E-49FA-942B-D84A38B61243}.Debug|x64.ActiveCfg = Debug|Win32
++ {21A7DA70-555E-49FA-942B-D84A38B61243}.Debug|x64.Build.0 = Debug|Win32
++ {21A7DA70-555E-49FA-942B-D84A38B61243}.Release|Win32.ActiveCfg = Release|Win32
++ {21A7DA70-555E-49FA-942B-D84A38B61243}.Release|Win32.Build.0 = Release|Win32
++ {21A7DA70-555E-49FA-942B-D84A38B61243}.Release|x64.ActiveCfg = Release|Win32
++ {21A7DA70-555E-49FA-942B-D84A38B61243}.Release|x64.Build.0 = Release|Win32
++ {A4D67895-E709-40C7-82B6-DE1D12DDDE04}.All|Win32.ActiveCfg = Release|x64
++ {A4D67895-E709-40C7-82B6-DE1D12DDDE04}.All|x64.ActiveCfg = Release|x64
++ {A4D67895-E709-40C7-82B6-DE1D12DDDE04}.All|x64.Build.0 = Release|x64
++ {A4D67895-E709-40C7-82B6-DE1D12DDDE04}.Debug|Win32.ActiveCfg = Debug|Win32
++ {A4D67895-E709-40C7-82B6-DE1D12DDDE04}.Debug|Win32.Build.0 = Debug|Win32
++ {A4D67895-E709-40C7-82B6-DE1D12DDDE04}.Debug|x64.ActiveCfg = Debug|x64
++ {A4D67895-E709-40C7-82B6-DE1D12DDDE04}.Debug|x64.Build.0 = Debug|x64
++ {A4D67895-E709-40C7-82B6-DE1D12DDDE04}.Release|Win32.ActiveCfg = Release|Win32
++ {A4D67895-E709-40C7-82B6-DE1D12DDDE04}.Release|Win32.Build.0 = Release|Win32
++ {A4D67895-E709-40C7-82B6-DE1D12DDDE04}.Release|x64.ActiveCfg = Release|x64
++ {A4D67895-E709-40C7-82B6-DE1D12DDDE04}.Release|x64.Build.0 = Release|x64
++ {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}.All|Win32.ActiveCfg = Release|x64
++ {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}.All|x64.ActiveCfg = Release|x64
++ {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}.All|x64.Build.0 = Release|x64
++ {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}.Debug|Win32.ActiveCfg = Debug|Win32
++ {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}.Debug|Win32.Build.0 = Debug|Win32
++ {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}.Debug|x64.ActiveCfg = Debug|x64
++ {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}.Debug|x64.Build.0 = Debug|x64
++ {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}.Release|Win32.ActiveCfg = Release|Win32
++ {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}.Release|Win32.Build.0 = Release|Win32
++ {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}.Release|x64.ActiveCfg = Release|x64
++ {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}.Release|x64.Build.0 = Release|x64
++ {E5A9BCDA-B82D-4B08-B23E-9A782E367888}.All|Win32.ActiveCfg = Debug|x64
++ {E5A9BCDA-B82D-4B08-B23E-9A782E367888}.All|x64.ActiveCfg = Debug|x64
++ {E5A9BCDA-B82D-4B08-B23E-9A782E367888}.All|x64.Build.0 = Debug|x64
++ {E5A9BCDA-B82D-4B08-B23E-9A782E367888}.Debug|Win32.ActiveCfg = Debug|Win32
++ {E5A9BCDA-B82D-4B08-B23E-9A782E367888}.Debug|Win32.Build.0 = Debug|Win32
++ {E5A9BCDA-B82D-4B08-B23E-9A782E367888}.Debug|x64.ActiveCfg = Debug|x64
++ {E5A9BCDA-B82D-4B08-B23E-9A782E367888}.Debug|x64.Build.0 = Debug|x64
++ {E5A9BCDA-B82D-4B08-B23E-9A782E367888}.Release|Win32.ActiveCfg = Release|Win32
++ {E5A9BCDA-B82D-4B08-B23E-9A782E367888}.Release|Win32.Build.0 = Release|Win32
++ {E5A9BCDA-B82D-4B08-B23E-9A782E367888}.Release|x64.ActiveCfg = Release|x64
++ {E5A9BCDA-B82D-4B08-B23E-9A782E367888}.Release|x64.Build.0 = Release|x64
++ {510BDAA8-C04D-47DB-8482-E6AF380D3E07}.All|Win32.ActiveCfg = Release|x64
++ {510BDAA8-C04D-47DB-8482-E6AF380D3E07}.All|x64.ActiveCfg = Release|x64
++ {510BDAA8-C04D-47DB-8482-E6AF380D3E07}.All|x64.Build.0 = Release|x64
++ {510BDAA8-C04D-47DB-8482-E6AF380D3E07}.Debug|Win32.ActiveCfg = Debug|Win32
++ {510BDAA8-C04D-47DB-8482-E6AF380D3E07}.Debug|Win32.Build.0 = Debug|Win32
++ {510BDAA8-C04D-47DB-8482-E6AF380D3E07}.Debug|x64.ActiveCfg = Debug|x64
++ {510BDAA8-C04D-47DB-8482-E6AF380D3E07}.Debug|x64.Build.0 = Debug|x64
++ {510BDAA8-C04D-47DB-8482-E6AF380D3E07}.Release|Win32.ActiveCfg = Release|Win32
++ {510BDAA8-C04D-47DB-8482-E6AF380D3E07}.Release|Win32.Build.0 = Release|Win32
++ {510BDAA8-C04D-47DB-8482-E6AF380D3E07}.Release|x64.ActiveCfg = Release|x64
++ {510BDAA8-C04D-47DB-8482-E6AF380D3E07}.Release|x64.Build.0 = Release|x64
++ {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}.All|Win32.ActiveCfg = Release|x64
++ {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}.All|x64.ActiveCfg = Release|x64
++ {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}.All|x64.Build.0 = Release|x64
++ {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}.Debug|Win32.ActiveCfg = Debug|Win32
++ {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}.Debug|Win32.Build.0 = Debug|Win32
++ {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}.Debug|x64.ActiveCfg = Debug|x64
++ {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}.Debug|x64.Build.0 = Debug|x64
++ {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}.Release|Win32.ActiveCfg = Release|Win32
++ {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}.Release|Win32.Build.0 = Release|Win32
++ {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}.Release|x64.ActiveCfg = Release|x64
++ {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}.Release|x64.Build.0 = Release|x64
++ EndGlobalSection
++ GlobalSection(SolutionProperties) = preSolution
++ HideSolutionNode = FALSE
++ EndGlobalSection
++ GlobalSection(NestedProjects) = preSolution
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
++ {2C3C2423-234B-4772-8899-D3B137E5CA35} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
++ {0B6C905B-142E-4999-B39D-92FF7951E921} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
++ {05C9FB27-480E-4D53-B3B7-6338E2526666} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
++ {05C9FB27-480E-4D53-B3B7-7338E2514666} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
++ {CC1DD008-9406-448D-A0AD-33C3186CFADB} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
++ {48414740-C693-4968-9846-EE058020C64F} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
++ {74B120FF-6935-4DFE-A142-CDB6BEA99C90} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {C24FB505-05D7-4319-8485-7540B44C8603} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {3850D93A-5F24-4922-BC1C-74D08C37C256} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {F6A33240-8F29-48BD-98F0-826995911799} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {432DB165-1EB2-4781-A9C0-71E62610B20A} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {42E721FD-43D6-4B04-A34B-42567199FFB8} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {0807C5CB-F6FF-451D-89F0-1F7B2E1D9169} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {BDA173DB-F8EF-4270-9553-B453AF92E43A} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4}
++ {A27CCA23-1541-4337-81A4-F0A6413078A0} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4}
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4}
++ {784113EF-44D9-4949-835D-7065D3C7AD08} = {9ADF1E48-2F5C-4ED7-A893-596259FABFE0}
++ {05515420-16DE-4E63-BE73-85BE85BA5142} = {9ADF1E48-2F5C-4ED7-A893-596259FABFE0}
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E} = {9ADF1E48-2F5C-4ED7-A893-596259FABFE0}
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6} = {A5A27244-AD24-46E5-B01B-840CD296C91D}
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7} = {A5A27244-AD24-46E5-B01B-840CD296C91D}
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B} = {A5A27244-AD24-46E5-B01B-840CD296C91D}
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52} = {A5A27244-AD24-46E5-B01B-840CD296C91D}
++ {38FE0559-9910-43A8-9E45-3E5004C27692} = {A5A27244-AD24-46E5-B01B-840CD296C91D}
++ {1A1FF289-4FD6-4285-A422-D31DD67A4723} = {CBD81696-EFB4-4D2F-8451-1B8DAA86155A}
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98} = {B8F5B47B-8568-46EB-B320-64C17D2A98BC}
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {0C808854-54D1-4230-BFF5-77B5FD905000}
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF} = {0C808854-54D1-4230-BFF5-77B5FD905000}
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65} = {0C808854-54D1-4230-BFF5-77B5FD905000}
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF} = {0C808854-54D1-4230-BFF5-77B5FD905000}
++ {028C7278-05D7-4E18-82FE-BE231B844F41} = {0C808854-54D1-4230-BFF5-77B5FD905000}
++ {36E854E3-CE12-4348-A125-CCF3F9D74813} = {0C808854-54D1-4230-BFF5-77B5FD905000}
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC} = {0C808854-54D1-4230-BFF5-77B5FD905000}
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E} = {0C808854-54D1-4230-BFF5-77B5FD905000}
++ {692F6330-4D87-4C82-81DF-40DB5892636E} = {4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}
++ {2286DA73-9FC5-45BC-A508-85994C3317AB} = {4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593} = {4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD} = {4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}
++ {1C453396-D912-4213-89FD-9B489162B7B5} = {A7AB4405-FDB7-4853-9FBB-1516B1C3D80A}
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909} = {A7AB4405-FDB7-4853-9FBB-1516B1C3D80A}
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950} = {F69A4A6B-9360-4EBB-A280-22AA3C455AC5}
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4} = {F69A4A6B-9360-4EBB-A280-22AA3C455AC5}
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836} = {F69A4A6B-9360-4EBB-A280-22AA3C455AC5}
++ {89385C74-5860-4174-9CAF-A39E7C48909C} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {1906D736-08BD-4EE1-924F-B536249B9A54} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {1CED5987-A529-46DC-B30F-870D85FF9C94} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {204FA0DE-305D-4414-AE2E-F195A23F390D} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {94001A0E-A837-445C-8004-F918F10D0226} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {0AD1177E-1FD8-4643-9391-431467A11084} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {419C8F80-D858-4B48-A25C-AF4007608137} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {D0B36172-CD76-454A-9B89-990025266C2A} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {62F27B1A-C919-4A70-8478-51F178F3B18F} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {9778F1C0-09BC-4698-8EBC-BD982247209A} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {B376D494-D7DD-4B2A-99E2-52916D5A8CD8} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {23B4D303-79FC-49E0-89E2-2280E7E28940} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {3783935D-7C0A-4166-A376-C3D8E64F3A9C} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {2DEE4895-1134-439C-B688-52203E57D878} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {87A1FE3D-F410-4C8E-9591-8C625985BC70} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {E796E337-DE78-4303-8614-9A590862EE95} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {1F0A8A77-E661-418F-BB92-82172AE43803} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {4F5C9D55-98EF-4256-8311-32D7BD360406} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {E10571C4-E7F4-4608-B5F2-B22E7EB95400} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {D578E676-7EC8-4548-BD8B-845C635F14AD} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {21A7DA70-555E-49FA-942B-D84A38B61243} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}
++ {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0} = {57D119DC-484F-420F-B9E9-8589FD9A8DF8}
++ {3C90CCF0-2CDD-4A7A-ACFF-208C1E271692} = {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0}
++ {C7E2382E-2C22-4D18-BF93-80C6A1FFA7AC} = {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0}
++ {FC71C66E-E268-4EAD-B1F5-F008DC382E83} = {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0}
++ {8E2E8798-8B6F-4A55-8E4F-4E6FDE40ED26} = {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0}
++ {09455AA9-C243-4F16-A1A1-A016881A2765} = {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0}
++ {CDE9B06A-3C27-4987-8FAE-DF1006BC705D} = {DB1024A8-41BF-4AD7-9AE6-13202230D1F3}
++ {57199684-EC63-4A60-9DC6-11815AF6B413} = {09455AA9-C243-4F16-A1A1-A016881A2765}
++ {2DED4BA2-D6B0-4064-BB2A-76DE3AA49E7C} = {09455AA9-C243-4F16-A1A1-A016881A2765}
++ {D4A12E4C-DBDA-4614-BA26-3425AE9F60F5} = {09455AA9-C243-4F16-A1A1-A016881A2765}
++ {765EF1B9-5027-4820-BC37-A44466A51631} = {57199684-EC63-4A60-9DC6-11815AF6B413}
++ {713E4747-1126-40B1-BD84-58F9A7745423} = {57199684-EC63-4A60-9DC6-11815AF6B413}
++ {D3E5C8ED-3A6A-4FEA-92A2-48A0BA865358} = {2DED4BA2-D6B0-4064-BB2A-76DE3AA49E7C}
++ {CC3E7F48-2590-49CB-AD8B-BE3650F55462} = {2DED4BA2-D6B0-4064-BB2A-76DE3AA49E7C}
++ {F1B71990-EB04-4EB5-B28A-BC3EB6F7E843} = {D4A12E4C-DBDA-4614-BA26-3425AE9F60F5}
++ {3DAF028C-AB5B-4183-A01B-DCC43F5A87F0} = {D4A12E4C-DBDA-4614-BA26-3425AE9F60F5}
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A} = {4F227C26-768F-46A3-8684-1D08A46FB374}
++ {7EB71250-F002-4ED8-92CA-CA218114537A} = {4F227C26-768F-46A3-8684-1D08A46FB374}
++ {464AAB78-5489-4916-BE51-BF8D61822311} = {4F227C26-768F-46A3-8684-1D08A46FB374}
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870} = {4F227C26-768F-46A3-8684-1D08A46FB374}
++ {BA599D0A-4310-4505-91DA-6A6447B3E289} = {4F227C26-768F-46A3-8684-1D08A46FB374}
++ {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959} = {4F227C26-768F-46A3-8684-1D08A46FB374}
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2} = {62F27B1A-C919-4A70-8478-51F178F3B18F}
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5} = {62F27B1A-C919-4A70-8478-51F178F3B18F}
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56} = {62F27B1A-C919-4A70-8478-51F178F3B18F}
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108} = {62F27B1A-C919-4A70-8478-51F178F3B18F}
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31} = {62F27B1A-C919-4A70-8478-51F178F3B18F}
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA} = {62F27B1A-C919-4A70-8478-51F178F3B18F}
++ {504B3154-7A4F-459D-9877-B951021C3F1F} = {62F27B1A-C919-4A70-8478-51F178F3B18F}
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E} = {62F27B1A-C919-4A70-8478-51F178F3B18F}
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9} = {62F27B1A-C919-4A70-8478-51F178F3B18F}
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE} = {B376D494-D7DD-4B2A-99E2-52916D5A8CD8}
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39} = {B376D494-D7DD-4B2A-99E2-52916D5A8CD8}
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79} = {B376D494-D7DD-4B2A-99E2-52916D5A8CD8}
++ {A4D67895-E709-40C7-82B6-DE1D12DDDE04} = {3783935D-7C0A-4166-A376-C3D8E64F3A9C}
++ {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B} = {3783935D-7C0A-4166-A376-C3D8E64F3A9C}
++ {E5A9BCDA-B82D-4B08-B23E-9A782E367888} = {3783935D-7C0A-4166-A376-C3D8E64F3A9C}
++ {510BDAA8-C04D-47DB-8482-E6AF380D3E07} = {3783935D-7C0A-4166-A376-C3D8E64F3A9C}
++ {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268} = {3783935D-7C0A-4166-A376-C3D8E64F3A9C}
++ EndGlobalSection
++EndGlobal
+diff --git a/Freeswitch.2010.sln b/Freeswitch.2010.sln
+index fd8eda1..dfbf2d7 100644
+--- a/Freeswitch.2010.sln
++++ b/Freeswitch.2010.sln
+@@ -1,3921 +1,3955 @@
+-\r
+-Microsoft Visual Studio Solution File, Format Version 11.00\r
+-# Visual Studio 2010\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Codecs", "Codecs", "{F881ADA2-2F1A-4046-9FEB-191D9422D781}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Endpoints", "Endpoints", "{9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Applications", "Applications", "{E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Dialplans", "Dialplans", "{C5F182F9-754A-4EC5-B50F-76ED02BE13F4}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Event Handlers", "Event Handlers", "{9ADF1E48-2F5C-4ED7-A893-596259FABFE0}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Formats", "Formats", "{A5A27244-AD24-46E5-B01B-840CD296C91D}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Docs", "Docs", "{CBD81696-EFB4-4D2F-8451-1B8DAA86155A}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Directories", "Directories", "{B8F5B47B-8568-46EB-B320-64C17D2A98BC}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Languages", "Languages", "{0C808854-54D1-4230-BFF5-77B5FD905000}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ASR-TTS", "ASR-TTS", "{4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Loggers", "Loggers", "{A7AB4405-FDB7-4853-9FBB-1516B1C3D80A}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "XML Interfaces", "XML Interfaces", "{F69A4A6B-9360-4EBB-A280-22AA3C455AC5}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Libraries", "_Libraries", "{EB910B0D-F27D-4B62-B67B-DE834C99AC5B}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Downloads", "_Downloads", "{C120A020-773F-4EA3-923F-B67AF28B750D}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "say", "say", "{6CD61A1D-797C-470A-BE08-8C31B68BB336}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Config", "_Config", "{57D119DC-484F-420F-B9E9-8589FD9A8DF8}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Default", "Default", "{3B08FEFD-4D3D-4C16-BA94-EE83509E32A0}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\freeswitch.xml = conf\vanilla\freeswitch.xml\r
+- conf\vanilla\vars.xml = conf\vanilla\vars.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Build System", "_Build System", "{DB1024A8-41BF-4AD7-9AE6-13202230D1F3}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- acsite.m4 = acsite.m4\r
+- bootstrap.sh = bootstrap.sh\r
+- build\buildlib.sh = build\buildlib.sh\r
+- configure.in = configure.in\r
+- Makefile.am = Makefile.am\r
+- build\modmake.rules.in = build\modmake.rules.in\r
+- build\modules.conf.in = build\modules.conf.in\r
+- libs\win32\util.vbs = libs\win32\util.vbs\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "m4", "m4", "{CDE9B06A-3C27-4987-8FAE-DF1006BC705D}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- build\config\ac_cflags_gcc_option.m4 = build\config\ac_cflags_gcc_option.m4\r
+- build\config\ac_cflags_sun_option.m4 = build\config\ac_cflags_sun_option.m4\r
+- build\config\ac_gcc_archflag.m4 = build\config\ac_gcc_archflag.m4\r
+- build\config\ac_gcc_x86_cpuid.m4 = build\config\ac_gcc_x86_cpuid.m4\r
+- build\config\ac_prog_gzip.m4 = build\config\ac_prog_gzip.m4\r
+- build\config\ac_prog_wget.m4 = build\config\ac_prog_wget.m4\r
+- build\config\ax_cc_maxopt.m4 = build\config\ax_cc_maxopt.m4\r
+- build\config\ax_cflags_warn_all_ansi.m4 = build\config\ax_cflags_warn_all_ansi.m4\r
+- build\config\ax_check_compiler_flags.m4 = build\config\ax_check_compiler_flags.m4\r
+- build\config\ax_compiler_vendor.m4 = build\config\ax_compiler_vendor.m4\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "autoload_configs", "autoload_configs", "{3C90CCF0-2CDD-4A7A-ACFF-208C1E271692}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\autoload_configs\alsa.conf.xml = conf\vanilla\autoload_configs\alsa.conf.xml\r
+- conf\vanilla\autoload_configs\conference.conf.xml = conf\vanilla\autoload_configs\conference.conf.xml\r
+- conf\vanilla\autoload_configs\console.conf.xml = conf\vanilla\autoload_configs\console.conf.xml\r
+- conf\vanilla\autoload_configs\dialplan_directory.conf.xml = conf\vanilla\autoload_configs\dialplan_directory.conf.xml\r
+- conf\vanilla\autoload_configs\dingaling.conf.xml = conf\vanilla\autoload_configs\dingaling.conf.xml\r
+- conf\vanilla\autoload_configs\enum.conf.xml = conf\vanilla\autoload_configs\enum.conf.xml\r
+- conf\vanilla\autoload_configs\event_multicast.conf.xml = conf\vanilla\autoload_configs\event_multicast.conf.xml\r
+- conf\vanilla\autoload_configs\event_socket.conf.xml = conf\vanilla\autoload_configs\event_socket.conf.xml\r
+- conf\vanilla\autoload_configs\ivr.conf.xml = conf\vanilla\autoload_configs\ivr.conf.xml\r
+- conf\vanilla\autoload_configs\java.conf.xml = conf\vanilla\autoload_configs\java.conf.xml\r
+- conf\vanilla\autoload_configs\limit.conf.xml = conf\vanilla\autoload_configs\limit.conf.xml\r
+- conf\vanilla\autoload_configs\local_stream.conf.xml = conf\vanilla\autoload_configs\local_stream.conf.xml\r
+- conf\vanilla\autoload_configs\logfile.conf.xml = conf\vanilla\autoload_configs\logfile.conf.xml\r
+- conf\vanilla\autoload_configs\modules.conf.xml = conf\vanilla\autoload_configs\modules.conf.xml\r
+- conf\vanilla\autoload_configs\openmrcp.conf.xml = conf\vanilla\autoload_configs\openmrcp.conf.xml\r
+- conf\vanilla\autoload_configs\portaudio.conf.xml = conf\vanilla\autoload_configs\portaudio.conf.xml\r
+- conf\vanilla\autoload_configs\rss.conf.xml = conf\vanilla\autoload_configs\rss.conf.xml\r
+- conf\vanilla\autoload_configs\sofia.conf.xml = conf\vanilla\autoload_configs\sofia.conf.xml\r
+- conf\vanilla\autoload_configs\spidermonkey.conf.xml = conf\vanilla\autoload_configs\spidermonkey.conf.xml\r
+- conf\vanilla\autoload_configs\switch.conf.xml = conf\vanilla\autoload_configs\switch.conf.xml\r
+- conf\vanilla\autoload_configs\syslog.conf.xml = conf\vanilla\autoload_configs\syslog.conf.xml\r
+- conf\vanilla\autoload_configs\voicemail.conf.xml = conf\vanilla\autoload_configs\voicemail.conf.xml\r
+- conf\vanilla\autoload_configs\wanpipe.conf.xml = conf\vanilla\autoload_configs\wanpipe.conf.xml\r
+- conf\vanilla\autoload_configs\woomera.conf.xml = conf\vanilla\autoload_configs\woomera.conf.xml\r
+- conf\vanilla\autoload_configs\xml_cdr.conf.xml = conf\vanilla\autoload_configs\xml_cdr.conf.xml\r
+- conf\vanilla\autoload_configs\xml_curl.conf.xml = conf\vanilla\autoload_configs\xml_curl.conf.xml\r
+- conf\vanilla\autoload_configs\xml_rpc.conf.xml = conf\vanilla\autoload_configs\xml_rpc.conf.xml\r
+- conf\vanilla\autoload_configs\zeroconf.conf.xml = conf\vanilla\autoload_configs\zeroconf.conf.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dialplan", "dialplan", "{C7E2382E-2C22-4D18-BF93-80C6A1FFA7AC}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\dialplan\default.xml = conf\vanilla\dialplan\default.xml\r
+- conf\vanilla\dialplan\public.xml = conf\vanilla\dialplan\public.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "directory", "directory", "{FC71C66E-E268-4EAD-B1F5-F008DC382E83}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\directory\default.xml = conf\vanilla\directory\default.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sip_profiles", "sip_profiles", "{8E2E8798-8B6F-4A55-8E4F-4E6FDE40ED26}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\sip_profiles\external.xml = conf\vanilla\sip_profiles\external.xml\r
+- conf\vanilla\sip_profiles\internal.xml = conf\vanilla\sip_profiles\internal.xml\r
+- conf\vanilla\sip_profiles\nat.xml = conf\vanilla\sip_profiles\nat.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "lang", "lang", "{09455AA9-C243-4F16-A1A1-A016881A2765}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\directory\default.xml = conf\vanilla\directory\default.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "en", "en", "{57199684-EC63-4A60-9DC6-11815AF6B413}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\lang\en\en.xml = conf\vanilla\lang\en\en.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "de", "de", "{2DED4BA2-D6B0-4064-BB2A-76DE3AA49E7C}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\lang\de\de.xml = conf\vanilla\lang\de\de.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "fr", "fr", "{D4A12E4C-DBDA-4614-BA26-3425AE9F60F5}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\lang\fr\fr.xml = conf\vanilla\lang\fr\fr.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "demo", "demo", "{D3E5C8ED-3A6A-4FEA-92A2-48A0BA865358}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\lang\de\demo\demo.xml = conf\vanilla\lang\de\demo\demo.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vm", "vm", "{CC3E7F48-2590-49CB-AD8B-BE3650F55462}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\lang\de\vm\tts.xml = conf\vanilla\lang\de\vm\tts.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "demo", "demo", "{765EF1B9-5027-4820-BC37-A44466A51631}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\lang\en\demo\demo.xml = conf\vanilla\lang\en\demo\demo.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vm", "vm", "{713E4747-1126-40B1-BD84-58F9A7745423}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\lang\en\vm\sounds.xml = conf\vanilla\lang\en\vm\sounds.xml\r
+- conf\vanilla\lang\en\vm\tts.xml = conf\vanilla\lang\en\vm\tts.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "demo", "demo", "{F1B71990-EB04-4EB5-B28A-BC3EB6F7E843}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\lang\fr\demo\demo.xml = conf\vanilla\lang\fr\demo\demo.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vm", "vm", "{3DAF028C-AB5B-4183-A01B-DCC43F5A87F0}"\r
+- ProjectSection(SolutionItems) = preProject\r
+- conf\vanilla\lang\fr\vm\sounds.xml = conf\vanilla\lang\fr\vm\sounds.xml\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Sound Files", "Sound Files", "{4F227C26-768F-46A3-8684-1D08A46FB374}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "unimrcp", "unimrcp", "{62F27B1A-C919-4A70-8478-51F178F3B18F}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FreeSwitchConsole", "w32\Console\FreeSwitchConsole.2010.vcxproj", "{1AF3A893-F7BE-43DD-B697-8AB2397C0D67}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FreeSwitchCoreLib", "w32\Library\FreeSwitchCore.2010.vcxproj", "{202D7A4E-760D-4D0E-AFA1-D7459CED30FF}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g729", "src\mod\codecs\mod_g729\mod_g729.2010.vcxproj", "{1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sndfile", "src\mod\formats\mod_sndfile\mod_sndfile.2010.vcxproj", "{AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_PortAudio", "src\mod\endpoints\mod_portaudio\mod_PortAudio.2010.vcxproj", "{5FD31A25-5D83-4794-8BEE-904DAD84CE71}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_speex", "src\mod\codecs\mod_speex\mod_speex.2010.vcxproj", "{5580D60E-0F77-4716-9CD4-B8E5986FA375}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "docs", "docs\docs.2010.vcxproj", "{1A1FF289-4FD6-4285-A422-D31DD67A4723}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dialplan_xml", "src\mod\dialplans\mod_dialplan_xml\mod_dialplan_xml.2010.vcxproj", "{07113B25-D3AF-4E04-BA77-4CD1171F022C}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_ldap", "src\mod\directories\mod_ldap\mod_ldap.2010.vcxproj", "{EC3E5C7F-EE09-47E2-80FE-546363D14A98}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dialplan_directory", "src\mod\dialplans\mod_dialplan_directory\mod_dialplan_directory.2010.vcxproj", "{A27CCA23-1541-4337-81A4-F0A6413078A0}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_event_multicast", "src\mod\event_handlers\mod_event_multicast\mod_event_multicast.2010.vcxproj", "{784113EF-44D9-4949-835D-7065D3C7AD08}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libteletone", "libs\libteletone\libteletone.2010.vcxproj", "{89385C74-5860-4174-9CAF-A39E7C48909C}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey", "src\mod\languages\mod_spidermonkey\mod_spidermonkey.2010.vcxproj", "{1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_cepstral", "src\mod\asr_tts\mod_cepstral\mod_cepstral.2010.vcxproj", "{692F6330-4D87-4C82-81DF-40DB5892636E}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_ilbc", "src\mod\codecs\mod_ilbc\mod_ilbc.2010.vcxproj", "{D3EC0AFF-76FC-4210-A825-9A17410660A3}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dingaling", "src\mod\endpoints\mod_dingaling\mod_dingaling.2010.vcxproj", "{FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_commands", "src\mod\applications\mod_commands\mod_commands.2010.vcxproj", "{30A5B29C-983E-4580-9FD0-D647CCDCC7EB}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_console", "src\mod\loggers\mod_console\mod_console.2010.vcxproj", "{1C453396-D912-4213-89FD-9B489162B7B5}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xml_rpc", "src\mod\xml_int\mod_xml_rpc\mod_xml_rpc.2010.vcxproj", "{CBEC7225-0C21-4DA8-978E-1F158F8AD950}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_rss", "src\mod\applications\mod_rss\mod_rss.2010.vcxproj", "{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_conference", "src\mod\applications\mod_conference\mod_conference.2010.vcxproj", "{C24FB505-05D7-4319-8485-7540B44C8603}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dptools", "src\mod\applications\mod_dptools\mod_dptools.2010.vcxproj", "{B5881A85-FE70-4F64-8607-2CAAE52669C6}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_event_socket", "src\mod\event_handlers\mod_event_socket\mod_event_socket.2010.vcxproj", "{05515420-16DE-4E63-BE73-85BE85BA5142}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libdingaling", "libs\libdingaling\libdingaling.2010.vcxproj", "{1906D736-08BD-4EE1-924F-B536249B9A54}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsrtp", "libs\srtp\libsrtp.2010.vcxproj", "{EEF031CB-FED8-451E-A471-91EC8D4F6750}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsqlite", "libs\win32\sqlite\sqlite.2010.vcxproj", "{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpcre", "libs\win32\pcre\libpcre.2010.vcxproj", "{8D04B550-D240-4A44-8A18-35DA3F7038D9}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpcre Generate pcre_chartables.c", "libs\win32\pcre\pcre_chartables.c.2010.vcxproj", "{1CED5987-A529-46DC-B30F-870D85FF9C94}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libapr", "libs\win32\apr\libapr.2010.vcxproj", "{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libaprutil", "libs\win32\apr-util\libaprutil.2010.vcxproj", "{F057DA7F-79E5-4B00-845C-EF446EF055E3}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iksemel", "libs\win32\iksemel\iksemel.2010.vcxproj", "{E727E8F6-935D-46FE-8B0E-37834748A0E3}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsndfile", "libs\win32\libsndfile\libsndfile.2010.vcxproj", "{3D0370CA-BED2-4657-A475-32375CBCB6E4}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curllib", "libs\win32\curl\curllib.2010.vcxproj", "{87EE9DA4-DE1E-4448-8324-183C98DCA588}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79} = {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xml", "libs\win32\apr-util\xml.2010.vcxproj", "{155844C3-EC5F-407F-97A4-A2DDADED9B2F}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "js", "libs\win32\js\js.2010.vcxproj", "{204FA0DE-305D-4414-AE2E-F195A23F390D}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sofia", "src\mod\endpoints\mod_sofia\mod_sofia.2010.vcxproj", "{0DF3ABD0-DDC0-4265-B778-07C66780979B}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download PTHREAD", "libs\win32\Download PTHREAD.2010.vcxproj", "{8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pthread", "libs\win32\pthread\pthread.2010.vcxproj", "{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g723_1", "src\mod\codecs\mod_g723_1\mod_g723_1.2010.vcxproj", "{FEA1EEF7-876F-48DE-88BF-C0E3E606D758}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_iSAC", "src\mod\codecs\mod_isac\mod_iSAC.2010.vcxproj", "{7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_native_file", "src\mod\formats\mod_native_file\mod_native_file.2010.vcxproj", "{9254C4B0-6F60-42B6-BB3A-36D63FC001C7}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_core_db", "src\mod\languages\mod_spidermonkey\mod_spidermonkey_core_db.2010.vcxproj", "{ACFFF684-4D19-4D48-AF12-88EA1D778BDF}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_teletone", "src\mod\languages\mod_spidermonkey\mod_spidermonkey_teletone.2010.vcxproj", "{8F992C49-6C51-412F-B2A3-34EAB708EB65}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libudns", "libs\win32\udns\libudns.2010.vcxproj", "{4043FC6A-9A30-4577-8AD5-9B233C9575D8}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_enum", "src\mod\applications\mod_enum\mod_enum.2010.vcxproj", "{71A967D5-0E99-4CEF-A587-98836EE6F2EF}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_odbc", "src\mod\languages\mod_spidermonkey\mod_spidermonkey_odbc.2010.vcxproj", "{0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xml_curl", "src\mod\xml_int\mod_xml_curl\mod_xml_curl.2010.vcxproj", "{AB91A099-7690-4ECF-8994-E458F4EA1ED4}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_en", "src\mod\say\mod_say_en\mod_say_en.2010.vcxproj", "{988CACF7-3FCB-4992-BE69-77872AE67DC8}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "portaudio", "libs\portaudio\build\msvc\portaudio.2010.vcxproj", "{0A18A071-125E-442F-AFF7-A3F68ABECF99}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xml_cdr", "src\mod\xml_int\mod_xml_cdr\mod_xml_cdr.2010.vcxproj", "{08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_amr", "src\mod\codecs\mod_amr\mod_amr.2010.vcxproj", "{8DEB383C-4091-4F42-A56F-C9E46D552D79}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_h26x", "src\mod\codecs\mod_h26x\mod_h26x.2010.vcxproj", "{2C3C2423-234B-4772-8899-D3B137E5CA35}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_esf", "src\mod\applications\mod_esf\mod_esf.2010.vcxproj", "{3850D93A-5F24-4922-BC1C-74D08C37C256}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_local_stream", "src\mod\formats\mod_local_stream\mod_local_stream.2010.vcxproj", "{2CA40887-1622-46A1-A7F9-17FD7E7E545B}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_socket", "src\mod\languages\mod_spidermonkey\mod_spidermonkey_socket.2010.vcxproj", "{028C7278-05D7-4E18-82FE-BE231B844F41}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_voicemail", "src\mod\applications\mod_voicemail\mod_voicemail.2010.vcxproj", "{D7F1E3F2-A3F4-474C-8555-15122571AF52}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_de", "src\mod\say\mod_say_de\mod_say_de.2010.vcxproj", "{5BC072DB-3826-48EA-AF34-FE32AA01E83B}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_es", "src\mod\say\mod_say_es\mod_say_es.2010.vcxproj", "{FA429E98-8B03-45E6-A096-A4BC5E821DE4}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_fr", "src\mod\say\mod_say_fr\mod_say_fr.2010.vcxproj", "{06E3A538-AB32-44F2-B477-755FF9CB5D37}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_it", "src\mod\say\mod_say_it\mod_say_it.2010.vcxproj", "{6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_nl", "src\mod\say\mod_say_nl\mod_say_nl.2010.vcxproj", "{A4B122CF-5196-476B-8C0E-D8BD59AC3C14}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_fifo", "src\mod\applications\mod_fifo\mod_fifo.2010.vcxproj", "{75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_db", "src\mod\applications\mod_db\mod_db.2010.vcxproj", "{F6A33240-8F29-48BD-98F0-826995911799}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_expr", "src\mod\applications\mod_expr\mod_expr.2010.vcxproj", "{65A6273D-FCAB-4C55-B09E-65100141A5D4}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dialplan_asterisk", "src\mod\dialplans\mod_dialplan_asterisk\mod_dialplan_asterisk.2010.vcxproj", "{E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_logfile", "src\mod\loggers\mod_logfile\mod_logfile.2010.vcxproj", "{D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_cdr_csv", "src\mod\event_handlers\mod_cdr_csv\mod_cdr_csv.2010.vcxproj", "{44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_tone_stream", "src\mod\formats\mod_tone_stream\mod_tone_stream.2010.vcxproj", "{6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_fsv", "src\mod\applications\mod_fsv\mod_fsv.2010.vcxproj", "{E3246D17-E29B-4AB5-962A-C69B0C5837BB}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_curl", "src\mod\languages\mod_spidermonkey\mod_spidermonkey_curl.2010.vcxproj", "{36E854E3-CE12-4348-A125-CCF3F9D74813}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_lua", "src\mod\languages\mod_lua\mod_lua.2010.vcxproj", "{7B077E7F-1BE7-4291-AB86-55E527B25CAC}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "abyss", "libs\xmlrpc-c\Windows\abyss.2010.vcxproj", "{D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlrpc", "libs\xmlrpc-c\Windows\xmlrpc.2010.vcxproj", "{CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlparse", "libs\xmlrpc-c\Windows\xmlparse.2010.vcxproj", "{0D108721-EAE8-4BAF-8102-D8960EC93647}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmltok", "libs\xmlrpc-c\Windows\xmltok.2010.vcxproj", "{B535402E-38D2-4D54-8360-423ACBD17192}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download sphinxbase", "libs\win32\Download sphinxbase.2010.vcxproj", "{4F92B672-DADB-4047-8D6A-4BB3796733FD}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download sphinxmodel", "libs\win32\Download sphinxmodel.2010.vcxproj", "{2DEE4895-1134-439C-B688-52203E57D878}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download pocketsphinx", "libs\win32\Download pocketsphinx.2010.vcxproj", "{AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sphinxbase", "libs\win32\sphinxbase\sphinxbase.2010.vcxproj", "{2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pocketsphinx", "libs\win32\pocketsphinx\pocketsphinx.2010.vcxproj", "{94001A0E-A837-445C-8004-F918F10D0226}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_pocketsphinx", "src\mod\asr_tts\mod_pocketsphinx\mod_pocketsphinx.2010.vcxproj", "{2286DA73-9FC5-45BC-A508-85994C3317AB}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 8khzsound", "libs\win32\Download 8khz Sounds.2010.vcxproj", "{3CE1DC99-8246-4DB1-A709-74F19F08EC67}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 16khzsound", "libs\win32\Download 16khz Sounds.2010.vcxproj", "{87A1FE3D-F410-4C8E-9591-8C625985BC70}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "8khz", "libs\win32\Sound_Files\8khz.2010.vcxproj", "{7A8D8174-B355-4114-AFC1-04777CB9DE0A}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "16khz", "libs\win32\Sound_Files\16khz.2010.vcxproj", "{7EB71250-F002-4ED8-92CA-CA218114537A}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 32khzsound", "libs\win32\Dowload 32khz Sounds.2010.vcxproj", "{6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "32khz", "libs\win32\Sound_Files\32khz.2010.vcxproj", "{464AAB78-5489-4916-BE51-BF8D61822311}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flite", "libs\win32\flite\flite.2010.vcxproj", "{0AD1177E-1FD8-4643-9391-431467A11084}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_flite", "src\mod\asr_tts\mod_flite\mod_flite.2010.vcxproj", "{66444AEE-554C-11DD-A9F0-8C5D56D89593}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download FLITE", "libs\win32\Download FLITE.2010.vcxproj", "{D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download LAME", "libs\win32\Download LAME.2010.vcxproj", "{D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download LIBSHOUT", "libs\win32\Download LIBSHOUT.2010.vcxproj", "{D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download OGG", "libs\win32\Download OGG.2010.vcxproj", "{D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmp3lame", "libs\win32\libmp3lame\libmp3lame.2010.vcxproj", "{E316772F-5D8F-4F2A-8F71-094C3E859D34}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libshout", "libs\win32\libshout\libshout.vcxproj", "{D3D8B329-20BE-475E-9E83-653CEA0E0EF5}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_shout", "src\mod\formats\mod_shout\mod_shout.vcxproj", "{38FE0559-9910-43A8-9E45-3E5004C27692}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libogg", "libs\win32\libogg\libogg.2010.vcxproj", "{0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_snom", "src\mod\applications\mod_snom\mod_snom.2010.vcxproj", "{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_zh", "src\mod\say\mod_say_zh\mod_say_zh.2010.vcxproj", "{B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_managed", "src\mod\languages\mod_managed\mod_managed.2010.vcxproj", "{7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}"\r
+-EndProject\r
+-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FreeSWITCH.Managed.2010", "src\mod\languages\mod_managed\managed\FreeSWITCH.Managed.2010.csproj", "{834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download mpg123", "libs\win32\Download mpg123.2010.vcxproj", "{E796E337-DE78-4303-8614-9A590862EE95}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmpg123", "libs\win32\mpg123\libmpg123.2010.vcxproj", "{419C8F80-D858-4B48-A25C-AF4007608137}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_loopback", "src\mod\endpoints\mod_loopback\mod_loopback.2010.vcxproj", "{B3F424EC-3D8F-417C-B244-3919D5E1A577}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_vmd", "src\mod\applications\mod_vmd\mod_vmd.2010.vcxproj", "{14E4A972-9CFB-436D-B0A5-4943F3F80D47}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libg722_1", "libs\win32\libg722_1\libg722_1.vcxproj", "{1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_siren", "src\mod\codecs\mod_siren\mod_siren.2010.vcxproj", "{0B6C905B-142E-4999-B39D-92FF7951E921}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "esl", "libs\esl\src\esl.2010.vcxproj", "{CF405366-9558-4AE8-90EF-5E21B51CCB4E}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fs_cli", "libs\esl\fs_cli.2010.vcxproj", "{D2FB8043-D208-4AEE-8F18-3B5857C871B9}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_easyroute", "src\mod\applications\mod_easyroute\mod_easyroute.2010.vcxproj", "{329FD5B0-EF28-4606-86D0-F6EA21CF8E36}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_lcr", "src\mod\applications\mod_lcr\mod_lcr.2010.vcxproj", "{1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtiff", "libs\spandsp\src\libtiff.2010.vcxproj", "{401A40CD-5DB4-4E34-AC68-FA99E9FAC014}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspandsp", "libs\spandsp\src\libspandsp.2010.vcxproj", "{1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspeex", "libs\speex\win32\VS2008\libspeex\libspeex.vcxproj", "{E972C52F-9E85-4D65-B19C-031E511E9DB4}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspeexdsp", "libs\speex\win32\VS2008\libspeexdsp\libspeexdsp.vcxproj", "{03207781-0D1C-4DB3-A71D-45C608F28DBD}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libilbc", "libs\ilbc\libilbc.2010.vcxproj", "{9A5DDF08-C88C-4A35-B7F6-D605228446BD}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lua51", "src\mod\languages\mod_lua\lua\lua.2010.vcxproj", "{D0B36172-CD76-454A-9B89-990025266C2A}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_opal", "src\mod\endpoints\mod_opal\mod_opal_2010.vcxproj", "{05C9FB27-480E-4D53-B3B7-6338E2526666}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_skinny", "src\mod\endpoints\mod_skinny\mod_skinny_2010.vcxproj", "{CC1DD008-9406-448D-A0AD-33C3186CFADB}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_rtmp", "src\mod\endpoints\mod_rtmp\mod_rtmp_2010.vcxproj", "{48414740-C693-4968-9846-EE058020C64F}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_at_dictionary", "libs\spandsp\src\msvc\make_at_dictionary.2010.vcxproj", "{DEE932AB-5911-4700-9EEB-8C7090A0A330}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_modem_filter", "libs\spandsp\src\msvc\make_modem_filter.2010.vcxproj", "{329A6FA0-0FCC-4435-A950-E670AEFA9838}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_skel", "src\mod\applications\mod_skel\mod_skel.2010.vcxproj", "{11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_skypopen", "src\mod\endpoints\mod_skypopen\mod_skypopen.2010.vcxproj", "{C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 32khz music", "libs\win32\Dowload 32khz music.2010.vcxproj", "{1F0A8A77-E661-418F-BB92-82172AE43803}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 8khz music", "libs\win32\Download 8khz music.2010.vcxproj", "{4F5C9D55-98EF-4256-8311-32D7BD360406}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 16khz music", "libs\win32\Download 16khz music.2010.vcxproj", "{E10571C4-E7F4-4608-B5F2-B22E7EB95400}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "8khz music", "libs\win32\Sound_Files\8khzmusic.2010.vcxproj", "{D1ABE208-6442-4FB4-9AAD-1677E41BC870}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "16khz music", "libs\win32\Sound_Files\16khzmusic.2010.vcxproj", "{BA599D0A-4310-4505-91DA-6A6447B3E289}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "32khz music", "libs\win32\Sound_Files\32khzmusic.2010.vcxproj", "{EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_nibblebill", "src\mod\applications\mod_nibblebill\mod_nibblebill.2010.vcxproj", "{3C977801-FE88-48F2-83D3-FA2EBFF6688E}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_ru", "src\mod\say\mod_say_ru\mod_say_ru.2010.vcxproj", "{0382E8FD-CFDC-41C0-8B03-792C7C84FC31}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_valet_parking", "src\mod\applications\mod_valet_parking\mod_valet_parking.2010.vcxproj", "{432DB165-1EB2-4781-A9C0-71E62610B20A}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbroadvoice", "libs\broadvoice\src\libbroadvoice.2010.vcxproj", "{CF70F278-3364-4395-A2E1-23501C9B8AD2}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_bv", "src\mod\codecs\mod_bv\mod_bv.2010.vcxproj", "{D5C87B19-150D-4EF3-A671-96589BD2D14A}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aprtoolkit", "libs\unimrcp\libs\apr-toolkit\aprtoolkit.2010.vcxproj", "{13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F} = {155844C3-EC5F-407F-97A4-A2DDADED9B2F}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mpf", "libs\unimrcp\libs\mpf\mpf.2010.vcxproj", "{B5A00BFA-6083-4FAE-A097-71642D6473B5}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcp", "libs\unimrcp\libs\mrcp\mrcp.2010.vcxproj", "{1C320193-46A6-4B34-9C56-8AB584FC1B56}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpclient", "libs\unimrcp\libs\mrcp-client\mrcpclient.2010.vcxproj", "{72782932-37CC-46AE-8C7F-9A7B1A6EE108}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpsignaling", "libs\unimrcp\libs\mrcp-signaling\mrcpsignaling.2010.vcxproj", "{12A49562-BAB9-43A3-A21D-15B60BBB4C31}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpv2transport", "libs\unimrcp\libs\mrcpv2-transport\mrcpv2transport.2010.vcxproj", "{A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unirtsp", "libs\unimrcp\libs\uni-rtsp\unirtsp.2010.vcxproj", "{504B3154-7A4F-459D-9877-B951021C3F1F}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpsofiasip", "libs\unimrcp\modules\mrcp-sofiasip\mrcpsofiasip.2010.vcxproj", "{746F3632-5BB2-4570-9453-31D6D58A7D8E}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpunirtsp", "libs\unimrcp\modules\mrcp-unirtsp\mrcpunirtsp.2010.vcxproj", "{DEB01ACB-D65F-4A62-AED9-58C1054499E9}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_unimrcp", "src\mod\asr_tts\mod_unimrcp\mod_unimrcp.2010.vcxproj", "{D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download CELT", "libs\win32\Download CELT.vcxproj", "{FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcelt", "libs\win32\celt\libcelt.vcxproj", "{ABB71A76-42B0-47A4-973A-42E3D920C6FD}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_celt", "src\mod\codecs\mod_celt\mod_celt.vcxproj", "{4D418176-3B33-47E6-A63E-01BA34ADD21C}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FSComm", "fscomm\FSComm.2010.vcxproj", "{7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_curl", "src\mod\applications\mod_curl\mod_curl.2010.vcxproj", "{EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download JSON", "libs\win32\Download JSON.2010.vcxproj", "{B808178B-82F0-4CF4-A2B1-921939FA24D0}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libjson", "libs\win32\json\libjson.2010.vcxproj", "{9778F1C0-09BC-4698-8EBC-BD982247209A}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_silk", "src\mod\codecs\mod_silk\mod_silk.2010.vcxproj", "{AFA983D6-4569-4F88-BA94-555ED00FD9A8}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Silk_FIX", "libs\silk\src\Silk_FIX.2010.vcxproj", "{56B91D01-9150-4BBF-AFA1-5B68AB991B76}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_avmd", "src\mod\applications\mod_avmd\mod_avmd.2010.vcxproj", "{990BAA76-89D3-4E38-8479-C7B28784EFC8}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spandsp", "src\mod\applications\mod_spandsp\mod_spandsp.2010.vcxproj", "{1E21AFE0-6FDB-41D2-942D-863607C24B91}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_hash", "src\mod\applications\mod_hash\mod_hash.2010.vcxproj", "{2E250296-0C08-4342-9C8A-BCBDD0E7DF65}"\r
+-EndProject\r
+-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "openssl", "openssl", "{E4D29906-8B73-4F8A-B5F4-CA8BFA648F5A}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libeay32", "libs\win32\openssl\libeay32.2010.vcxproj", "{D331904D-A00A-4694-A5A3-FCFF64AB5DBE}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ssleay32", "libs\win32\openssl\ssleay32.2010.vcxproj", "{B4B62169-5AD4-4559-8707-3D933AC5DB39}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openssl", "libs\win32\openssl\openssl.2010.vcxproj", "{25BD39B1-C8BF-4676-A738-9CABD9C6BC79}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD} = {D578E676-7EC8-4548-BD8B-845C635F14AD}\r
+- EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download OPENSSL", "libs\win32\Download OPENSSL.2010.vcxproj", "{D578E676-7EC8-4548-BD8B-845C635F14AD}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsofia_sip_ua_static", "libs\win32\sofia\libsofia_sip_ua_static.2010.vcxproj", "{70A49BC2-7500-41D0-B75D-EDCC5BE987A0}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_directory", "src\mod\applications\mod_directory\mod_directory.2010.vcxproj", "{B889A18E-70A7-44B5-B2C9-47798D4F43B3}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_h323", "src\mod\endpoints\mod_h323\mod_h323.2010.vcxproj", "{05C9FB27-480E-4D53-B3B7-7338E2514666}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_distributor", "src\mod\applications\mod_distributor\mod_distributor.2010.vcxproj", "{5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}"\r
+-EndProject\r
+-Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "Setup", "w32\Setup\Setup.wixproj", "{47213370-B933-487D-9F45-BCA26D7E2B6F}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_pt", "src\mod\say\mod_say_pt\mod_say_pt.2010.vcxproj", "{7C22BDFF-CC09-400C-8A09-660733980028}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ldns", "libs\win32\ldns\ldns-lib\ldns-lib.2010.vcxproj", "{23B4D303-79FC-49E0-89E2-2280E7E28940}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_callcenter", "src\mod\applications\mod_callcenter\mod_callcenter.2010.vcxproj", "{47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_blacklist", "src\mod\applications\mod_blacklist\mod_blacklist.2010.vcxproj", "{50AAC2CE-BFC9-4912-87CC-C6381850D735}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spy", "src\mod\applications\mod_spy\mod_spy.2010.vcxproj", "{A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_httapi", "src\mod\applications\mod_httapi\mod_httapi.2010.vcxproj", "{4748FF56-CA85-4809-97D6-A94C0FAC1D77}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_abstraction", "src\mod\applications\mod_abstraction\mod_abstraction.2010.vcxproj", "{60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sms", "src\mod\applications\mod_sms\mod_sms.2010.vcxproj", "{2469B306-B027-4FF2-8815-C9C1EA2CAE79}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsmlib", "src\mod\endpoints\mod_gsmopen\gsmlib\gsmlib-1.10-patched-13ubuntu\win32\gsmlib.2010.vcxproj", "{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_gsmopen", "src\mod\endpoints\mod_gsmopen\mod_gsmopen.2010.vcxproj", "{74B120FF-6935-4DFE-A142-CDB6BEA99C90}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libzrtp", "libs\libzrtp\projects\win\libzrtp.2010.vcxproj", "{C13CC324-0032-4492-9A30-310A6BD64FF5}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_redis", "src\mod\applications\mod_redis\mod_redis.2010.vcxproj", "{886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download libjpeg", "libs\win32\Download libjpeg.2010.vcxproj", "{652AD5F7-8488-489F-AAD0-7FBE064703B6}"\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libjpeg", "libs\win32\libjpeg\libjpeg.2010.vcxproj", "{019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}"\r
+- ProjectSection(ProjectDependencies) = postProject\r
+- {652AD5F7-8488-489F-AAD0-7FBE064703B6} = {652AD5F7-8488-489F-AAD0-7FBE064703B6}\r
+- EndProjectSection\r
+-EndProject\r
+-Global\r
+- GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+- All|Win32 = All|Win32\r
+- All|x64 = All|x64\r
+- All|x64 Setup = All|x64 Setup\r
+- All|x86 Setup = All|x86 Setup\r
+- Debug|Win32 = Debug|Win32\r
+- Debug|x64 = Debug|x64\r
+- Debug|x64 Setup = Debug|x64 Setup\r
+- Debug|x86 Setup = Debug|x86 Setup\r
+- Release|Win32 = Release|Win32\r
+- Release|x64 = Release|x64\r
+- Release|x64 Setup = Release|x64 Setup\r
+- Release|x86 Setup = Release|x86 Setup\r
+- EndGlobalSection\r
+- GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.All|Win32.ActiveCfg = Release|x64\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.All|x64.ActiveCfg = Release|x64\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.All|x64.Build.0 = Release|x64\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.All|x64 Setup.Build.0 = Release|x64\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|Win32.Build.0 = Debug|Win32\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|x64.ActiveCfg = Debug|x64\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|x64.Build.0 = Debug|x64\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|Win32.ActiveCfg = Release|Win32\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|Win32.Build.0 = Release|Win32\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|x64.ActiveCfg = Release|x64\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|x64.Build.0 = Release|x64\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.All|Win32.ActiveCfg = Release|x64\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.All|x64.ActiveCfg = Release|x64\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.All|x64.Build.0 = Release|x64\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.All|x64 Setup.Build.0 = Release|x64\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|Win32.Build.0 = Debug|Win32\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|x64.ActiveCfg = Debug|x64\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|x64.Build.0 = Debug|x64\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|Win32.ActiveCfg = Release|Win32\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|Win32.Build.0 = Release|Win32\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|x64.ActiveCfg = Release|x64\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|x64.Build.0 = Release|x64\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.All|Win32.ActiveCfg = Release Passthrough|x64\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.All|x64.ActiveCfg = Release Passthrough|x64\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.All|x64.Build.0 = Release Passthrough|x64\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.All|x64 Setup.ActiveCfg = Release Passthrough|x64\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.All|x64 Setup.Build.0 = Release Passthrough|x64\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.All|x86 Setup.ActiveCfg = Release Passthrough|x64\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|Win32.Build.0 = Debug Passthrough|Win32\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|x64.ActiveCfg = Debug Passthrough|x64\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|x64.Build.0 = Debug Passthrough|x64\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|x64 Setup.ActiveCfg = Debug Passthrough|x64\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|x86 Setup.ActiveCfg = Debug Passthrough|Win32\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|Win32.ActiveCfg = Release Passthrough|Win32\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|Win32.Build.0 = Release Passthrough|Win32\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|x64.ActiveCfg = Release Passthrough|x64\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|x64.Build.0 = Release Passthrough|x64\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|x64 Setup.ActiveCfg = Release Passthrough|x64\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|x86 Setup.ActiveCfg = Release Passthrough|Win32\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.All|Win32.ActiveCfg = Release|x64\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.All|x64.ActiveCfg = Release|x64\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.All|x64.Build.0 = Release|x64\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.All|x64 Setup.Build.0 = Release|x64\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|Win32.Build.0 = Debug|Win32\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|x64.ActiveCfg = Debug|x64\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|x64.Build.0 = Debug|x64\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|Win32.ActiveCfg = Release|Win32\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|Win32.Build.0 = Release|Win32\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|x64.ActiveCfg = Release|x64\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|x64.Build.0 = Release|x64\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.All|Win32.ActiveCfg = Release|x64\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.All|x64.ActiveCfg = Release|x64\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.All|x64.Build.0 = Release|x64\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.All|x64 Setup.Build.0 = Release|x64\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Win32.Build.0 = Debug|Win32\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|x64.ActiveCfg = Debug|x64\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|x64.Build.0 = Debug|x64\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Win32.ActiveCfg = Release|Win32\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Win32.Build.0 = Release|Win32\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|x64.ActiveCfg = Release|x64\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|x64.Build.0 = Release|x64\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.All|Win32.ActiveCfg = Release|x64\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.All|x64.ActiveCfg = Release|x64\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.All|x64.Build.0 = Release|x64\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.All|x64 Setup.Build.0 = Release|x64\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|Win32.Build.0 = Debug|Win32\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|x64.ActiveCfg = Debug|x64\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|x64.Build.0 = Debug|x64\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|Win32.ActiveCfg = Release|Win32\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|Win32.Build.0 = Release|Win32\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|x64.ActiveCfg = Release|x64\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|x64.Build.0 = Release|x64\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {1A1FF289-4FD6-4285-A422-D31DD67A4723}.All|Win32.ActiveCfg = Release|Win32\r
+- {1A1FF289-4FD6-4285-A422-D31DD67A4723}.All|x64.ActiveCfg = Release|Win32\r
+- {1A1FF289-4FD6-4285-A422-D31DD67A4723}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {1A1FF289-4FD6-4285-A422-D31DD67A4723}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|x64 Setup.ActiveCfg = Debug|Win32\r
+- {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|Win32.ActiveCfg = Release|Win32\r
+- {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|x64.ActiveCfg = Release|Win32\r
+- {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|x64 Setup.ActiveCfg = Release|Win32\r
+- {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.All|Win32.ActiveCfg = Release|x64\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.All|x64.ActiveCfg = Release|x64\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.All|x64.Build.0 = Release|x64\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.All|x64 Setup.Build.0 = Release|x64\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|Win32.Build.0 = Debug|Win32\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|x64.ActiveCfg = Debug|x64\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|x64.Build.0 = Debug|x64\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|Win32.ActiveCfg = Release|Win32\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|Win32.Build.0 = Release|Win32\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|x64.ActiveCfg = Release|x64\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|x64.Build.0 = Release|x64\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.All|Win32.ActiveCfg = Release MS-LDAP|x64\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.All|x64.ActiveCfg = Release MS-LDAP|x64\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.All|x64.Build.0 = Release MS-LDAP|x64\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.All|x64 Setup.ActiveCfg = Release MS-LDAP|x64\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.All|x64 Setup.Build.0 = Release MS-LDAP|x64\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.All|x86 Setup.ActiveCfg = Release MS-LDAP|x64\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|Win32.ActiveCfg = Debug MS-LDAP|Win32\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|Win32.Build.0 = Debug MS-LDAP|Win32\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|x64.ActiveCfg = Debug MS-LDAP|x64\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|x64.Build.0 = Debug MS-LDAP|x64\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|x64 Setup.ActiveCfg = Debug MS-LDAP|x64\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|x86 Setup.ActiveCfg = Debug MS-LDAP|Win32\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|Win32.ActiveCfg = Release MS-LDAP|Win32\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|Win32.Build.0 = Release MS-LDAP|Win32\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|x64.ActiveCfg = Release MS-LDAP|x64\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|x64.Build.0 = Release MS-LDAP|x64\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|x64 Setup.ActiveCfg = Release MS-LDAP|x64\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|x86 Setup.ActiveCfg = Release MS-LDAP|Win32\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.All|Win32.ActiveCfg = Release|x64\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.All|x64.ActiveCfg = Release|x64\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.All|x64.Build.0 = Release|x64\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.All|x64 Setup.Build.0 = Release|x64\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|Win32.Build.0 = Debug|Win32\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|x64.ActiveCfg = Debug|x64\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|x64.Build.0 = Debug|x64\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|Win32.ActiveCfg = Release|Win32\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|Win32.Build.0 = Release|Win32\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|x64.ActiveCfg = Release|x64\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|x64.Build.0 = Release|x64\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.All|Win32.ActiveCfg = Release|x64\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.All|x64.ActiveCfg = Release|x64\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.All|x64.Build.0 = Release|x64\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.All|x64 Setup.Build.0 = Release|x64\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|Win32.Build.0 = Debug|Win32\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|x64.ActiveCfg = Debug|x64\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|x64.Build.0 = Debug|x64\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|Win32.ActiveCfg = Release|Win32\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|Win32.Build.0 = Release|Win32\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|x64.ActiveCfg = Release|x64\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|x64.Build.0 = Release|x64\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.All|Win32.ActiveCfg = Release|x64\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.All|x64.ActiveCfg = Release|x64\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.All|x64.Build.0 = Release|x64\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.All|x64 Setup.Build.0 = Release|x64\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|Win32.Build.0 = Debug|Win32\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|x64.ActiveCfg = Debug|x64\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|x64.Build.0 = Debug|x64\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|Win32.ActiveCfg = Release|Win32\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|Win32.Build.0 = Release|Win32\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|x64.ActiveCfg = Release|x64\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|x64.Build.0 = Release|x64\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.All|Win32.ActiveCfg = Release|x64\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.All|x64.ActiveCfg = Release|x64\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.All|x64.Build.0 = Release|x64\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.All|x64 Setup.Build.0 = Release|x64\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|Win32.Build.0 = Debug|Win32\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|x64.ActiveCfg = Debug|x64\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|x64.Build.0 = Debug|x64\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|Win32.ActiveCfg = Release|Win32\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|Win32.Build.0 = Release|Win32\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|x64.ActiveCfg = Release|x64\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|x64.Build.0 = Release|x64\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {692F6330-4D87-4C82-81DF-40DB5892636E}.All|Win32.ActiveCfg = Release|x64\r
+- {692F6330-4D87-4C82-81DF-40DB5892636E}.All|x64.ActiveCfg = Release|x64\r
+- {692F6330-4D87-4C82-81DF-40DB5892636E}.All|x64.Build.0 = Release|x64\r
+- {692F6330-4D87-4C82-81DF-40DB5892636E}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {692F6330-4D87-4C82-81DF-40DB5892636E}.All|x64 Setup.Build.0 = Release|x64\r
+- {692F6330-4D87-4C82-81DF-40DB5892636E}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|x64.ActiveCfg = Debug|x64\r
+- {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {692F6330-4D87-4C82-81DF-40DB5892636E}.Release|Win32.ActiveCfg = Release|Win32\r
+- {692F6330-4D87-4C82-81DF-40DB5892636E}.Release|x64.ActiveCfg = Release|x64\r
+- {692F6330-4D87-4C82-81DF-40DB5892636E}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {692F6330-4D87-4C82-81DF-40DB5892636E}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|Win32.ActiveCfg = Release|x64\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|x64.ActiveCfg = Release|x64\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|x64.Build.0 = Release|x64\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|x64 Setup.Build.0 = Release|x64\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|x64.ActiveCfg = Debug|x64\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|x64.Build.0 = Debug|x64\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|Win32.Build.0 = Release|Win32\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|x64.ActiveCfg = Release|x64\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|x64.Build.0 = Release|x64\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.All|Win32.ActiveCfg = Release|x64\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.All|x64.ActiveCfg = Release|x64\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.All|x64.Build.0 = Release|x64\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.All|x64 Setup.Build.0 = Release|x64\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Win32.Build.0 = Debug|Win32\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|x64.ActiveCfg = Debug|x64\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|x64.Build.0 = Debug|x64\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Win32.ActiveCfg = Release|Win32\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Win32.Build.0 = Release|Win32\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|x64.ActiveCfg = Release|x64\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|x64.Build.0 = Release|x64\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.All|Win32.ActiveCfg = Release|x64\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.All|x64.ActiveCfg = Release|x64\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.All|x64.Build.0 = Release|x64\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.All|x64 Setup.Build.0 = Release|x64\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|Win32.Build.0 = Debug|Win32\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|x64.ActiveCfg = Debug|x64\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|x64.Build.0 = Debug|x64\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|Win32.ActiveCfg = Release|Win32\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|Win32.Build.0 = Release|Win32\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|x64.ActiveCfg = Release|x64\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|x64.Build.0 = Release|x64\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.All|Win32.ActiveCfg = Release|x64\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.All|x64.ActiveCfg = Release|x64\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.All|x64.Build.0 = Release|x64\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.All|x64 Setup.Build.0 = Release|x64\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|Win32.Build.0 = Debug|Win32\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|x64.ActiveCfg = Debug|x64\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|x64.Build.0 = Debug|x64\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.Release|Win32.ActiveCfg = Release|Win32\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.Release|Win32.Build.0 = Release|Win32\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.Release|x64.ActiveCfg = Release|x64\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.Release|x64.Build.0 = Release|x64\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {1C453396-D912-4213-89FD-9B489162B7B5}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.All|Win32.ActiveCfg = Release|x64\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.All|x64.ActiveCfg = Release|x64\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.All|x64.Build.0 = Release|x64\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.All|x64 Setup.Build.0 = Release|x64\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|Win32.Build.0 = Debug|Win32\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|x64.ActiveCfg = Debug|x64\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|x64.Build.0 = Debug|x64\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Win32.ActiveCfg = Release|Win32\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Win32.Build.0 = Release|Win32\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|x64.ActiveCfg = Release|x64\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|x64.Build.0 = Release|x64\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|Win32.ActiveCfg = Release|x64\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|x64.ActiveCfg = Release|x64\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|x64.Build.0 = Release|x64\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|x64 Setup.Build.0 = Release|x64\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Win32.Build.0 = Debug|Win32\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|x64.ActiveCfg = Debug|x64\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|x64.Build.0 = Debug|x64\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Win32.ActiveCfg = Release|Win32\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Win32.Build.0 = Release|Win32\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|x64.ActiveCfg = Release|x64\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|x64.Build.0 = Release|x64\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.All|Win32.ActiveCfg = Release|x64\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.All|x64.ActiveCfg = Release|x64\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.All|x64.Build.0 = Release|x64\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.All|x64 Setup.Build.0 = Release|x64\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|Win32.Build.0 = Debug|Win32\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|x64.ActiveCfg = Debug|x64\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|x64.Build.0 = Debug|x64\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.Release|Win32.ActiveCfg = Release|Win32\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.Release|Win32.Build.0 = Release|Win32\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.Release|x64.ActiveCfg = Release|x64\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.Release|x64.Build.0 = Release|x64\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {C24FB505-05D7-4319-8485-7540B44C8603}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.All|Win32.ActiveCfg = Release|x64\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.All|x64.ActiveCfg = Release|x64\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.All|x64.Build.0 = Release|x64\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.All|x64 Setup.Build.0 = Release|x64\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|Win32.Build.0 = Debug|Win32\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|x64.ActiveCfg = Debug|x64\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|x64.Build.0 = Debug|x64\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|Win32.ActiveCfg = Release|Win32\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|Win32.Build.0 = Release|Win32\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|x64.ActiveCfg = Release|x64\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|x64.Build.0 = Release|x64\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.All|Win32.ActiveCfg = Release|x64\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.All|x64.ActiveCfg = Release|x64\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.All|x64.Build.0 = Release|x64\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.All|x64 Setup.Build.0 = Release|x64\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|Win32.Build.0 = Debug|Win32\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|x64.ActiveCfg = Debug|x64\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|x64.Build.0 = Debug|x64\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|Win32.ActiveCfg = Release|Win32\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|Win32.Build.0 = Release|Win32\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|x64.ActiveCfg = Release|x64\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|x64.Build.0 = Release|x64\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.All|Win32.ActiveCfg = Release DLL|x64\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.All|x64.ActiveCfg = Release DLL|x64\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.All|x64.Build.0 = Release DLL|x64\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.All|x64 Setup.ActiveCfg = Release DLL|x64\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.All|x64 Setup.Build.0 = Release DLL|x64\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.All|x86 Setup.ActiveCfg = Release DLL|x64\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.Build.0 = Debug|Win32\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|x64.ActiveCfg = Debug|x64\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|x64.Build.0 = Debug|x64\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Win32.ActiveCfg = Release|Win32\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Win32.Build.0 = Release|Win32\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|x64.ActiveCfg = Release|x64\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|x64.Build.0 = Release|x64\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.All|Win32.ActiveCfg = Release Dll|x64\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.All|x64.ActiveCfg = Release Dll|x64\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.All|x64.Build.0 = Release Dll|x64\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.All|x64 Setup.ActiveCfg = Release Dll|x64\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.All|x64 Setup.Build.0 = Release Dll|x64\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.All|x86 Setup.ActiveCfg = Release Dll|x64\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Win32.Build.0 = Debug|Win32\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|x64.ActiveCfg = Debug|x64\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|x64.Build.0 = Debug|x64\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Win32.ActiveCfg = Release|Win32\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Win32.Build.0 = Release|Win32\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|x64.ActiveCfg = Release|x64\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|x64.Build.0 = Release|x64\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.All|Win32.ActiveCfg = Release DLL|x64\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.All|x64.ActiveCfg = Release DLL|x64\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.All|x64.Build.0 = Release DLL|x64\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.All|x64 Setup.ActiveCfg = Release DLL|x64\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.All|x64 Setup.Build.0 = Release DLL|x64\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.All|x86 Setup.ActiveCfg = Release DLL|x64\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|Win32.Build.0 = Debug|Win32\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|x64.ActiveCfg = Debug|x64\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|x64.Build.0 = Debug|x64\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|Win32.ActiveCfg = Release|Win32\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|Win32.Build.0 = Release|Win32\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|x64.ActiveCfg = Release|x64\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|x64.Build.0 = Release|x64\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.All|Win32.ActiveCfg = Release DLL|x64\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.All|x64.ActiveCfg = Release DLL|x64\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.All|x64.Build.0 = Release DLL|x64\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.All|x64 Setup.ActiveCfg = Release DLL|x64\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.All|x64 Setup.Build.0 = Release DLL|x64\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.All|x86 Setup.ActiveCfg = Release DLL|x64\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|Win32.Build.0 = Debug|Win32\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|x64.ActiveCfg = Debug|x64\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|x64.Build.0 = Debug|x64\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|Win32.ActiveCfg = Release|Win32\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|Win32.Build.0 = Release|Win32\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|x64.ActiveCfg = Release|x64\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|x64.Build.0 = Release|x64\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.All|Win32.ActiveCfg = Release|x64\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.All|x64.ActiveCfg = Release|x64\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.All|x64.Build.0 = Release|x64\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.All|x64 Setup.Build.0 = Release|x64\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Win32.Build.0 = Debug|Win32\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|x64.ActiveCfg = Debug|x64\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|x64.Build.0 = Debug|x64\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.ActiveCfg = Release|Win32\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.Build.0 = Release|Win32\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|x64.ActiveCfg = Release|x64\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|x64.Build.0 = Release|x64\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.All|Win32.ActiveCfg = Release|x64\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.All|x64.ActiveCfg = Release|x64\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.All|x64.Build.0 = Release|x64\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.All|x64 Setup.Build.0 = Release|x64\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|Win32.Build.0 = Debug|Win32\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|x64.ActiveCfg = Debug|x64\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|x64.Build.0 = Debug|x64\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.ActiveCfg = Release|Win32\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.Build.0 = Release|Win32\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64.ActiveCfg = Release|x64\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64.Build.0 = Release|x64\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.All|Win32.ActiveCfg = Release|x64\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.All|x64.ActiveCfg = Release|x64\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.All|x64.Build.0 = Release|x64\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.All|x64 Setup.Build.0 = Release|x64\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.Build.0 = Debug|Win32\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|x64.ActiveCfg = Debug|x64\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|x64.Build.0 = Debug|x64\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Win32.ActiveCfg = Release|Win32\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Win32.Build.0 = Release|Win32\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|x64.ActiveCfg = Release|x64\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|x64.Build.0 = Release|x64\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|Win32.ActiveCfg = Release|x64\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|x64.ActiveCfg = Release|x64\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|x64.Build.0 = Release|x64\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|x64 Setup.Build.0 = Release|x64\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Win32.Build.0 = Debug|Win32\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|x64.ActiveCfg = Debug|x64\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|x64.Build.0 = Debug|x64\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Win32.ActiveCfg = Release|Win32\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Win32.Build.0 = Release|Win32\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|x64.ActiveCfg = Release|x64\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|x64.Build.0 = Release|x64\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.All|Win32.ActiveCfg = Release|x64\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.All|x64.ActiveCfg = Release|x64\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.All|x64.Build.0 = Release|x64\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.All|x64 Setup.Build.0 = Release|x64\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|Win32.Build.0 = Debug|Win32\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|x64.ActiveCfg = Debug|x64\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|x64.Build.0 = Debug|x64\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|Win32.ActiveCfg = Release|Win32\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|Win32.Build.0 = Release|Win32\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|x64.ActiveCfg = Release|x64\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|x64.Build.0 = Release|x64\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.All|Win32.ActiveCfg = Debug|x64\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.All|x64.ActiveCfg = Debug|x64\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.All|x64.Build.0 = Debug|x64\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.All|x64 Setup.ActiveCfg = Debug|x64\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.All|x64 Setup.Build.0 = Debug|x64\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.All|x86 Setup.ActiveCfg = Debug|x64\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|Win32.Build.0 = Debug|Win32\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|x64.ActiveCfg = Debug|x64\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|x64.Build.0 = Debug|x64\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|Win32.ActiveCfg = Release|Win32\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|Win32.Build.0 = Release|Win32\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|x64.ActiveCfg = Release|x64\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|x64.Build.0 = Release|x64\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.All|Win32.ActiveCfg = Debug|x64\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.All|x64.ActiveCfg = Debug|x64\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.All|x64.Build.0 = Debug|x64\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.All|x64 Setup.ActiveCfg = Debug|x64\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.All|x64 Setup.Build.0 = Debug|x64\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.All|x86 Setup.ActiveCfg = Debug|x64\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Win32.Build.0 = Debug|Win32\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|x64.ActiveCfg = Debug|x64\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|x64.Build.0 = Debug|x64\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Win32.ActiveCfg = Release|Win32\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Win32.Build.0 = Release|Win32\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|x64.ActiveCfg = Release|x64\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|x64.Build.0 = Release|x64\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.All|Win32.ActiveCfg = Debug|x64\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.All|x64.ActiveCfg = Debug|x64\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.All|x64.Build.0 = Debug|x64\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.All|x64 Setup.ActiveCfg = Debug|x64\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.All|x64 Setup.Build.0 = Debug|x64\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.All|x86 Setup.ActiveCfg = Debug|x64\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|Win32.Build.0 = Debug|Win32\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|x64.ActiveCfg = Debug|x64\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|x64.Build.0 = Debug|x64\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|Win32.ActiveCfg = Release|Win32\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|Win32.Build.0 = Release|Win32\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|x64.ActiveCfg = Release|x64\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|x64.Build.0 = Release|x64\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|Win32.ActiveCfg = Release|x64\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x64.ActiveCfg = Release|x64\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x64.Build.0 = Release|x64\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x64 Setup.Build.0 = Release|x64\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|Win32.Build.0 = Debug|Win32\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|x64.ActiveCfg = Debug|x64\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|x64.Build.0 = Debug|x64\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|Win32.ActiveCfg = Release|Win32\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|Win32.Build.0 = Release|Win32\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|x64.ActiveCfg = Release|x64\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|x64.Build.0 = Release|x64\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|Win32.ActiveCfg = Release|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|Win32.Build.0 = Release|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|x64.ActiveCfg = Release|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|x64.Build.0 = Release|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|x64 Setup.Build.0 = Release|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|x86 Setup.Build.0 = Release|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|Win32.Build.0 = Debug|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|x64.Build.0 = Debug|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|x64 Setup.ActiveCfg = Debug|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Win32.ActiveCfg = Release|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Win32.Build.0 = Release|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|x64.ActiveCfg = Release|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|x64.Build.0 = Release|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|x64 Setup.ActiveCfg = Release|Win32\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.All|Win32.ActiveCfg = Release DLL|x64\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.All|x64.ActiveCfg = Release DLL|x64\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.All|x64.Build.0 = Release DLL|x64\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.All|x64 Setup.ActiveCfg = Release DLL|x64\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.All|x64 Setup.Build.0 = Release DLL|x64\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.All|x86 Setup.ActiveCfg = Release DLL|x64\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Win32.ActiveCfg = Debug DLL|Win32\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Win32.Build.0 = Debug DLL|Win32\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|x64.ActiveCfg = Debug DLL|x64\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|x64.Build.0 = Debug DLL|x64\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|x64 Setup.ActiveCfg = Debug DLL|x64\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|x86 Setup.ActiveCfg = Debug DLL|Win32\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Win32.ActiveCfg = Release DLL|Win32\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Win32.Build.0 = Release DLL|Win32\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|x64.ActiveCfg = Release DLL|x64\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|x64.Build.0 = Release DLL|x64\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|x64 Setup.ActiveCfg = Release DLL|x64\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|x86 Setup.ActiveCfg = Release DLL|Win32\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.All|Win32.ActiveCfg = Release Passthrough|x64\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.All|x64.ActiveCfg = Release Passthrough|x64\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.All|x64.Build.0 = Release Passthrough|x64\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.All|x64 Setup.ActiveCfg = Release Passthrough|x64\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.All|x64 Setup.Build.0 = Release Passthrough|x64\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.All|x86 Setup.ActiveCfg = Release Passthrough|x64\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|Win32.Build.0 = Debug Passthrough|Win32\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|x64.ActiveCfg = Debug Passthrough|x64\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|x64.Build.0 = Debug Passthrough|x64\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|x64 Setup.ActiveCfg = Debug Passthrough|x64\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|x86 Setup.ActiveCfg = Debug Passthrough|Win32\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|Win32.ActiveCfg = Release Passthrough|Win32\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|Win32.Build.0 = Release Passthrough|Win32\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|x64.ActiveCfg = Release Passthrough|x64\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|x64.Build.0 = Release Passthrough|x64\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|x64 Setup.ActiveCfg = Release Passthrough|x64\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|x86 Setup.ActiveCfg = Release Passthrough|Win32\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.All|Win32.ActiveCfg = Release|x64\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.All|x64.ActiveCfg = Release|x64\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.All|x64.Build.0 = Release|x64\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.All|x64 Setup.Build.0 = Release|x64\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Debug|Win32.Build.0 = Debug|Win32\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Debug|x64.ActiveCfg = Debug|x64\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Debug|x64.Build.0 = Debug|x64\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Release|Win32.ActiveCfg = Release|Win32\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Release|Win32.Build.0 = Release|Win32\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Release|x64.ActiveCfg = Release|x64\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Release|x64.Build.0 = Release|x64\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.All|Win32.ActiveCfg = Release|x64\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.All|x64.ActiveCfg = Release|x64\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.All|x64.Build.0 = Release|x64\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.All|x64 Setup.Build.0 = Release|x64\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|Win32.Build.0 = Debug|Win32\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|x64.ActiveCfg = Debug|x64\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|x64.Build.0 = Debug|x64\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|Win32.ActiveCfg = Release|Win32\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|Win32.Build.0 = Release|Win32\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|x64.ActiveCfg = Release|x64\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|x64.Build.0 = Release|x64\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.All|Win32.ActiveCfg = Release|x64\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.All|x64.ActiveCfg = Release|x64\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.All|x64.Build.0 = Release|x64\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.All|x64 Setup.Build.0 = Release|x64\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|Win32.Build.0 = Debug|Win32\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|x64.ActiveCfg = Debug|x64\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|x64.Build.0 = Debug|x64\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|Win32.ActiveCfg = Release|Win32\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|Win32.Build.0 = Release|Win32\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|x64.ActiveCfg = Release|x64\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|x64.Build.0 = Release|x64\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.All|Win32.ActiveCfg = Release|x64\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.All|x64.ActiveCfg = Release|x64\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.All|x64.Build.0 = Release|x64\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.All|x64 Setup.Build.0 = Release|x64\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|Win32.Build.0 = Debug|Win32\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|x64.ActiveCfg = Debug|x64\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|x64.Build.0 = Debug|x64\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|Win32.ActiveCfg = Release|Win32\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|Win32.Build.0 = Release|Win32\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|x64.ActiveCfg = Release|x64\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|x64.Build.0 = Release|x64\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.All|Win32.ActiveCfg = Release|x64\r
+- {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.All|x64.ActiveCfg = Release|x64\r
+- {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.All|x64.Build.0 = Release|x64\r
+- {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.All|x64 Setup.Build.0 = Release|x64\r
+- {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug|x64.ActiveCfg = Debug|x64\r
+- {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release|Win32.ActiveCfg = Release|Win32\r
+- {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release|x64.ActiveCfg = Release|x64\r
+- {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.All|Win32.ActiveCfg = Release|x64\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.All|x64.ActiveCfg = Release|x64\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.All|x64.Build.0 = Release|x64\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.All|x64 Setup.Build.0 = Release|x64\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|Win32.Build.0 = Debug|Win32\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|x64.ActiveCfg = Debug|x64\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|x64.Build.0 = Debug|x64\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|Win32.ActiveCfg = Release|Win32\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|Win32.Build.0 = Release|Win32\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|x64.ActiveCfg = Release|x64\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|x64.Build.0 = Release|x64\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.All|Win32.ActiveCfg = Release|x64\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.All|x64.ActiveCfg = Release|x64\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.All|x64.Build.0 = Release|x64\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.All|x64 Setup.Build.0 = Release|x64\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|Win32.Build.0 = Debug|Win32\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|x64.ActiveCfg = Debug|x64\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|x64.Build.0 = Debug|x64\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|Win32.ActiveCfg = Release|Win32\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|Win32.Build.0 = Release|Win32\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|x64.ActiveCfg = Release|x64\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|x64.Build.0 = Release|x64\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.All|Win32.ActiveCfg = Release|x64\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.All|x64.ActiveCfg = Release|x64\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.All|x64.Build.0 = Release|x64\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.All|x64 Setup.Build.0 = Release|x64\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|Win32.Build.0 = Debug|Win32\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|x64.ActiveCfg = Debug|x64\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|x64.Build.0 = Debug|x64\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|Win32.ActiveCfg = Release|Win32\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|Win32.Build.0 = Release|Win32\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|x64.ActiveCfg = Release|x64\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|x64.Build.0 = Release|x64\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.All|Win32.ActiveCfg = Release|x64\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.All|x64.ActiveCfg = Release|x64\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.All|x64.Build.0 = Release|x64\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.All|x64 Setup.Build.0 = Release|x64\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|Win32.Build.0 = Debug|Win32\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|x64.ActiveCfg = Debug|x64\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|x64.Build.0 = Debug|x64\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|Win32.ActiveCfg = Release|Win32\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|Win32.Build.0 = Release|Win32\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|x64.ActiveCfg = Release|x64\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|x64.Build.0 = Release|x64\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|Win32.ActiveCfg = Release DirectSound|x64\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64.ActiveCfg = Release DirectSound|x64\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64.Build.0 = Release DirectSound|x64\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64 Setup.ActiveCfg = Release DirectSound|x64\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64 Setup.Build.0 = Release DirectSound|x64\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x86 Setup.ActiveCfg = Release DirectSound|x64\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug DirectSound|Win32\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug DirectSound|Win32\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug DirectSound|x64\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.Build.0 = Debug DirectSound|x64\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64 Setup.ActiveCfg = Debug DirectSound|x64\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x86 Setup.ActiveCfg = Debug DirectSound|Win32\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release DirectSound|Win32\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release DirectSound|Win32\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release DirectSound|x64\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.Build.0 = Release DirectSound|x64\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64 Setup.ActiveCfg = Release DirectSound|x64\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x86 Setup.ActiveCfg = Release DirectSound|Win32\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|Win32.ActiveCfg = Release|x64\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64.ActiveCfg = Release|x64\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64.Build.0 = Release|x64\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64 Setup.Build.0 = Release|x64\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|Win32.Build.0 = Debug|Win32\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|x64.ActiveCfg = Debug|x64\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|x64.Build.0 = Debug|x64\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|Win32.ActiveCfg = Release|Win32\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|Win32.Build.0 = Release|Win32\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|x64.ActiveCfg = Release|x64\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|x64.Build.0 = Release|x64\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.All|Win32.ActiveCfg = Release Passthrough|x64\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.All|x64.ActiveCfg = Release Passthrough|x64\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.All|x64.Build.0 = Release Passthrough|x64\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.All|x64 Setup.ActiveCfg = Release Passthrough|x64\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.All|x64 Setup.Build.0 = Release Passthrough|x64\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.All|x86 Setup.ActiveCfg = Release Passthrough|x64\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|Win32.Build.0 = Debug Passthrough|Win32\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|x64.ActiveCfg = Debug Passthrough|x64\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|x64.Build.0 = Debug Passthrough|x64\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|x64 Setup.ActiveCfg = Debug Passthrough|x64\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|x86 Setup.ActiveCfg = Debug Passthrough|Win32\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|Win32.ActiveCfg = Release Passthrough|Win32\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|Win32.Build.0 = Release Passthrough|Win32\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|x64.ActiveCfg = Release Passthrough|x64\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|x64.Build.0 = Release Passthrough|x64\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|x64 Setup.ActiveCfg = Release Passthrough|x64\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|x86 Setup.ActiveCfg = Release Passthrough|Win32\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.All|Win32.ActiveCfg = Release|x64\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.All|x64.ActiveCfg = Release|x64\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.All|x64.Build.0 = Release|x64\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.All|x64 Setup.Build.0 = Release|x64\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|Win32.Build.0 = Debug|Win32\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|x64.ActiveCfg = Debug|x64\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|x64.Build.0 = Debug|x64\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|Win32.ActiveCfg = Release|Win32\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|Win32.Build.0 = Release|Win32\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|x64.ActiveCfg = Release|x64\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|x64.Build.0 = Release|x64\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.All|Win32.ActiveCfg = Release|x64\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.All|x64.ActiveCfg = Release|x64\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.All|x64.Build.0 = Release|x64\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.All|x64 Setup.Build.0 = Release|x64\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|Win32.Build.0 = Debug|Win32\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|x64.ActiveCfg = Debug|x64\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|x64.Build.0 = Debug|x64\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|Win32.ActiveCfg = Release|Win32\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|Win32.Build.0 = Release|Win32\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|x64.ActiveCfg = Release|x64\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|x64.Build.0 = Release|x64\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.All|Win32.ActiveCfg = Release|x64\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.All|x64.ActiveCfg = Release|x64\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.All|x64.Build.0 = Release|x64\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.All|x64 Setup.Build.0 = Release|x64\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|Win32.Build.0 = Debug|Win32\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|x64.ActiveCfg = Debug|x64\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|x64.Build.0 = Debug|x64\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|Win32.ActiveCfg = Release|Win32\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|Win32.Build.0 = Release|Win32\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|x64.ActiveCfg = Release|x64\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|x64.Build.0 = Release|x64\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.All|Win32.ActiveCfg = Release|x64\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.All|x64.ActiveCfg = Release|x64\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.All|x64.Build.0 = Release|x64\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.All|x64 Setup.Build.0 = Release|x64\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|Win32.Build.0 = Debug|Win32\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|x64.ActiveCfg = Debug|x64\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|x64.Build.0 = Debug|x64\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|Win32.ActiveCfg = Release|Win32\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|Win32.Build.0 = Release|Win32\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|x64.ActiveCfg = Release|x64\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|x64.Build.0 = Release|x64\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.All|Win32.ActiveCfg = Release|x64\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.All|x64.ActiveCfg = Release|x64\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.All|x64.Build.0 = Release|x64\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.All|x64 Setup.Build.0 = Release|x64\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|x64.ActiveCfg = Debug|x64\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|x64.Build.0 = Debug|x64\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|Win32.Build.0 = Release|Win32\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|x64.ActiveCfg = Release|x64\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|x64.Build.0 = Release|x64\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.All|Win32.ActiveCfg = Release|x64\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.All|x64.ActiveCfg = Release|x64\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.All|x64.Build.0 = Release|x64\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.All|x64 Setup.Build.0 = Release|x64\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|Win32.Build.0 = Debug|Win32\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|x64.ActiveCfg = Debug|x64\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|x64.Build.0 = Debug|x64\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|Win32.ActiveCfg = Release|Win32\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|Win32.Build.0 = Release|Win32\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|x64.ActiveCfg = Release|x64\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|x64.Build.0 = Release|x64\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.All|Win32.ActiveCfg = Release|x64\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.All|x64.ActiveCfg = Release|x64\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.All|x64.Build.0 = Release|x64\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.All|x64 Setup.Build.0 = Release|x64\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|Win32.Build.0 = Debug|Win32\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|x64.ActiveCfg = Debug|x64\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|x64.Build.0 = Debug|x64\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|Win32.ActiveCfg = Release|Win32\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|Win32.Build.0 = Release|Win32\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|x64.ActiveCfg = Release|x64\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|x64.Build.0 = Release|x64\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.All|Win32.ActiveCfg = Release|x64\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.All|x64.ActiveCfg = Release|x64\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.All|x64.Build.0 = Release|x64\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.All|x64 Setup.Build.0 = Release|x64\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|Win32.Build.0 = Debug|Win32\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|x64.ActiveCfg = Debug|x64\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|x64.Build.0 = Debug|x64\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|Win32.ActiveCfg = Release|Win32\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|Win32.Build.0 = Release|Win32\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|x64.ActiveCfg = Release|x64\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|x64.Build.0 = Release|x64\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.All|Win32.ActiveCfg = Release|x64\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.All|x64.ActiveCfg = Release|x64\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.All|x64.Build.0 = Release|x64\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.All|x64 Setup.Build.0 = Release|x64\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|Win32.Build.0 = Debug|Win32\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|x64.ActiveCfg = Debug|x64\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|x64.Build.0 = Debug|x64\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|Win32.ActiveCfg = Release|Win32\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|Win32.Build.0 = Release|Win32\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|x64.ActiveCfg = Release|x64\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|x64.Build.0 = Release|x64\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.All|Win32.ActiveCfg = Release|x64\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.All|x64.ActiveCfg = Release|x64\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.All|x64.Build.0 = Release|x64\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.All|x64 Setup.Build.0 = Release|x64\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|Win32.Build.0 = Debug|Win32\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|x64.ActiveCfg = Debug|x64\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|x64.Build.0 = Debug|x64\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|Win32.ActiveCfg = Release|Win32\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|Win32.Build.0 = Release|Win32\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|x64.ActiveCfg = Release|x64\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|x64.Build.0 = Release|x64\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.All|Win32.ActiveCfg = Release|x64\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.All|x64.ActiveCfg = Release|x64\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.All|x64.Build.0 = Release|x64\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.All|x64 Setup.Build.0 = Release|x64\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|Win32.Build.0 = Debug|Win32\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|x64.ActiveCfg = Debug|x64\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|x64.Build.0 = Debug|x64\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|Win32.ActiveCfg = Release|Win32\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|Win32.Build.0 = Release|Win32\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|x64.ActiveCfg = Release|x64\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|x64.Build.0 = Release|x64\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.All|Win32.ActiveCfg = Release|x64\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.All|x64.ActiveCfg = Release|x64\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.All|x64.Build.0 = Release|x64\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.All|x64 Setup.Build.0 = Release|x64\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.Debug|Win32.Build.0 = Debug|Win32\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.Debug|x64.ActiveCfg = Debug|x64\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.Debug|x64.Build.0 = Debug|x64\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.Release|Win32.ActiveCfg = Release|Win32\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.Release|Win32.Build.0 = Release|Win32\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.Release|x64.ActiveCfg = Release|x64\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.Release|x64.Build.0 = Release|x64\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {F6A33240-8F29-48BD-98F0-826995911799}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.All|Win32.ActiveCfg = Release|x64\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.All|x64.ActiveCfg = Release|x64\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.All|x64.Build.0 = Release|x64\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.All|x64 Setup.Build.0 = Release|x64\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|Win32.Build.0 = Debug|Win32\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|x64.ActiveCfg = Debug|x64\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|x64.Build.0 = Debug|x64\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|Win32.ActiveCfg = Release|Win32\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|Win32.Build.0 = Release|Win32\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|x64.ActiveCfg = Release|x64\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|x64.Build.0 = Release|x64\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.All|Win32.ActiveCfg = Release|x64\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.All|x64.ActiveCfg = Release|x64\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.All|x64.Build.0 = Release|x64\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.All|x64 Setup.Build.0 = Release|x64\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|Win32.Build.0 = Debug|Win32\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|x64.ActiveCfg = Debug|x64\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|x64.Build.0 = Debug|x64\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|Win32.ActiveCfg = Release|Win32\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|Win32.Build.0 = Release|Win32\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|x64.ActiveCfg = Release|x64\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|x64.Build.0 = Release|x64\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.All|Win32.ActiveCfg = Release|x64\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.All|x64.ActiveCfg = Release|x64\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.All|x64.Build.0 = Release|x64\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.All|x64 Setup.Build.0 = Release|x64\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|x64.ActiveCfg = Debug|x64\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|x64.Build.0 = Debug|x64\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|Win32.Build.0 = Release|Win32\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|x64.ActiveCfg = Release|x64\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|x64.Build.0 = Release|x64\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.All|Win32.ActiveCfg = Release|x64\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.All|x64.ActiveCfg = Release|x64\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.All|x64.Build.0 = Release|x64\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.All|x64 Setup.Build.0 = Release|x64\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|Win32.Build.0 = Debug|Win32\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|x64.ActiveCfg = Debug|x64\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|x64.Build.0 = Debug|x64\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|Win32.ActiveCfg = Release|Win32\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|Win32.Build.0 = Release|Win32\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|x64.ActiveCfg = Release|x64\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|x64.Build.0 = Release|x64\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.All|Win32.ActiveCfg = Release|x64\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.All|x64.ActiveCfg = Release|x64\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.All|x64.Build.0 = Release|x64\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.All|x64 Setup.Build.0 = Release|x64\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|Win32.Build.0 = Debug|Win32\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|x64.ActiveCfg = Debug|x64\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|x64.Build.0 = Debug|x64\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|Win32.ActiveCfg = Release|Win32\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|Win32.Build.0 = Release|Win32\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|x64.ActiveCfg = Release|x64\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|x64.Build.0 = Release|x64\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.All|Win32.ActiveCfg = Release|x64\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.All|x64.ActiveCfg = Release|x64\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.All|x64.Build.0 = Release|x64\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.All|x64 Setup.Build.0 = Release|x64\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|Win32.Build.0 = Debug|Win32\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|x64.ActiveCfg = Debug|x64\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|x64.Build.0 = Debug|x64\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|Win32.ActiveCfg = Release|Win32\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|Win32.Build.0 = Release|Win32\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|x64.ActiveCfg = Release|x64\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|x64.Build.0 = Release|x64\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.All|Win32.ActiveCfg = Release|x64\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.All|x64.ActiveCfg = Release|x64\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.All|x64.Build.0 = Release|x64\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.All|x64 Setup.Build.0 = Release|x64\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|Win32.Build.0 = Debug|Win32\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|x64.ActiveCfg = Debug|x64\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|x64.Build.0 = Debug|x64\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|Win32.ActiveCfg = Release|Win32\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|Win32.Build.0 = Release|Win32\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|x64.ActiveCfg = Release|x64\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|x64.Build.0 = Release|x64\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.All|Win32.ActiveCfg = Release|x64\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.All|x64.ActiveCfg = Release|x64\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.All|x64.Build.0 = Release|x64\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.All|x64 Setup.Build.0 = Release|x64\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|Win32.Build.0 = Debug|Win32\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|x64.ActiveCfg = Debug|x64\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|x64.Build.0 = Debug|x64\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|Win32.ActiveCfg = Release|Win32\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|Win32.Build.0 = Release|Win32\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|x64.ActiveCfg = Release|x64\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|x64.Build.0 = Release|x64\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|Win32.ActiveCfg = Release|x64\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|x64.ActiveCfg = Release|x64\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|x64.Build.0 = Release|x64\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|x64 Setup.Build.0 = Release|x64\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|x64.ActiveCfg = Debug|x64\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|x64.Build.0 = Debug|x64\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|Win32.Build.0 = Release|Win32\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|x64.ActiveCfg = Release|x64\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|x64.Build.0 = Release|x64\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|Win32.ActiveCfg = Release|x64\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|x64.ActiveCfg = Release|x64\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|x64.Build.0 = Release|x64\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|x64 Setup.Build.0 = Release|x64\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|Win32.Build.0 = Debug|Win32\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|x64.ActiveCfg = Debug|x64\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|x64.Build.0 = Debug|x64\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|Win32.ActiveCfg = Release|Win32\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|Win32.Build.0 = Release|Win32\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|x64.ActiveCfg = Release|x64\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|x64.Build.0 = Release|x64\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|Win32.ActiveCfg = Debug|x64\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|x64.ActiveCfg = Debug|x64\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|x64.Build.0 = Debug|x64\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|x64 Setup.ActiveCfg = Debug|x64\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|x64 Setup.Build.0 = Debug|x64\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|x86 Setup.ActiveCfg = Debug|x64\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|Win32.Build.0 = Debug|Win32\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|x64.ActiveCfg = Debug|x64\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|x64.Build.0 = Debug|x64\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Win32.ActiveCfg = Release|Win32\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Win32.Build.0 = Release|Win32\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x64.ActiveCfg = Release|x64\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x64.Build.0 = Release|x64\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.All|Win32.ActiveCfg = Release|x64\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.All|x64.ActiveCfg = Release|x64\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.All|x64.Build.0 = Release|x64\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.All|x64 Setup.Build.0 = Release|x64\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|Win32.Build.0 = Debug|Win32\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|x64.ActiveCfg = Debug|x64\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|x64.Build.0 = Debug|x64\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.Release|Win32.ActiveCfg = Release|Win32\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.Release|Win32.Build.0 = Release|Win32\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.Release|x64.ActiveCfg = Release|x64\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.Release|x64.Build.0 = Release|x64\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {B535402E-38D2-4D54-8360-423ACBD17192}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|Win32.ActiveCfg = Release|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|Win32.Build.0 = Release|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|x64.ActiveCfg = Release|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|x64.Build.0 = Release|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|x64 Setup.Build.0 = Release|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|x86 Setup.Build.0 = Release|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|Win32.Build.0 = Debug|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|x64.Build.0 = Debug|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|x64 Setup.ActiveCfg = Debug|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|Win32.ActiveCfg = Release|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|Win32.Build.0 = Release|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|x64.ActiveCfg = Release|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|x64.Build.0 = Release|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|x64 Setup.ActiveCfg = Release|Win32\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.All|Win32.ActiveCfg = Release|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.All|Win32.Build.0 = Release|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.All|x64.ActiveCfg = Release|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.All|x64.Build.0 = Release|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.All|x64 Setup.Build.0 = Release|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.All|x86 Setup.Build.0 = Release|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.Debug|Win32.Build.0 = Debug|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.Debug|x64.Build.0 = Debug|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.Debug|x64 Setup.ActiveCfg = Debug|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.Release|Win32.ActiveCfg = Release|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.Release|Win32.Build.0 = Release|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.Release|x64.ActiveCfg = Release|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.Release|x64.Build.0 = Release|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.Release|x64 Setup.ActiveCfg = Release|Win32\r
+- {2DEE4895-1134-439C-B688-52203E57D878}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|Win32.ActiveCfg = Release|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|Win32.Build.0 = Release|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|x64.ActiveCfg = Release|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|x64.Build.0 = Release|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|x64 Setup.Build.0 = Release|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|x86 Setup.Build.0 = Release|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|Win32.Build.0 = Debug|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|x64.Build.0 = Debug|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|x64 Setup.ActiveCfg = Debug|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|Win32.ActiveCfg = Release|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|Win32.Build.0 = Release|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|x64.ActiveCfg = Release|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|x64.Build.0 = Release|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|x64 Setup.ActiveCfg = Release|Win32\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.All|Win32.ActiveCfg = Debug|x64\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.All|x64.ActiveCfg = Debug|x64\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.All|x64.Build.0 = Debug|x64\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.All|x64 Setup.ActiveCfg = Debug|x64\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.All|x64 Setup.Build.0 = Debug|x64\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.All|x86 Setup.ActiveCfg = Debug|x64\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|Win32.Build.0 = Debug|Win32\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|x64.ActiveCfg = Debug|x64\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|x64.Build.0 = Debug|x64\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|Win32.ActiveCfg = Release|Win32\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|Win32.Build.0 = Release|Win32\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|x64.ActiveCfg = Release|x64\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|x64.Build.0 = Release|x64\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.All|Win32.ActiveCfg = Debug|x64\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.All|x64.ActiveCfg = Debug|x64\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.All|x64.Build.0 = Debug|x64\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.All|x64 Setup.ActiveCfg = Debug|x64\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.All|x64 Setup.Build.0 = Debug|x64\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.All|x86 Setup.ActiveCfg = Debug|x64\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.Debug|Win32.Build.0 = Debug|Win32\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.Debug|x64.ActiveCfg = Debug|x64\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.Debug|x64.Build.0 = Debug|x64\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.Release|Win32.ActiveCfg = Release|Win32\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.Release|Win32.Build.0 = Release|Win32\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.Release|x64.ActiveCfg = Release|x64\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.Release|x64.Build.0 = Release|x64\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {94001A0E-A837-445C-8004-F918F10D0226}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.All|Win32.ActiveCfg = Release|x64\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.All|x64.ActiveCfg = Release|x64\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.All|x64.Build.0 = Release|x64\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.All|x64 Setup.Build.0 = Release|x64\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|Win32.Build.0 = Debug|Win32\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|x64.ActiveCfg = Debug|x64\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|x64.Build.0 = Debug|x64\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|Win32.ActiveCfg = Release|Win32\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|Win32.Build.0 = Release|Win32\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|x64.ActiveCfg = Release|x64\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|x64.Build.0 = Release|x64\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|Win32.ActiveCfg = Release|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|Win32.Build.0 = Release|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|x64.ActiveCfg = Release|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|x64.Build.0 = Release|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|x64 Setup.Build.0 = Release|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|x86 Setup.Build.0 = Release|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|Win32.Build.0 = Debug|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|x64.Build.0 = Debug|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|x64 Setup.ActiveCfg = Debug|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|Win32.ActiveCfg = Release|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|Win32.Build.0 = Release|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|x64.ActiveCfg = Release|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|x64.Build.0 = Release|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|x64 Setup.ActiveCfg = Release|Win32\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {87A1FE3D-F410-4C8E-9591-8C625985BC70}.All|Win32.ActiveCfg = Release|Win32\r
+- {87A1FE3D-F410-4C8E-9591-8C625985BC70}.All|x64.ActiveCfg = Release|Win32\r
+- {87A1FE3D-F410-4C8E-9591-8C625985BC70}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {87A1FE3D-F410-4C8E-9591-8C625985BC70}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug|x64 Setup.ActiveCfg = Debug|Win32\r
+- {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release|Win32.ActiveCfg = Release|Win32\r
+- {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release|x64.ActiveCfg = Release|Win32\r
+- {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release|x64 Setup.ActiveCfg = Release|Win32\r
+- {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|Win32.ActiveCfg = Release|Win32\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|Win32.Build.0 = Release|Win32\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|x64.ActiveCfg = Release|Win32\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|x64.Build.0 = Release|Win32\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|x64 Setup.Build.0 = Release|Win32\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|x86 Setup.Build.0 = Release|Win32\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|Win32.Build.0 = Debug|Win32\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|x64.ActiveCfg = Debug|x64\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|x64.Build.0 = Debug|x64\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|Win32.ActiveCfg = Release|Win32\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|Win32.Build.0 = Release|Win32\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|x64.ActiveCfg = Release|x64\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|x64.Build.0 = Release|x64\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {7EB71250-F002-4ED8-92CA-CA218114537A}.All|Win32.ActiveCfg = Release|Win32\r
+- {7EB71250-F002-4ED8-92CA-CA218114537A}.All|x64.ActiveCfg = Release|Win32\r
+- {7EB71250-F002-4ED8-92CA-CA218114537A}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {7EB71250-F002-4ED8-92CA-CA218114537A}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|x64.ActiveCfg = Debug|x64\r
+- {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {7EB71250-F002-4ED8-92CA-CA218114537A}.Release|Win32.ActiveCfg = Release|Win32\r
+- {7EB71250-F002-4ED8-92CA-CA218114537A}.Release|x64.ActiveCfg = Release|x64\r
+- {7EB71250-F002-4ED8-92CA-CA218114537A}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {7EB71250-F002-4ED8-92CA-CA218114537A}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.All|Win32.ActiveCfg = Release|Win32\r
+- {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.All|x64.ActiveCfg = Release|Win32\r
+- {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug|x64 Setup.ActiveCfg = Debug|Win32\r
+- {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release|Win32.ActiveCfg = Release|Win32\r
+- {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release|x64.ActiveCfg = Release|Win32\r
+- {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release|x64 Setup.ActiveCfg = Release|Win32\r
+- {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {464AAB78-5489-4916-BE51-BF8D61822311}.All|Win32.ActiveCfg = Release|Win32\r
+- {464AAB78-5489-4916-BE51-BF8D61822311}.All|x64.ActiveCfg = Release|Win32\r
+- {464AAB78-5489-4916-BE51-BF8D61822311}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {464AAB78-5489-4916-BE51-BF8D61822311}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {464AAB78-5489-4916-BE51-BF8D61822311}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {464AAB78-5489-4916-BE51-BF8D61822311}.Debug|x64.ActiveCfg = Debug|x64\r
+- {464AAB78-5489-4916-BE51-BF8D61822311}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {464AAB78-5489-4916-BE51-BF8D61822311}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {464AAB78-5489-4916-BE51-BF8D61822311}.Release|Win32.ActiveCfg = Release|Win32\r
+- {464AAB78-5489-4916-BE51-BF8D61822311}.Release|x64.ActiveCfg = Release|x64\r
+- {464AAB78-5489-4916-BE51-BF8D61822311}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {464AAB78-5489-4916-BE51-BF8D61822311}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.All|Win32.ActiveCfg = Release|x64\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.All|x64.ActiveCfg = Release|x64\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.All|x64.Build.0 = Release|x64\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.All|x64 Setup.Build.0 = Release|x64\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|Win32.Build.0 = Debug|Win32\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|x64.ActiveCfg = Debug|x64\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|x64.Build.0 = Debug|x64\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.Release|Win32.ActiveCfg = Release|Win32\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.Release|Win32.Build.0 = Release|Win32\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.Release|x64.ActiveCfg = Release|x64\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.Release|x64.Build.0 = Release|x64\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {0AD1177E-1FD8-4643-9391-431467A11084}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593}.All|Win32.ActiveCfg = Release Static|x64\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593}.All|x64.ActiveCfg = Release Static|x64\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593}.All|x64.Build.0 = Release Static|x64\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593}.All|x64 Setup.ActiveCfg = Release Static|x64\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593}.All|x64 Setup.Build.0 = Release Static|x64\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593}.All|x86 Setup.ActiveCfg = Release Static|x64\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|Win32.Build.0 = Debug|Win32\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|x64.ActiveCfg = Debug|x64\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|x64.Build.0 = Debug|x64\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|Win32.ActiveCfg = Release|Win32\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|Win32.Build.0 = Release|Win32\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|x64.ActiveCfg = Release|x64\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|x64.Build.0 = Release|x64\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|Win32.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|Win32.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|x64.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|x64.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|x64 Setup.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|x86 Setup.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|x64.Build.0 = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|x64 Setup.ActiveCfg = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|Win32.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|x64.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|x64.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|x64 Setup.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|Win32.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|Win32.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|x64.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|x64.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|x64 Setup.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|x86 Setup.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|x64.Build.0 = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|x64 Setup.ActiveCfg = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|Win32.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|x64.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|x64.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|x64 Setup.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|Win32.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|Win32.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|x64.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|x64.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|x64 Setup.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|x86 Setup.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|x64.Build.0 = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|x64 Setup.ActiveCfg = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|Win32.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|x64.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|x64.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|x64 Setup.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|Win32.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|Win32.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|x64.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|x64.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|x64 Setup.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|x86 Setup.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|x64.Build.0 = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|x64 Setup.ActiveCfg = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|Win32.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|x64.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|x64.Build.0 = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|x64 Setup.ActiveCfg = Release|Win32\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.All|Win32.ActiveCfg = Debug|x64\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.All|x64.ActiveCfg = Debug|x64\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.All|x64.Build.0 = Debug|x64\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.All|x64 Setup.ActiveCfg = Debug|x64\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.All|x64 Setup.Build.0 = Debug|x64\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.All|x86 Setup.ActiveCfg = Debug|x64\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|Win32.Build.0 = Debug|Win32\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|x64.ActiveCfg = Debug|x64\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|x64.Build.0 = Debug|x64\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|Win32.ActiveCfg = Release|Win32\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|Win32.Build.0 = Release|Win32\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|x64.ActiveCfg = Release|x64\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|x64.Build.0 = Release|x64\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.All|Win32.ActiveCfg = Debug|x64\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.All|x64.ActiveCfg = Debug|x64\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.All|x64.Build.0 = Debug|x64\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.All|x64 Setup.ActiveCfg = Debug|x64\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.All|x64 Setup.Build.0 = Debug|x64\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.All|x86 Setup.ActiveCfg = Debug|x64\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|x64.ActiveCfg = Debug|x64\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|x64.Build.0 = Debug|x64\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|Win32.Build.0 = Release|Win32\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|x64.ActiveCfg = Release|x64\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|x64.Build.0 = Release|x64\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.All|Win32.ActiveCfg = Release|x64\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.All|x64.ActiveCfg = Release|x64\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.All|x64.Build.0 = Release|x64\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.All|x64 Setup.Build.0 = Release|x64\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|Win32.Build.0 = Debug|Win32\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|x64.ActiveCfg = Debug|x64\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|x64.Build.0 = Debug|x64\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|Win32.ActiveCfg = Release|Win32\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|Win32.Build.0 = Release|Win32\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|x64.ActiveCfg = Release|x64\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|x64.Build.0 = Release|x64\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.All|Win32.ActiveCfg = Debug|x64\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.All|x64.ActiveCfg = Debug|x64\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.All|x64.Build.0 = Debug|x64\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.All|x64 Setup.ActiveCfg = Debug|x64\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.All|x64 Setup.Build.0 = Debug|x64\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.All|x86 Setup.ActiveCfg = Debug|x64\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|Win32.Build.0 = Debug|Win32\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|x64.ActiveCfg = Debug|x64\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|x64.Build.0 = Debug|x64\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|Win32.ActiveCfg = Release|Win32\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|Win32.Build.0 = Release|Win32\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|x64.ActiveCfg = Release|x64\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|x64.Build.0 = Release|x64\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.All|Win32.ActiveCfg = Release|x64\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.All|x64.ActiveCfg = Release|x64\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.All|x64.Build.0 = Release|x64\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.All|x64 Setup.Build.0 = Release|x64\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|Win32.Build.0 = Debug|Win32\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|x64.ActiveCfg = Debug|x64\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|x64.Build.0 = Debug|x64\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Win32.ActiveCfg = Release|Win32\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Win32.Build.0 = Release|Win32\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|x64.ActiveCfg = Release|x64\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|x64.Build.0 = Release|x64\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.All|Win32.ActiveCfg = Release|x64\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.All|x64.ActiveCfg = Release|x64\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.All|x64.Build.0 = Release|x64\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.All|x64 Setup.Build.0 = Release|x64\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|Win32.Build.0 = Debug|Win32\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|x64.ActiveCfg = Debug|x64\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|x64.Build.0 = Debug|x64\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|Win32.ActiveCfg = Release|Win32\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|Win32.Build.0 = Release|Win32\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|x64.ActiveCfg = Release|x64\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|x64.Build.0 = Release|x64\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.All|Win32.ActiveCfg = Release_Mono|x64\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.All|x64.ActiveCfg = Release_Mono|x64\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.All|x64.Build.0 = Release_Mono|x64\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.All|x64 Setup.ActiveCfg = Release_Mono|x64\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.All|x64 Setup.Build.0 = Release_Mono|x64\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.All|x86 Setup.ActiveCfg = Release_Mono|x64\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|Win32.ActiveCfg = Debug_CLR|Win32\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|Win32.Build.0 = Debug_CLR|Win32\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|x64.ActiveCfg = Debug_CLR|x64\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|x64.Build.0 = Debug_CLR|x64\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|x64 Setup.ActiveCfg = Debug_CLR|x64\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|x86 Setup.ActiveCfg = Debug_CLR|Win32\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|Win32.ActiveCfg = Release_CLR|Win32\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|Win32.Build.0 = Release_CLR|Win32\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|x64.ActiveCfg = Release_CLR|x64\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|x64.Build.0 = Release_CLR|x64\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|x64 Setup.ActiveCfg = Release_CLR|x64\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|x86 Setup.ActiveCfg = Release_CLR|Win32\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.All|Win32.ActiveCfg = Release|Any CPU\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.All|x64.ActiveCfg = Release|Any CPU\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.All|x64 Setup.ActiveCfg = Release|Any CPU\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.All|x86 Setup.ActiveCfg = Release|Any CPU\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|Win32.ActiveCfg = Debug|Any CPU\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|Win32.Build.0 = Debug|Any CPU\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|x64.ActiveCfg = Debug|x64\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|x64.Build.0 = Debug|x64\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|x86 Setup.ActiveCfg = Debug|Any CPU\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|Win32.ActiveCfg = Release|Any CPU\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|Win32.Build.0 = Release|Any CPU\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|x64.ActiveCfg = Release|x64\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|x64.Build.0 = Release|x64\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|x86 Setup.ActiveCfg = Release|Any CPU\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.All|Win32.ActiveCfg = Release|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.All|Win32.Build.0 = Release|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.All|x64.ActiveCfg = Release|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.All|x64.Build.0 = Release|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.All|x64 Setup.Build.0 = Release|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.All|x86 Setup.Build.0 = Release|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.Debug|Win32.Build.0 = Debug|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.Debug|x64.Build.0 = Debug|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.Debug|x64 Setup.ActiveCfg = Debug|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.Release|Win32.ActiveCfg = Release|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.Release|Win32.Build.0 = Release|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.Release|x64.ActiveCfg = Release|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.Release|x64.Build.0 = Release|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.Release|x64 Setup.ActiveCfg = Release|Win32\r
+- {E796E337-DE78-4303-8614-9A590862EE95}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.All|Win32.ActiveCfg = Release|x64\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.All|x64.ActiveCfg = Release|x64\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.All|x64.Build.0 = Release|x64\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.All|x64 Setup.Build.0 = Release|x64\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|Win32.Build.0 = Debug|Win32\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|x64.ActiveCfg = Debug|x64\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|x64.Build.0 = Debug|x64\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.Release|Win32.ActiveCfg = Release|Win32\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.Release|Win32.Build.0 = Release|Win32\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.Release|x64.ActiveCfg = Release|x64\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.Release|x64.Build.0 = Release|x64\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {419C8F80-D858-4B48-A25C-AF4007608137}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.All|Win32.ActiveCfg = Release|x64\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.All|x64.ActiveCfg = Release|x64\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.All|x64.Build.0 = Release|x64\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.All|x64 Setup.Build.0 = Release|x64\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|Win32.Build.0 = Debug|Win32\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|x64.ActiveCfg = Debug|x64\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|x64.Build.0 = Debug|x64\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|Win32.ActiveCfg = Release|Win32\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|Win32.Build.0 = Release|Win32\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|x64.ActiveCfg = Release|x64\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|x64.Build.0 = Release|x64\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.All|Win32.ActiveCfg = Release|x64\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.All|x64.ActiveCfg = Release|x64\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.All|x64.Build.0 = Release|x64\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.All|x64 Setup.Build.0 = Release|x64\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|Win32.Build.0 = Debug|Win32\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|x64.ActiveCfg = Debug|x64\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|x64.Build.0 = Debug|x64\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|Win32.ActiveCfg = Release|Win32\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|Win32.Build.0 = Release|Win32\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|x64.ActiveCfg = Release|x64\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|x64.Build.0 = Release|x64\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.All|Win32.ActiveCfg = Release|x64\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.All|x64.ActiveCfg = Release|x64\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.All|x64.Build.0 = Release|x64\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.All|x64 Setup.Build.0 = Release|x64\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|Win32.Build.0 = Debug|Win32\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|x64.ActiveCfg = Debug|x64\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|x64.Build.0 = Debug|x64\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|Win32.ActiveCfg = Release|Win32\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|Win32.Build.0 = Release|Win32\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|x64.ActiveCfg = Release|x64\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|x64.Build.0 = Release|x64\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.All|Win32.ActiveCfg = Release|x64\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.All|x64.ActiveCfg = Release|x64\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.All|x64.Build.0 = Release|x64\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.All|x64 Setup.Build.0 = Release|x64\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|Win32.Build.0 = Debug|Win32\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|x64.ActiveCfg = Debug|x64\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|x64.Build.0 = Debug|x64\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|Win32.ActiveCfg = Release|Win32\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|Win32.Build.0 = Release|Win32\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|x64.ActiveCfg = Release|x64\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|x64.Build.0 = Release|x64\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.All|Win32.ActiveCfg = Release|x64\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.All|x64.ActiveCfg = Release|x64\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.All|x64.Build.0 = Release|x64\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.All|x64 Setup.Build.0 = Release|x64\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|Win32.Build.0 = Debug|Win32\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|x64.ActiveCfg = Debug|x64\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|x64.Build.0 = Debug|x64\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|Win32.ActiveCfg = Release|Win32\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|Win32.Build.0 = Release|Win32\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|x64.ActiveCfg = Release|x64\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|x64.Build.0 = Release|x64\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.All|Win32.ActiveCfg = Release|x64\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.All|x64.ActiveCfg = Release|x64\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.All|x64.Build.0 = Release|x64\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.All|x64 Setup.Build.0 = Release|x64\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|x64.ActiveCfg = Debug|x64\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|x64.Build.0 = Debug|x64\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|Win32.Build.0 = Release|Win32\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|x64.ActiveCfg = Release|x64\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|x64.Build.0 = Release|x64\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.All|Win32.ActiveCfg = Release|x64\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.All|x64.ActiveCfg = Release|x64\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.All|x64.Build.0 = Release|x64\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.All|x64 Setup.Build.0 = Release|x64\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|Win32.Build.0 = Debug|Win32\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|x64.ActiveCfg = Debug|x64\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|x64.Build.0 = Debug|x64\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|Win32.ActiveCfg = Release|Win32\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|Win32.Build.0 = Release|Win32\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|x64.ActiveCfg = Release|x64\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|x64.Build.0 = Release|x64\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.All|Win32.ActiveCfg = Release|x64\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.All|x64.ActiveCfg = Release|x64\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.All|x64.Build.0 = Release|x64\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.All|x64 Setup.Build.0 = Release|x64\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|Win32.Build.0 = Debug|Win32\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|x64.ActiveCfg = Debug|x64\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|x64.Build.0 = Debug|x64\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|Win32.ActiveCfg = Release|Win32\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|Win32.Build.0 = Release|Win32\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|x64.ActiveCfg = Release|x64\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|x64.Build.0 = Release|x64\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.All|Win32.ActiveCfg = Release|x64\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.All|x64.ActiveCfg = Release|x64\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.All|x64.Build.0 = Release|x64\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.All|x64 Setup.Build.0 = Release|x64\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|Win32.Build.0 = Debug|Win32\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|x64.ActiveCfg = Debug|x64\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|x64.Build.0 = Debug|x64\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|Win32.ActiveCfg = Release|Win32\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|Win32.Build.0 = Release|Win32\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|x64.ActiveCfg = Release|x64\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|x64.Build.0 = Release|x64\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.All|Win32.ActiveCfg = Release|x64\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.All|x64.ActiveCfg = Release|x64\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.All|x64.Build.0 = Release|x64\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.All|x64 Setup.Build.0 = Release|x64\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|Win32.Build.0 = Debug|Win32\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|x64.ActiveCfg = Debug|x64\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|x64.Build.0 = Debug|x64\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|Win32.ActiveCfg = Release|Win32\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|Win32.Build.0 = Release|Win32\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|x64.ActiveCfg = Release|x64\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|x64.Build.0 = Release|x64\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.All|Win32.ActiveCfg = Release_WM5_PPC_ARM|x64\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.All|x64.ActiveCfg = Release_WM5_PPC_ARM|x64\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.All|x64.Build.0 = Release_WM5_PPC_ARM|x64\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.All|x64 Setup.ActiveCfg = Release_WM5_PPC_ARM|x64\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.All|x64 Setup.Build.0 = Release_WM5_PPC_ARM|x64\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.All|x86 Setup.ActiveCfg = Release_WM5_PPC_ARM|x64\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Debug|Win32.Build.0 = Debug|Win32\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Debug|x64.ActiveCfg = Debug|x64\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Debug|x64.Build.0 = Debug|x64\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Release|Win32.ActiveCfg = Release|Win32\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Release|Win32.Build.0 = Release|Win32\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Release|x64.ActiveCfg = Release|x64\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Release|x64.Build.0 = Release|x64\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.All|Win32.ActiveCfg = Release_Static_SSE|x64\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.All|x64.ActiveCfg = Release_Static_SSE|x64\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.All|x64.Build.0 = Release_Static_SSE|x64\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.All|x64 Setup.ActiveCfg = Release_Static_SSE|x64\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.All|x64 Setup.Build.0 = Release_Static_SSE|x64\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.All|x86 Setup.ActiveCfg = Release_Static_SSE|x64\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Debug|Win32.Build.0 = Debug|Win32\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Debug|x64.ActiveCfg = Debug|x64\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Debug|x64.Build.0 = Debug|x64\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Release|Win32.ActiveCfg = Release|Win32\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Release|Win32.Build.0 = Release|Win32\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Release|x64.ActiveCfg = Release|x64\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Release|x64.Build.0 = Release|x64\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.All|Win32.ActiveCfg = Release|x64\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.All|x64.ActiveCfg = Release|x64\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.All|x64.Build.0 = Release|x64\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.All|x64 Setup.Build.0 = Release|x64\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Debug|Win32.Build.0 = Debug|Win32\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Debug|x64.ActiveCfg = Debug|x64\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Debug|x64.Build.0 = Debug|x64\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Release|Win32.ActiveCfg = Release|Win32\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Release|Win32.Build.0 = Release|Win32\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Release|x64.ActiveCfg = Release|x64\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Release|x64.Build.0 = Release|x64\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.All|Win32.ActiveCfg = Release|x64\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.All|x64.ActiveCfg = Release|x64\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.All|x64.Build.0 = Release|x64\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.All|x64 Setup.Build.0 = Release|x64\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.Debug|x64.ActiveCfg = Debug|x64\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.Debug|x64.Build.0 = Debug|x64\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.Release|Win32.Build.0 = Release|Win32\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.Release|x64.ActiveCfg = Release|x64\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.Release|x64.Build.0 = Release|x64\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {D0B36172-CD76-454A-9B89-990025266C2A}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-6338E2526666}.All|Win32.ActiveCfg = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-6338E2526666}.All|Win32.Build.0 = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-6338E2526666}.All|x64.ActiveCfg = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-6338E2526666}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-6338E2526666}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-6338E2526666}.All|x86 Setup.Build.0 = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-6338E2526666}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {05C9FB27-480E-4D53-B3B7-6338E2526666}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {05C9FB27-480E-4D53-B3B7-6338E2526666}.Debug|x64 Setup.ActiveCfg = Debug|Win32\r
+- {05C9FB27-480E-4D53-B3B7-6338E2526666}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {05C9FB27-480E-4D53-B3B7-6338E2526666}.Release|Win32.ActiveCfg = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-6338E2526666}.Release|x64.ActiveCfg = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-6338E2526666}.Release|x64 Setup.ActiveCfg = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-6338E2526666}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {CC1DD008-9406-448D-A0AD-33C3186CFADB}.All|Win32.ActiveCfg = Release|Win32\r
+- {CC1DD008-9406-448D-A0AD-33C3186CFADB}.All|x64.ActiveCfg = Release|Win32\r
+- {CC1DD008-9406-448D-A0AD-33C3186CFADB}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {CC1DD008-9406-448D-A0AD-33C3186CFADB}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Debug|Win32.Build.0 = Debug|Win32\r
+- {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Debug|x64.ActiveCfg = Debug|x64\r
+- {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Debug|x64.Build.0 = Debug|x64\r
+- {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Release|Win32.ActiveCfg = Release|Win32\r
+- {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Release|Win32.Build.0 = Release|Win32\r
+- {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Release|x64.ActiveCfg = Release|x64\r
+- {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Release|x64.Build.0 = Release|x64\r
+- {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {48414740-C693-4968-9846-EE058020C64F}.All|Win32.ActiveCfg = Release|Win32\r
+- {48414740-C693-4968-9846-EE058020C64F}.All|x64.ActiveCfg = Release|Win32\r
+- {48414740-C693-4968-9846-EE058020C64F}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {48414740-C693-4968-9846-EE058020C64F}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {48414740-C693-4968-9846-EE058020C64F}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {48414740-C693-4968-9846-EE058020C64F}.Debug|Win32.Build.0 = Debug|Win32\r
+- {48414740-C693-4968-9846-EE058020C64F}.Debug|x64.ActiveCfg = Debug|x64\r
+- {48414740-C693-4968-9846-EE058020C64F}.Debug|x64.Build.0 = Debug|x64\r
+- {48414740-C693-4968-9846-EE058020C64F}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {48414740-C693-4968-9846-EE058020C64F}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {48414740-C693-4968-9846-EE058020C64F}.Release|Win32.ActiveCfg = Release|Win32\r
+- {48414740-C693-4968-9846-EE058020C64F}.Release|Win32.Build.0 = Release|Win32\r
+- {48414740-C693-4968-9846-EE058020C64F}.Release|x64.ActiveCfg = Release|x64\r
+- {48414740-C693-4968-9846-EE058020C64F}.Release|x64.Build.0 = Release|x64\r
+- {48414740-C693-4968-9846-EE058020C64F}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {48414740-C693-4968-9846-EE058020C64F}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.All|Win32.ActiveCfg = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.All|Win32.Build.0 = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.All|x64.ActiveCfg = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.All|x64 Setup.ActiveCfg = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.All|x86 Setup.ActiveCfg = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.All|x86 Setup.Build.0 = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Debug|Win32.ActiveCfg = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Debug|Win32.Build.0 = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Debug|x64.ActiveCfg = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Debug|x64.Build.0 = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Debug|x64 Setup.ActiveCfg = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Debug|x86 Setup.ActiveCfg = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Release|Win32.ActiveCfg = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Release|Win32.Build.0 = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Release|x64.ActiveCfg = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Release|x64.Build.0 = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Release|x64 Setup.ActiveCfg = All|Win32\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Release|x86 Setup.ActiveCfg = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.All|Win32.ActiveCfg = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.All|Win32.Build.0 = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.All|x64.ActiveCfg = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.All|x64 Setup.ActiveCfg = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.All|x86 Setup.ActiveCfg = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.All|x86 Setup.Build.0 = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Debug|Win32.ActiveCfg = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Debug|Win32.Build.0 = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Debug|x64.ActiveCfg = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Debug|x64.Build.0 = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Debug|x64 Setup.ActiveCfg = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Debug|x86 Setup.ActiveCfg = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Release|Win32.ActiveCfg = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Release|Win32.Build.0 = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Release|x64.ActiveCfg = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Release|x64.Build.0 = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Release|x64 Setup.ActiveCfg = All|Win32\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Release|x86 Setup.ActiveCfg = All|Win32\r
+- {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.All|Win32.ActiveCfg = Release|x64\r
+- {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.All|x64.ActiveCfg = Release|x64\r
+- {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.All|x64.Build.0 = Release|x64\r
+- {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.All|x64 Setup.Build.0 = Release|x64\r
+- {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Debug|x64.ActiveCfg = Debug|x64\r
+- {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Release|Win32.ActiveCfg = Release|Win32\r
+- {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Release|x64.ActiveCfg = Release|x64\r
+- {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.All|Win32.ActiveCfg = Release|Win32\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.All|Win32.Build.0 = Release|Win32\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.All|x64.ActiveCfg = Release|Win32\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.All|x86 Setup.Build.0 = Release|Win32\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Debug|Win32.Build.0 = Debug|Win32\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Debug|x64.ActiveCfg = Debug|x64\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Debug|x64.Build.0 = Debug|x64\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Debug|x64 Setup.ActiveCfg = Debug|Win32\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Release|Win32.ActiveCfg = Release|Win32\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Release|Win32.Build.0 = Release|Win32\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Release|x64.ActiveCfg = Release|x64\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Release|x64.Build.0 = Release|x64\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Release|x64 Setup.ActiveCfg = Release|Win32\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {1F0A8A77-E661-418F-BB92-82172AE43803}.All|Win32.ActiveCfg = Release|Win32\r
+- {1F0A8A77-E661-418F-BB92-82172AE43803}.All|x64.ActiveCfg = Release|Win32\r
+- {1F0A8A77-E661-418F-BB92-82172AE43803}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {1F0A8A77-E661-418F-BB92-82172AE43803}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {1F0A8A77-E661-418F-BB92-82172AE43803}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {1F0A8A77-E661-418F-BB92-82172AE43803}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {1F0A8A77-E661-418F-BB92-82172AE43803}.Debug|x64 Setup.ActiveCfg = Debug|Win32\r
+- {1F0A8A77-E661-418F-BB92-82172AE43803}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {1F0A8A77-E661-418F-BB92-82172AE43803}.Release|Win32.ActiveCfg = Release|Win32\r
+- {1F0A8A77-E661-418F-BB92-82172AE43803}.Release|x64.ActiveCfg = Release|Win32\r
+- {1F0A8A77-E661-418F-BB92-82172AE43803}.Release|x64 Setup.ActiveCfg = Release|Win32\r
+- {1F0A8A77-E661-418F-BB92-82172AE43803}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|Win32.ActiveCfg = Release|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|Win32.Build.0 = Release|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|x64.ActiveCfg = Release|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|x64.Build.0 = Release|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|x64 Setup.Build.0 = Release|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|x86 Setup.Build.0 = Release|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.Debug|Win32.Build.0 = Debug|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.Debug|x64.Build.0 = Debug|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.Debug|x64 Setup.ActiveCfg = Debug|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.Release|Win32.ActiveCfg = Release|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.Release|Win32.Build.0 = Release|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.Release|x64.ActiveCfg = Release|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.Release|x64.Build.0 = Release|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.Release|x64 Setup.ActiveCfg = Release|Win32\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.All|Win32.ActiveCfg = Release|Win32\r
+- {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.All|x64.ActiveCfg = Release|Win32\r
+- {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Debug|x64 Setup.ActiveCfg = Debug|Win32\r
+- {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Release|Win32.ActiveCfg = Release|Win32\r
+- {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Release|x64.ActiveCfg = Release|Win32\r
+- {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Release|x64 Setup.ActiveCfg = Release|Win32\r
+- {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|Win32.ActiveCfg = Release|Win32\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|Win32.Build.0 = Release|Win32\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|x64.ActiveCfg = Release|Win32\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|x64.Build.0 = Release|Win32\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|x64 Setup.Build.0 = Release|Win32\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|x86 Setup.Build.0 = Release|Win32\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|x64.ActiveCfg = Debug|x64\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|x64.Build.0 = Debug|x64\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|Win32.Build.0 = Release|Win32\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|x64.ActiveCfg = Release|x64\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|x64.Build.0 = Release|x64\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {BA599D0A-4310-4505-91DA-6A6447B3E289}.All|Win32.ActiveCfg = Release|Win32\r
+- {BA599D0A-4310-4505-91DA-6A6447B3E289}.All|x64.ActiveCfg = Release|Win32\r
+- {BA599D0A-4310-4505-91DA-6A6447B3E289}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {BA599D0A-4310-4505-91DA-6A6447B3E289}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {BA599D0A-4310-4505-91DA-6A6447B3E289}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {BA599D0A-4310-4505-91DA-6A6447B3E289}.Debug|x64.ActiveCfg = Debug|x64\r
+- {BA599D0A-4310-4505-91DA-6A6447B3E289}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {BA599D0A-4310-4505-91DA-6A6447B3E289}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {BA599D0A-4310-4505-91DA-6A6447B3E289}.Release|Win32.ActiveCfg = Release|Win32\r
+- {BA599D0A-4310-4505-91DA-6A6447B3E289}.Release|x64.ActiveCfg = Release|x64\r
+- {BA599D0A-4310-4505-91DA-6A6447B3E289}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {BA599D0A-4310-4505-91DA-6A6447B3E289}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.All|Win32.ActiveCfg = Release|Win32\r
+- {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.All|x64.ActiveCfg = Release|Win32\r
+- {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Debug|x64.ActiveCfg = Debug|x64\r
+- {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Release|Win32.ActiveCfg = Release|Win32\r
+- {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Release|x64.ActiveCfg = Release|x64\r
+- {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.All|Win32.ActiveCfg = Release|x64\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.All|x64.ActiveCfg = Release|x64\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.All|x64.Build.0 = Release|x64\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.All|x64 Setup.Build.0 = Release|x64\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Debug|Win32.Build.0 = Debug|Win32\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Debug|x64.ActiveCfg = Debug|x64\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Debug|x64.Build.0 = Debug|x64\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Release|Win32.ActiveCfg = Release|Win32\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Release|Win32.Build.0 = Release|Win32\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Release|x64.ActiveCfg = Release|x64\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Release|x64.Build.0 = Release|x64\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|Win32.ActiveCfg = Release|x64\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|Win32.Build.0 = Release|x64\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|x64.ActiveCfg = Release|x64\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|x64.Build.0 = Release|x64\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|x64 Setup.Build.0 = Release|x64\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|x86 Setup.Build.0 = Release|x64\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Debug|Win32.Build.0 = Debug|Win32\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Debug|x64.ActiveCfg = Debug|x64\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Debug|x64.Build.0 = Debug|x64\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Release|Win32.ActiveCfg = Release|Win32\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Release|Win32.Build.0 = Release|Win32\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Release|x64.ActiveCfg = Release|x64\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Release|x64.Build.0 = Release|x64\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.All|Win32.ActiveCfg = Release|x64\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.All|x64.ActiveCfg = Release|x64\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.Debug|Win32.Build.0 = Debug|Win32\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.Debug|x64.ActiveCfg = Debug|x64\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.Debug|x64.Build.0 = Debug|x64\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|Win32.ActiveCfg = Release|Win32\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|Win32.Build.0 = Release|Win32\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|x64.ActiveCfg = Release|x64\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|x64.Build.0 = Release|x64\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.All|Win32.ActiveCfg = Release|Win32\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.All|Win32.Build.0 = Release|Win32\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.All|x64.ActiveCfg = Release|Win32\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.All|x86 Setup.Build.0 = Release|Win32\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Win32.Build.0 = Debug|Win32\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|x64.ActiveCfg = Debug|x64\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|x64.Build.0 = Debug|x64\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Win32.ActiveCfg = Release|Win32\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Win32.Build.0 = Release|Win32\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|x64.ActiveCfg = Release|x64\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|x64.Build.0 = Release|x64\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.All|Win32.ActiveCfg = Release|x64\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.All|x64.ActiveCfg = Release|x64\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.All|x64.Build.0 = Release|x64\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.All|x64 Setup.Build.0 = Release|x64\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Debug|x64.ActiveCfg = Debug|x64\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Debug|x64.Build.0 = Debug|x64\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|Win32.Build.0 = Release|Win32\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|x64.ActiveCfg = Release|x64\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|x64.Build.0 = Release|x64\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.All|Win32.ActiveCfg = Release|Win32\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.All|Win32.Build.0 = Release|Win32\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.All|x64.ActiveCfg = Release|Win32\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.All|x86 Setup.Build.0 = Release|Win32\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Win32.Build.0 = Debug|Win32\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|x64.ActiveCfg = Debug|x64\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|x64.Build.0 = Debug|x64\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Win32.ActiveCfg = Release|Win32\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Win32.Build.0 = Release|Win32\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|x64.ActiveCfg = Release|x64\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|x64.Build.0 = Release|x64\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.All|Win32.ActiveCfg = Release|Win32\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.All|Win32.Build.0 = Release|Win32\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.All|x64.ActiveCfg = Release|Win32\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.All|x86 Setup.Build.0 = Release|Win32\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|Win32.Build.0 = Debug|Win32\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|x64.ActiveCfg = Debug|x64\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|x64.Build.0 = Debug|x64\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|Win32.ActiveCfg = Release|Win32\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|Win32.Build.0 = Release|Win32\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|x64.ActiveCfg = Release|x64\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|x64.Build.0 = Release|x64\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.All|Win32.ActiveCfg = Release|Win32\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.All|Win32.Build.0 = Release|Win32\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.All|x64.ActiveCfg = Release|Win32\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.All|x86 Setup.Build.0 = Release|Win32\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|Win32.Build.0 = Debug|Win32\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|x64.ActiveCfg = Debug|x64\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|x64.Build.0 = Debug|x64\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|Win32.ActiveCfg = Release|Win32\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|Win32.Build.0 = Release|Win32\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|x64.ActiveCfg = Release|x64\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|x64.Build.0 = Release|x64\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.All|Win32.ActiveCfg = Release|Win32\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.All|Win32.Build.0 = Release|Win32\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.All|x64.ActiveCfg = Release|Win32\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.All|x86 Setup.Build.0 = Release|Win32\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|Win32.Build.0 = Debug|Win32\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|x64.ActiveCfg = Debug|x64\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|x64.Build.0 = Debug|x64\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|Win32.ActiveCfg = Release|Win32\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|Win32.Build.0 = Release|Win32\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|x64.ActiveCfg = Release|x64\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|x64.Build.0 = Release|x64\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.All|Win32.ActiveCfg = Release|Win32\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.All|Win32.Build.0 = Release|Win32\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.All|x64.ActiveCfg = Release|Win32\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.All|x86 Setup.Build.0 = Release|Win32\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|Win32.Build.0 = Debug|Win32\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|x64.ActiveCfg = Debug|x64\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|x64.Build.0 = Debug|x64\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|Win32.ActiveCfg = Release|Win32\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|Win32.Build.0 = Release|Win32\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|x64.ActiveCfg = Release|x64\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|x64.Build.0 = Release|x64\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.All|Win32.ActiveCfg = Release|Win32\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.All|Win32.Build.0 = Release|Win32\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.All|x64.ActiveCfg = Release|Win32\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.All|x86 Setup.Build.0 = Release|Win32\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|Win32.Build.0 = Debug|Win32\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|x64.ActiveCfg = Debug|x64\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|x64.Build.0 = Debug|x64\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|Win32.ActiveCfg = Release|Win32\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|Win32.Build.0 = Release|Win32\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|x64.ActiveCfg = Release|x64\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|x64.Build.0 = Release|x64\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.All|Win32.ActiveCfg = Release|Win32\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.All|Win32.Build.0 = Release|Win32\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.All|x64.ActiveCfg = Release|Win32\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.All|x86 Setup.Build.0 = Release|Win32\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|Win32.Build.0 = Debug|Win32\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|x64.ActiveCfg = Debug|x64\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|x64.Build.0 = Debug|x64\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|Win32.ActiveCfg = Release|Win32\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|Win32.Build.0 = Release|Win32\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|x64.ActiveCfg = Release|x64\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|x64.Build.0 = Release|x64\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.All|Win32.ActiveCfg = Release|Win32\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.All|Win32.Build.0 = Release|Win32\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.All|x64.ActiveCfg = Release|Win32\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.All|x86 Setup.Build.0 = Release|Win32\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|Win32.Build.0 = Debug|Win32\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|x64.ActiveCfg = Debug|x64\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|x64.Build.0 = Debug|x64\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|Win32.ActiveCfg = Release|Win32\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|Win32.Build.0 = Release|Win32\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|x64.ActiveCfg = Release|x64\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|x64.Build.0 = Release|x64\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.All|Win32.ActiveCfg = Release|Win32\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.All|Win32.Build.0 = Release|Win32\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.All|x64.ActiveCfg = Release|Win32\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.All|x86 Setup.Build.0 = Release|Win32\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|Win32.Build.0 = Debug|Win32\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|x64.ActiveCfg = Debug|x64\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|x64.Build.0 = Debug|x64\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|Win32.ActiveCfg = Release|Win32\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|Win32.Build.0 = Release|Win32\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|x64.ActiveCfg = Release|x64\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|x64.Build.0 = Release|x64\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.All|Win32.ActiveCfg = Release|x64\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.All|x64.ActiveCfg = Release|x64\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.All|x64.Build.0 = Release|x64\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.All|x64 Setup.Build.0 = Release|x64\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|x64.ActiveCfg = Debug|x64\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|x64.Build.0 = Debug|x64\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|Win32.Build.0 = Release|Win32\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|x64.ActiveCfg = Release|x64\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|x64.Build.0 = Release|x64\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.All|Win32.ActiveCfg = Release|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.All|Win32.Build.0 = Release|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.All|x64.ActiveCfg = Release|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.All|x86 Setup.Build.0 = Release|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Debug|Win32.Build.0 = Debug|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Debug|x64.Build.0 = Debug|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Debug|x64 Setup.ActiveCfg = Debug|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Release|Win32.ActiveCfg = Release|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Release|Win32.Build.0 = Release|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Release|x64.ActiveCfg = Release|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Release|x64.Build.0 = Release|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Release|x64 Setup.ActiveCfg = Release|Win32\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.All|Win32.ActiveCfg = Release|x64\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.All|x64.ActiveCfg = Release|x64\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.All|x64.Build.0 = Release|x64\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.All|x64 Setup.Build.0 = Release|x64\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Debug|Win32.Build.0 = Debug|Win32\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Debug|x64.ActiveCfg = Debug|x64\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Debug|x64.Build.0 = Debug|x64\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Release|Win32.ActiveCfg = Release|Win32\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Release|Win32.Build.0 = Release|Win32\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Release|x64.ActiveCfg = Release|x64\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Release|x64.Build.0 = Release|x64\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.All|Win32.ActiveCfg = Release Passthrough|x64\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.All|x64.ActiveCfg = Release Passthrough|x64\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.All|x64.Build.0 = Release Passthrough|x64\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.All|x64 Setup.ActiveCfg = Release Passthrough|x64\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.All|x64 Setup.Build.0 = Release Passthrough|x64\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.All|x86 Setup.ActiveCfg = Release Passthrough|x64\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Debug|Win32.Build.0 = Debug|Win32\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Debug|x64.ActiveCfg = Debug|x64\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Debug|x64.Build.0 = Debug|x64\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Release|Win32.ActiveCfg = Release|Win32\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Release|Win32.Build.0 = Release|Win32\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Release|x64.ActiveCfg = Release|x64\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Release|x64.Build.0 = Release|x64\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.All|Win32.ActiveCfg = Release|Win32\r
+- {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.All|Win32.Build.0 = Release|Win32\r
+- {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.All|x64.ActiveCfg = Release|Win32\r
+- {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.All|x86 Setup.Build.0 = Release|Win32\r
+- {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Debug|x64 Setup.ActiveCfg = Debug|Win32\r
+- {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Release|Win32.ActiveCfg = Release|Win32\r
+- {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Release|x64.ActiveCfg = Release|Win32\r
+- {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Release|x64 Setup.ActiveCfg = Release|Win32\r
+- {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.All|Win32.ActiveCfg = Release|x64\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.All|x64.ActiveCfg = Release|x64\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.All|x64.Build.0 = Release|x64\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.All|x64 Setup.Build.0 = Release|x64\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|Win32.Build.0 = Debug|Win32\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|x64.ActiveCfg = Debug|x64\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|x64.Build.0 = Debug|x64\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|Win32.ActiveCfg = Release|Win32\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|Win32.Build.0 = Release|Win32\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|x64.ActiveCfg = Release|x64\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|x64.Build.0 = Release|x64\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.All|Win32.ActiveCfg = Release|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.All|Win32.Build.0 = Release|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.All|x64.ActiveCfg = Release|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.All|x86 Setup.Build.0 = Release|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|Win32.Build.0 = Debug|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|x64.Build.0 = Debug|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|x64 Setup.ActiveCfg = Debug|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|Win32.ActiveCfg = Release|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|Win32.Build.0 = Release|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|x64.ActiveCfg = Release|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|x64.Build.0 = Release|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|x64 Setup.ActiveCfg = Release|Win32\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.All|Win32.ActiveCfg = Release|x64\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.All|x64.ActiveCfg = Release|x64\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.All|x64.Build.0 = Release|x64\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.All|x64 Setup.Build.0 = Release|x64\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|Win32.Build.0 = Debug|Win32\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|x64.ActiveCfg = Debug|x64\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|x64.Build.0 = Debug|x64\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|Win32.ActiveCfg = Release|Win32\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|Win32.Build.0 = Release|Win32\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|x64.ActiveCfg = Release|x64\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|x64.Build.0 = Release|x64\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.All|Win32.ActiveCfg = Release|x64\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.All|x64.ActiveCfg = Release|x64\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.All|x64.Build.0 = Release|x64\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.All|x64 Setup.Build.0 = Release|x64\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Debug|Win32.Build.0 = Debug|Win32\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Debug|x64.ActiveCfg = Debug|x64\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Debug|x64.Build.0 = Debug|x64\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Release|Win32.ActiveCfg = Release|Win32\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Release|Win32.Build.0 = Release|Win32\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Release|x64.ActiveCfg = Release|x64\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Release|x64.Build.0 = Release|x64\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.All|Win32.ActiveCfg = Release|Win32\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.All|Win32.Build.0 = Release|Win32\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.All|x64.ActiveCfg = Release|Win32\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.All|x86 Setup.Build.0 = Release|Win32\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Debug|Win32.Build.0 = Debug|Win32\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Debug|x64.ActiveCfg = Debug|x64\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Debug|x64.Build.0 = Debug|x64\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Release|Win32.ActiveCfg = Release|Win32\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Release|Win32.Build.0 = Release|Win32\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Release|x64.ActiveCfg = Release|x64\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Release|x64.Build.0 = Release|x64\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.All|Win32.ActiveCfg = Release|Win32\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.All|Win32.Build.0 = Release|Win32\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.All|x64.ActiveCfg = Release|Win32\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.All|x86 Setup.Build.0 = Release|Win32\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Debug|Win32.Build.0 = Debug|Win32\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Debug|x64.ActiveCfg = Debug|x64\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Debug|x64.Build.0 = Debug|x64\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Release|Win32.ActiveCfg = Release|Win32\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Release|Win32.Build.0 = Release|Win32\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Release|x64.ActiveCfg = Release|x64\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Release|x64.Build.0 = Release|x64\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.All|Win32.ActiveCfg = Release|x64\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.All|x64.ActiveCfg = Release|x64\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.All|x64.Build.0 = Release|x64\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.All|x64 Setup.Build.0 = Release|x64\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Debug|Win32.Build.0 = Debug|Win32\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Debug|x64.ActiveCfg = Debug|x64\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Debug|x64.Build.0 = Debug|x64\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Release|Win32.ActiveCfg = Release|Win32\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Release|Win32.Build.0 = Release|Win32\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Release|x64.ActiveCfg = Release|x64\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Release|x64.Build.0 = Release|x64\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.All|Win32.ActiveCfg = Release|x64\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.All|x64.ActiveCfg = Release|x64\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.All|x64.Build.0 = Release|x64\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.All|x64 Setup.Build.0 = Release|x64\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Debug|Win32.Build.0 = Debug|Win32\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Debug|x64.ActiveCfg = Debug|x64\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Debug|x64.Build.0 = Debug|x64\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Release|Win32.ActiveCfg = Release|Win32\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Release|Win32.Build.0 = Release|Win32\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Release|x64.ActiveCfg = Release|x64\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Release|x64.Build.0 = Release|x64\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.All|Win32.ActiveCfg = Release|x64\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.All|x64.ActiveCfg = Release|x64\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.All|x64.Build.0 = Release|x64\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.All|x64 Setup.Build.0 = Release|x64\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Debug|x64.ActiveCfg = Debug|x64\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Debug|x64.Build.0 = Debug|x64\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Release|Win32.Build.0 = Release|Win32\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Release|x64.ActiveCfg = Release|x64\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Release|x64.Build.0 = Release|x64\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.All|Win32.ActiveCfg = Release|x64\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.All|x64.ActiveCfg = Release|x64\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.All|x64.Build.0 = Release|x64\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.All|x64 Setup.Build.0 = Release|x64\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Debug|Win32.Build.0 = Debug|Win32\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Debug|x64.ActiveCfg = Debug|x64\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Debug|x64.Build.0 = Debug|x64\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Release|Win32.ActiveCfg = Release|Win32\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Release|Win32.Build.0 = Release|Win32\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Release|x64.ActiveCfg = Release|x64\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Release|x64.Build.0 = Release|x64\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.All|Win32.ActiveCfg = Release|x64\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.All|x64.ActiveCfg = Release|x64\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.All|x64.Build.0 = Release|x64\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.All|x64 Setup.Build.0 = Release|x64\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Debug|Win32.Build.0 = Debug|Win32\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Debug|x64.ActiveCfg = Debug|x64\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Debug|x64.Build.0 = Debug|x64\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Release|Win32.ActiveCfg = Release|Win32\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Release|Win32.Build.0 = Release|Win32\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Release|x64.ActiveCfg = Release|x64\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Release|x64.Build.0 = Release|x64\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.All|Win32.ActiveCfg = Release|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.All|Win32.Build.0 = Release|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.All|x64.ActiveCfg = Release|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.All|x86 Setup.Build.0 = Release|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.Debug|Win32.Build.0 = Debug|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.Debug|x64.Build.0 = Debug|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.Debug|x64 Setup.ActiveCfg = Debug|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.Release|Win32.ActiveCfg = Release|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.Release|Win32.Build.0 = Release|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.Release|x64.ActiveCfg = Release|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.Release|x64.Build.0 = Release|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.Release|x64 Setup.ActiveCfg = Release|Win32\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.All|Win32.ActiveCfg = Release|x64\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.All|x64.ActiveCfg = Release|x64\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.All|x64.Build.0 = Release|x64\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.All|x64 Setup.Build.0 = Release|x64\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|Win32.Build.0 = Debug|Win32\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|x64.ActiveCfg = Debug|x64\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|x64.Build.0 = Debug|x64\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|Win32.ActiveCfg = Release|Win32\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|Win32.Build.0 = Release|Win32\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|x64.ActiveCfg = Release|x64\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|x64.Build.0 = Release|x64\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.All|Win32.ActiveCfg = Release|x64\r
+- {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.All|x64.ActiveCfg = Release|x64\r
+- {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.All|x64.Build.0 = Release|x64\r
+- {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.All|x64 Setup.Build.0 = Release|x64\r
+- {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.Debug|Win32.Build.0 = Debug|Win32\r
+- {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.Debug|x64.ActiveCfg = Debug|x64\r
+- {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.Debug|x64.Build.0 = Debug|x64\r
+- {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.Release|Win32.ActiveCfg = Release|Win32\r
+- {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.Release|Win32.Build.0 = Release|Win32\r
+- {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.Release|x64.ActiveCfg = Release|x64\r
+- {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.Release|x64.Build.0 = Release|x64\r
+- {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-7338E2514666}.All|Win32.ActiveCfg = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-7338E2514666}.All|Win32.Build.0 = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-7338E2514666}.All|x64.ActiveCfg = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-7338E2514666}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-7338E2514666}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-7338E2514666}.All|x86 Setup.Build.0 = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-7338E2514666}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {05C9FB27-480E-4D53-B3B7-7338E2514666}.Debug|x64.ActiveCfg = Debug|x64\r
+- {05C9FB27-480E-4D53-B3B7-7338E2514666}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {05C9FB27-480E-4D53-B3B7-7338E2514666}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {05C9FB27-480E-4D53-B3B7-7338E2514666}.Release|Win32.ActiveCfg = Release|Win32\r
+- {05C9FB27-480E-4D53-B3B7-7338E2514666}.Release|x64.ActiveCfg = Release|x64\r
+- {05C9FB27-480E-4D53-B3B7-7338E2514666}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {05C9FB27-480E-4D53-B3B7-7338E2514666}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.All|Win32.ActiveCfg = Release|x64\r
+- {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.All|x64.ActiveCfg = Release|x64\r
+- {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.All|x64.Build.0 = Release|x64\r
+- {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.All|x64 Setup.Build.0 = Release|x64\r
+- {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.Debug|Win32.Build.0 = Debug|Win32\r
+- {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.Debug|x64.ActiveCfg = Debug|x64\r
+- {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.Debug|x64.Build.0 = Debug|x64\r
+- {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.Release|Win32.ActiveCfg = Release|Win32\r
+- {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.Release|Win32.Build.0 = Release|Win32\r
+- {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.Release|x64.ActiveCfg = Release|x64\r
+- {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.Release|x64.Build.0 = Release|x64\r
+- {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {47213370-B933-487D-9F45-BCA26D7E2B6F}.All|Win32.ActiveCfg = Release|x86\r
+- {47213370-B933-487D-9F45-BCA26D7E2B6F}.All|x64.ActiveCfg = Release|x86\r
+- {47213370-B933-487D-9F45-BCA26D7E2B6F}.All|x64 Setup.ActiveCfg = Release|x86\r
+- {47213370-B933-487D-9F45-BCA26D7E2B6F}.All|x86 Setup.ActiveCfg = Release|x86\r
+- {47213370-B933-487D-9F45-BCA26D7E2B6F}.Debug|Win32.ActiveCfg = Debug|x86\r
+- {47213370-B933-487D-9F45-BCA26D7E2B6F}.Debug|x64.ActiveCfg = Debug|x64\r
+- {47213370-B933-487D-9F45-BCA26D7E2B6F}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {47213370-B933-487D-9F45-BCA26D7E2B6F}.Debug|x64 Setup.Build.0 = Debug|x64\r
+- {47213370-B933-487D-9F45-BCA26D7E2B6F}.Debug|x86 Setup.ActiveCfg = Debug|x86\r
+- {47213370-B933-487D-9F45-BCA26D7E2B6F}.Debug|x86 Setup.Build.0 = Debug|x86\r
+- {47213370-B933-487D-9F45-BCA26D7E2B6F}.Release|Win32.ActiveCfg = Release|x86\r
+- {47213370-B933-487D-9F45-BCA26D7E2B6F}.Release|x64.ActiveCfg = Release|x64\r
+- {47213370-B933-487D-9F45-BCA26D7E2B6F}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {47213370-B933-487D-9F45-BCA26D7E2B6F}.Release|x64 Setup.Build.0 = Release|x64\r
+- {47213370-B933-487D-9F45-BCA26D7E2B6F}.Release|x86 Setup.ActiveCfg = Release|x86\r
+- {47213370-B933-487D-9F45-BCA26D7E2B6F}.Release|x86 Setup.Build.0 = Release|x86\r
+- {7C22BDFF-CC09-400C-8A09-660733980028}.All|Win32.ActiveCfg = Release|x64\r
+- {7C22BDFF-CC09-400C-8A09-660733980028}.All|x64.ActiveCfg = Release|x64\r
+- {7C22BDFF-CC09-400C-8A09-660733980028}.All|x64.Build.0 = Release|x64\r
+- {7C22BDFF-CC09-400C-8A09-660733980028}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {7C22BDFF-CC09-400C-8A09-660733980028}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {7C22BDFF-CC09-400C-8A09-660733980028}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {7C22BDFF-CC09-400C-8A09-660733980028}.Debug|Win32.Build.0 = Debug|Win32\r
+- {7C22BDFF-CC09-400C-8A09-660733980028}.Debug|x64.ActiveCfg = Debug|x64\r
+- {7C22BDFF-CC09-400C-8A09-660733980028}.Debug|x64.Build.0 = Debug|x64\r
+- {7C22BDFF-CC09-400C-8A09-660733980028}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {7C22BDFF-CC09-400C-8A09-660733980028}.Debug|x86 Setup.ActiveCfg = Debug|x64\r
+- {7C22BDFF-CC09-400C-8A09-660733980028}.Release|Win32.ActiveCfg = Release|Win32\r
+- {7C22BDFF-CC09-400C-8A09-660733980028}.Release|Win32.Build.0 = Release|Win32\r
+- {7C22BDFF-CC09-400C-8A09-660733980028}.Release|x64.ActiveCfg = Release|x64\r
+- {7C22BDFF-CC09-400C-8A09-660733980028}.Release|x64.Build.0 = Release|x64\r
+- {7C22BDFF-CC09-400C-8A09-660733980028}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {7C22BDFF-CC09-400C-8A09-660733980028}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.All|Win32.ActiveCfg = Release|x64\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.All|x64.ActiveCfg = Release|x64\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.All|x64.Build.0 = Release|x64\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.Debug|Win32.Build.0 = Debug|Win32\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.Debug|x64.ActiveCfg = Debug|x64\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.Debug|x64.Build.0 = Debug|x64\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.Debug|x86 Setup.ActiveCfg = Debug|x64\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.Release|Win32.ActiveCfg = Release|Win32\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.Release|Win32.Build.0 = Release|Win32\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.Release|x64.ActiveCfg = Release|x64\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.Release|x64.Build.0 = Release|x64\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.All|Win32.ActiveCfg = Release|x64\r
+- {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.All|x64.ActiveCfg = Release|x64\r
+- {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.All|x64.Build.0 = Release|x64\r
+- {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Debug|Win32.Build.0 = Debug|Win32\r
+- {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Debug|x64.ActiveCfg = Debug|x64\r
+- {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Debug|x64.Build.0 = Debug|x64\r
+- {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Debug|x86 Setup.ActiveCfg = Debug|x64\r
+- {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Release|Win32.ActiveCfg = Release|Win32\r
+- {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Release|Win32.Build.0 = Release|Win32\r
+- {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Release|x64.ActiveCfg = Release|x64\r
+- {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Release|x64.Build.0 = Release|x64\r
+- {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {50AAC2CE-BFC9-4912-87CC-C6381850D735}.All|Win32.ActiveCfg = Release|x64\r
+- {50AAC2CE-BFC9-4912-87CC-C6381850D735}.All|x64.ActiveCfg = Release|x64\r
+- {50AAC2CE-BFC9-4912-87CC-C6381850D735}.All|x64.Build.0 = Release|x64\r
+- {50AAC2CE-BFC9-4912-87CC-C6381850D735}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {50AAC2CE-BFC9-4912-87CC-C6381850D735}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Debug|Win32.Build.0 = Debug|Win32\r
+- {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Debug|x64.ActiveCfg = Debug|x64\r
+- {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Debug|x64.Build.0 = Debug|x64\r
+- {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Debug|x86 Setup.ActiveCfg = Debug|x64\r
+- {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Release|Win32.ActiveCfg = Release|Win32\r
+- {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Release|Win32.Build.0 = Release|Win32\r
+- {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Release|x64.ActiveCfg = Release|x64\r
+- {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Release|x64.Build.0 = Release|x64\r
+- {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.All|Win32.ActiveCfg = Release|x64\r
+- {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.All|x64.ActiveCfg = Release|x64\r
+- {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.All|x64.Build.0 = Release|x64\r
+- {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.Debug|Win32.Build.0 = Debug|Win32\r
+- {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.Debug|x64.ActiveCfg = Debug|x64\r
+- {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.Debug|x64.Build.0 = Debug|x64\r
+- {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.Debug|x86 Setup.ActiveCfg = Debug|x64\r
+- {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.Release|Win32.ActiveCfg = Release|Win32\r
+- {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.Release|Win32.Build.0 = Release|Win32\r
+- {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.Release|x64.ActiveCfg = Release|x64\r
+- {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.Release|x64.Build.0 = Release|x64\r
+- {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.All|Win32.ActiveCfg = Release|x64\r
+- {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.All|x64.ActiveCfg = Release|x64\r
+- {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.All|x64.Build.0 = Release|x64\r
+- {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Debug|Win32.Build.0 = Debug|Win32\r
+- {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Debug|x64.ActiveCfg = Debug|x64\r
+- {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Debug|x64.Build.0 = Debug|x64\r
+- {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Debug|x86 Setup.ActiveCfg = Debug|x64\r
+- {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Release|Win32.ActiveCfg = Release|Win32\r
+- {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Release|Win32.Build.0 = Release|Win32\r
+- {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Release|x64.ActiveCfg = Release|x64\r
+- {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Release|x64.Build.0 = Release|x64\r
+- {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.All|Win32.ActiveCfg = Release|x64\r
+- {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.All|x64.ActiveCfg = Release|x64\r
+- {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.All|x64.Build.0 = Release|x64\r
+- {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Debug|Win32.Build.0 = Debug|Win32\r
+- {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Debug|x64.ActiveCfg = Debug|x64\r
+- {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Debug|x64.Build.0 = Debug|x64\r
+- {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Debug|x86 Setup.ActiveCfg = Debug|x64\r
+- {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Release|Win32.ActiveCfg = Release|Win32\r
+- {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Release|Win32.Build.0 = Release|Win32\r
+- {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Release|x64.ActiveCfg = Release|x64\r
+- {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Release|x64.Build.0 = Release|x64\r
+- {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.All|Win32.ActiveCfg = Release|x64\r
+- {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.All|x64.ActiveCfg = Release|x64\r
+- {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.All|x64.Build.0 = Release|x64\r
+- {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Debug|Win32.Build.0 = Debug|Win32\r
+- {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Debug|x64.ActiveCfg = Debug|x64\r
+- {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Debug|x64.Build.0 = Debug|x64\r
+- {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Debug|x86 Setup.ActiveCfg = Debug|x64\r
+- {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|Win32.ActiveCfg = Release|Win32\r
+- {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|Win32.Build.0 = Release|Win32\r
+- {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|x64.ActiveCfg = Release|x64\r
+- {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|x64.Build.0 = Release|x64\r
+- {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|Win32.ActiveCfg = Release|x64\r
+- {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|x64.ActiveCfg = Release|x64\r
+- {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|x64.Build.0 = Release|x64\r
+- {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|x64.ActiveCfg = Debug|x64\r
+- {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|x86 Setup.ActiveCfg = Debug|x64\r
+- {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|Win32.ActiveCfg = Release|Win32\r
+- {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|x64.ActiveCfg = Release|x64\r
+- {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|x86 Setup.ActiveCfg = Release|x64\r
+- {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|Win32.ActiveCfg = Release|x64\r
+- {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|x64.ActiveCfg = Release|x64\r
+- {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|x64.Build.0 = Release|x64\r
+- {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|x64.ActiveCfg = Debug|x64\r
+- {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|x86 Setup.ActiveCfg = Debug|x64\r
+- {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|Win32.ActiveCfg = Release|Win32\r
+- {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|x64.ActiveCfg = Release|x64\r
+- {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|x86 Setup.ActiveCfg = Release|x64\r
+- {C13CC324-0032-4492-9A30-310A6BD64FF5}.All|Win32.ActiveCfg = Release|Win32\r
+- {C13CC324-0032-4492-9A30-310A6BD64FF5}.All|Win32.Build.0 = Release|Win32\r
+- {C13CC324-0032-4492-9A30-310A6BD64FF5}.All|x64.ActiveCfg = Release|Win32\r
+- {C13CC324-0032-4492-9A30-310A6BD64FF5}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {C13CC324-0032-4492-9A30-310A6BD64FF5}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|Win32.Build.0 = Debug|Win32\r
+- {C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|x64.ActiveCfg = Debug|x64\r
+- {C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|x64.Build.0 = Debug|x64\r
+- {C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|x64 Setup.ActiveCfg = Debug|Win32\r
+- {C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|Win32.ActiveCfg = Release|Win32\r
+- {C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|Win32.Build.0 = Release|Win32\r
+- {C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|x64.ActiveCfg = Release|x64\r
+- {C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|x64.Build.0 = Release|x64\r
+- {C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|x64 Setup.ActiveCfg = Release|Win32\r
+- {C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.All|Win32.ActiveCfg = Release|x64\r
+- {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.All|x64.ActiveCfg = Release|x64\r
+- {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.All|x64.Build.0 = Release|x64\r
+- {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.All|x64 Setup.ActiveCfg = Release|x64\r
+- {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.All|x86 Setup.ActiveCfg = Release|x64\r
+- {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.Debug|Win32.Build.0 = Debug|Win32\r
+- {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.Debug|x64.ActiveCfg = Debug|x64\r
+- {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.Debug|x64.Build.0 = Debug|x64\r
+- {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
+- {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.Debug|x86 Setup.ActiveCfg = Debug|x64\r
+- {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.Release|Win32.ActiveCfg = Release|Win32\r
+- {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.Release|Win32.Build.0 = Release|Win32\r
+- {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.Release|x64.ActiveCfg = Release|x64\r
+- {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.Release|x64.Build.0 = Release|x64\r
+- {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.Release|x64 Setup.ActiveCfg = Release|x64\r
+- {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.Release|x86 Setup.ActiveCfg = Release|x64\r
+- {652AD5F7-8488-489F-AAD0-7FBE064703B6}.All|Win32.ActiveCfg = Release|Win32\r
+- {652AD5F7-8488-489F-AAD0-7FBE064703B6}.All|Win32.Build.0 = Release|Win32\r
+- {652AD5F7-8488-489F-AAD0-7FBE064703B6}.All|x64.ActiveCfg = Release|Win32\r
+- {652AD5F7-8488-489F-AAD0-7FBE064703B6}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {652AD5F7-8488-489F-AAD0-7FBE064703B6}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {652AD5F7-8488-489F-AAD0-7FBE064703B6}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {652AD5F7-8488-489F-AAD0-7FBE064703B6}.Debug|Win32.Build.0 = Debug|Win32\r
+- {652AD5F7-8488-489F-AAD0-7FBE064703B6}.Debug|x64.ActiveCfg = Debug|Win32\r
+- {652AD5F7-8488-489F-AAD0-7FBE064703B6}.Debug|x64.Build.0 = Debug|Win32\r
+- {652AD5F7-8488-489F-AAD0-7FBE064703B6}.Debug|x64 Setup.ActiveCfg = Debug|Win32\r
+- {652AD5F7-8488-489F-AAD0-7FBE064703B6}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
+- {652AD5F7-8488-489F-AAD0-7FBE064703B6}.Release|Win32.ActiveCfg = Release|Win32\r
+- {652AD5F7-8488-489F-AAD0-7FBE064703B6}.Release|Win32.Build.0 = Release|Win32\r
+- {652AD5F7-8488-489F-AAD0-7FBE064703B6}.Release|x64.ActiveCfg = Release|Win32\r
+- {652AD5F7-8488-489F-AAD0-7FBE064703B6}.Release|x64.Build.0 = Release|Win32\r
+- {652AD5F7-8488-489F-AAD0-7FBE064703B6}.Release|x64 Setup.ActiveCfg = Release|Win32\r
+- {652AD5F7-8488-489F-AAD0-7FBE064703B6}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.All|Win32.ActiveCfg = Release|Win32\r
+- {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.All|Win32.Build.0 = Release|Win32\r
+- {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.All|x64.ActiveCfg = Release|Win32\r
+- {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.All|x64 Setup.ActiveCfg = Release|Win32\r
+- {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.All|x86 Setup.ActiveCfg = Release|Win32\r
+- {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Debug|Win32.ActiveCfg = Debug|Win32\r
+- {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Debug|Win32.Build.0 = Debug|Win32\r
+- {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Debug|x64.ActiveCfg = Debug|x64\r
+- {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Debug|x64.Build.0 = Debug|x64\r
+- {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Debug|x64 Setup.ActiveCfg = Release|Win32\r
+- {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Debug|x86 Setup.ActiveCfg = Release|Win32\r
+- {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Release|Win32.ActiveCfg = Release|Win32\r
+- {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Release|Win32.Build.0 = Release|Win32\r
+- {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Release|x64.ActiveCfg = Release|x64\r
+- {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Release|x64.Build.0 = Release|x64\r
+- {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Release|x64 Setup.ActiveCfg = Release|Win32\r
+- {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Release|x86 Setup.ActiveCfg = Release|Win32\r
+- EndGlobalSection\r
+- GlobalSection(SolutionProperties) = preSolution\r
+- HideSolutionNode = FALSE\r
+- EndGlobalSection\r
+- GlobalSection(NestedProjects) = preSolution\r
+- {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}\r
+- {5580D60E-0F77-4716-9CD4-B8E5986FA375} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}\r
+- {D3EC0AFF-76FC-4210-A825-9A17410660A3} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}\r
+- {FEA1EEF7-876F-48DE-88BF-C0E3E606D758} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}\r
+- {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}\r
+- {8DEB383C-4091-4F42-A56F-C9E46D552D79} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}\r
+- {2C3C2423-234B-4772-8899-D3B137E5CA35} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}\r
+- {0B6C905B-142E-4999-B39D-92FF7951E921} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}\r
+- {D5C87B19-150D-4EF3-A671-96589BD2D14A} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}\r
+- {4D418176-3B33-47E6-A63E-01BA34ADD21C} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}\r
+- {AFA983D6-4569-4F88-BA94-555ED00FD9A8} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}\r
+- {5FD31A25-5D83-4794-8BEE-904DAD84CE71} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}\r
+- {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}\r
+- {0DF3ABD0-DDC0-4265-B778-07C66780979B} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}\r
+- {B3F424EC-3D8F-417C-B244-3919D5E1A577} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}\r
+- {05C9FB27-480E-4D53-B3B7-6338E2526666} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}\r
+- {CC1DD008-9406-448D-A0AD-33C3186CFADB} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}\r
+- {48414740-C693-4968-9846-EE058020C64F} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}\r
+- {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}\r
+- {05C9FB27-480E-4D53-B3B7-7338E2514666} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}\r
+- {74B120FF-6935-4DFE-A142-CDB6BEA99C90} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}\r
+- {30A5B29C-983E-4580-9FD0-D647CCDCC7EB} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {C24FB505-05D7-4319-8485-7540B44C8603} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {B5881A85-FE70-4F64-8607-2CAAE52669C6} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {71A967D5-0E99-4CEF-A587-98836EE6F2EF} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {3850D93A-5F24-4922-BC1C-74D08C37C256} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {D7F1E3F2-A3F4-474C-8555-15122571AF52} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {F6A33240-8F29-48BD-98F0-826995911799} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {65A6273D-FCAB-4C55-B09E-65100141A5D4} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {E3246D17-E29B-4AB5-962A-C69B0C5837BB} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {14E4A972-9CFB-436D-B0A5-4943F3F80D47} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {329FD5B0-EF28-4606-86D0-F6EA21CF8E36} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {3C977801-FE88-48F2-83D3-FA2EBFF6688E} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {432DB165-1EB2-4781-A9C0-71E62610B20A} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {990BAA76-89D3-4E38-8479-C7B28784EFC8} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {1E21AFE0-6FDB-41D2-942D-863607C24B91} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {2E250296-0C08-4342-9C8A-BCBDD0E7DF65} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {B889A18E-70A7-44B5-B2C9-47798D4F43B3} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {50AAC2CE-BFC9-4912-87CC-C6381850D735} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {4748FF56-CA85-4809-97D6-A94C0FAC1D77} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {2469B306-B027-4FF2-8815-C9C1EA2CAE79} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}\r
+- {07113B25-D3AF-4E04-BA77-4CD1171F022C} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4}\r
+- {A27CCA23-1541-4337-81A4-F0A6413078A0} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4}\r
+- {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4}\r
+- {784113EF-44D9-4949-835D-7065D3C7AD08} = {9ADF1E48-2F5C-4ED7-A893-596259FABFE0}\r
+- {05515420-16DE-4E63-BE73-85BE85BA5142} = {9ADF1E48-2F5C-4ED7-A893-596259FABFE0}\r
+- {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E} = {9ADF1E48-2F5C-4ED7-A893-596259FABFE0}\r
+- {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6} = {A5A27244-AD24-46E5-B01B-840CD296C91D}\r
+- {9254C4B0-6F60-42B6-BB3A-36D63FC001C7} = {A5A27244-AD24-46E5-B01B-840CD296C91D}\r
+- {2CA40887-1622-46A1-A7F9-17FD7E7E545B} = {A5A27244-AD24-46E5-B01B-840CD296C91D}\r
+- {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52} = {A5A27244-AD24-46E5-B01B-840CD296C91D}\r
+- {38FE0559-9910-43A8-9E45-3E5004C27692} = {A5A27244-AD24-46E5-B01B-840CD296C91D}\r
+- {CBD81696-EFB4-4D2F-8451-1B8DAA86155A} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {62F27B1A-C919-4A70-8478-51F178F3B18F} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {89385C74-5860-4174-9CAF-A39E7C48909C} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {1906D736-08BD-4EE1-924F-B536249B9A54} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {8D04B550-D240-4A44-8A18-35DA3F7038D9} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {1CED5987-A529-46DC-B30F-870D85FF9C94} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {E727E8F6-935D-46FE-8B0E-37834748A0E3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {3D0370CA-BED2-4657-A475-32375CBCB6E4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {155844C3-EC5F-407F-97A4-A2DDADED9B2F} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {204FA0DE-305D-4414-AE2E-F195A23F390D} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {4043FC6A-9A30-4577-8AD5-9B233C9575D8} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {0A18A071-125E-442F-AFF7-A3F68ABECF99} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {0D108721-EAE8-4BAF-8102-D8960EC93647} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {B535402E-38D2-4D54-8360-423ACBD17192} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {94001A0E-A837-445C-8004-F918F10D0226} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {0AD1177E-1FD8-4643-9391-431467A11084} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {E316772F-5D8F-4F2A-8F71-094C3E859D34} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {D3D8B329-20BE-475E-9E83-653CEA0E0EF5} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {419C8F80-D858-4B48-A25C-AF4007608137} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {CF405366-9558-4AE8-90EF-5E21B51CCB4E} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {401A40CD-5DB4-4E34-AC68-FA99E9FAC014} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {E972C52F-9E85-4D65-B19C-031E511E9DB4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {03207781-0D1C-4DB3-A71D-45C608F28DBD} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {9A5DDF08-C88C-4A35-B7F6-D605228446BD} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {D0B36172-CD76-454A-9B89-990025266C2A} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {DEE932AB-5911-4700-9EEB-8C7090A0A330} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {329A6FA0-0FCC-4435-A950-E670AEFA9838} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {CF70F278-3364-4395-A2E1-23501C9B8AD2} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {ABB71A76-42B0-47A4-973A-42E3D920C6FD} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {9778F1C0-09BC-4698-8EBC-BD982247209A} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {56B91D01-9150-4BBF-AFA1-5B68AB991B76} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {E4D29906-8B73-4F8A-B5F4-CA8BFA648F5A} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {23B4D303-79FC-49E0-89E2-2280E7E28940} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {C13CC324-0032-4492-9A30-310A6BD64FF5} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
+- {EC3E5C7F-EE09-47E2-80FE-546363D14A98} = {B8F5B47B-8568-46EB-B320-64C17D2A98BC}\r
+- {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {0C808854-54D1-4230-BFF5-77B5FD905000}\r
+- {ACFFF684-4D19-4D48-AF12-88EA1D778BDF} = {0C808854-54D1-4230-BFF5-77B5FD905000}\r
+- {8F992C49-6C51-412F-B2A3-34EAB708EB65} = {0C808854-54D1-4230-BFF5-77B5FD905000}\r
+- {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF} = {0C808854-54D1-4230-BFF5-77B5FD905000}\r
+- {028C7278-05D7-4E18-82FE-BE231B844F41} = {0C808854-54D1-4230-BFF5-77B5FD905000}\r
+- {36E854E3-CE12-4348-A125-CCF3F9D74813} = {0C808854-54D1-4230-BFF5-77B5FD905000}\r
+- {7B077E7F-1BE7-4291-AB86-55E527B25CAC} = {0C808854-54D1-4230-BFF5-77B5FD905000}\r
+- {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E} = {0C808854-54D1-4230-BFF5-77B5FD905000}\r
+- {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0} = {0C808854-54D1-4230-BFF5-77B5FD905000}\r
+- {692F6330-4D87-4C82-81DF-40DB5892636E} = {4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}\r
+- {2286DA73-9FC5-45BC-A508-85994C3317AB} = {4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}\r
+- {66444AEE-554C-11DD-A9F0-8C5D56D89593} = {4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}\r
+- {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD} = {4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}\r
+- {1C453396-D912-4213-89FD-9B489162B7B5} = {A7AB4405-FDB7-4853-9FBB-1516B1C3D80A}\r
+- {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909} = {A7AB4405-FDB7-4853-9FBB-1516B1C3D80A}\r
+- {CBEC7225-0C21-4DA8-978E-1F158F8AD950} = {F69A4A6B-9360-4EBB-A280-22AA3C455AC5}\r
+- {AB91A099-7690-4ECF-8994-E458F4EA1ED4} = {F69A4A6B-9360-4EBB-A280-22AA3C455AC5}\r
+- {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836} = {F69A4A6B-9360-4EBB-A280-22AA3C455AC5}\r
+- {1A1FF289-4FD6-4285-A422-D31DD67A4723} = {CBD81696-EFB4-4D2F-8451-1B8DAA86155A}\r
+- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {4F92B672-DADB-4047-8D6A-4BB3796733FD} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {2DEE4895-1134-439C-B688-52203E57D878} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {3CE1DC99-8246-4DB1-A709-74F19F08EC67} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {87A1FE3D-F410-4C8E-9591-8C625985BC70} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {E796E337-DE78-4303-8614-9A590862EE95} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {1F0A8A77-E661-418F-BB92-82172AE43803} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {4F5C9D55-98EF-4256-8311-32D7BD360406} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {E10571C4-E7F4-4608-B5F2-B22E7EB95400} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {B808178B-82F0-4CF4-A2B1-921939FA24D0} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {D578E676-7EC8-4548-BD8B-845C635F14AD} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {652AD5F7-8488-489F-AAD0-7FBE064703B6} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
+- {988CACF7-3FCB-4992-BE69-77872AE67DC8} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}\r
+- {5BC072DB-3826-48EA-AF34-FE32AA01E83B} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}\r
+- {FA429E98-8B03-45E6-A096-A4BC5E821DE4} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}\r
+- {06E3A538-AB32-44F2-B477-755FF9CB5D37} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}\r
+- {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}\r
+- {A4B122CF-5196-476B-8C0E-D8BD59AC3C14} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}\r
+- {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}\r
+- {0382E8FD-CFDC-41C0-8B03-792C7C84FC31} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}\r
+- {7C22BDFF-CC09-400C-8A09-660733980028} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}\r
+- {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0} = {57D119DC-484F-420F-B9E9-8589FD9A8DF8}\r
+- {3C90CCF0-2CDD-4A7A-ACFF-208C1E271692} = {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0}\r
+- {C7E2382E-2C22-4D18-BF93-80C6A1FFA7AC} = {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0}\r
+- {FC71C66E-E268-4EAD-B1F5-F008DC382E83} = {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0}\r
+- {8E2E8798-8B6F-4A55-8E4F-4E6FDE40ED26} = {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0}\r
+- {09455AA9-C243-4F16-A1A1-A016881A2765} = {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0}\r
+- {CDE9B06A-3C27-4987-8FAE-DF1006BC705D} = {DB1024A8-41BF-4AD7-9AE6-13202230D1F3}\r
+- {57199684-EC63-4A60-9DC6-11815AF6B413} = {09455AA9-C243-4F16-A1A1-A016881A2765}\r
+- {2DED4BA2-D6B0-4064-BB2A-76DE3AA49E7C} = {09455AA9-C243-4F16-A1A1-A016881A2765}\r
+- {D4A12E4C-DBDA-4614-BA26-3425AE9F60F5} = {09455AA9-C243-4F16-A1A1-A016881A2765}\r
+- {765EF1B9-5027-4820-BC37-A44466A51631} = {57199684-EC63-4A60-9DC6-11815AF6B413}\r
+- {713E4747-1126-40B1-BD84-58F9A7745423} = {57199684-EC63-4A60-9DC6-11815AF6B413}\r
+- {D3E5C8ED-3A6A-4FEA-92A2-48A0BA865358} = {2DED4BA2-D6B0-4064-BB2A-76DE3AA49E7C}\r
+- {CC3E7F48-2590-49CB-AD8B-BE3650F55462} = {2DED4BA2-D6B0-4064-BB2A-76DE3AA49E7C}\r
+- {F1B71990-EB04-4EB5-B28A-BC3EB6F7E843} = {D4A12E4C-DBDA-4614-BA26-3425AE9F60F5}\r
+- {3DAF028C-AB5B-4183-A01B-DCC43F5A87F0} = {D4A12E4C-DBDA-4614-BA26-3425AE9F60F5}\r
+- {7A8D8174-B355-4114-AFC1-04777CB9DE0A} = {4F227C26-768F-46A3-8684-1D08A46FB374}\r
+- {7EB71250-F002-4ED8-92CA-CA218114537A} = {4F227C26-768F-46A3-8684-1D08A46FB374}\r
+- {464AAB78-5489-4916-BE51-BF8D61822311} = {4F227C26-768F-46A3-8684-1D08A46FB374}\r
+- {D1ABE208-6442-4FB4-9AAD-1677E41BC870} = {4F227C26-768F-46A3-8684-1D08A46FB374}\r
+- {BA599D0A-4310-4505-91DA-6A6447B3E289} = {4F227C26-768F-46A3-8684-1D08A46FB374}\r
+- {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959} = {4F227C26-768F-46A3-8684-1D08A46FB374}\r
+- {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2} = {62F27B1A-C919-4A70-8478-51F178F3B18F}\r
+- {B5A00BFA-6083-4FAE-A097-71642D6473B5} = {62F27B1A-C919-4A70-8478-51F178F3B18F}\r
+- {1C320193-46A6-4B34-9C56-8AB584FC1B56} = {62F27B1A-C919-4A70-8478-51F178F3B18F}\r
+- {72782932-37CC-46AE-8C7F-9A7B1A6EE108} = {62F27B1A-C919-4A70-8478-51F178F3B18F}\r
+- {12A49562-BAB9-43A3-A21D-15B60BBB4C31} = {62F27B1A-C919-4A70-8478-51F178F3B18F}\r
+- {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA} = {62F27B1A-C919-4A70-8478-51F178F3B18F}\r
+- {504B3154-7A4F-459D-9877-B951021C3F1F} = {62F27B1A-C919-4A70-8478-51F178F3B18F}\r
+- {746F3632-5BB2-4570-9453-31D6D58A7D8E} = {62F27B1A-C919-4A70-8478-51F178F3B18F}\r
+- {DEB01ACB-D65F-4A62-AED9-58C1054499E9} = {62F27B1A-C919-4A70-8478-51F178F3B18F}\r
+- {D331904D-A00A-4694-A5A3-FCFF64AB5DBE} = {E4D29906-8B73-4F8A-B5F4-CA8BFA648F5A}\r
+- {B4B62169-5AD4-4559-8707-3D933AC5DB39} = {E4D29906-8B73-4F8A-B5F4-CA8BFA648F5A}\r
+- {25BD39B1-C8BF-4676-A738-9CABD9C6BC79} = {E4D29906-8B73-4F8A-B5F4-CA8BFA648F5A}\r
+- EndGlobalSection\r
+-EndGlobal\r
++
++Microsoft Visual Studio Solution File, Format Version 11.00
++# Visual Studio 2010
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Codecs", "Codecs", "{F881ADA2-2F1A-4046-9FEB-191D9422D781}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Endpoints", "Endpoints", "{9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Applications", "Applications", "{E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Dialplans", "Dialplans", "{C5F182F9-754A-4EC5-B50F-76ED02BE13F4}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Event Handlers", "Event Handlers", "{9ADF1E48-2F5C-4ED7-A893-596259FABFE0}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Formats", "Formats", "{A5A27244-AD24-46E5-B01B-840CD296C91D}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Docs", "Docs", "{CBD81696-EFB4-4D2F-8451-1B8DAA86155A}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Directories", "Directories", "{B8F5B47B-8568-46EB-B320-64C17D2A98BC}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Languages", "Languages", "{0C808854-54D1-4230-BFF5-77B5FD905000}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ASR-TTS", "ASR-TTS", "{4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Loggers", "Loggers", "{A7AB4405-FDB7-4853-9FBB-1516B1C3D80A}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "XML Interfaces", "XML Interfaces", "{F69A4A6B-9360-4EBB-A280-22AA3C455AC5}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Libraries", "_Libraries", "{EB910B0D-F27D-4B62-B67B-DE834C99AC5B}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Downloads", "_Downloads", "{C120A020-773F-4EA3-923F-B67AF28B750D}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "say", "say", "{6CD61A1D-797C-470A-BE08-8C31B68BB336}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Config", "_Config", "{57D119DC-484F-420F-B9E9-8589FD9A8DF8}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Default", "Default", "{3B08FEFD-4D3D-4C16-BA94-EE83509E32A0}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\freeswitch.xml = conf\vanilla\freeswitch.xml
++ conf\vanilla\vars.xml = conf\vanilla\vars.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Build System", "_Build System", "{DB1024A8-41BF-4AD7-9AE6-13202230D1F3}"
++ ProjectSection(SolutionItems) = preProject
++ acsite.m4 = acsite.m4
++ bootstrap.sh = bootstrap.sh
++ build\buildlib.sh = build\buildlib.sh
++ configure.in = configure.in
++ Makefile.am = Makefile.am
++ build\modmake.rules.in = build\modmake.rules.in
++ build\modules.conf.in = build\modules.conf.in
++ libs\win32\util.vbs = libs\win32\util.vbs
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "m4", "m4", "{CDE9B06A-3C27-4987-8FAE-DF1006BC705D}"
++ ProjectSection(SolutionItems) = preProject
++ build\config\ac_cflags_gcc_option.m4 = build\config\ac_cflags_gcc_option.m4
++ build\config\ac_cflags_sun_option.m4 = build\config\ac_cflags_sun_option.m4
++ build\config\ac_gcc_archflag.m4 = build\config\ac_gcc_archflag.m4
++ build\config\ac_gcc_x86_cpuid.m4 = build\config\ac_gcc_x86_cpuid.m4
++ build\config\ac_prog_gzip.m4 = build\config\ac_prog_gzip.m4
++ build\config\ac_prog_wget.m4 = build\config\ac_prog_wget.m4
++ build\config\ax_cc_maxopt.m4 = build\config\ax_cc_maxopt.m4
++ build\config\ax_cflags_warn_all_ansi.m4 = build\config\ax_cflags_warn_all_ansi.m4
++ build\config\ax_check_compiler_flags.m4 = build\config\ax_check_compiler_flags.m4
++ build\config\ax_compiler_vendor.m4 = build\config\ax_compiler_vendor.m4
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "autoload_configs", "autoload_configs", "{3C90CCF0-2CDD-4A7A-ACFF-208C1E271692}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\autoload_configs\alsa.conf.xml = conf\vanilla\autoload_configs\alsa.conf.xml
++ conf\vanilla\autoload_configs\conference.conf.xml = conf\vanilla\autoload_configs\conference.conf.xml
++ conf\vanilla\autoload_configs\console.conf.xml = conf\vanilla\autoload_configs\console.conf.xml
++ conf\vanilla\autoload_configs\dialplan_directory.conf.xml = conf\vanilla\autoload_configs\dialplan_directory.conf.xml
++ conf\vanilla\autoload_configs\dingaling.conf.xml = conf\vanilla\autoload_configs\dingaling.conf.xml
++ conf\vanilla\autoload_configs\enum.conf.xml = conf\vanilla\autoload_configs\enum.conf.xml
++ conf\vanilla\autoload_configs\event_multicast.conf.xml = conf\vanilla\autoload_configs\event_multicast.conf.xml
++ conf\vanilla\autoload_configs\event_socket.conf.xml = conf\vanilla\autoload_configs\event_socket.conf.xml
++ conf\vanilla\autoload_configs\ivr.conf.xml = conf\vanilla\autoload_configs\ivr.conf.xml
++ conf\vanilla\autoload_configs\java.conf.xml = conf\vanilla\autoload_configs\java.conf.xml
++ conf\vanilla\autoload_configs\limit.conf.xml = conf\vanilla\autoload_configs\limit.conf.xml
++ conf\vanilla\autoload_configs\local_stream.conf.xml = conf\vanilla\autoload_configs\local_stream.conf.xml
++ conf\vanilla\autoload_configs\logfile.conf.xml = conf\vanilla\autoload_configs\logfile.conf.xml
++ conf\vanilla\autoload_configs\modules.conf.xml = conf\vanilla\autoload_configs\modules.conf.xml
++ conf\vanilla\autoload_configs\openmrcp.conf.xml = conf\vanilla\autoload_configs\openmrcp.conf.xml
++ conf\vanilla\autoload_configs\portaudio.conf.xml = conf\vanilla\autoload_configs\portaudio.conf.xml
++ conf\vanilla\autoload_configs\rss.conf.xml = conf\vanilla\autoload_configs\rss.conf.xml
++ conf\vanilla\autoload_configs\sofia.conf.xml = conf\vanilla\autoload_configs\sofia.conf.xml
++ conf\vanilla\autoload_configs\spidermonkey.conf.xml = conf\vanilla\autoload_configs\spidermonkey.conf.xml
++ conf\vanilla\autoload_configs\switch.conf.xml = conf\vanilla\autoload_configs\switch.conf.xml
++ conf\vanilla\autoload_configs\syslog.conf.xml = conf\vanilla\autoload_configs\syslog.conf.xml
++ conf\vanilla\autoload_configs\voicemail.conf.xml = conf\vanilla\autoload_configs\voicemail.conf.xml
++ conf\vanilla\autoload_configs\wanpipe.conf.xml = conf\vanilla\autoload_configs\wanpipe.conf.xml
++ conf\vanilla\autoload_configs\woomera.conf.xml = conf\vanilla\autoload_configs\woomera.conf.xml
++ conf\vanilla\autoload_configs\xml_cdr.conf.xml = conf\vanilla\autoload_configs\xml_cdr.conf.xml
++ conf\vanilla\autoload_configs\xml_curl.conf.xml = conf\vanilla\autoload_configs\xml_curl.conf.xml
++ conf\vanilla\autoload_configs\xml_rpc.conf.xml = conf\vanilla\autoload_configs\xml_rpc.conf.xml
++ conf\vanilla\autoload_configs\zeroconf.conf.xml = conf\vanilla\autoload_configs\zeroconf.conf.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dialplan", "dialplan", "{C7E2382E-2C22-4D18-BF93-80C6A1FFA7AC}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\dialplan\default.xml = conf\vanilla\dialplan\default.xml
++ conf\vanilla\dialplan\public.xml = conf\vanilla\dialplan\public.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "directory", "directory", "{FC71C66E-E268-4EAD-B1F5-F008DC382E83}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\directory\default.xml = conf\vanilla\directory\default.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sip_profiles", "sip_profiles", "{8E2E8798-8B6F-4A55-8E4F-4E6FDE40ED26}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\sip_profiles\external.xml = conf\vanilla\sip_profiles\external.xml
++ conf\vanilla\sip_profiles\internal.xml = conf\vanilla\sip_profiles\internal.xml
++ conf\vanilla\sip_profiles\nat.xml = conf\vanilla\sip_profiles\nat.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "lang", "lang", "{09455AA9-C243-4F16-A1A1-A016881A2765}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\directory\default.xml = conf\vanilla\directory\default.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "en", "en", "{57199684-EC63-4A60-9DC6-11815AF6B413}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\lang\en\en.xml = conf\vanilla\lang\en\en.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "de", "de", "{2DED4BA2-D6B0-4064-BB2A-76DE3AA49E7C}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\lang\de\de.xml = conf\vanilla\lang\de\de.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "fr", "fr", "{D4A12E4C-DBDA-4614-BA26-3425AE9F60F5}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\lang\fr\fr.xml = conf\vanilla\lang\fr\fr.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "demo", "demo", "{D3E5C8ED-3A6A-4FEA-92A2-48A0BA865358}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\lang\de\demo\demo.xml = conf\vanilla\lang\de\demo\demo.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vm", "vm", "{CC3E7F48-2590-49CB-AD8B-BE3650F55462}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\lang\de\vm\tts.xml = conf\vanilla\lang\de\vm\tts.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "demo", "demo", "{765EF1B9-5027-4820-BC37-A44466A51631}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\lang\en\demo\demo.xml = conf\vanilla\lang\en\demo\demo.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vm", "vm", "{713E4747-1126-40B1-BD84-58F9A7745423}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\lang\en\vm\sounds.xml = conf\vanilla\lang\en\vm\sounds.xml
++ conf\vanilla\lang\en\vm\tts.xml = conf\vanilla\lang\en\vm\tts.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "demo", "demo", "{F1B71990-EB04-4EB5-B28A-BC3EB6F7E843}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\lang\fr\demo\demo.xml = conf\vanilla\lang\fr\demo\demo.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vm", "vm", "{3DAF028C-AB5B-4183-A01B-DCC43F5A87F0}"
++ ProjectSection(SolutionItems) = preProject
++ conf\vanilla\lang\fr\vm\sounds.xml = conf\vanilla\lang\fr\vm\sounds.xml
++ EndProjectSection
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Sound Files", "Sound Files", "{4F227C26-768F-46A3-8684-1D08A46FB374}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "unimrcp", "unimrcp", "{62F27B1A-C919-4A70-8478-51F178F3B18F}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FreeSwitchConsole", "w32\Console\FreeSwitchConsole.2010.vcxproj", "{1AF3A893-F7BE-43DD-B697-8AB2397C0D67}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FreeSwitchCoreLib", "w32\Library\FreeSwitchCore.2010.vcxproj", "{202D7A4E-760D-4D0E-AFA1-D7459CED30FF}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g729", "src\mod\codecs\mod_g729\mod_g729.2010.vcxproj", "{1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sndfile", "src\mod\formats\mod_sndfile\mod_sndfile.2010.vcxproj", "{AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_PortAudio", "src\mod\endpoints\mod_portaudio\mod_PortAudio.2010.vcxproj", "{5FD31A25-5D83-4794-8BEE-904DAD84CE71}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_speex", "src\mod\codecs\mod_speex\mod_speex.2010.vcxproj", "{5580D60E-0F77-4716-9CD4-B8E5986FA375}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "docs", "docs\docs.2010.vcxproj", "{1A1FF289-4FD6-4285-A422-D31DD67A4723}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dialplan_xml", "src\mod\dialplans\mod_dialplan_xml\mod_dialplan_xml.2010.vcxproj", "{07113B25-D3AF-4E04-BA77-4CD1171F022C}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_ldap", "src\mod\directories\mod_ldap\mod_ldap.2010.vcxproj", "{EC3E5C7F-EE09-47E2-80FE-546363D14A98}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dialplan_directory", "src\mod\dialplans\mod_dialplan_directory\mod_dialplan_directory.2010.vcxproj", "{A27CCA23-1541-4337-81A4-F0A6413078A0}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_event_multicast", "src\mod\event_handlers\mod_event_multicast\mod_event_multicast.2010.vcxproj", "{784113EF-44D9-4949-835D-7065D3C7AD08}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libteletone", "libs\libteletone\libteletone.2010.vcxproj", "{89385C74-5860-4174-9CAF-A39E7C48909C}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey", "src\mod\languages\mod_spidermonkey\mod_spidermonkey.2010.vcxproj", "{1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_cepstral", "src\mod\asr_tts\mod_cepstral\mod_cepstral.2010.vcxproj", "{692F6330-4D87-4C82-81DF-40DB5892636E}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_ilbc", "src\mod\codecs\mod_ilbc\mod_ilbc.2010.vcxproj", "{D3EC0AFF-76FC-4210-A825-9A17410660A3}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dingaling", "src\mod\endpoints\mod_dingaling\mod_dingaling.2010.vcxproj", "{FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_commands", "src\mod\applications\mod_commands\mod_commands.2010.vcxproj", "{30A5B29C-983E-4580-9FD0-D647CCDCC7EB}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_console", "src\mod\loggers\mod_console\mod_console.2010.vcxproj", "{1C453396-D912-4213-89FD-9B489162B7B5}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xml_rpc", "src\mod\xml_int\mod_xml_rpc\mod_xml_rpc.2010.vcxproj", "{CBEC7225-0C21-4DA8-978E-1F158F8AD950}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_rss", "src\mod\applications\mod_rss\mod_rss.2010.vcxproj", "{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_conference", "src\mod\applications\mod_conference\mod_conference.2010.vcxproj", "{C24FB505-05D7-4319-8485-7540B44C8603}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dptools", "src\mod\applications\mod_dptools\mod_dptools.2010.vcxproj", "{B5881A85-FE70-4F64-8607-2CAAE52669C6}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_event_socket", "src\mod\event_handlers\mod_event_socket\mod_event_socket.2010.vcxproj", "{05515420-16DE-4E63-BE73-85BE85BA5142}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libdingaling", "libs\libdingaling\libdingaling.2010.vcxproj", "{1906D736-08BD-4EE1-924F-B536249B9A54}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsrtp", "libs\srtp\libsrtp.2010.vcxproj", "{EEF031CB-FED8-451E-A471-91EC8D4F6750}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsqlite", "libs\win32\sqlite\sqlite.2010.vcxproj", "{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpcre", "libs\win32\pcre\libpcre.2010.vcxproj", "{8D04B550-D240-4A44-8A18-35DA3F7038D9}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpcre Generate pcre_chartables.c", "libs\win32\pcre\pcre_chartables.c.2010.vcxproj", "{1CED5987-A529-46DC-B30F-870D85FF9C94}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libapr", "libs\win32\apr\libapr.2010.vcxproj", "{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libaprutil", "libs\win32\apr-util\libaprutil.2010.vcxproj", "{F057DA7F-79E5-4B00-845C-EF446EF055E3}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iksemel", "libs\win32\iksemel\iksemel.2010.vcxproj", "{E727E8F6-935D-46FE-8B0E-37834748A0E3}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsndfile", "libs\win32\libsndfile\libsndfile.2010.vcxproj", "{3D0370CA-BED2-4657-A475-32375CBCB6E4}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curllib", "libs\win32\curl\curllib.2010.vcxproj", "{87EE9DA4-DE1E-4448-8324-183C98DCA588}"
++ ProjectSection(ProjectDependencies) = postProject
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79} = {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xml", "libs\win32\apr-util\xml.2010.vcxproj", "{155844C3-EC5F-407F-97A4-A2DDADED9B2F}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "js", "libs\win32\js\js.2010.vcxproj", "{204FA0DE-305D-4414-AE2E-F195A23F390D}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sofia", "src\mod\endpoints\mod_sofia\mod_sofia.2010.vcxproj", "{0DF3ABD0-DDC0-4265-B778-07C66780979B}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download PTHREAD", "libs\win32\Download PTHREAD.2010.vcxproj", "{8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pthread", "libs\win32\pthread\pthread.2010.vcxproj", "{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g723_1", "src\mod\codecs\mod_g723_1\mod_g723_1.2010.vcxproj", "{FEA1EEF7-876F-48DE-88BF-C0E3E606D758}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_iSAC", "src\mod\codecs\mod_isac\mod_iSAC.2010.vcxproj", "{7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_native_file", "src\mod\formats\mod_native_file\mod_native_file.2010.vcxproj", "{9254C4B0-6F60-42B6-BB3A-36D63FC001C7}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_core_db", "src\mod\languages\mod_spidermonkey\mod_spidermonkey_core_db.2010.vcxproj", "{ACFFF684-4D19-4D48-AF12-88EA1D778BDF}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_teletone", "src\mod\languages\mod_spidermonkey\mod_spidermonkey_teletone.2010.vcxproj", "{8F992C49-6C51-412F-B2A3-34EAB708EB65}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libudns", "libs\win32\udns\libudns.2010.vcxproj", "{4043FC6A-9A30-4577-8AD5-9B233C9575D8}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_enum", "src\mod\applications\mod_enum\mod_enum.2010.vcxproj", "{71A967D5-0E99-4CEF-A587-98836EE6F2EF}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_odbc", "src\mod\languages\mod_spidermonkey\mod_spidermonkey_odbc.2010.vcxproj", "{0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xml_curl", "src\mod\xml_int\mod_xml_curl\mod_xml_curl.2010.vcxproj", "{AB91A099-7690-4ECF-8994-E458F4EA1ED4}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_en", "src\mod\say\mod_say_en\mod_say_en.2010.vcxproj", "{988CACF7-3FCB-4992-BE69-77872AE67DC8}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "portaudio", "libs\portaudio\build\msvc\portaudio.2010.vcxproj", "{0A18A071-125E-442F-AFF7-A3F68ABECF99}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xml_cdr", "src\mod\xml_int\mod_xml_cdr\mod_xml_cdr.2010.vcxproj", "{08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_amr", "src\mod\codecs\mod_amr\mod_amr.2010.vcxproj", "{8DEB383C-4091-4F42-A56F-C9E46D552D79}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_h26x", "src\mod\codecs\mod_h26x\mod_h26x.2010.vcxproj", "{2C3C2423-234B-4772-8899-D3B137E5CA35}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_esf", "src\mod\applications\mod_esf\mod_esf.2010.vcxproj", "{3850D93A-5F24-4922-BC1C-74D08C37C256}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_local_stream", "src\mod\formats\mod_local_stream\mod_local_stream.2010.vcxproj", "{2CA40887-1622-46A1-A7F9-17FD7E7E545B}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_socket", "src\mod\languages\mod_spidermonkey\mod_spidermonkey_socket.2010.vcxproj", "{028C7278-05D7-4E18-82FE-BE231B844F41}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_voicemail", "src\mod\applications\mod_voicemail\mod_voicemail.2010.vcxproj", "{D7F1E3F2-A3F4-474C-8555-15122571AF52}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_de", "src\mod\say\mod_say_de\mod_say_de.2010.vcxproj", "{5BC072DB-3826-48EA-AF34-FE32AA01E83B}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_es", "src\mod\say\mod_say_es\mod_say_es.2010.vcxproj", "{FA429E98-8B03-45E6-A096-A4BC5E821DE4}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_fr", "src\mod\say\mod_say_fr\mod_say_fr.2010.vcxproj", "{06E3A538-AB32-44F2-B477-755FF9CB5D37}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_it", "src\mod\say\mod_say_it\mod_say_it.2010.vcxproj", "{6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_nl", "src\mod\say\mod_say_nl\mod_say_nl.2010.vcxproj", "{A4B122CF-5196-476B-8C0E-D8BD59AC3C14}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_fifo", "src\mod\applications\mod_fifo\mod_fifo.2010.vcxproj", "{75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_db", "src\mod\applications\mod_db\mod_db.2010.vcxproj", "{F6A33240-8F29-48BD-98F0-826995911799}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_expr", "src\mod\applications\mod_expr\mod_expr.2010.vcxproj", "{65A6273D-FCAB-4C55-B09E-65100141A5D4}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dialplan_asterisk", "src\mod\dialplans\mod_dialplan_asterisk\mod_dialplan_asterisk.2010.vcxproj", "{E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_logfile", "src\mod\loggers\mod_logfile\mod_logfile.2010.vcxproj", "{D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_cdr_csv", "src\mod\event_handlers\mod_cdr_csv\mod_cdr_csv.2010.vcxproj", "{44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_tone_stream", "src\mod\formats\mod_tone_stream\mod_tone_stream.2010.vcxproj", "{6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_fsv", "src\mod\applications\mod_fsv\mod_fsv.2010.vcxproj", "{E3246D17-E29B-4AB5-962A-C69B0C5837BB}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_curl", "src\mod\languages\mod_spidermonkey\mod_spidermonkey_curl.2010.vcxproj", "{36E854E3-CE12-4348-A125-CCF3F9D74813}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_lua", "src\mod\languages\mod_lua\mod_lua.2010.vcxproj", "{7B077E7F-1BE7-4291-AB86-55E527B25CAC}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download sphinxbase", "libs\win32\Download sphinxbase.2010.vcxproj", "{4F92B672-DADB-4047-8D6A-4BB3796733FD}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download sphinxmodel", "libs\win32\Download sphinxmodel.2010.vcxproj", "{2DEE4895-1134-439C-B688-52203E57D878}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download pocketsphinx", "libs\win32\Download pocketsphinx.2010.vcxproj", "{AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sphinxbase", "libs\win32\sphinxbase\sphinxbase.2010.vcxproj", "{2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pocketsphinx", "libs\win32\pocketsphinx\pocketsphinx.2010.vcxproj", "{94001A0E-A837-445C-8004-F918F10D0226}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_pocketsphinx", "src\mod\asr_tts\mod_pocketsphinx\mod_pocketsphinx.2010.vcxproj", "{2286DA73-9FC5-45BC-A508-85994C3317AB}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 8khzsound", "libs\win32\Download 8khz Sounds.2010.vcxproj", "{3CE1DC99-8246-4DB1-A709-74F19F08EC67}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 16khzsound", "libs\win32\Download 16khz Sounds.2010.vcxproj", "{87A1FE3D-F410-4C8E-9591-8C625985BC70}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "8khz", "libs\win32\Sound_Files\8khz.2010.vcxproj", "{7A8D8174-B355-4114-AFC1-04777CB9DE0A}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "16khz", "libs\win32\Sound_Files\16khz.2010.vcxproj", "{7EB71250-F002-4ED8-92CA-CA218114537A}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 32khzsound", "libs\win32\Dowload 32khz Sounds.2010.vcxproj", "{6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "32khz", "libs\win32\Sound_Files\32khz.2010.vcxproj", "{464AAB78-5489-4916-BE51-BF8D61822311}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flite", "libs\win32\flite\flite.2010.vcxproj", "{0AD1177E-1FD8-4643-9391-431467A11084}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_flite", "src\mod\asr_tts\mod_flite\mod_flite.2010.vcxproj", "{66444AEE-554C-11DD-A9F0-8C5D56D89593}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download FLITE", "libs\win32\Download FLITE.2010.vcxproj", "{D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download LAME", "libs\win32\Download LAME.2010.vcxproj", "{D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download LIBSHOUT", "libs\win32\Download LIBSHOUT.2010.vcxproj", "{D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download OGG", "libs\win32\Download OGG.2010.vcxproj", "{D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmp3lame", "libs\win32\libmp3lame\libmp3lame.2010.vcxproj", "{E316772F-5D8F-4F2A-8F71-094C3E859D34}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libshout", "libs\win32\libshout\libshout.vcxproj", "{D3D8B329-20BE-475E-9E83-653CEA0E0EF5}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_shout", "src\mod\formats\mod_shout\mod_shout.vcxproj", "{38FE0559-9910-43A8-9E45-3E5004C27692}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libogg", "libs\win32\libogg\libogg.2010.vcxproj", "{0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_snom", "src\mod\applications\mod_snom\mod_snom.2010.vcxproj", "{2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_zh", "src\mod\say\mod_say_zh\mod_say_zh.2010.vcxproj", "{B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_managed", "src\mod\languages\mod_managed\mod_managed.2010.vcxproj", "{7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}"
++EndProject
++Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FreeSWITCH.Managed.2010", "src\mod\languages\mod_managed\managed\FreeSWITCH.Managed.2010.csproj", "{834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download mpg123", "libs\win32\Download mpg123.2010.vcxproj", "{E796E337-DE78-4303-8614-9A590862EE95}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmpg123", "libs\win32\mpg123\libmpg123.2010.vcxproj", "{419C8F80-D858-4B48-A25C-AF4007608137}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_loopback", "src\mod\endpoints\mod_loopback\mod_loopback.2010.vcxproj", "{B3F424EC-3D8F-417C-B244-3919D5E1A577}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_vmd", "src\mod\applications\mod_vmd\mod_vmd.2010.vcxproj", "{14E4A972-9CFB-436D-B0A5-4943F3F80D47}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libg722_1", "libs\win32\libg722_1\libg722_1.vcxproj", "{1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_siren", "src\mod\codecs\mod_siren\mod_siren.2010.vcxproj", "{0B6C905B-142E-4999-B39D-92FF7951E921}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "esl", "libs\esl\src\esl.2010.vcxproj", "{CF405366-9558-4AE8-90EF-5E21B51CCB4E}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fs_cli", "libs\esl\fs_cli.2010.vcxproj", "{D2FB8043-D208-4AEE-8F18-3B5857C871B9}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_easyroute", "src\mod\applications\mod_easyroute\mod_easyroute.2010.vcxproj", "{329FD5B0-EF28-4606-86D0-F6EA21CF8E36}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_lcr", "src\mod\applications\mod_lcr\mod_lcr.2010.vcxproj", "{1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtiff", "libs\spandsp\src\libtiff.2010.vcxproj", "{401A40CD-5DB4-4E34-AC68-FA99E9FAC014}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspandsp", "libs\spandsp\src\libspandsp.2010.vcxproj", "{1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspeex", "libs\speex\win32\VS2008\libspeex\libspeex.vcxproj", "{E972C52F-9E85-4D65-B19C-031E511E9DB4}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspeexdsp", "libs\speex\win32\VS2008\libspeexdsp\libspeexdsp.vcxproj", "{03207781-0D1C-4DB3-A71D-45C608F28DBD}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libilbc", "libs\ilbc\libilbc.2010.vcxproj", "{9A5DDF08-C88C-4A35-B7F6-D605228446BD}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lua51", "src\mod\languages\mod_lua\lua\lua.2010.vcxproj", "{D0B36172-CD76-454A-9B89-990025266C2A}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_opal", "src\mod\endpoints\mod_opal\mod_opal_2010.vcxproj", "{05C9FB27-480E-4D53-B3B7-6338E2526666}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_skinny", "src\mod\endpoints\mod_skinny\mod_skinny_2010.vcxproj", "{CC1DD008-9406-448D-A0AD-33C3186CFADB}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_rtmp", "src\mod\endpoints\mod_rtmp\mod_rtmp_2010.vcxproj", "{48414740-C693-4968-9846-EE058020C64F}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_at_dictionary", "libs\spandsp\src\msvc\make_at_dictionary.2010.vcxproj", "{DEE932AB-5911-4700-9EEB-8C7090A0A330}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_modem_filter", "libs\spandsp\src\msvc\make_modem_filter.2010.vcxproj", "{329A6FA0-0FCC-4435-A950-E670AEFA9838}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_skel", "src\mod\applications\mod_skel\mod_skel.2010.vcxproj", "{11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_skypopen", "src\mod\endpoints\mod_skypopen\mod_skypopen.2010.vcxproj", "{C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 32khz music", "libs\win32\Dowload 32khz music.2010.vcxproj", "{1F0A8A77-E661-418F-BB92-82172AE43803}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 8khz music", "libs\win32\Download 8khz music.2010.vcxproj", "{4F5C9D55-98EF-4256-8311-32D7BD360406}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download 16khz music", "libs\win32\Download 16khz music.2010.vcxproj", "{E10571C4-E7F4-4608-B5F2-B22E7EB95400}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "8khz music", "libs\win32\Sound_Files\8khzmusic.2010.vcxproj", "{D1ABE208-6442-4FB4-9AAD-1677E41BC870}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "16khz music", "libs\win32\Sound_Files\16khzmusic.2010.vcxproj", "{BA599D0A-4310-4505-91DA-6A6447B3E289}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "32khz music", "libs\win32\Sound_Files\32khzmusic.2010.vcxproj", "{EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_nibblebill", "src\mod\applications\mod_nibblebill\mod_nibblebill.2010.vcxproj", "{3C977801-FE88-48F2-83D3-FA2EBFF6688E}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_ru", "src\mod\say\mod_say_ru\mod_say_ru.2010.vcxproj", "{0382E8FD-CFDC-41C0-8B03-792C7C84FC31}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_valet_parking", "src\mod\applications\mod_valet_parking\mod_valet_parking.2010.vcxproj", "{432DB165-1EB2-4781-A9C0-71E62610B20A}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbroadvoice", "libs\broadvoice\src\libbroadvoice.2010.vcxproj", "{CF70F278-3364-4395-A2E1-23501C9B8AD2}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_bv", "src\mod\codecs\mod_bv\mod_bv.2010.vcxproj", "{D5C87B19-150D-4EF3-A671-96589BD2D14A}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aprtoolkit", "libs\unimrcp\libs\apr-toolkit\aprtoolkit.2010.vcxproj", "{13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}"
++ ProjectSection(ProjectDependencies) = postProject
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F} = {155844C3-EC5F-407F-97A4-A2DDADED9B2F}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mpf", "libs\unimrcp\libs\mpf\mpf.2010.vcxproj", "{B5A00BFA-6083-4FAE-A097-71642D6473B5}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcp", "libs\unimrcp\libs\mrcp\mrcp.2010.vcxproj", "{1C320193-46A6-4B34-9C56-8AB584FC1B56}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpclient", "libs\unimrcp\libs\mrcp-client\mrcpclient.2010.vcxproj", "{72782932-37CC-46AE-8C7F-9A7B1A6EE108}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpsignaling", "libs\unimrcp\libs\mrcp-signaling\mrcpsignaling.2010.vcxproj", "{12A49562-BAB9-43A3-A21D-15B60BBB4C31}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpv2transport", "libs\unimrcp\libs\mrcpv2-transport\mrcpv2transport.2010.vcxproj", "{A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unirtsp", "libs\unimrcp\libs\uni-rtsp\unirtsp.2010.vcxproj", "{504B3154-7A4F-459D-9877-B951021C3F1F}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpsofiasip", "libs\unimrcp\modules\mrcp-sofiasip\mrcpsofiasip.2010.vcxproj", "{746F3632-5BB2-4570-9453-31D6D58A7D8E}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpunirtsp", "libs\unimrcp\modules\mrcp-unirtsp\mrcpunirtsp.2010.vcxproj", "{DEB01ACB-D65F-4A62-AED9-58C1054499E9}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_unimrcp", "src\mod\asr_tts\mod_unimrcp\mod_unimrcp.2010.vcxproj", "{D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download CELT", "libs\win32\Download CELT.vcxproj", "{FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcelt", "libs\win32\celt\libcelt.vcxproj", "{ABB71A76-42B0-47A4-973A-42E3D920C6FD}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_celt", "src\mod\codecs\mod_celt\mod_celt.vcxproj", "{4D418176-3B33-47E6-A63E-01BA34ADD21C}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FSComm", "fscomm\FSComm.2010.vcxproj", "{7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_curl", "src\mod\applications\mod_curl\mod_curl.2010.vcxproj", "{EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download JSON", "libs\win32\Download JSON.2010.vcxproj", "{B808178B-82F0-4CF4-A2B1-921939FA24D0}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libjson", "libs\win32\json\libjson.2010.vcxproj", "{9778F1C0-09BC-4698-8EBC-BD982247209A}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_silk", "src\mod\codecs\mod_silk\mod_silk.2010.vcxproj", "{AFA983D6-4569-4F88-BA94-555ED00FD9A8}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Silk_FIX", "libs\silk\src\Silk_FIX.2010.vcxproj", "{56B91D01-9150-4BBF-AFA1-5B68AB991B76}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_avmd", "src\mod\applications\mod_avmd\mod_avmd.2010.vcxproj", "{990BAA76-89D3-4E38-8479-C7B28784EFC8}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spandsp", "src\mod\applications\mod_spandsp\mod_spandsp.2010.vcxproj", "{1E21AFE0-6FDB-41D2-942D-863607C24B91}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_hash", "src\mod\applications\mod_hash\mod_hash.2010.vcxproj", "{2E250296-0C08-4342-9C8A-BCBDD0E7DF65}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "openssl", "openssl", "{E4D29906-8B73-4F8A-B5F4-CA8BFA648F5A}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libeay32", "libs\win32\openssl\libeay32.2010.vcxproj", "{D331904D-A00A-4694-A5A3-FCFF64AB5DBE}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ssleay32", "libs\win32\openssl\ssleay32.2010.vcxproj", "{B4B62169-5AD4-4559-8707-3D933AC5DB39}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openssl", "libs\win32\openssl\openssl.2010.vcxproj", "{25BD39B1-C8BF-4676-A738-9CABD9C6BC79}"
++ ProjectSection(ProjectDependencies) = postProject
++ {D578E676-7EC8-4548-BD8B-845C635F14AD} = {D578E676-7EC8-4548-BD8B-845C635F14AD}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download OPENSSL", "libs\win32\Download OPENSSL.2010.vcxproj", "{D578E676-7EC8-4548-BD8B-845C635F14AD}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsofia_sip_ua_static", "libs\win32\sofia\libsofia_sip_ua_static.2010.vcxproj", "{70A49BC2-7500-41D0-B75D-EDCC5BE987A0}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_directory", "src\mod\applications\mod_directory\mod_directory.2010.vcxproj", "{B889A18E-70A7-44B5-B2C9-47798D4F43B3}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_h323", "src\mod\endpoints\mod_h323\mod_h323.2010.vcxproj", "{05C9FB27-480E-4D53-B3B7-7338E2514666}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_distributor", "src\mod\applications\mod_distributor\mod_distributor.2010.vcxproj", "{5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}"
++EndProject
++Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "Setup", "w32\Setup\Setup.wixproj", "{47213370-B933-487D-9F45-BCA26D7E2B6F}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_pt", "src\mod\say\mod_say_pt\mod_say_pt.2010.vcxproj", "{7C22BDFF-CC09-400C-8A09-660733980028}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ldns", "libs\win32\ldns\ldns-lib\ldns-lib.2010.vcxproj", "{23B4D303-79FC-49E0-89E2-2280E7E28940}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_callcenter", "src\mod\applications\mod_callcenter\mod_callcenter.2010.vcxproj", "{47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_blacklist", "src\mod\applications\mod_blacklist\mod_blacklist.2010.vcxproj", "{50AAC2CE-BFC9-4912-87CC-C6381850D735}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spy", "src\mod\applications\mod_spy\mod_spy.2010.vcxproj", "{A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_httapi", "src\mod\applications\mod_httapi\mod_httapi.2010.vcxproj", "{4748FF56-CA85-4809-97D6-A94C0FAC1D77}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_abstraction", "src\mod\applications\mod_abstraction\mod_abstraction.2010.vcxproj", "{60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sms", "src\mod\applications\mod_sms\mod_sms.2010.vcxproj", "{2469B306-B027-4FF2-8815-C9C1EA2CAE79}"
++EndProject
++Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "xmlrpc-c", "xmlrpc-c", "{9DE35039-A8F6-4FBF-B1B6-EB527F802411}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsmlib", "src\mod\endpoints\mod_gsmopen\gsmlib\gsmlib-1.10-patched-13ubuntu\win32\gsmlib.2010.vcxproj", "{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_gsmopen", "src\mod\endpoints\mod_gsmopen\mod_gsmopen.2010.vcxproj", "{74B120FF-6935-4DFE-A142-CDB6BEA99C90}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libzrtp", "libs\libzrtp\projects\win\libzrtp.2010.vcxproj", "{C13CC324-0032-4492-9A30-310A6BD64FF5}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_redis", "src\mod\applications\mod_redis\mod_redis.2010.vcxproj", "{886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download libjpeg", "libs\win32\Download libjpeg.2010.vcxproj", "{652AD5F7-8488-489F-AAD0-7FBE064703B6}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libjpeg", "libs\win32\libjpeg\libjpeg.2010.vcxproj", "{019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}"
++ ProjectSection(ProjectDependencies) = postProject
++ {652AD5F7-8488-489F-AAD0-7FBE064703B6} = {652AD5F7-8488-489F-AAD0-7FBE064703B6}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "abyss", "libs\win32\xmlrpc-c\abyss.2010.vcxproj", "{D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}"
++ ProjectSection(ProjectDependencies) = postProject
++ {0D108721-EAE8-4BAF-8102-D8960EC93647} = {0D108721-EAE8-4BAF-8102-D8960EC93647}
++ {B535402E-38D2-4D54-8360-423ACBD17192} = {B535402E-38D2-4D54-8360-423ACBD17192}
++ {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA} = {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gennmtab", "libs\win32\xmlrpc-c\gennmtab.2010.vcxproj", "{BED7539C-0099-4A14-AD5D-30828F15A171}"
++ ProjectSection(ProjectDependencies) = postProject
++ {0D108721-EAE8-4BAF-8102-D8960EC93647} = {0D108721-EAE8-4BAF-8102-D8960EC93647}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlparse", "libs\win32\xmlrpc-c\xmlparse.2010.vcxproj", "{0D108721-EAE8-4BAF-8102-D8960EC93647}"
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlrpc", "libs\win32\xmlrpc-c\xmlrpc.2010.vcxproj", "{CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}"
++ ProjectSection(ProjectDependencies) = postProject
++ {0D108721-EAE8-4BAF-8102-D8960EC93647} = {0D108721-EAE8-4BAF-8102-D8960EC93647}
++ {B535402E-38D2-4D54-8360-423ACBD17192} = {B535402E-38D2-4D54-8360-423ACBD17192}
++ EndProjectSection
++EndProject
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmltok", "libs\win32\xmlrpc-c\xmltok.2010.vcxproj", "{B535402E-38D2-4D54-8360-423ACBD17192}"
++ ProjectSection(ProjectDependencies) = postProject
++ {BED7539C-0099-4A14-AD5D-30828F15A171} = {BED7539C-0099-4A14-AD5D-30828F15A171}
++ EndProjectSection
++EndProject
++Global
++ GlobalSection(SolutionConfigurationPlatforms) = preSolution
++ All|Win32 = All|Win32
++ All|x64 = All|x64
++ All|x64 Setup = All|x64 Setup
++ All|x86 Setup = All|x86 Setup
++ Debug|Win32 = Debug|Win32
++ Debug|x64 = Debug|x64
++ Debug|x64 Setup = Debug|x64 Setup
++ Debug|x86 Setup = Debug|x86 Setup
++ Release|Win32 = Release|Win32
++ Release|x64 = Release|x64
++ Release|x64 Setup = Release|x64 Setup
++ Release|x86 Setup = Release|x86 Setup
++ EndGlobalSection
++ GlobalSection(ProjectConfigurationPlatforms) = postSolution
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.All|Win32.ActiveCfg = Release|x64
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.All|x64.ActiveCfg = Release|x64
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.All|x64.Build.0 = Release|x64
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.All|x64 Setup.ActiveCfg = Release|x64
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.All|x64 Setup.Build.0 = Release|x64
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.All|x86 Setup.ActiveCfg = Release|x64
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|Win32.ActiveCfg = Debug|Win32
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|Win32.Build.0 = Debug|Win32
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|x64.ActiveCfg = Debug|x64
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|x64.Build.0 = Debug|x64
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|Win32.ActiveCfg = Release|Win32
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|Win32.Build.0 = Release|Win32
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|x64.ActiveCfg = Release|x64
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|x64.Build.0 = Release|x64
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|x64 Setup.ActiveCfg = Release|x64
++ {1AF3A893-F7BE-43DD-B697-8AB2397C0D67}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.All|Win32.ActiveCfg = Release|x64
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.All|x64.ActiveCfg = Release|x64
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.All|x64.Build.0 = Release|x64
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.All|x64 Setup.ActiveCfg = Release|x64
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.All|x64 Setup.Build.0 = Release|x64
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.All|x86 Setup.ActiveCfg = Release|x64
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|Win32.ActiveCfg = Debug|Win32
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|Win32.Build.0 = Debug|Win32
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|x64.ActiveCfg = Debug|x64
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|x64.Build.0 = Debug|x64
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|Win32.ActiveCfg = Release|Win32
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|Win32.Build.0 = Release|Win32
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|x64.ActiveCfg = Release|x64
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|x64.Build.0 = Release|x64
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|x64 Setup.ActiveCfg = Release|x64
++ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.All|Win32.ActiveCfg = Release Passthrough|x64
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.All|x64.ActiveCfg = Release Passthrough|x64
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.All|x64.Build.0 = Release Passthrough|x64
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.All|x64 Setup.ActiveCfg = Release Passthrough|x64
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.All|x64 Setup.Build.0 = Release Passthrough|x64
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.All|x86 Setup.ActiveCfg = Release Passthrough|x64
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|Win32.Build.0 = Debug Passthrough|Win32
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|x64.ActiveCfg = Debug Passthrough|x64
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|x64.Build.0 = Debug Passthrough|x64
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|x64 Setup.ActiveCfg = Debug Passthrough|x64
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Debug|x86 Setup.ActiveCfg = Debug Passthrough|Win32
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|Win32.ActiveCfg = Release Passthrough|Win32
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|Win32.Build.0 = Release Passthrough|Win32
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|x64.ActiveCfg = Release Passthrough|x64
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|x64.Build.0 = Release Passthrough|x64
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|x64 Setup.ActiveCfg = Release Passthrough|x64
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}.Release|x86 Setup.ActiveCfg = Release Passthrough|Win32
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.All|Win32.ActiveCfg = Release|x64
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.All|x64.ActiveCfg = Release|x64
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.All|x64.Build.0 = Release|x64
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.All|x64 Setup.ActiveCfg = Release|x64
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.All|x64 Setup.Build.0 = Release|x64
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.All|x86 Setup.ActiveCfg = Release|x64
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|Win32.ActiveCfg = Debug|Win32
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|Win32.Build.0 = Debug|Win32
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|x64.ActiveCfg = Debug|x64
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|x64.Build.0 = Debug|x64
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|Win32.ActiveCfg = Release|Win32
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|Win32.Build.0 = Release|Win32
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|x64.ActiveCfg = Release|x64
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|x64.Build.0 = Release|x64
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|x64 Setup.ActiveCfg = Release|x64
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.All|Win32.ActiveCfg = Release|x64
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.All|x64.ActiveCfg = Release|x64
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.All|x64.Build.0 = Release|x64
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.All|x64 Setup.ActiveCfg = Release|x64
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.All|x64 Setup.Build.0 = Release|x64
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.All|x86 Setup.ActiveCfg = Release|x64
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Win32.ActiveCfg = Debug|Win32
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|Win32.Build.0 = Debug|Win32
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|x64.ActiveCfg = Debug|x64
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|x64.Build.0 = Debug|x64
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Win32.ActiveCfg = Release|Win32
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|Win32.Build.0 = Release|Win32
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|x64.ActiveCfg = Release|x64
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|x64.Build.0 = Release|x64
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|x64 Setup.ActiveCfg = Release|x64
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.All|Win32.ActiveCfg = Release|x64
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.All|x64.ActiveCfg = Release|x64
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.All|x64.Build.0 = Release|x64
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.All|x64 Setup.ActiveCfg = Release|x64
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.All|x64 Setup.Build.0 = Release|x64
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.All|x86 Setup.ActiveCfg = Release|x64
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|Win32.ActiveCfg = Debug|Win32
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|Win32.Build.0 = Debug|Win32
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|x64.ActiveCfg = Debug|x64
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|x64.Build.0 = Debug|x64
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|Win32.ActiveCfg = Release|Win32
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|Win32.Build.0 = Release|Win32
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|x64.ActiveCfg = Release|x64
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|x64.Build.0 = Release|x64
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|x64 Setup.ActiveCfg = Release|x64
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.All|Win32.ActiveCfg = Release|Win32
++ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.All|x64.ActiveCfg = Release|Win32
++ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.All|x64 Setup.ActiveCfg = Release|Win32
++ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.All|x86 Setup.ActiveCfg = Release|Win32
++ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|Win32.ActiveCfg = Debug|Win32
++ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|x64.ActiveCfg = Debug|Win32
++ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|x64 Setup.ActiveCfg = Debug|Win32
++ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|Win32.ActiveCfg = Release|Win32
++ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|x64.ActiveCfg = Release|Win32
++ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|x64 Setup.ActiveCfg = Release|Win32
++ {1A1FF289-4FD6-4285-A422-D31DD67A4723}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.All|Win32.ActiveCfg = Release|x64
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.All|x64.ActiveCfg = Release|x64
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.All|x64.Build.0 = Release|x64
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.All|x64 Setup.ActiveCfg = Release|x64
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.All|x64 Setup.Build.0 = Release|x64
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.All|x86 Setup.ActiveCfg = Release|x64
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|Win32.ActiveCfg = Debug|Win32
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|Win32.Build.0 = Debug|Win32
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|x64.ActiveCfg = Debug|x64
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|x64.Build.0 = Debug|x64
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|Win32.ActiveCfg = Release|Win32
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|Win32.Build.0 = Release|Win32
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|x64.ActiveCfg = Release|x64
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|x64.Build.0 = Release|x64
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|x64 Setup.ActiveCfg = Release|x64
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.All|Win32.ActiveCfg = Release MS-LDAP|x64
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.All|x64.ActiveCfg = Release MS-LDAP|x64
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.All|x64.Build.0 = Release MS-LDAP|x64
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.All|x64 Setup.ActiveCfg = Release MS-LDAP|x64
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.All|x64 Setup.Build.0 = Release MS-LDAP|x64
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.All|x86 Setup.ActiveCfg = Release MS-LDAP|x64
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|Win32.ActiveCfg = Debug MS-LDAP|Win32
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|Win32.Build.0 = Debug MS-LDAP|Win32
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|x64.ActiveCfg = Debug MS-LDAP|x64
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|x64.Build.0 = Debug MS-LDAP|x64
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|x64 Setup.ActiveCfg = Debug MS-LDAP|x64
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Debug|x86 Setup.ActiveCfg = Debug MS-LDAP|Win32
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|Win32.ActiveCfg = Release MS-LDAP|Win32
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|Win32.Build.0 = Release MS-LDAP|Win32
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|x64.ActiveCfg = Release MS-LDAP|x64
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|x64.Build.0 = Release MS-LDAP|x64
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|x64 Setup.ActiveCfg = Release MS-LDAP|x64
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98}.Release|x86 Setup.ActiveCfg = Release MS-LDAP|Win32
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.All|Win32.ActiveCfg = Release|x64
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.All|x64.ActiveCfg = Release|x64
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.All|x64.Build.0 = Release|x64
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.All|x64 Setup.ActiveCfg = Release|x64
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.All|x64 Setup.Build.0 = Release|x64
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.All|x86 Setup.ActiveCfg = Release|x64
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|Win32.ActiveCfg = Debug|Win32
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|Win32.Build.0 = Debug|Win32
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|x64.ActiveCfg = Debug|x64
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|x64.Build.0 = Debug|x64
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|Win32.ActiveCfg = Release|Win32
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|Win32.Build.0 = Release|Win32
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|x64.ActiveCfg = Release|x64
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|x64.Build.0 = Release|x64
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|x64 Setup.ActiveCfg = Release|x64
++ {A27CCA23-1541-4337-81A4-F0A6413078A0}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.All|Win32.ActiveCfg = Release|x64
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.All|x64.ActiveCfg = Release|x64
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.All|x64.Build.0 = Release|x64
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.All|x64 Setup.ActiveCfg = Release|x64
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.All|x64 Setup.Build.0 = Release|x64
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.All|x86 Setup.ActiveCfg = Release|x64
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|Win32.ActiveCfg = Debug|Win32
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|Win32.Build.0 = Debug|Win32
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|x64.ActiveCfg = Debug|x64
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|x64.Build.0 = Debug|x64
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|Win32.ActiveCfg = Release|Win32
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|Win32.Build.0 = Release|Win32
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|x64.ActiveCfg = Release|x64
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|x64.Build.0 = Release|x64
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|x64 Setup.ActiveCfg = Release|x64
++ {784113EF-44D9-4949-835D-7065D3C7AD08}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.All|Win32.ActiveCfg = Release|x64
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.All|x64.ActiveCfg = Release|x64
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.All|x64.Build.0 = Release|x64
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.All|x64 Setup.ActiveCfg = Release|x64
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.All|x64 Setup.Build.0 = Release|x64
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.All|x86 Setup.ActiveCfg = Release|x64
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|Win32.ActiveCfg = Debug|Win32
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|Win32.Build.0 = Debug|Win32
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|x64.ActiveCfg = Debug|x64
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|x64.Build.0 = Debug|x64
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|Win32.ActiveCfg = Release|Win32
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|Win32.Build.0 = Release|Win32
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|x64.ActiveCfg = Release|x64
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|x64.Build.0 = Release|x64
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|x64 Setup.ActiveCfg = Release|x64
++ {89385C74-5860-4174-9CAF-A39E7C48909C}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.All|Win32.ActiveCfg = Release|x64
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.All|x64.ActiveCfg = Release|x64
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.All|x64.Build.0 = Release|x64
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.All|x64 Setup.ActiveCfg = Release|x64
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.All|x64 Setup.Build.0 = Release|x64
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.All|x86 Setup.ActiveCfg = Release|x64
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|Win32.ActiveCfg = Debug|Win32
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|Win32.Build.0 = Debug|Win32
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|x64.ActiveCfg = Debug|x64
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|x64.Build.0 = Debug|x64
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|Win32.ActiveCfg = Release|Win32
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|Win32.Build.0 = Release|Win32
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|x64.ActiveCfg = Release|x64
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|x64.Build.0 = Release|x64
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|x64 Setup.ActiveCfg = Release|x64
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {692F6330-4D87-4C82-81DF-40DB5892636E}.All|Win32.ActiveCfg = Release|x64
++ {692F6330-4D87-4C82-81DF-40DB5892636E}.All|x64.ActiveCfg = Release|x64
++ {692F6330-4D87-4C82-81DF-40DB5892636E}.All|x64.Build.0 = Release|x64
++ {692F6330-4D87-4C82-81DF-40DB5892636E}.All|x64 Setup.ActiveCfg = Release|x64
++ {692F6330-4D87-4C82-81DF-40DB5892636E}.All|x64 Setup.Build.0 = Release|x64
++ {692F6330-4D87-4C82-81DF-40DB5892636E}.All|x86 Setup.ActiveCfg = Release|x64
++ {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|Win32.ActiveCfg = Debug|Win32
++ {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|x64.ActiveCfg = Debug|x64
++ {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {692F6330-4D87-4C82-81DF-40DB5892636E}.Release|Win32.ActiveCfg = Release|Win32
++ {692F6330-4D87-4C82-81DF-40DB5892636E}.Release|x64.ActiveCfg = Release|x64
++ {692F6330-4D87-4C82-81DF-40DB5892636E}.Release|x64 Setup.ActiveCfg = Release|x64
++ {692F6330-4D87-4C82-81DF-40DB5892636E}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|Win32.ActiveCfg = Release|x64
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|x64.ActiveCfg = Release|x64
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|x64.Build.0 = Release|x64
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|x64 Setup.ActiveCfg = Release|x64
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|x64 Setup.Build.0 = Release|x64
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|x86 Setup.ActiveCfg = Release|x64
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|Win32.Build.0 = Debug|Win32
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|x64.ActiveCfg = Debug|x64
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|x64.Build.0 = Debug|x64
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|Win32.ActiveCfg = Release|Win32
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|Win32.Build.0 = Release|Win32
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|x64.ActiveCfg = Release|x64
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|x64.Build.0 = Release|x64
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|x64 Setup.ActiveCfg = Release|x64
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.All|Win32.ActiveCfg = Release|x64
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.All|x64.ActiveCfg = Release|x64
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.All|x64.Build.0 = Release|x64
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.All|x64 Setup.ActiveCfg = Release|x64
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.All|x64 Setup.Build.0 = Release|x64
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.All|x86 Setup.ActiveCfg = Release|x64
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Win32.ActiveCfg = Debug|Win32
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Win32.Build.0 = Debug|Win32
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|x64.ActiveCfg = Debug|x64
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|x64.Build.0 = Debug|x64
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Win32.ActiveCfg = Release|Win32
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Win32.Build.0 = Release|Win32
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|x64.ActiveCfg = Release|x64
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|x64.Build.0 = Release|x64
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|x64 Setup.ActiveCfg = Release|x64
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.All|Win32.ActiveCfg = Release|x64
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.All|x64.ActiveCfg = Release|x64
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.All|x64.Build.0 = Release|x64
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.All|x64 Setup.ActiveCfg = Release|x64
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.All|x64 Setup.Build.0 = Release|x64
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.All|x86 Setup.ActiveCfg = Release|x64
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|Win32.ActiveCfg = Debug|Win32
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|Win32.Build.0 = Debug|Win32
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|x64.ActiveCfg = Debug|x64
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|x64.Build.0 = Debug|x64
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|Win32.ActiveCfg = Release|Win32
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|Win32.Build.0 = Release|Win32
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|x64.ActiveCfg = Release|x64
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|x64.Build.0 = Release|x64
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|x64 Setup.ActiveCfg = Release|x64
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {1C453396-D912-4213-89FD-9B489162B7B5}.All|Win32.ActiveCfg = Release|x64
++ {1C453396-D912-4213-89FD-9B489162B7B5}.All|x64.ActiveCfg = Release|x64
++ {1C453396-D912-4213-89FD-9B489162B7B5}.All|x64.Build.0 = Release|x64
++ {1C453396-D912-4213-89FD-9B489162B7B5}.All|x64 Setup.ActiveCfg = Release|x64
++ {1C453396-D912-4213-89FD-9B489162B7B5}.All|x64 Setup.Build.0 = Release|x64
++ {1C453396-D912-4213-89FD-9B489162B7B5}.All|x86 Setup.ActiveCfg = Release|x64
++ {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|Win32.ActiveCfg = Debug|Win32
++ {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|Win32.Build.0 = Debug|Win32
++ {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|x64.ActiveCfg = Debug|x64
++ {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|x64.Build.0 = Debug|x64
++ {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {1C453396-D912-4213-89FD-9B489162B7B5}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {1C453396-D912-4213-89FD-9B489162B7B5}.Release|Win32.ActiveCfg = Release|Win32
++ {1C453396-D912-4213-89FD-9B489162B7B5}.Release|Win32.Build.0 = Release|Win32
++ {1C453396-D912-4213-89FD-9B489162B7B5}.Release|x64.ActiveCfg = Release|x64
++ {1C453396-D912-4213-89FD-9B489162B7B5}.Release|x64.Build.0 = Release|x64
++ {1C453396-D912-4213-89FD-9B489162B7B5}.Release|x64 Setup.ActiveCfg = Release|x64
++ {1C453396-D912-4213-89FD-9B489162B7B5}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.All|Win32.ActiveCfg = Release|x64
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.All|x64.ActiveCfg = Release|x64
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.All|x64.Build.0 = Release|x64
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.All|x64 Setup.ActiveCfg = Release|x64
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.All|x64 Setup.Build.0 = Release|x64
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.All|x86 Setup.ActiveCfg = Release|x64
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|Win32.ActiveCfg = Debug|Win32
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|Win32.Build.0 = Debug|Win32
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|x64.ActiveCfg = Debug|x64
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|x64.Build.0 = Debug|x64
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Win32.ActiveCfg = Release|Win32
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|Win32.Build.0 = Release|Win32
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|x64.ActiveCfg = Release|x64
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|x64.Build.0 = Release|x64
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|x64 Setup.ActiveCfg = Release|x64
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|Win32.ActiveCfg = Release|x64
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|x64.ActiveCfg = Release|x64
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|x64.Build.0 = Release|x64
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|x64 Setup.ActiveCfg = Release|x64
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|x64 Setup.Build.0 = Release|x64
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.All|x86 Setup.ActiveCfg = Release|x64
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Win32.ActiveCfg = Debug|Win32
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|Win32.Build.0 = Debug|Win32
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|x64.ActiveCfg = Debug|x64
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|x64.Build.0 = Debug|x64
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Win32.ActiveCfg = Release|Win32
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|Win32.Build.0 = Release|Win32
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|x64.ActiveCfg = Release|x64
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|x64.Build.0 = Release|x64
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|x64 Setup.ActiveCfg = Release|x64
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {C24FB505-05D7-4319-8485-7540B44C8603}.All|Win32.ActiveCfg = Release|x64
++ {C24FB505-05D7-4319-8485-7540B44C8603}.All|x64.ActiveCfg = Release|x64
++ {C24FB505-05D7-4319-8485-7540B44C8603}.All|x64.Build.0 = Release|x64
++ {C24FB505-05D7-4319-8485-7540B44C8603}.All|x64 Setup.ActiveCfg = Release|x64
++ {C24FB505-05D7-4319-8485-7540B44C8603}.All|x64 Setup.Build.0 = Release|x64
++ {C24FB505-05D7-4319-8485-7540B44C8603}.All|x86 Setup.ActiveCfg = Release|x64
++ {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|Win32.ActiveCfg = Debug|Win32
++ {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|Win32.Build.0 = Debug|Win32
++ {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|x64.ActiveCfg = Debug|x64
++ {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|x64.Build.0 = Debug|x64
++ {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {C24FB505-05D7-4319-8485-7540B44C8603}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {C24FB505-05D7-4319-8485-7540B44C8603}.Release|Win32.ActiveCfg = Release|Win32
++ {C24FB505-05D7-4319-8485-7540B44C8603}.Release|Win32.Build.0 = Release|Win32
++ {C24FB505-05D7-4319-8485-7540B44C8603}.Release|x64.ActiveCfg = Release|x64
++ {C24FB505-05D7-4319-8485-7540B44C8603}.Release|x64.Build.0 = Release|x64
++ {C24FB505-05D7-4319-8485-7540B44C8603}.Release|x64 Setup.ActiveCfg = Release|x64
++ {C24FB505-05D7-4319-8485-7540B44C8603}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.All|Win32.ActiveCfg = Release|x64
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.All|x64.ActiveCfg = Release|x64
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.All|x64.Build.0 = Release|x64
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.All|x64 Setup.ActiveCfg = Release|x64
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.All|x64 Setup.Build.0 = Release|x64
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.All|x86 Setup.ActiveCfg = Release|x64
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|Win32.ActiveCfg = Debug|Win32
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|Win32.Build.0 = Debug|Win32
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|x64.ActiveCfg = Debug|x64
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|x64.Build.0 = Debug|x64
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|Win32.ActiveCfg = Release|Win32
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|Win32.Build.0 = Release|Win32
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|x64.ActiveCfg = Release|x64
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|x64.Build.0 = Release|x64
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|x64 Setup.ActiveCfg = Release|x64
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.All|Win32.ActiveCfg = Release|x64
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.All|x64.ActiveCfg = Release|x64
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.All|x64.Build.0 = Release|x64
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.All|x64 Setup.ActiveCfg = Release|x64
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.All|x64 Setup.Build.0 = Release|x64
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.All|x86 Setup.ActiveCfg = Release|x64
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|Win32.ActiveCfg = Debug|Win32
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|Win32.Build.0 = Debug|Win32
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|x64.ActiveCfg = Debug|x64
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|x64.Build.0 = Debug|x64
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|Win32.ActiveCfg = Release|Win32
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|Win32.Build.0 = Release|Win32
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|x64.ActiveCfg = Release|x64
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|x64.Build.0 = Release|x64
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|x64 Setup.ActiveCfg = Release|x64
++ {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.All|Win32.ActiveCfg = Release DLL|x64
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.All|x64.ActiveCfg = Release DLL|x64
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.All|x64.Build.0 = Release DLL|x64
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.All|x64 Setup.ActiveCfg = Release DLL|x64
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.All|x64 Setup.Build.0 = Release DLL|x64
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.All|x86 Setup.ActiveCfg = Release DLL|x64
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.ActiveCfg = Debug|Win32
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.Build.0 = Debug|Win32
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|x64.ActiveCfg = Debug|x64
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|x64.Build.0 = Debug|x64
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Win32.ActiveCfg = Release|Win32
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Win32.Build.0 = Release|Win32
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|x64.ActiveCfg = Release|x64
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|x64.Build.0 = Release|x64
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|x64 Setup.ActiveCfg = Release|x64
++ {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.All|Win32.ActiveCfg = Release Dll|x64
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.All|x64.ActiveCfg = Release Dll|x64
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.All|x64.Build.0 = Release Dll|x64
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.All|x64 Setup.ActiveCfg = Release Dll|x64
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.All|x64 Setup.Build.0 = Release Dll|x64
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.All|x86 Setup.ActiveCfg = Release Dll|x64
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Win32.ActiveCfg = Debug|Win32
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Win32.Build.0 = Debug|Win32
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|x64.ActiveCfg = Debug|x64
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|x64.Build.0 = Debug|x64
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Win32.ActiveCfg = Release|Win32
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Win32.Build.0 = Release|Win32
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|x64.ActiveCfg = Release|x64
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|x64.Build.0 = Release|x64
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|x64 Setup.ActiveCfg = Release|x64
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.All|Win32.ActiveCfg = Release DLL|x64
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.All|x64.ActiveCfg = Release DLL|x64
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.All|x64.Build.0 = Release DLL|x64
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.All|x64 Setup.ActiveCfg = Release DLL|x64
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.All|x64 Setup.Build.0 = Release DLL|x64
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.All|x86 Setup.ActiveCfg = Release DLL|x64
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|Win32.ActiveCfg = Debug|Win32
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|Win32.Build.0 = Debug|Win32
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|x64.ActiveCfg = Debug|x64
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|x64.Build.0 = Debug|x64
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|Win32.ActiveCfg = Release|Win32
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|Win32.Build.0 = Release|Win32
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|x64.ActiveCfg = Release|x64
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|x64.Build.0 = Release|x64
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|x64 Setup.ActiveCfg = Release|x64
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.All|Win32.ActiveCfg = Release DLL|x64
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.All|x64.ActiveCfg = Release DLL|x64
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.All|x64.Build.0 = Release DLL|x64
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.All|x64 Setup.ActiveCfg = Release DLL|x64
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.All|x64 Setup.Build.0 = Release DLL|x64
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.All|x86 Setup.ActiveCfg = Release DLL|x64
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|Win32.ActiveCfg = Debug|Win32
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|Win32.Build.0 = Debug|Win32
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|x64.ActiveCfg = Debug|x64
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|x64.Build.0 = Debug|x64
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|Win32.ActiveCfg = Release|Win32
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|Win32.Build.0 = Release|Win32
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|x64.ActiveCfg = Release|x64
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|x64.Build.0 = Release|x64
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|x64 Setup.ActiveCfg = Release|x64
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.All|Win32.ActiveCfg = Release|x64
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.All|x64.ActiveCfg = Release|x64
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.All|x64.Build.0 = Release|x64
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.All|x64 Setup.ActiveCfg = Release|x64
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.All|x64 Setup.Build.0 = Release|x64
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.All|x86 Setup.ActiveCfg = Release|x64
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Win32.ActiveCfg = Debug|Win32
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Win32.Build.0 = Debug|Win32
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|x64.ActiveCfg = Debug|x64
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|x64.Build.0 = Debug|x64
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.ActiveCfg = Release|Win32
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.Build.0 = Release|Win32
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|x64.ActiveCfg = Release|x64
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|x64.Build.0 = Release|x64
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|x64 Setup.ActiveCfg = Release|x64
++ {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.All|Win32.ActiveCfg = Release|x64
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.All|x64.ActiveCfg = Release|x64
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.All|x64.Build.0 = Release|x64
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.All|x64 Setup.ActiveCfg = Release|x64
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.All|x64 Setup.Build.0 = Release|x64
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.All|x86 Setup.ActiveCfg = Release|x64
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|Win32.ActiveCfg = Debug|Win32
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|Win32.Build.0 = Debug|Win32
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|x64.ActiveCfg = Debug|x64
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|x64.Build.0 = Debug|x64
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.ActiveCfg = Release|Win32
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.Build.0 = Release|Win32
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64.ActiveCfg = Release|x64
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64.Build.0 = Release|x64
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64 Setup.ActiveCfg = Release|x64
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.All|Win32.ActiveCfg = Release|x64
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.All|x64.ActiveCfg = Release|x64
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.All|x64.Build.0 = Release|x64
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.All|x64 Setup.ActiveCfg = Release|x64
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.All|x64 Setup.Build.0 = Release|x64
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.All|x86 Setup.ActiveCfg = Release|x64
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.ActiveCfg = Debug|Win32
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.Build.0 = Debug|Win32
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|x64.ActiveCfg = Debug|x64
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|x64.Build.0 = Debug|x64
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Win32.ActiveCfg = Release|Win32
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Win32.Build.0 = Release|Win32
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|x64.ActiveCfg = Release|x64
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|x64.Build.0 = Release|x64
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|x64 Setup.ActiveCfg = Release|x64
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|Win32.ActiveCfg = Release|x64
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|x64.ActiveCfg = Release|x64
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|x64.Build.0 = Release|x64
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|x64 Setup.ActiveCfg = Release|x64
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|x64 Setup.Build.0 = Release|x64
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|x86 Setup.ActiveCfg = Release|x64
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Win32.ActiveCfg = Debug|Win32
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Win32.Build.0 = Debug|Win32
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|x64.ActiveCfg = Debug|x64
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|x64.Build.0 = Debug|x64
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Win32.ActiveCfg = Release|Win32
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Win32.Build.0 = Release|Win32
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|x64.ActiveCfg = Release|x64
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|x64.Build.0 = Release|x64
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|x64 Setup.ActiveCfg = Release|x64
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.All|Win32.ActiveCfg = Release|x64
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.All|x64.ActiveCfg = Release|x64
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.All|x64.Build.0 = Release|x64
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.All|x64 Setup.ActiveCfg = Release|x64
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.All|x64 Setup.Build.0 = Release|x64
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.All|x86 Setup.ActiveCfg = Release|x64
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|Win32.ActiveCfg = Debug|Win32
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|Win32.Build.0 = Debug|Win32
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|x64.ActiveCfg = Debug|x64
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|x64.Build.0 = Debug|x64
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|Win32.ActiveCfg = Release|Win32
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|Win32.Build.0 = Release|Win32
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|x64.ActiveCfg = Release|x64
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|x64.Build.0 = Release|x64
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|x64 Setup.ActiveCfg = Release|x64
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.All|Win32.ActiveCfg = Debug|x64
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.All|x64.ActiveCfg = Debug|x64
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.All|x64.Build.0 = Debug|x64
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.All|x64 Setup.ActiveCfg = Debug|x64
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.All|x64 Setup.Build.0 = Debug|x64
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.All|x86 Setup.ActiveCfg = Debug|x64
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|Win32.ActiveCfg = Debug|Win32
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|Win32.Build.0 = Debug|Win32
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|x64.ActiveCfg = Debug|x64
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|x64.Build.0 = Debug|x64
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|Win32.ActiveCfg = Release|Win32
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|Win32.Build.0 = Release|Win32
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|x64.ActiveCfg = Release|x64
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|x64.Build.0 = Release|x64
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|x64 Setup.ActiveCfg = Release|x64
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.All|Win32.ActiveCfg = Debug|x64
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.All|x64.ActiveCfg = Debug|x64
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.All|x64.Build.0 = Debug|x64
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.All|x64 Setup.ActiveCfg = Debug|x64
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.All|x64 Setup.Build.0 = Debug|x64
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.All|x86 Setup.ActiveCfg = Debug|x64
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Win32.ActiveCfg = Debug|Win32
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Win32.Build.0 = Debug|Win32
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|x64.ActiveCfg = Debug|x64
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|x64.Build.0 = Debug|x64
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Win32.ActiveCfg = Release|Win32
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Win32.Build.0 = Release|Win32
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|x64.ActiveCfg = Release|x64
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|x64.Build.0 = Release|x64
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|x64 Setup.ActiveCfg = Release|x64
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.All|Win32.ActiveCfg = Debug|x64
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.All|x64.ActiveCfg = Debug|x64
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.All|x64.Build.0 = Debug|x64
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.All|x64 Setup.ActiveCfg = Debug|x64
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.All|x64 Setup.Build.0 = Debug|x64
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.All|x86 Setup.ActiveCfg = Debug|x64
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|Win32.ActiveCfg = Debug|Win32
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|Win32.Build.0 = Debug|Win32
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|x64.ActiveCfg = Debug|x64
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|x64.Build.0 = Debug|x64
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|Win32.ActiveCfg = Release|Win32
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|Win32.Build.0 = Release|Win32
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|x64.ActiveCfg = Release|x64
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|x64.Build.0 = Release|x64
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|x64 Setup.ActiveCfg = Release|x64
++ {204FA0DE-305D-4414-AE2E-F195A23F390D}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|Win32.ActiveCfg = Release|x64
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x64.ActiveCfg = Release|x64
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x64.Build.0 = Release|x64
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x64 Setup.ActiveCfg = Release|x64
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x64 Setup.Build.0 = Release|x64
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x86 Setup.ActiveCfg = Release|x64
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|Win32.ActiveCfg = Debug|Win32
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|Win32.Build.0 = Debug|Win32
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|x64.ActiveCfg = Debug|x64
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|x64.Build.0 = Debug|x64
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|Win32.ActiveCfg = Release|Win32
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|Win32.Build.0 = Release|Win32
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|x64.ActiveCfg = Release|x64
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|x64.Build.0 = Release|x64
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|x64 Setup.ActiveCfg = Release|x64
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|Win32.ActiveCfg = Release|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|Win32.Build.0 = Release|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|x64.ActiveCfg = Release|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|x64.Build.0 = Release|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|x64 Setup.ActiveCfg = Release|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|x64 Setup.Build.0 = Release|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|x86 Setup.ActiveCfg = Release|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.All|x86 Setup.Build.0 = Release|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|Win32.ActiveCfg = Debug|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|Win32.Build.0 = Debug|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|x64.ActiveCfg = Debug|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|x64.Build.0 = Debug|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|x64 Setup.ActiveCfg = Debug|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Win32.ActiveCfg = Release|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|Win32.Build.0 = Release|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|x64.ActiveCfg = Release|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|x64.Build.0 = Release|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|x64 Setup.ActiveCfg = Release|Win32
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.All|Win32.ActiveCfg = Release DLL|x64
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.All|x64.ActiveCfg = Release DLL|x64
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.All|x64.Build.0 = Release DLL|x64
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.All|x64 Setup.ActiveCfg = Release DLL|x64
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.All|x64 Setup.Build.0 = Release DLL|x64
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.All|x86 Setup.ActiveCfg = Release DLL|x64
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Win32.ActiveCfg = Debug DLL|Win32
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|Win32.Build.0 = Debug DLL|Win32
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|x64.ActiveCfg = Debug DLL|x64
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|x64.Build.0 = Debug DLL|x64
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|x64 Setup.ActiveCfg = Debug DLL|x64
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Debug|x86 Setup.ActiveCfg = Debug DLL|Win32
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Win32.ActiveCfg = Release DLL|Win32
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|Win32.Build.0 = Release DLL|Win32
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|x64.ActiveCfg = Release DLL|x64
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|x64.Build.0 = Release DLL|x64
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|x64 Setup.ActiveCfg = Release DLL|x64
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}.Release|x86 Setup.ActiveCfg = Release DLL|Win32
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.All|Win32.ActiveCfg = Release Passthrough|x64
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.All|x64.ActiveCfg = Release Passthrough|x64
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.All|x64.Build.0 = Release Passthrough|x64
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.All|x64 Setup.ActiveCfg = Release Passthrough|x64
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.All|x64 Setup.Build.0 = Release Passthrough|x64
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.All|x86 Setup.ActiveCfg = Release Passthrough|x64
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|Win32.Build.0 = Debug Passthrough|Win32
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|x64.ActiveCfg = Debug Passthrough|x64
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|x64.Build.0 = Debug Passthrough|x64
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|x64 Setup.ActiveCfg = Debug Passthrough|x64
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Debug|x86 Setup.ActiveCfg = Debug Passthrough|Win32
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|Win32.ActiveCfg = Release Passthrough|Win32
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|Win32.Build.0 = Release Passthrough|Win32
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|x64.ActiveCfg = Release Passthrough|x64
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|x64.Build.0 = Release Passthrough|x64
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|x64 Setup.ActiveCfg = Release Passthrough|x64
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758}.Release|x86 Setup.ActiveCfg = Release Passthrough|Win32
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.All|Win32.ActiveCfg = Release|x64
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.All|x64.ActiveCfg = Release|x64
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.All|x64.Build.0 = Release|x64
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.All|x64 Setup.ActiveCfg = Release|x64
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.All|x64 Setup.Build.0 = Release|x64
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.All|x86 Setup.ActiveCfg = Release|x64
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Debug|Win32.ActiveCfg = Debug|Win32
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Debug|Win32.Build.0 = Debug|Win32
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Debug|x64.ActiveCfg = Debug|x64
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Debug|x64.Build.0 = Debug|x64
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Release|Win32.ActiveCfg = Release|Win32
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Release|Win32.Build.0 = Release|Win32
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Release|x64.ActiveCfg = Release|x64
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Release|x64.Build.0 = Release|x64
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Release|x64 Setup.ActiveCfg = Release|x64
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.All|Win32.ActiveCfg = Release|x64
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.All|x64.ActiveCfg = Release|x64
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.All|x64.Build.0 = Release|x64
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.All|x64 Setup.ActiveCfg = Release|x64
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.All|x64 Setup.Build.0 = Release|x64
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.All|x86 Setup.ActiveCfg = Release|x64
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|Win32.ActiveCfg = Debug|Win32
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|Win32.Build.0 = Debug|Win32
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|x64.ActiveCfg = Debug|x64
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|x64.Build.0 = Debug|x64
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|Win32.ActiveCfg = Release|Win32
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|Win32.Build.0 = Release|Win32
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|x64.ActiveCfg = Release|x64
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|x64.Build.0 = Release|x64
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|x64 Setup.ActiveCfg = Release|x64
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.All|Win32.ActiveCfg = Release|x64
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.All|x64.ActiveCfg = Release|x64
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.All|x64.Build.0 = Release|x64
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.All|x64 Setup.ActiveCfg = Release|x64
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.All|x64 Setup.Build.0 = Release|x64
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.All|x86 Setup.ActiveCfg = Release|x64
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|Win32.ActiveCfg = Debug|Win32
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|Win32.Build.0 = Debug|Win32
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|x64.ActiveCfg = Debug|x64
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|x64.Build.0 = Debug|x64
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|Win32.ActiveCfg = Release|Win32
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|Win32.Build.0 = Release|Win32
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|x64.ActiveCfg = Release|x64
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|x64.Build.0 = Release|x64
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|x64 Setup.ActiveCfg = Release|x64
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.All|Win32.ActiveCfg = Release|x64
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.All|x64.ActiveCfg = Release|x64
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.All|x64.Build.0 = Release|x64
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.All|x64 Setup.ActiveCfg = Release|x64
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.All|x64 Setup.Build.0 = Release|x64
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.All|x86 Setup.ActiveCfg = Release|x64
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|Win32.ActiveCfg = Debug|Win32
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|Win32.Build.0 = Debug|Win32
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|x64.ActiveCfg = Debug|x64
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|x64.Build.0 = Debug|x64
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|Win32.ActiveCfg = Release|Win32
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|Win32.Build.0 = Release|Win32
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|x64.ActiveCfg = Release|x64
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|x64.Build.0 = Release|x64
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|x64 Setup.ActiveCfg = Release|x64
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.All|Win32.ActiveCfg = Release|x64
++ {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.All|x64.ActiveCfg = Release|x64
++ {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.All|x64.Build.0 = Release|x64
++ {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.All|x64 Setup.ActiveCfg = Release|x64
++ {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.All|x64 Setup.Build.0 = Release|x64
++ {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.All|x86 Setup.ActiveCfg = Release|x64
++ {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug|Win32.ActiveCfg = Debug|Win32
++ {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug|x64.ActiveCfg = Debug|x64
++ {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release|Win32.ActiveCfg = Release|Win32
++ {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release|x64.ActiveCfg = Release|x64
++ {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release|x64 Setup.ActiveCfg = Release|x64
++ {4043FC6A-9A30-4577-8AD5-9B233C9575D8}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.All|Win32.ActiveCfg = Release|x64
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.All|x64.ActiveCfg = Release|x64
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.All|x64.Build.0 = Release|x64
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.All|x64 Setup.ActiveCfg = Release|x64
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.All|x64 Setup.Build.0 = Release|x64
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.All|x86 Setup.ActiveCfg = Release|x64
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|Win32.ActiveCfg = Debug|Win32
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|Win32.Build.0 = Debug|Win32
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|x64.ActiveCfg = Debug|x64
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|x64.Build.0 = Debug|x64
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|Win32.ActiveCfg = Release|Win32
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|Win32.Build.0 = Release|Win32
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|x64.ActiveCfg = Release|x64
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|x64.Build.0 = Release|x64
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|x64 Setup.ActiveCfg = Release|x64
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.All|Win32.ActiveCfg = Release|x64
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.All|x64.ActiveCfg = Release|x64
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.All|x64.Build.0 = Release|x64
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.All|x64 Setup.ActiveCfg = Release|x64
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.All|x64 Setup.Build.0 = Release|x64
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.All|x86 Setup.ActiveCfg = Release|x64
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|Win32.ActiveCfg = Debug|Win32
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|Win32.Build.0 = Debug|Win32
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|x64.ActiveCfg = Debug|x64
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|x64.Build.0 = Debug|x64
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|Win32.ActiveCfg = Release|Win32
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|Win32.Build.0 = Release|Win32
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|x64.ActiveCfg = Release|x64
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|x64.Build.0 = Release|x64
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|x64 Setup.ActiveCfg = Release|x64
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.All|Win32.ActiveCfg = Release|x64
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.All|x64.ActiveCfg = Release|x64
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.All|x64.Build.0 = Release|x64
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.All|x64 Setup.ActiveCfg = Release|x64
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.All|x64 Setup.Build.0 = Release|x64
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.All|x86 Setup.ActiveCfg = Release|x64
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|Win32.ActiveCfg = Debug|Win32
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|Win32.Build.0 = Debug|Win32
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|x64.ActiveCfg = Debug|x64
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|x64.Build.0 = Debug|x64
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|Win32.ActiveCfg = Release|Win32
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|Win32.Build.0 = Release|Win32
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|x64.ActiveCfg = Release|x64
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|x64.Build.0 = Release|x64
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|x64 Setup.ActiveCfg = Release|x64
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.All|Win32.ActiveCfg = Release|x64
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.All|x64.ActiveCfg = Release|x64
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.All|x64.Build.0 = Release|x64
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.All|x64 Setup.ActiveCfg = Release|x64
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.All|x64 Setup.Build.0 = Release|x64
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.All|x86 Setup.ActiveCfg = Release|x64
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|Win32.ActiveCfg = Debug|Win32
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|Win32.Build.0 = Debug|Win32
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|x64.ActiveCfg = Debug|x64
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|x64.Build.0 = Debug|x64
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|Win32.ActiveCfg = Release|Win32
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|Win32.Build.0 = Release|Win32
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|x64.ActiveCfg = Release|x64
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|x64.Build.0 = Release|x64
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|x64 Setup.ActiveCfg = Release|x64
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|Win32.ActiveCfg = Release DirectSound|x64
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64.ActiveCfg = Release DirectSound|x64
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64.Build.0 = Release DirectSound|x64
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64 Setup.ActiveCfg = Release DirectSound|x64
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64 Setup.Build.0 = Release DirectSound|x64
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x86 Setup.ActiveCfg = Release DirectSound|x64
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug DirectSound|Win32
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug DirectSound|Win32
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug DirectSound|x64
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.Build.0 = Debug DirectSound|x64
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64 Setup.ActiveCfg = Debug DirectSound|x64
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x86 Setup.ActiveCfg = Debug DirectSound|Win32
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release DirectSound|Win32
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release DirectSound|Win32
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release DirectSound|x64
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.Build.0 = Release DirectSound|x64
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64 Setup.ActiveCfg = Release DirectSound|x64
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x86 Setup.ActiveCfg = Release DirectSound|Win32
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|Win32.ActiveCfg = Release|x64
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64.ActiveCfg = Release|x64
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64.Build.0 = Release|x64
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64 Setup.ActiveCfg = Release|x64
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64 Setup.Build.0 = Release|x64
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x86 Setup.ActiveCfg = Release|x64
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|Win32.ActiveCfg = Debug|Win32
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|Win32.Build.0 = Debug|Win32
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|x64.ActiveCfg = Debug|x64
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|x64.Build.0 = Debug|x64
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|Win32.ActiveCfg = Release|Win32
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|Win32.Build.0 = Release|Win32
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|x64.ActiveCfg = Release|x64
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|x64.Build.0 = Release|x64
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|x64 Setup.ActiveCfg = Release|x64
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.All|Win32.ActiveCfg = Release Passthrough|x64
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.All|x64.ActiveCfg = Release Passthrough|x64
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.All|x64.Build.0 = Release Passthrough|x64
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.All|x64 Setup.ActiveCfg = Release Passthrough|x64
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.All|x64 Setup.Build.0 = Release Passthrough|x64
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.All|x86 Setup.ActiveCfg = Release Passthrough|x64
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|Win32.ActiveCfg = Debug Passthrough|Win32
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|Win32.Build.0 = Debug Passthrough|Win32
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|x64.ActiveCfg = Debug Passthrough|x64
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|x64.Build.0 = Debug Passthrough|x64
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|x64 Setup.ActiveCfg = Debug Passthrough|x64
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Debug|x86 Setup.ActiveCfg = Debug Passthrough|Win32
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|Win32.ActiveCfg = Release Passthrough|Win32
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|Win32.Build.0 = Release Passthrough|Win32
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|x64.ActiveCfg = Release Passthrough|x64
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|x64.Build.0 = Release Passthrough|x64
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|x64 Setup.ActiveCfg = Release Passthrough|x64
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79}.Release|x86 Setup.ActiveCfg = Release Passthrough|Win32
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.All|Win32.ActiveCfg = Release|x64
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.All|x64.ActiveCfg = Release|x64
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.All|x64.Build.0 = Release|x64
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.All|x64 Setup.ActiveCfg = Release|x64
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.All|x64 Setup.Build.0 = Release|x64
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.All|x86 Setup.ActiveCfg = Release|x64
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|Win32.ActiveCfg = Debug|Win32
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|Win32.Build.0 = Debug|Win32
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|x64.ActiveCfg = Debug|x64
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|x64.Build.0 = Debug|x64
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|Win32.ActiveCfg = Release|Win32
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|Win32.Build.0 = Release|Win32
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|x64.ActiveCfg = Release|x64
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|x64.Build.0 = Release|x64
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|x64 Setup.ActiveCfg = Release|x64
++ {2C3C2423-234B-4772-8899-D3B137E5CA35}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.All|Win32.ActiveCfg = Release|x64
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.All|x64.ActiveCfg = Release|x64
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.All|x64.Build.0 = Release|x64
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.All|x64 Setup.ActiveCfg = Release|x64
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.All|x64 Setup.Build.0 = Release|x64
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.All|x86 Setup.ActiveCfg = Release|x64
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|Win32.ActiveCfg = Debug|Win32
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|Win32.Build.0 = Debug|Win32
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|x64.ActiveCfg = Debug|x64
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|x64.Build.0 = Debug|x64
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|Win32.ActiveCfg = Release|Win32
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|Win32.Build.0 = Release|Win32
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|x64.ActiveCfg = Release|x64
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|x64.Build.0 = Release|x64
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|x64 Setup.ActiveCfg = Release|x64
++ {3850D93A-5F24-4922-BC1C-74D08C37C256}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.All|Win32.ActiveCfg = Release|x64
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.All|x64.ActiveCfg = Release|x64
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.All|x64.Build.0 = Release|x64
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.All|x64 Setup.ActiveCfg = Release|x64
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.All|x64 Setup.Build.0 = Release|x64
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.All|x86 Setup.ActiveCfg = Release|x64
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|Win32.ActiveCfg = Debug|Win32
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|Win32.Build.0 = Debug|Win32
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|x64.ActiveCfg = Debug|x64
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|x64.Build.0 = Debug|x64
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|Win32.ActiveCfg = Release|Win32
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|Win32.Build.0 = Release|Win32
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|x64.ActiveCfg = Release|x64
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|x64.Build.0 = Release|x64
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|x64 Setup.ActiveCfg = Release|x64
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.All|Win32.ActiveCfg = Release|x64
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.All|x64.ActiveCfg = Release|x64
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.All|x64.Build.0 = Release|x64
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.All|x64 Setup.ActiveCfg = Release|x64
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.All|x64 Setup.Build.0 = Release|x64
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.All|x86 Setup.ActiveCfg = Release|x64
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|Win32.ActiveCfg = Debug|Win32
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|Win32.Build.0 = Debug|Win32
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|x64.ActiveCfg = Debug|x64
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|x64.Build.0 = Debug|x64
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|Win32.ActiveCfg = Release|Win32
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|Win32.Build.0 = Release|Win32
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|x64.ActiveCfg = Release|x64
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|x64.Build.0 = Release|x64
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|x64 Setup.ActiveCfg = Release|x64
++ {028C7278-05D7-4E18-82FE-BE231B844F41}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.All|Win32.ActiveCfg = Release|x64
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.All|x64.ActiveCfg = Release|x64
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.All|x64.Build.0 = Release|x64
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.All|x64 Setup.ActiveCfg = Release|x64
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.All|x64 Setup.Build.0 = Release|x64
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.All|x86 Setup.ActiveCfg = Release|x64
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|Win32.Build.0 = Debug|Win32
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|x64.ActiveCfg = Debug|x64
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|x64.Build.0 = Debug|x64
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|Win32.ActiveCfg = Release|Win32
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|Win32.Build.0 = Release|Win32
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|x64.ActiveCfg = Release|x64
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|x64.Build.0 = Release|x64
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|x64 Setup.ActiveCfg = Release|x64
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.All|Win32.ActiveCfg = Release|x64
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.All|x64.ActiveCfg = Release|x64
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.All|x64.Build.0 = Release|x64
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.All|x64 Setup.ActiveCfg = Release|x64
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.All|x64 Setup.Build.0 = Release|x64
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.All|x86 Setup.ActiveCfg = Release|x64
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|Win32.ActiveCfg = Debug|Win32
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|Win32.Build.0 = Debug|Win32
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|x64.ActiveCfg = Debug|x64
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|x64.Build.0 = Debug|x64
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|Win32.ActiveCfg = Release|Win32
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|Win32.Build.0 = Release|Win32
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|x64.ActiveCfg = Release|x64
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|x64.Build.0 = Release|x64
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|x64 Setup.ActiveCfg = Release|x64
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.All|Win32.ActiveCfg = Release|x64
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.All|x64.ActiveCfg = Release|x64
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.All|x64.Build.0 = Release|x64
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.All|x64 Setup.ActiveCfg = Release|x64
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.All|x64 Setup.Build.0 = Release|x64
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.All|x86 Setup.ActiveCfg = Release|x64
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|Win32.ActiveCfg = Debug|Win32
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|Win32.Build.0 = Debug|Win32
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|x64.ActiveCfg = Debug|x64
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|x64.Build.0 = Debug|x64
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|Win32.ActiveCfg = Release|Win32
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|Win32.Build.0 = Release|Win32
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|x64.ActiveCfg = Release|x64
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|x64.Build.0 = Release|x64
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|x64 Setup.ActiveCfg = Release|x64
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.All|Win32.ActiveCfg = Release|x64
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.All|x64.ActiveCfg = Release|x64
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.All|x64.Build.0 = Release|x64
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.All|x64 Setup.ActiveCfg = Release|x64
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.All|x64 Setup.Build.0 = Release|x64
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.All|x86 Setup.ActiveCfg = Release|x64
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|Win32.ActiveCfg = Debug|Win32
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|Win32.Build.0 = Debug|Win32
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|x64.ActiveCfg = Debug|x64
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|x64.Build.0 = Debug|x64
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|Win32.ActiveCfg = Release|Win32
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|Win32.Build.0 = Release|Win32
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|x64.ActiveCfg = Release|x64
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|x64.Build.0 = Release|x64
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|x64 Setup.ActiveCfg = Release|x64
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.All|Win32.ActiveCfg = Release|x64
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.All|x64.ActiveCfg = Release|x64
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.All|x64.Build.0 = Release|x64
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.All|x64 Setup.ActiveCfg = Release|x64
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.All|x64 Setup.Build.0 = Release|x64
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.All|x86 Setup.ActiveCfg = Release|x64
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|Win32.ActiveCfg = Debug|Win32
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|Win32.Build.0 = Debug|Win32
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|x64.ActiveCfg = Debug|x64
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|x64.Build.0 = Debug|x64
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|Win32.ActiveCfg = Release|Win32
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|Win32.Build.0 = Release|Win32
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|x64.ActiveCfg = Release|x64
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|x64.Build.0 = Release|x64
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|x64 Setup.ActiveCfg = Release|x64
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.All|Win32.ActiveCfg = Release|x64
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.All|x64.ActiveCfg = Release|x64
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.All|x64.Build.0 = Release|x64
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.All|x64 Setup.ActiveCfg = Release|x64
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.All|x64 Setup.Build.0 = Release|x64
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.All|x86 Setup.ActiveCfg = Release|x64
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|Win32.ActiveCfg = Debug|Win32
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|Win32.Build.0 = Debug|Win32
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|x64.ActiveCfg = Debug|x64
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|x64.Build.0 = Debug|x64
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|Win32.ActiveCfg = Release|Win32
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|Win32.Build.0 = Release|Win32
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|x64.ActiveCfg = Release|x64
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|x64.Build.0 = Release|x64
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|x64 Setup.ActiveCfg = Release|x64
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.All|Win32.ActiveCfg = Release|x64
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.All|x64.ActiveCfg = Release|x64
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.All|x64.Build.0 = Release|x64
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.All|x64 Setup.ActiveCfg = Release|x64
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.All|x64 Setup.Build.0 = Release|x64
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.All|x86 Setup.ActiveCfg = Release|x64
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|Win32.ActiveCfg = Debug|Win32
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|Win32.Build.0 = Debug|Win32
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|x64.ActiveCfg = Debug|x64
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|x64.Build.0 = Debug|x64
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|Win32.ActiveCfg = Release|Win32
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|Win32.Build.0 = Release|Win32
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|x64.ActiveCfg = Release|x64
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|x64.Build.0 = Release|x64
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|x64 Setup.ActiveCfg = Release|x64
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {F6A33240-8F29-48BD-98F0-826995911799}.All|Win32.ActiveCfg = Release|x64
++ {F6A33240-8F29-48BD-98F0-826995911799}.All|x64.ActiveCfg = Release|x64
++ {F6A33240-8F29-48BD-98F0-826995911799}.All|x64.Build.0 = Release|x64
++ {F6A33240-8F29-48BD-98F0-826995911799}.All|x64 Setup.ActiveCfg = Release|x64
++ {F6A33240-8F29-48BD-98F0-826995911799}.All|x64 Setup.Build.0 = Release|x64
++ {F6A33240-8F29-48BD-98F0-826995911799}.All|x86 Setup.ActiveCfg = Release|x64
++ {F6A33240-8F29-48BD-98F0-826995911799}.Debug|Win32.ActiveCfg = Debug|Win32
++ {F6A33240-8F29-48BD-98F0-826995911799}.Debug|Win32.Build.0 = Debug|Win32
++ {F6A33240-8F29-48BD-98F0-826995911799}.Debug|x64.ActiveCfg = Debug|x64
++ {F6A33240-8F29-48BD-98F0-826995911799}.Debug|x64.Build.0 = Debug|x64
++ {F6A33240-8F29-48BD-98F0-826995911799}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {F6A33240-8F29-48BD-98F0-826995911799}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {F6A33240-8F29-48BD-98F0-826995911799}.Release|Win32.ActiveCfg = Release|Win32
++ {F6A33240-8F29-48BD-98F0-826995911799}.Release|Win32.Build.0 = Release|Win32
++ {F6A33240-8F29-48BD-98F0-826995911799}.Release|x64.ActiveCfg = Release|x64
++ {F6A33240-8F29-48BD-98F0-826995911799}.Release|x64.Build.0 = Release|x64
++ {F6A33240-8F29-48BD-98F0-826995911799}.Release|x64 Setup.ActiveCfg = Release|x64
++ {F6A33240-8F29-48BD-98F0-826995911799}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.All|Win32.ActiveCfg = Release|x64
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.All|x64.ActiveCfg = Release|x64
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.All|x64.Build.0 = Release|x64
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.All|x64 Setup.ActiveCfg = Release|x64
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.All|x64 Setup.Build.0 = Release|x64
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.All|x86 Setup.ActiveCfg = Release|x64
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|Win32.ActiveCfg = Debug|Win32
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|Win32.Build.0 = Debug|Win32
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|x64.ActiveCfg = Debug|x64
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|x64.Build.0 = Debug|x64
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|Win32.ActiveCfg = Release|Win32
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|Win32.Build.0 = Release|Win32
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|x64.ActiveCfg = Release|x64
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|x64.Build.0 = Release|x64
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|x64 Setup.ActiveCfg = Release|x64
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.All|Win32.ActiveCfg = Release|x64
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.All|x64.ActiveCfg = Release|x64
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.All|x64.Build.0 = Release|x64
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.All|x64 Setup.ActiveCfg = Release|x64
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.All|x64 Setup.Build.0 = Release|x64
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.All|x86 Setup.ActiveCfg = Release|x64
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|Win32.ActiveCfg = Debug|Win32
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|Win32.Build.0 = Debug|Win32
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|x64.ActiveCfg = Debug|x64
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|x64.Build.0 = Debug|x64
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|Win32.ActiveCfg = Release|Win32
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|Win32.Build.0 = Release|Win32
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|x64.ActiveCfg = Release|x64
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|x64.Build.0 = Release|x64
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|x64 Setup.ActiveCfg = Release|x64
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.All|Win32.ActiveCfg = Release|x64
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.All|x64.ActiveCfg = Release|x64
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.All|x64.Build.0 = Release|x64
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.All|x64 Setup.ActiveCfg = Release|x64
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.All|x64 Setup.Build.0 = Release|x64
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.All|x86 Setup.ActiveCfg = Release|x64
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|Win32.Build.0 = Debug|Win32
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|x64.ActiveCfg = Debug|x64
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|x64.Build.0 = Debug|x64
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|Win32.ActiveCfg = Release|Win32
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|Win32.Build.0 = Release|Win32
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|x64.ActiveCfg = Release|x64
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|x64.Build.0 = Release|x64
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|x64 Setup.ActiveCfg = Release|x64
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.All|Win32.ActiveCfg = Release|x64
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.All|x64.ActiveCfg = Release|x64
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.All|x64.Build.0 = Release|x64
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.All|x64 Setup.ActiveCfg = Release|x64
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.All|x64 Setup.Build.0 = Release|x64
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.All|x86 Setup.ActiveCfg = Release|x64
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|Win32.ActiveCfg = Debug|Win32
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|Win32.Build.0 = Debug|Win32
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|x64.ActiveCfg = Debug|x64
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|x64.Build.0 = Debug|x64
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|Win32.ActiveCfg = Release|Win32
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|Win32.Build.0 = Release|Win32
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|x64.ActiveCfg = Release|x64
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|x64.Build.0 = Release|x64
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|x64 Setup.ActiveCfg = Release|x64
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.All|Win32.ActiveCfg = Release|x64
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.All|x64.ActiveCfg = Release|x64
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.All|x64.Build.0 = Release|x64
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.All|x64 Setup.ActiveCfg = Release|x64
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.All|x64 Setup.Build.0 = Release|x64
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.All|x86 Setup.ActiveCfg = Release|x64
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|Win32.ActiveCfg = Debug|Win32
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|Win32.Build.0 = Debug|Win32
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|x64.ActiveCfg = Debug|x64
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|x64.Build.0 = Debug|x64
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|Win32.ActiveCfg = Release|Win32
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|Win32.Build.0 = Release|Win32
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|x64.ActiveCfg = Release|x64
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|x64.Build.0 = Release|x64
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|x64 Setup.ActiveCfg = Release|x64
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.All|Win32.ActiveCfg = Release|x64
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.All|x64.ActiveCfg = Release|x64
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.All|x64.Build.0 = Release|x64
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.All|x64 Setup.ActiveCfg = Release|x64
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.All|x64 Setup.Build.0 = Release|x64
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.All|x86 Setup.ActiveCfg = Release|x64
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|Win32.ActiveCfg = Debug|Win32
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|Win32.Build.0 = Debug|Win32
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|x64.ActiveCfg = Debug|x64
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|x64.Build.0 = Debug|x64
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|Win32.ActiveCfg = Release|Win32
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|Win32.Build.0 = Release|Win32
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|x64.ActiveCfg = Release|x64
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|x64.Build.0 = Release|x64
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|x64 Setup.ActiveCfg = Release|x64
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.All|Win32.ActiveCfg = Release|x64
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.All|x64.ActiveCfg = Release|x64
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.All|x64.Build.0 = Release|x64
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.All|x64 Setup.ActiveCfg = Release|x64
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.All|x64 Setup.Build.0 = Release|x64
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.All|x86 Setup.ActiveCfg = Release|x64
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|Win32.ActiveCfg = Debug|Win32
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|Win32.Build.0 = Debug|Win32
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|x64.ActiveCfg = Debug|x64
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|x64.Build.0 = Debug|x64
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|Win32.ActiveCfg = Release|Win32
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|Win32.Build.0 = Release|Win32
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|x64.ActiveCfg = Release|x64
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|x64.Build.0 = Release|x64
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|x64 Setup.ActiveCfg = Release|x64
++ {36E854E3-CE12-4348-A125-CCF3F9D74813}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.All|Win32.ActiveCfg = Release|x64
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.All|x64.ActiveCfg = Release|x64
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.All|x64.Build.0 = Release|x64
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.All|x64 Setup.ActiveCfg = Release|x64
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.All|x64 Setup.Build.0 = Release|x64
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.All|x86 Setup.ActiveCfg = Release|x64
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|Win32.ActiveCfg = Debug|Win32
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|Win32.Build.0 = Debug|Win32
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|x64.ActiveCfg = Debug|x64
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|x64.Build.0 = Debug|x64
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|Win32.ActiveCfg = Release|Win32
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|Win32.Build.0 = Release|Win32
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|x64.ActiveCfg = Release|x64
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|x64.Build.0 = Release|x64
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|x64 Setup.ActiveCfg = Release|x64
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|Win32.ActiveCfg = Release|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|Win32.Build.0 = Release|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|x64.ActiveCfg = Release|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|x64.Build.0 = Release|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|x64 Setup.ActiveCfg = Release|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|x64 Setup.Build.0 = Release|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|x86 Setup.ActiveCfg = Release|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|x86 Setup.Build.0 = Release|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|Win32.ActiveCfg = Debug|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|Win32.Build.0 = Debug|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|x64.ActiveCfg = Debug|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|x64.Build.0 = Debug|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|x64 Setup.ActiveCfg = Debug|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|Win32.ActiveCfg = Release|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|Win32.Build.0 = Release|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|x64.ActiveCfg = Release|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|x64.Build.0 = Release|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|x64 Setup.ActiveCfg = Release|Win32
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.All|Win32.ActiveCfg = Release|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.All|Win32.Build.0 = Release|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.All|x64.ActiveCfg = Release|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.All|x64.Build.0 = Release|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.All|x64 Setup.ActiveCfg = Release|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.All|x64 Setup.Build.0 = Release|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.All|x86 Setup.ActiveCfg = Release|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.All|x86 Setup.Build.0 = Release|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.Debug|Win32.ActiveCfg = Debug|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.Debug|Win32.Build.0 = Debug|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.Debug|x64.ActiveCfg = Debug|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.Debug|x64.Build.0 = Debug|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.Debug|x64 Setup.ActiveCfg = Debug|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.Release|Win32.ActiveCfg = Release|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.Release|Win32.Build.0 = Release|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.Release|x64.ActiveCfg = Release|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.Release|x64.Build.0 = Release|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.Release|x64 Setup.ActiveCfg = Release|Win32
++ {2DEE4895-1134-439C-B688-52203E57D878}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|Win32.ActiveCfg = Release|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|Win32.Build.0 = Release|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|x64.ActiveCfg = Release|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|x64.Build.0 = Release|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|x64 Setup.ActiveCfg = Release|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|x64 Setup.Build.0 = Release|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|x86 Setup.ActiveCfg = Release|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.All|x86 Setup.Build.0 = Release|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|Win32.ActiveCfg = Debug|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|Win32.Build.0 = Debug|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|x64.ActiveCfg = Debug|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|x64.Build.0 = Debug|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|x64 Setup.ActiveCfg = Debug|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|Win32.ActiveCfg = Release|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|Win32.Build.0 = Release|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|x64.ActiveCfg = Release|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|x64.Build.0 = Release|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|x64 Setup.ActiveCfg = Release|Win32
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.All|Win32.ActiveCfg = Debug|x64
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.All|x64.ActiveCfg = Debug|x64
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.All|x64.Build.0 = Debug|x64
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.All|x64 Setup.ActiveCfg = Debug|x64
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.All|x64 Setup.Build.0 = Debug|x64
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.All|x86 Setup.ActiveCfg = Debug|x64
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|Win32.ActiveCfg = Debug|Win32
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|Win32.Build.0 = Debug|Win32
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|x64.ActiveCfg = Debug|x64
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|x64.Build.0 = Debug|x64
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|Win32.ActiveCfg = Release|Win32
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|Win32.Build.0 = Release|Win32
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|x64.ActiveCfg = Release|x64
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|x64.Build.0 = Release|x64
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|x64 Setup.ActiveCfg = Release|x64
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {94001A0E-A837-445C-8004-F918F10D0226}.All|Win32.ActiveCfg = Debug|x64
++ {94001A0E-A837-445C-8004-F918F10D0226}.All|x64.ActiveCfg = Debug|x64
++ {94001A0E-A837-445C-8004-F918F10D0226}.All|x64.Build.0 = Debug|x64
++ {94001A0E-A837-445C-8004-F918F10D0226}.All|x64 Setup.ActiveCfg = Debug|x64
++ {94001A0E-A837-445C-8004-F918F10D0226}.All|x64 Setup.Build.0 = Debug|x64
++ {94001A0E-A837-445C-8004-F918F10D0226}.All|x86 Setup.ActiveCfg = Debug|x64
++ {94001A0E-A837-445C-8004-F918F10D0226}.Debug|Win32.ActiveCfg = Debug|Win32
++ {94001A0E-A837-445C-8004-F918F10D0226}.Debug|Win32.Build.0 = Debug|Win32
++ {94001A0E-A837-445C-8004-F918F10D0226}.Debug|x64.ActiveCfg = Debug|x64
++ {94001A0E-A837-445C-8004-F918F10D0226}.Debug|x64.Build.0 = Debug|x64
++ {94001A0E-A837-445C-8004-F918F10D0226}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {94001A0E-A837-445C-8004-F918F10D0226}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {94001A0E-A837-445C-8004-F918F10D0226}.Release|Win32.ActiveCfg = Release|Win32
++ {94001A0E-A837-445C-8004-F918F10D0226}.Release|Win32.Build.0 = Release|Win32
++ {94001A0E-A837-445C-8004-F918F10D0226}.Release|x64.ActiveCfg = Release|x64
++ {94001A0E-A837-445C-8004-F918F10D0226}.Release|x64.Build.0 = Release|x64
++ {94001A0E-A837-445C-8004-F918F10D0226}.Release|x64 Setup.ActiveCfg = Release|x64
++ {94001A0E-A837-445C-8004-F918F10D0226}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.All|Win32.ActiveCfg = Release|x64
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.All|x64.ActiveCfg = Release|x64
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.All|x64.Build.0 = Release|x64
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.All|x64 Setup.ActiveCfg = Release|x64
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.All|x64 Setup.Build.0 = Release|x64
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.All|x86 Setup.ActiveCfg = Release|x64
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|Win32.ActiveCfg = Debug|Win32
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|Win32.Build.0 = Debug|Win32
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|x64.ActiveCfg = Debug|x64
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|x64.Build.0 = Debug|x64
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|Win32.ActiveCfg = Release|Win32
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|Win32.Build.0 = Release|Win32
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|x64.ActiveCfg = Release|x64
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|x64.Build.0 = Release|x64
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|x64 Setup.ActiveCfg = Release|x64
++ {2286DA73-9FC5-45BC-A508-85994C3317AB}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|Win32.ActiveCfg = Release|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|Win32.Build.0 = Release|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|x64.ActiveCfg = Release|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|x64.Build.0 = Release|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|x64 Setup.ActiveCfg = Release|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|x64 Setup.Build.0 = Release|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|x86 Setup.ActiveCfg = Release|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.All|x86 Setup.Build.0 = Release|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|Win32.ActiveCfg = Debug|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|Win32.Build.0 = Debug|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|x64.ActiveCfg = Debug|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|x64.Build.0 = Debug|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|x64 Setup.ActiveCfg = Debug|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|Win32.ActiveCfg = Release|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|Win32.Build.0 = Release|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|x64.ActiveCfg = Release|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|x64.Build.0 = Release|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|x64 Setup.ActiveCfg = Release|Win32
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {87A1FE3D-F410-4C8E-9591-8C625985BC70}.All|Win32.ActiveCfg = Release|Win32
++ {87A1FE3D-F410-4C8E-9591-8C625985BC70}.All|x64.ActiveCfg = Release|Win32
++ {87A1FE3D-F410-4C8E-9591-8C625985BC70}.All|x64 Setup.ActiveCfg = Release|Win32
++ {87A1FE3D-F410-4C8E-9591-8C625985BC70}.All|x86 Setup.ActiveCfg = Release|Win32
++ {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug|Win32.ActiveCfg = Debug|Win32
++ {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug|x64.ActiveCfg = Debug|Win32
++ {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug|x64 Setup.ActiveCfg = Debug|Win32
++ {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release|Win32.ActiveCfg = Release|Win32
++ {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release|x64.ActiveCfg = Release|Win32
++ {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release|x64 Setup.ActiveCfg = Release|Win32
++ {87A1FE3D-F410-4C8E-9591-8C625985BC70}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|Win32.ActiveCfg = Release|Win32
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|Win32.Build.0 = Release|Win32
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|x64.ActiveCfg = Release|Win32
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|x64.Build.0 = Release|Win32
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|x64 Setup.ActiveCfg = Release|Win32
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|x64 Setup.Build.0 = Release|Win32
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|x86 Setup.ActiveCfg = Release|Win32
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.All|x86 Setup.Build.0 = Release|Win32
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|Win32.ActiveCfg = Debug|Win32
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|Win32.Build.0 = Debug|Win32
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|x64.ActiveCfg = Debug|x64
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|x64.Build.0 = Debug|x64
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|Win32.ActiveCfg = Release|Win32
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|Win32.Build.0 = Release|Win32
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|x64.ActiveCfg = Release|x64
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|x64.Build.0 = Release|x64
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|x64 Setup.ActiveCfg = Release|x64
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {7EB71250-F002-4ED8-92CA-CA218114537A}.All|Win32.ActiveCfg = Release|Win32
++ {7EB71250-F002-4ED8-92CA-CA218114537A}.All|x64.ActiveCfg = Release|Win32
++ {7EB71250-F002-4ED8-92CA-CA218114537A}.All|x64 Setup.ActiveCfg = Release|Win32
++ {7EB71250-F002-4ED8-92CA-CA218114537A}.All|x86 Setup.ActiveCfg = Release|Win32
++ {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|Win32.ActiveCfg = Debug|Win32
++ {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|x64.ActiveCfg = Debug|x64
++ {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {7EB71250-F002-4ED8-92CA-CA218114537A}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {7EB71250-F002-4ED8-92CA-CA218114537A}.Release|Win32.ActiveCfg = Release|Win32
++ {7EB71250-F002-4ED8-92CA-CA218114537A}.Release|x64.ActiveCfg = Release|x64
++ {7EB71250-F002-4ED8-92CA-CA218114537A}.Release|x64 Setup.ActiveCfg = Release|x64
++ {7EB71250-F002-4ED8-92CA-CA218114537A}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.All|Win32.ActiveCfg = Release|Win32
++ {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.All|x64.ActiveCfg = Release|Win32
++ {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.All|x64 Setup.ActiveCfg = Release|Win32
++ {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.All|x86 Setup.ActiveCfg = Release|Win32
++ {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug|Win32.ActiveCfg = Debug|Win32
++ {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug|x64.ActiveCfg = Debug|Win32
++ {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug|x64 Setup.ActiveCfg = Debug|Win32
++ {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release|Win32.ActiveCfg = Release|Win32
++ {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release|x64.ActiveCfg = Release|Win32
++ {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release|x64 Setup.ActiveCfg = Release|Win32
++ {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {464AAB78-5489-4916-BE51-BF8D61822311}.All|Win32.ActiveCfg = Release|Win32
++ {464AAB78-5489-4916-BE51-BF8D61822311}.All|x64.ActiveCfg = Release|Win32
++ {464AAB78-5489-4916-BE51-BF8D61822311}.All|x64 Setup.ActiveCfg = Release|Win32
++ {464AAB78-5489-4916-BE51-BF8D61822311}.All|x86 Setup.ActiveCfg = Release|Win32
++ {464AAB78-5489-4916-BE51-BF8D61822311}.Debug|Win32.ActiveCfg = Debug|Win32
++ {464AAB78-5489-4916-BE51-BF8D61822311}.Debug|x64.ActiveCfg = Debug|x64
++ {464AAB78-5489-4916-BE51-BF8D61822311}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {464AAB78-5489-4916-BE51-BF8D61822311}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {464AAB78-5489-4916-BE51-BF8D61822311}.Release|Win32.ActiveCfg = Release|Win32
++ {464AAB78-5489-4916-BE51-BF8D61822311}.Release|x64.ActiveCfg = Release|x64
++ {464AAB78-5489-4916-BE51-BF8D61822311}.Release|x64 Setup.ActiveCfg = Release|x64
++ {464AAB78-5489-4916-BE51-BF8D61822311}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {0AD1177E-1FD8-4643-9391-431467A11084}.All|Win32.ActiveCfg = Release|x64
++ {0AD1177E-1FD8-4643-9391-431467A11084}.All|x64.ActiveCfg = Release|x64
++ {0AD1177E-1FD8-4643-9391-431467A11084}.All|x64.Build.0 = Release|x64
++ {0AD1177E-1FD8-4643-9391-431467A11084}.All|x64 Setup.ActiveCfg = Release|x64
++ {0AD1177E-1FD8-4643-9391-431467A11084}.All|x64 Setup.Build.0 = Release|x64
++ {0AD1177E-1FD8-4643-9391-431467A11084}.All|x86 Setup.ActiveCfg = Release|x64
++ {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|Win32.ActiveCfg = Debug|Win32
++ {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|Win32.Build.0 = Debug|Win32
++ {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|x64.ActiveCfg = Debug|x64
++ {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|x64.Build.0 = Debug|x64
++ {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {0AD1177E-1FD8-4643-9391-431467A11084}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {0AD1177E-1FD8-4643-9391-431467A11084}.Release|Win32.ActiveCfg = Release|Win32
++ {0AD1177E-1FD8-4643-9391-431467A11084}.Release|Win32.Build.0 = Release|Win32
++ {0AD1177E-1FD8-4643-9391-431467A11084}.Release|x64.ActiveCfg = Release|x64
++ {0AD1177E-1FD8-4643-9391-431467A11084}.Release|x64.Build.0 = Release|x64
++ {0AD1177E-1FD8-4643-9391-431467A11084}.Release|x64 Setup.ActiveCfg = Release|x64
++ {0AD1177E-1FD8-4643-9391-431467A11084}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.All|Win32.ActiveCfg = Release Static|x64
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.All|x64.ActiveCfg = Release Static|x64
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.All|x64.Build.0 = Release Static|x64
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.All|x64 Setup.ActiveCfg = Release Static|x64
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.All|x64 Setup.Build.0 = Release Static|x64
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.All|x86 Setup.ActiveCfg = Release Static|x64
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|Win32.ActiveCfg = Debug|Win32
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|Win32.Build.0 = Debug|Win32
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|x64.ActiveCfg = Debug|x64
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|x64.Build.0 = Debug|x64
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|Win32.ActiveCfg = Release|Win32
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|Win32.Build.0 = Release|Win32
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|x64.ActiveCfg = Release|x64
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|x64.Build.0 = Release|x64
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|x64 Setup.ActiveCfg = Release|x64
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|Win32.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|Win32.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|x64.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|x64.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|x64 Setup.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|x64 Setup.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|x86 Setup.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.All|x86 Setup.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|Win32.Build.0 = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|x64.ActiveCfg = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|x64.Build.0 = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|x64 Setup.ActiveCfg = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|Win32.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|Win32.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|x64.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|x64.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|x64 Setup.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|Win32.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|Win32.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|x64.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|x64.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|x64 Setup.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|x64 Setup.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|x86 Setup.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.All|x86 Setup.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|Win32.Build.0 = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|x64.ActiveCfg = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|x64.Build.0 = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|x64 Setup.ActiveCfg = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|Win32.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|Win32.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|x64.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|x64.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|x64 Setup.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|Win32.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|Win32.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|x64.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|x64.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|x64 Setup.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|x64 Setup.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|x86 Setup.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.All|x86 Setup.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|Win32.Build.0 = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|x64.ActiveCfg = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|x64.Build.0 = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|x64 Setup.ActiveCfg = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|Win32.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|Win32.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|x64.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|x64.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|x64 Setup.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|Win32.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|Win32.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|x64.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|x64.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|x64 Setup.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|x64 Setup.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|x86 Setup.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.All|x86 Setup.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|Win32.Build.0 = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|x64.ActiveCfg = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|x64.Build.0 = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|x64 Setup.ActiveCfg = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|Win32.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|Win32.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|x64.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|x64.Build.0 = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|x64 Setup.ActiveCfg = Release|Win32
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.All|Win32.ActiveCfg = Debug|x64
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.All|x64.ActiveCfg = Debug|x64
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.All|x64.Build.0 = Debug|x64
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.All|x64 Setup.ActiveCfg = Debug|x64
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.All|x64 Setup.Build.0 = Debug|x64
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.All|x86 Setup.ActiveCfg = Debug|x64
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|Win32.ActiveCfg = Debug|Win32
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|Win32.Build.0 = Debug|Win32
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|x64.ActiveCfg = Debug|x64
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|x64.Build.0 = Debug|x64
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|Win32.ActiveCfg = Release|Win32
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|Win32.Build.0 = Release|Win32
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|x64.ActiveCfg = Release|x64
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|x64.Build.0 = Release|x64
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|x64 Setup.ActiveCfg = Release|x64
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.All|Win32.ActiveCfg = Debug|x64
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.All|x64.ActiveCfg = Debug|x64
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.All|x64.Build.0 = Debug|x64
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.All|x64 Setup.ActiveCfg = Debug|x64
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.All|x64 Setup.Build.0 = Debug|x64
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.All|x86 Setup.ActiveCfg = Debug|x64
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|Win32.Build.0 = Debug|Win32
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|x64.ActiveCfg = Debug|x64
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|x64.Build.0 = Debug|x64
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|Win32.ActiveCfg = Release|Win32
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|Win32.Build.0 = Release|Win32
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|x64.ActiveCfg = Release|x64
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|x64.Build.0 = Release|x64
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|x64 Setup.ActiveCfg = Release|x64
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.All|Win32.ActiveCfg = Release|x64
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.All|x64.ActiveCfg = Release|x64
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.All|x64.Build.0 = Release|x64
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.All|x64 Setup.ActiveCfg = Release|x64
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.All|x64 Setup.Build.0 = Release|x64
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.All|x86 Setup.ActiveCfg = Release|x64
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|Win32.ActiveCfg = Debug|Win32
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|Win32.Build.0 = Debug|Win32
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|x64.ActiveCfg = Debug|x64
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|x64.Build.0 = Debug|x64
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|Win32.ActiveCfg = Release|Win32
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|Win32.Build.0 = Release|Win32
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|x64.ActiveCfg = Release|x64
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|x64.Build.0 = Release|x64
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|x64 Setup.ActiveCfg = Release|x64
++ {38FE0559-9910-43A8-9E45-3E5004C27692}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.All|Win32.ActiveCfg = Debug|x64
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.All|x64.ActiveCfg = Debug|x64
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.All|x64.Build.0 = Debug|x64
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.All|x64 Setup.ActiveCfg = Debug|x64
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.All|x64 Setup.Build.0 = Debug|x64
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.All|x86 Setup.ActiveCfg = Debug|x64
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|Win32.ActiveCfg = Debug|Win32
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|Win32.Build.0 = Debug|Win32
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|x64.ActiveCfg = Debug|x64
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|x64.Build.0 = Debug|x64
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|Win32.ActiveCfg = Release|Win32
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|Win32.Build.0 = Release|Win32
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|x64.ActiveCfg = Release|x64
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|x64.Build.0 = Release|x64
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|x64 Setup.ActiveCfg = Release|x64
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.All|Win32.ActiveCfg = Release|x64
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.All|x64.ActiveCfg = Release|x64
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.All|x64.Build.0 = Release|x64
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.All|x64 Setup.ActiveCfg = Release|x64
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.All|x64 Setup.Build.0 = Release|x64
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.All|x86 Setup.ActiveCfg = Release|x64
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|Win32.ActiveCfg = Debug|Win32
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|Win32.Build.0 = Debug|Win32
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|x64.ActiveCfg = Debug|x64
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|x64.Build.0 = Debug|x64
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Win32.ActiveCfg = Release|Win32
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|Win32.Build.0 = Release|Win32
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|x64.ActiveCfg = Release|x64
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|x64.Build.0 = Release|x64
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|x64 Setup.ActiveCfg = Release|x64
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.All|Win32.ActiveCfg = Release|x64
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.All|x64.ActiveCfg = Release|x64
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.All|x64.Build.0 = Release|x64
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.All|x64 Setup.ActiveCfg = Release|x64
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.All|x64 Setup.Build.0 = Release|x64
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.All|x86 Setup.ActiveCfg = Release|x64
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|Win32.ActiveCfg = Debug|Win32
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|Win32.Build.0 = Debug|Win32
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|x64.ActiveCfg = Debug|x64
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|x64.Build.0 = Debug|x64
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|Win32.ActiveCfg = Release|Win32
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|Win32.Build.0 = Release|Win32
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|x64.ActiveCfg = Release|x64
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|x64.Build.0 = Release|x64
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|x64 Setup.ActiveCfg = Release|x64
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.All|Win32.ActiveCfg = Release_Mono|x64
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.All|x64.ActiveCfg = Release_Mono|x64
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.All|x64.Build.0 = Release_Mono|x64
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.All|x64 Setup.ActiveCfg = Release_Mono|x64
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.All|x64 Setup.Build.0 = Release_Mono|x64
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.All|x86 Setup.ActiveCfg = Release_Mono|x64
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|Win32.ActiveCfg = Debug_CLR|Win32
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|Win32.Build.0 = Debug_CLR|Win32
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|x64.ActiveCfg = Debug_CLR|x64
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|x64.Build.0 = Debug_CLR|x64
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|x64 Setup.ActiveCfg = Debug_CLR|x64
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Debug|x86 Setup.ActiveCfg = Debug_CLR|Win32
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|Win32.ActiveCfg = Release_CLR|Win32
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|Win32.Build.0 = Release_CLR|Win32
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|x64.ActiveCfg = Release_CLR|x64
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|x64.Build.0 = Release_CLR|x64
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|x64 Setup.ActiveCfg = Release_CLR|x64
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E}.Release|x86 Setup.ActiveCfg = Release_CLR|Win32
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.All|Win32.ActiveCfg = Release|Any CPU
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.All|x64.ActiveCfg = Release|Any CPU
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.All|x64 Setup.ActiveCfg = Release|Any CPU
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.All|x86 Setup.ActiveCfg = Release|Any CPU
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|Win32.ActiveCfg = Debug|Any CPU
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|Win32.Build.0 = Debug|Any CPU
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|x64.ActiveCfg = Debug|x64
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|x64.Build.0 = Debug|x64
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Debug|x86 Setup.ActiveCfg = Debug|Any CPU
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|Win32.ActiveCfg = Release|Any CPU
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|Win32.Build.0 = Release|Any CPU
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|x64.ActiveCfg = Release|x64
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|x64.Build.0 = Release|x64
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|x64 Setup.ActiveCfg = Release|x64
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0}.Release|x86 Setup.ActiveCfg = Release|Any CPU
++ {E796E337-DE78-4303-8614-9A590862EE95}.All|Win32.ActiveCfg = Release|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.All|Win32.Build.0 = Release|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.All|x64.ActiveCfg = Release|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.All|x64.Build.0 = Release|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.All|x64 Setup.ActiveCfg = Release|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.All|x64 Setup.Build.0 = Release|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.All|x86 Setup.ActiveCfg = Release|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.All|x86 Setup.Build.0 = Release|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.Debug|Win32.ActiveCfg = Debug|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.Debug|Win32.Build.0 = Debug|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.Debug|x64.ActiveCfg = Debug|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.Debug|x64.Build.0 = Debug|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.Debug|x64 Setup.ActiveCfg = Debug|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.Release|Win32.ActiveCfg = Release|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.Release|Win32.Build.0 = Release|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.Release|x64.ActiveCfg = Release|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.Release|x64.Build.0 = Release|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.Release|x64 Setup.ActiveCfg = Release|Win32
++ {E796E337-DE78-4303-8614-9A590862EE95}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {419C8F80-D858-4B48-A25C-AF4007608137}.All|Win32.ActiveCfg = Release|x64
++ {419C8F80-D858-4B48-A25C-AF4007608137}.All|x64.ActiveCfg = Release|x64
++ {419C8F80-D858-4B48-A25C-AF4007608137}.All|x64.Build.0 = Release|x64
++ {419C8F80-D858-4B48-A25C-AF4007608137}.All|x64 Setup.ActiveCfg = Release|x64
++ {419C8F80-D858-4B48-A25C-AF4007608137}.All|x64 Setup.Build.0 = Release|x64
++ {419C8F80-D858-4B48-A25C-AF4007608137}.All|x86 Setup.ActiveCfg = Release|x64
++ {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|Win32.ActiveCfg = Debug|Win32
++ {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|Win32.Build.0 = Debug|Win32
++ {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|x64.ActiveCfg = Debug|x64
++ {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|x64.Build.0 = Debug|x64
++ {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {419C8F80-D858-4B48-A25C-AF4007608137}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {419C8F80-D858-4B48-A25C-AF4007608137}.Release|Win32.ActiveCfg = Release|Win32
++ {419C8F80-D858-4B48-A25C-AF4007608137}.Release|Win32.Build.0 = Release|Win32
++ {419C8F80-D858-4B48-A25C-AF4007608137}.Release|x64.ActiveCfg = Release|x64
++ {419C8F80-D858-4B48-A25C-AF4007608137}.Release|x64.Build.0 = Release|x64
++ {419C8F80-D858-4B48-A25C-AF4007608137}.Release|x64 Setup.ActiveCfg = Release|x64
++ {419C8F80-D858-4B48-A25C-AF4007608137}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.All|Win32.ActiveCfg = Release|x64
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.All|x64.ActiveCfg = Release|x64
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.All|x64.Build.0 = Release|x64
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.All|x64 Setup.ActiveCfg = Release|x64
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.All|x64 Setup.Build.0 = Release|x64
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.All|x86 Setup.ActiveCfg = Release|x64
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|Win32.ActiveCfg = Debug|Win32
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|Win32.Build.0 = Debug|Win32
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|x64.ActiveCfg = Debug|x64
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|x64.Build.0 = Debug|x64
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|Win32.ActiveCfg = Release|Win32
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|Win32.Build.0 = Release|Win32
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|x64.ActiveCfg = Release|x64
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|x64.Build.0 = Release|x64
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|x64 Setup.ActiveCfg = Release|x64
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.All|Win32.ActiveCfg = Release|x64
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.All|x64.ActiveCfg = Release|x64
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.All|x64.Build.0 = Release|x64
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.All|x64 Setup.ActiveCfg = Release|x64
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.All|x64 Setup.Build.0 = Release|x64
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.All|x86 Setup.ActiveCfg = Release|x64
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|Win32.ActiveCfg = Debug|Win32
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|Win32.Build.0 = Debug|Win32
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|x64.ActiveCfg = Debug|x64
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|x64.Build.0 = Debug|x64
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|Win32.ActiveCfg = Release|Win32
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|Win32.Build.0 = Release|Win32
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|x64.ActiveCfg = Release|x64
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|x64.Build.0 = Release|x64
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|x64 Setup.ActiveCfg = Release|x64
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.All|Win32.ActiveCfg = Release|x64
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.All|x64.ActiveCfg = Release|x64
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.All|x64.Build.0 = Release|x64
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.All|x64 Setup.ActiveCfg = Release|x64
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.All|x64 Setup.Build.0 = Release|x64
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.All|x86 Setup.ActiveCfg = Release|x64
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|Win32.ActiveCfg = Debug|Win32
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|Win32.Build.0 = Debug|Win32
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|x64.ActiveCfg = Debug|x64
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|x64.Build.0 = Debug|x64
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|Win32.ActiveCfg = Release|Win32
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|Win32.Build.0 = Release|Win32
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|x64.ActiveCfg = Release|x64
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|x64.Build.0 = Release|x64
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|x64 Setup.ActiveCfg = Release|x64
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.All|Win32.ActiveCfg = Release|x64
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.All|x64.ActiveCfg = Release|x64
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.All|x64.Build.0 = Release|x64
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.All|x64 Setup.ActiveCfg = Release|x64
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.All|x64 Setup.Build.0 = Release|x64
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.All|x86 Setup.ActiveCfg = Release|x64
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|Win32.ActiveCfg = Debug|Win32
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|Win32.Build.0 = Debug|Win32
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|x64.ActiveCfg = Debug|x64
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|x64.Build.0 = Debug|x64
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|Win32.ActiveCfg = Release|Win32
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|Win32.Build.0 = Release|Win32
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|x64.ActiveCfg = Release|x64
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|x64.Build.0 = Release|x64
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|x64 Setup.ActiveCfg = Release|x64
++ {0B6C905B-142E-4999-B39D-92FF7951E921}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.All|Win32.ActiveCfg = Release|x64
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.All|x64.ActiveCfg = Release|x64
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.All|x64.Build.0 = Release|x64
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.All|x64 Setup.ActiveCfg = Release|x64
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.All|x64 Setup.Build.0 = Release|x64
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.All|x86 Setup.ActiveCfg = Release|x64
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|Win32.ActiveCfg = Debug|Win32
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|Win32.Build.0 = Debug|Win32
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|x64.ActiveCfg = Debug|x64
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|x64.Build.0 = Debug|x64
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|Win32.ActiveCfg = Release|Win32
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|Win32.Build.0 = Release|Win32
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|x64.ActiveCfg = Release|x64
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|x64.Build.0 = Release|x64
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|x64 Setup.ActiveCfg = Release|x64
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.All|Win32.ActiveCfg = Release|x64
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.All|x64.ActiveCfg = Release|x64
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.All|x64.Build.0 = Release|x64
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.All|x64 Setup.ActiveCfg = Release|x64
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.All|x64 Setup.Build.0 = Release|x64
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.All|x86 Setup.ActiveCfg = Release|x64
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|Win32.Build.0 = Debug|Win32
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|x64.ActiveCfg = Debug|x64
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|x64.Build.0 = Debug|x64
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|Win32.ActiveCfg = Release|Win32
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|Win32.Build.0 = Release|Win32
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|x64.ActiveCfg = Release|x64
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|x64.Build.0 = Release|x64
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|x64 Setup.ActiveCfg = Release|x64
++ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.All|Win32.ActiveCfg = Release|x64
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.All|x64.ActiveCfg = Release|x64
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.All|x64.Build.0 = Release|x64
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.All|x64 Setup.ActiveCfg = Release|x64
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.All|x64 Setup.Build.0 = Release|x64
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.All|x86 Setup.ActiveCfg = Release|x64
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|Win32.ActiveCfg = Debug|Win32
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|Win32.Build.0 = Debug|Win32
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|x64.ActiveCfg = Debug|x64
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|x64.Build.0 = Debug|x64
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|Win32.ActiveCfg = Release|Win32
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|Win32.Build.0 = Release|Win32
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|x64.ActiveCfg = Release|x64
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|x64.Build.0 = Release|x64
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|x64 Setup.ActiveCfg = Release|x64
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.All|Win32.ActiveCfg = Release|x64
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.All|x64.ActiveCfg = Release|x64
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.All|x64.Build.0 = Release|x64
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.All|x64 Setup.ActiveCfg = Release|x64
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.All|x64 Setup.Build.0 = Release|x64
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.All|x86 Setup.ActiveCfg = Release|x64
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|Win32.ActiveCfg = Debug|Win32
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|Win32.Build.0 = Debug|Win32
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|x64.ActiveCfg = Debug|x64
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|x64.Build.0 = Debug|x64
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|Win32.ActiveCfg = Release|Win32
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|Win32.Build.0 = Release|Win32
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|x64.ActiveCfg = Release|x64
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|x64.Build.0 = Release|x64
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|x64 Setup.ActiveCfg = Release|x64
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.All|Win32.ActiveCfg = Release|x64
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.All|x64.ActiveCfg = Release|x64
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.All|x64.Build.0 = Release|x64
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.All|x64 Setup.ActiveCfg = Release|x64
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.All|x64 Setup.Build.0 = Release|x64
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.All|x86 Setup.ActiveCfg = Release|x64
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|Win32.ActiveCfg = Debug|Win32
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|Win32.Build.0 = Debug|Win32
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|x64.ActiveCfg = Debug|x64
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|x64.Build.0 = Debug|x64
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|Win32.ActiveCfg = Release|Win32
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|Win32.Build.0 = Release|Win32
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|x64.ActiveCfg = Release|x64
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|x64.Build.0 = Release|x64
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|x64 Setup.ActiveCfg = Release|x64
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.All|Win32.ActiveCfg = Release|x64
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.All|x64.ActiveCfg = Release|x64
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.All|x64.Build.0 = Release|x64
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.All|x64 Setup.ActiveCfg = Release|x64
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.All|x64 Setup.Build.0 = Release|x64
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.All|x86 Setup.ActiveCfg = Release|x64
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|Win32.ActiveCfg = Debug|Win32
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|Win32.Build.0 = Debug|Win32
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|x64.ActiveCfg = Debug|x64
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|x64.Build.0 = Debug|x64
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|Win32.ActiveCfg = Release|Win32
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|Win32.Build.0 = Release|Win32
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|x64.ActiveCfg = Release|x64
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|x64.Build.0 = Release|x64
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|x64 Setup.ActiveCfg = Release|x64
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.All|Win32.ActiveCfg = Release_WM5_PPC_ARM|x64
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.All|x64.ActiveCfg = Release_WM5_PPC_ARM|x64
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.All|x64.Build.0 = Release_WM5_PPC_ARM|x64
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.All|x64 Setup.ActiveCfg = Release_WM5_PPC_ARM|x64
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.All|x64 Setup.Build.0 = Release_WM5_PPC_ARM|x64
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.All|x86 Setup.ActiveCfg = Release_WM5_PPC_ARM|x64
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Debug|Win32.ActiveCfg = Debug|Win32
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Debug|Win32.Build.0 = Debug|Win32
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Debug|x64.ActiveCfg = Debug|x64
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Debug|x64.Build.0 = Debug|x64
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Release|Win32.ActiveCfg = Release|Win32
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Release|Win32.Build.0 = Release|Win32
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Release|x64.ActiveCfg = Release|x64
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Release|x64.Build.0 = Release|x64
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Release|x64 Setup.ActiveCfg = Release|x64
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.All|Win32.ActiveCfg = Release_Static_SSE|x64
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.All|x64.ActiveCfg = Release_Static_SSE|x64
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.All|x64.Build.0 = Release_Static_SSE|x64
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.All|x64 Setup.ActiveCfg = Release_Static_SSE|x64
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.All|x64 Setup.Build.0 = Release_Static_SSE|x64
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.All|x86 Setup.ActiveCfg = Release_Static_SSE|x64
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Debug|Win32.ActiveCfg = Debug|Win32
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Debug|Win32.Build.0 = Debug|Win32
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Debug|x64.ActiveCfg = Debug|x64
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Debug|x64.Build.0 = Debug|x64
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Release|Win32.ActiveCfg = Release|Win32
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Release|Win32.Build.0 = Release|Win32
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Release|x64.ActiveCfg = Release|x64
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Release|x64.Build.0 = Release|x64
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Release|x64 Setup.ActiveCfg = Release|x64
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.All|Win32.ActiveCfg = Release|x64
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.All|x64.ActiveCfg = Release|x64
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.All|x64.Build.0 = Release|x64
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.All|x64 Setup.ActiveCfg = Release|x64
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.All|x64 Setup.Build.0 = Release|x64
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.All|x86 Setup.ActiveCfg = Release|x64
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Debug|Win32.ActiveCfg = Debug|Win32
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Debug|Win32.Build.0 = Debug|Win32
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Debug|x64.ActiveCfg = Debug|x64
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Debug|x64.Build.0 = Debug|x64
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Release|Win32.ActiveCfg = Release|Win32
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Release|Win32.Build.0 = Release|Win32
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Release|x64.ActiveCfg = Release|x64
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Release|x64.Build.0 = Release|x64
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Release|x64 Setup.ActiveCfg = Release|x64
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {D0B36172-CD76-454A-9B89-990025266C2A}.All|Win32.ActiveCfg = Release|x64
++ {D0B36172-CD76-454A-9B89-990025266C2A}.All|x64.ActiveCfg = Release|x64
++ {D0B36172-CD76-454A-9B89-990025266C2A}.All|x64.Build.0 = Release|x64
++ {D0B36172-CD76-454A-9B89-990025266C2A}.All|x64 Setup.ActiveCfg = Release|x64
++ {D0B36172-CD76-454A-9B89-990025266C2A}.All|x64 Setup.Build.0 = Release|x64
++ {D0B36172-CD76-454A-9B89-990025266C2A}.All|x86 Setup.ActiveCfg = Release|x64
++ {D0B36172-CD76-454A-9B89-990025266C2A}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D0B36172-CD76-454A-9B89-990025266C2A}.Debug|Win32.Build.0 = Debug|Win32
++ {D0B36172-CD76-454A-9B89-990025266C2A}.Debug|x64.ActiveCfg = Debug|x64
++ {D0B36172-CD76-454A-9B89-990025266C2A}.Debug|x64.Build.0 = Debug|x64
++ {D0B36172-CD76-454A-9B89-990025266C2A}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {D0B36172-CD76-454A-9B89-990025266C2A}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {D0B36172-CD76-454A-9B89-990025266C2A}.Release|Win32.ActiveCfg = Release|Win32
++ {D0B36172-CD76-454A-9B89-990025266C2A}.Release|Win32.Build.0 = Release|Win32
++ {D0B36172-CD76-454A-9B89-990025266C2A}.Release|x64.ActiveCfg = Release|x64
++ {D0B36172-CD76-454A-9B89-990025266C2A}.Release|x64.Build.0 = Release|x64
++ {D0B36172-CD76-454A-9B89-990025266C2A}.Release|x64 Setup.ActiveCfg = Release|x64
++ {D0B36172-CD76-454A-9B89-990025266C2A}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-6338E2526666}.All|Win32.ActiveCfg = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-6338E2526666}.All|Win32.Build.0 = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-6338E2526666}.All|x64.ActiveCfg = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-6338E2526666}.All|x64 Setup.ActiveCfg = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-6338E2526666}.All|x86 Setup.ActiveCfg = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-6338E2526666}.All|x86 Setup.Build.0 = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-6338E2526666}.Debug|Win32.ActiveCfg = Debug|Win32
++ {05C9FB27-480E-4D53-B3B7-6338E2526666}.Debug|x64.ActiveCfg = Debug|Win32
++ {05C9FB27-480E-4D53-B3B7-6338E2526666}.Debug|x64 Setup.ActiveCfg = Debug|Win32
++ {05C9FB27-480E-4D53-B3B7-6338E2526666}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {05C9FB27-480E-4D53-B3B7-6338E2526666}.Release|Win32.ActiveCfg = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-6338E2526666}.Release|x64.ActiveCfg = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-6338E2526666}.Release|x64 Setup.ActiveCfg = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-6338E2526666}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {CC1DD008-9406-448D-A0AD-33C3186CFADB}.All|Win32.ActiveCfg = Release|Win32
++ {CC1DD008-9406-448D-A0AD-33C3186CFADB}.All|x64.ActiveCfg = Release|Win32
++ {CC1DD008-9406-448D-A0AD-33C3186CFADB}.All|x64 Setup.ActiveCfg = Release|Win32
++ {CC1DD008-9406-448D-A0AD-33C3186CFADB}.All|x86 Setup.ActiveCfg = Release|Win32
++ {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Debug|Win32.ActiveCfg = Debug|Win32
++ {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Debug|Win32.Build.0 = Debug|Win32
++ {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Debug|x64.ActiveCfg = Debug|x64
++ {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Debug|x64.Build.0 = Debug|x64
++ {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Release|Win32.ActiveCfg = Release|Win32
++ {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Release|Win32.Build.0 = Release|Win32
++ {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Release|x64.ActiveCfg = Release|x64
++ {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Release|x64.Build.0 = Release|x64
++ {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Release|x64 Setup.ActiveCfg = Release|x64
++ {CC1DD008-9406-448D-A0AD-33C3186CFADB}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {48414740-C693-4968-9846-EE058020C64F}.All|Win32.ActiveCfg = Release|Win32
++ {48414740-C693-4968-9846-EE058020C64F}.All|x64.ActiveCfg = Release|Win32
++ {48414740-C693-4968-9846-EE058020C64F}.All|x64 Setup.ActiveCfg = Release|Win32
++ {48414740-C693-4968-9846-EE058020C64F}.All|x86 Setup.ActiveCfg = Release|Win32
++ {48414740-C693-4968-9846-EE058020C64F}.Debug|Win32.ActiveCfg = Debug|Win32
++ {48414740-C693-4968-9846-EE058020C64F}.Debug|Win32.Build.0 = Debug|Win32
++ {48414740-C693-4968-9846-EE058020C64F}.Debug|x64.ActiveCfg = Debug|x64
++ {48414740-C693-4968-9846-EE058020C64F}.Debug|x64.Build.0 = Debug|x64
++ {48414740-C693-4968-9846-EE058020C64F}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {48414740-C693-4968-9846-EE058020C64F}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {48414740-C693-4968-9846-EE058020C64F}.Release|Win32.ActiveCfg = Release|Win32
++ {48414740-C693-4968-9846-EE058020C64F}.Release|Win32.Build.0 = Release|Win32
++ {48414740-C693-4968-9846-EE058020C64F}.Release|x64.ActiveCfg = Release|x64
++ {48414740-C693-4968-9846-EE058020C64F}.Release|x64.Build.0 = Release|x64
++ {48414740-C693-4968-9846-EE058020C64F}.Release|x64 Setup.ActiveCfg = Release|x64
++ {48414740-C693-4968-9846-EE058020C64F}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.All|Win32.ActiveCfg = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.All|Win32.Build.0 = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.All|x64.ActiveCfg = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.All|x64 Setup.ActiveCfg = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.All|x86 Setup.ActiveCfg = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.All|x86 Setup.Build.0 = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Debug|Win32.ActiveCfg = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Debug|Win32.Build.0 = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Debug|x64.ActiveCfg = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Debug|x64.Build.0 = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Debug|x64 Setup.ActiveCfg = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Debug|x86 Setup.ActiveCfg = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Release|Win32.ActiveCfg = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Release|Win32.Build.0 = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Release|x64.ActiveCfg = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Release|x64.Build.0 = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Release|x64 Setup.ActiveCfg = All|Win32
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330}.Release|x86 Setup.ActiveCfg = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.All|Win32.ActiveCfg = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.All|Win32.Build.0 = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.All|x64.ActiveCfg = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.All|x64 Setup.ActiveCfg = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.All|x86 Setup.ActiveCfg = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.All|x86 Setup.Build.0 = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Debug|Win32.ActiveCfg = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Debug|Win32.Build.0 = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Debug|x64.ActiveCfg = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Debug|x64.Build.0 = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Debug|x64 Setup.ActiveCfg = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Debug|x86 Setup.ActiveCfg = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Release|Win32.ActiveCfg = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Release|Win32.Build.0 = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Release|x64.ActiveCfg = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Release|x64.Build.0 = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Release|x64 Setup.ActiveCfg = All|Win32
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838}.Release|x86 Setup.ActiveCfg = All|Win32
++ {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.All|Win32.ActiveCfg = Release|x64
++ {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.All|x64.ActiveCfg = Release|x64
++ {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.All|x64.Build.0 = Release|x64
++ {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.All|x64 Setup.ActiveCfg = Release|x64
++ {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.All|x64 Setup.Build.0 = Release|x64
++ {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.All|x86 Setup.ActiveCfg = Release|x64
++ {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Debug|Win32.ActiveCfg = Debug|Win32
++ {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Debug|x64.ActiveCfg = Debug|x64
++ {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Release|Win32.ActiveCfg = Release|Win32
++ {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Release|x64.ActiveCfg = Release|x64
++ {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Release|x64 Setup.ActiveCfg = Release|x64
++ {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.All|Win32.ActiveCfg = Release|Win32
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.All|Win32.Build.0 = Release|Win32
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.All|x64.ActiveCfg = Release|Win32
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.All|x64 Setup.ActiveCfg = Release|Win32
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.All|x86 Setup.ActiveCfg = Release|Win32
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.All|x86 Setup.Build.0 = Release|Win32
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Debug|Win32.ActiveCfg = Debug|Win32
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Debug|Win32.Build.0 = Debug|Win32
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Debug|x64.ActiveCfg = Debug|x64
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Debug|x64.Build.0 = Debug|x64
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Debug|x64 Setup.ActiveCfg = Debug|Win32
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Release|Win32.ActiveCfg = Release|Win32
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Release|Win32.Build.0 = Release|Win32
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Release|x64.ActiveCfg = Release|x64
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Release|x64.Build.0 = Release|x64
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Release|x64 Setup.ActiveCfg = Release|Win32
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {1F0A8A77-E661-418F-BB92-82172AE43803}.All|Win32.ActiveCfg = Release|Win32
++ {1F0A8A77-E661-418F-BB92-82172AE43803}.All|x64.ActiveCfg = Release|Win32
++ {1F0A8A77-E661-418F-BB92-82172AE43803}.All|x64 Setup.ActiveCfg = Release|Win32
++ {1F0A8A77-E661-418F-BB92-82172AE43803}.All|x86 Setup.ActiveCfg = Release|Win32
++ {1F0A8A77-E661-418F-BB92-82172AE43803}.Debug|Win32.ActiveCfg = Debug|Win32
++ {1F0A8A77-E661-418F-BB92-82172AE43803}.Debug|x64.ActiveCfg = Debug|Win32
++ {1F0A8A77-E661-418F-BB92-82172AE43803}.Debug|x64 Setup.ActiveCfg = Debug|Win32
++ {1F0A8A77-E661-418F-BB92-82172AE43803}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {1F0A8A77-E661-418F-BB92-82172AE43803}.Release|Win32.ActiveCfg = Release|Win32
++ {1F0A8A77-E661-418F-BB92-82172AE43803}.Release|x64.ActiveCfg = Release|Win32
++ {1F0A8A77-E661-418F-BB92-82172AE43803}.Release|x64 Setup.ActiveCfg = Release|Win32
++ {1F0A8A77-E661-418F-BB92-82172AE43803}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|Win32.ActiveCfg = Release|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|Win32.Build.0 = Release|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|x64.ActiveCfg = Release|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|x64.Build.0 = Release|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|x64 Setup.ActiveCfg = Release|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|x64 Setup.Build.0 = Release|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|x86 Setup.ActiveCfg = Release|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.All|x86 Setup.Build.0 = Release|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.Debug|Win32.ActiveCfg = Debug|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.Debug|Win32.Build.0 = Debug|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.Debug|x64.ActiveCfg = Debug|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.Debug|x64.Build.0 = Debug|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.Debug|x64 Setup.ActiveCfg = Debug|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.Release|Win32.ActiveCfg = Release|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.Release|Win32.Build.0 = Release|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.Release|x64.ActiveCfg = Release|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.Release|x64.Build.0 = Release|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.Release|x64 Setup.ActiveCfg = Release|Win32
++ {4F5C9D55-98EF-4256-8311-32D7BD360406}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.All|Win32.ActiveCfg = Release|Win32
++ {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.All|x64.ActiveCfg = Release|Win32
++ {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.All|x64 Setup.ActiveCfg = Release|Win32
++ {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.All|x86 Setup.ActiveCfg = Release|Win32
++ {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Debug|Win32.ActiveCfg = Debug|Win32
++ {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Debug|x64.ActiveCfg = Debug|Win32
++ {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Debug|x64 Setup.ActiveCfg = Debug|Win32
++ {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Release|Win32.ActiveCfg = Release|Win32
++ {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Release|x64.ActiveCfg = Release|Win32
++ {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Release|x64 Setup.ActiveCfg = Release|Win32
++ {E10571C4-E7F4-4608-B5F2-B22E7EB95400}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|Win32.ActiveCfg = Release|Win32
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|Win32.Build.0 = Release|Win32
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|x64.ActiveCfg = Release|Win32
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|x64.Build.0 = Release|Win32
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|x64 Setup.ActiveCfg = Release|Win32
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|x64 Setup.Build.0 = Release|Win32
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|x86 Setup.ActiveCfg = Release|Win32
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.All|x86 Setup.Build.0 = Release|Win32
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|Win32.Build.0 = Debug|Win32
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|x64.ActiveCfg = Debug|x64
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|x64.Build.0 = Debug|x64
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|Win32.ActiveCfg = Release|Win32
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|Win32.Build.0 = Release|Win32
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|x64.ActiveCfg = Release|x64
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|x64.Build.0 = Release|x64
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|x64 Setup.ActiveCfg = Release|x64
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {BA599D0A-4310-4505-91DA-6A6447B3E289}.All|Win32.ActiveCfg = Release|Win32
++ {BA599D0A-4310-4505-91DA-6A6447B3E289}.All|x64.ActiveCfg = Release|Win32
++ {BA599D0A-4310-4505-91DA-6A6447B3E289}.All|x64 Setup.ActiveCfg = Release|Win32
++ {BA599D0A-4310-4505-91DA-6A6447B3E289}.All|x86 Setup.ActiveCfg = Release|Win32
++ {BA599D0A-4310-4505-91DA-6A6447B3E289}.Debug|Win32.ActiveCfg = Debug|Win32
++ {BA599D0A-4310-4505-91DA-6A6447B3E289}.Debug|x64.ActiveCfg = Debug|x64
++ {BA599D0A-4310-4505-91DA-6A6447B3E289}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {BA599D0A-4310-4505-91DA-6A6447B3E289}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {BA599D0A-4310-4505-91DA-6A6447B3E289}.Release|Win32.ActiveCfg = Release|Win32
++ {BA599D0A-4310-4505-91DA-6A6447B3E289}.Release|x64.ActiveCfg = Release|x64
++ {BA599D0A-4310-4505-91DA-6A6447B3E289}.Release|x64 Setup.ActiveCfg = Release|x64
++ {BA599D0A-4310-4505-91DA-6A6447B3E289}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.All|Win32.ActiveCfg = Release|Win32
++ {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.All|x64.ActiveCfg = Release|Win32
++ {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.All|x64 Setup.ActiveCfg = Release|Win32
++ {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.All|x86 Setup.ActiveCfg = Release|Win32
++ {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Debug|Win32.ActiveCfg = Debug|Win32
++ {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Debug|x64.ActiveCfg = Debug|x64
++ {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Release|Win32.ActiveCfg = Release|Win32
++ {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Release|x64.ActiveCfg = Release|x64
++ {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Release|x64 Setup.ActiveCfg = Release|x64
++ {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.All|Win32.ActiveCfg = Release|x64
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.All|x64.ActiveCfg = Release|x64
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.All|x64.Build.0 = Release|x64
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.All|x64 Setup.ActiveCfg = Release|x64
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.All|x64 Setup.Build.0 = Release|x64
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.All|x86 Setup.ActiveCfg = Release|x64
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Debug|Win32.ActiveCfg = Debug|Win32
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Debug|Win32.Build.0 = Debug|Win32
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Debug|x64.ActiveCfg = Debug|x64
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Debug|x64.Build.0 = Debug|x64
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Release|Win32.ActiveCfg = Release|Win32
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Release|Win32.Build.0 = Release|Win32
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Release|x64.ActiveCfg = Release|x64
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Release|x64.Build.0 = Release|x64
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Release|x64 Setup.ActiveCfg = Release|x64
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|Win32.ActiveCfg = Release|x64
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|Win32.Build.0 = Release|x64
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|x64.ActiveCfg = Release|x64
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|x64.Build.0 = Release|x64
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|x64 Setup.ActiveCfg = Release|x64
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|x64 Setup.Build.0 = Release|x64
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|x86 Setup.ActiveCfg = Release|x64
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.All|x86 Setup.Build.0 = Release|x64
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Debug|Win32.ActiveCfg = Debug|Win32
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Debug|Win32.Build.0 = Debug|Win32
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Debug|x64.ActiveCfg = Debug|x64
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Debug|x64.Build.0 = Debug|x64
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Release|Win32.ActiveCfg = Release|Win32
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Release|Win32.Build.0 = Release|Win32
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Release|x64.ActiveCfg = Release|x64
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Release|x64.Build.0 = Release|x64
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Release|x64 Setup.ActiveCfg = Release|x64
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.All|Win32.ActiveCfg = Release|x64
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.All|x64.ActiveCfg = Release|x64
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.All|x64 Setup.ActiveCfg = Release|x64
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.All|x86 Setup.ActiveCfg = Release|x64
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.Debug|Win32.ActiveCfg = Debug|Win32
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.Debug|Win32.Build.0 = Debug|Win32
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.Debug|x64.ActiveCfg = Debug|x64
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.Debug|x64.Build.0 = Debug|x64
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|Win32.ActiveCfg = Release|Win32
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|Win32.Build.0 = Release|Win32
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|x64.ActiveCfg = Release|x64
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|x64.Build.0 = Release|x64
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|x64 Setup.ActiveCfg = Release|x64
++ {432DB165-1EB2-4781-A9C0-71E62610B20A}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.All|Win32.ActiveCfg = Release|Win32
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.All|Win32.Build.0 = Release|Win32
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.All|x64.ActiveCfg = Release|Win32
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.All|x64 Setup.ActiveCfg = Release|Win32
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.All|x86 Setup.ActiveCfg = Release|Win32
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.All|x86 Setup.Build.0 = Release|Win32
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Win32.ActiveCfg = Debug|Win32
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Win32.Build.0 = Debug|Win32
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|x64.ActiveCfg = Debug|x64
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|x64.Build.0 = Debug|x64
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Win32.ActiveCfg = Release|Win32
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Win32.Build.0 = Release|Win32
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|x64.ActiveCfg = Release|x64
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|x64.Build.0 = Release|x64
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|x64 Setup.ActiveCfg = Release|x64
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.All|Win32.ActiveCfg = Release|x64
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.All|x64.ActiveCfg = Release|x64
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.All|x64.Build.0 = Release|x64
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.All|x64 Setup.ActiveCfg = Release|x64
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.All|x64 Setup.Build.0 = Release|x64
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.All|x86 Setup.ActiveCfg = Release|x64
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Debug|Win32.Build.0 = Debug|Win32
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Debug|x64.ActiveCfg = Debug|x64
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Debug|x64.Build.0 = Debug|x64
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|Win32.ActiveCfg = Release|Win32
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|Win32.Build.0 = Release|Win32
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|x64.ActiveCfg = Release|x64
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|x64.Build.0 = Release|x64
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|x64 Setup.ActiveCfg = Release|x64
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.All|Win32.ActiveCfg = Release|Win32
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.All|Win32.Build.0 = Release|Win32
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.All|x64.ActiveCfg = Release|Win32
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.All|x64 Setup.ActiveCfg = Release|Win32
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.All|x86 Setup.ActiveCfg = Release|Win32
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.All|x86 Setup.Build.0 = Release|Win32
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Win32.ActiveCfg = Debug|Win32
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Win32.Build.0 = Debug|Win32
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|x64.ActiveCfg = Debug|x64
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|x64.Build.0 = Debug|x64
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Win32.ActiveCfg = Release|Win32
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Win32.Build.0 = Release|Win32
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|x64.ActiveCfg = Release|x64
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|x64.Build.0 = Release|x64
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|x64 Setup.ActiveCfg = Release|x64
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.All|Win32.ActiveCfg = Release|Win32
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.All|Win32.Build.0 = Release|Win32
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.All|x64.ActiveCfg = Release|Win32
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.All|x64 Setup.ActiveCfg = Release|Win32
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.All|x86 Setup.ActiveCfg = Release|Win32
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.All|x86 Setup.Build.0 = Release|Win32
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|Win32.ActiveCfg = Debug|Win32
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|Win32.Build.0 = Debug|Win32
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|x64.ActiveCfg = Debug|x64
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|x64.Build.0 = Debug|x64
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|Win32.ActiveCfg = Release|Win32
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|Win32.Build.0 = Release|Win32
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|x64.ActiveCfg = Release|x64
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|x64.Build.0 = Release|x64
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|x64 Setup.ActiveCfg = Release|x64
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.All|Win32.ActiveCfg = Release|Win32
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.All|Win32.Build.0 = Release|Win32
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.All|x64.ActiveCfg = Release|Win32
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.All|x64 Setup.ActiveCfg = Release|Win32
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.All|x86 Setup.ActiveCfg = Release|Win32
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.All|x86 Setup.Build.0 = Release|Win32
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|Win32.ActiveCfg = Debug|Win32
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|Win32.Build.0 = Debug|Win32
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|x64.ActiveCfg = Debug|x64
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|x64.Build.0 = Debug|x64
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|Win32.ActiveCfg = Release|Win32
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|Win32.Build.0 = Release|Win32
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|x64.ActiveCfg = Release|x64
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|x64.Build.0 = Release|x64
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|x64 Setup.ActiveCfg = Release|x64
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.All|Win32.ActiveCfg = Release|Win32
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.All|Win32.Build.0 = Release|Win32
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.All|x64.ActiveCfg = Release|Win32
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.All|x64 Setup.ActiveCfg = Release|Win32
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.All|x86 Setup.ActiveCfg = Release|Win32
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.All|x86 Setup.Build.0 = Release|Win32
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|Win32.ActiveCfg = Debug|Win32
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|Win32.Build.0 = Debug|Win32
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|x64.ActiveCfg = Debug|x64
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|x64.Build.0 = Debug|x64
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|Win32.ActiveCfg = Release|Win32
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|Win32.Build.0 = Release|Win32
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|x64.ActiveCfg = Release|x64
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|x64.Build.0 = Release|x64
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|x64 Setup.ActiveCfg = Release|x64
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.All|Win32.ActiveCfg = Release|Win32
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.All|Win32.Build.0 = Release|Win32
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.All|x64.ActiveCfg = Release|Win32
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.All|x64 Setup.ActiveCfg = Release|Win32
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.All|x86 Setup.ActiveCfg = Release|Win32
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.All|x86 Setup.Build.0 = Release|Win32
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|Win32.ActiveCfg = Debug|Win32
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|Win32.Build.0 = Debug|Win32
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|x64.ActiveCfg = Debug|x64
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|x64.Build.0 = Debug|x64
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|Win32.ActiveCfg = Release|Win32
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|Win32.Build.0 = Release|Win32
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|x64.ActiveCfg = Release|x64
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|x64.Build.0 = Release|x64
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|x64 Setup.ActiveCfg = Release|x64
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.All|Win32.ActiveCfg = Release|Win32
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.All|Win32.Build.0 = Release|Win32
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.All|x64.ActiveCfg = Release|Win32
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.All|x64 Setup.ActiveCfg = Release|Win32
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.All|x86 Setup.ActiveCfg = Release|Win32
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.All|x86 Setup.Build.0 = Release|Win32
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|Win32.ActiveCfg = Debug|Win32
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|Win32.Build.0 = Debug|Win32
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|x64.ActiveCfg = Debug|x64
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|x64.Build.0 = Debug|x64
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|Win32.ActiveCfg = Release|Win32
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|Win32.Build.0 = Release|Win32
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|x64.ActiveCfg = Release|x64
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|x64.Build.0 = Release|x64
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|x64 Setup.ActiveCfg = Release|x64
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.All|Win32.ActiveCfg = Release|Win32
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.All|Win32.Build.0 = Release|Win32
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.All|x64.ActiveCfg = Release|Win32
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.All|x64 Setup.ActiveCfg = Release|Win32
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.All|x86 Setup.ActiveCfg = Release|Win32
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.All|x86 Setup.Build.0 = Release|Win32
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|Win32.ActiveCfg = Debug|Win32
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|Win32.Build.0 = Debug|Win32
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|x64.ActiveCfg = Debug|x64
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|x64.Build.0 = Debug|x64
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|Win32.ActiveCfg = Release|Win32
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|Win32.Build.0 = Release|Win32
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|x64.ActiveCfg = Release|x64
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|x64.Build.0 = Release|x64
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|x64 Setup.ActiveCfg = Release|x64
++ {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.All|Win32.ActiveCfg = Release|Win32
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.All|Win32.Build.0 = Release|Win32
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.All|x64.ActiveCfg = Release|Win32
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.All|x64 Setup.ActiveCfg = Release|Win32
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.All|x86 Setup.ActiveCfg = Release|Win32
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.All|x86 Setup.Build.0 = Release|Win32
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|Win32.ActiveCfg = Debug|Win32
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|Win32.Build.0 = Debug|Win32
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|x64.ActiveCfg = Debug|x64
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|x64.Build.0 = Debug|x64
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|Win32.ActiveCfg = Release|Win32
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|Win32.Build.0 = Release|Win32
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|x64.ActiveCfg = Release|x64
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|x64.Build.0 = Release|x64
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|x64 Setup.ActiveCfg = Release|x64
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.All|Win32.ActiveCfg = Release|Win32
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.All|Win32.Build.0 = Release|Win32
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.All|x64.ActiveCfg = Release|Win32
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.All|x64 Setup.ActiveCfg = Release|Win32
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.All|x86 Setup.ActiveCfg = Release|Win32
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.All|x86 Setup.Build.0 = Release|Win32
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|Win32.ActiveCfg = Debug|Win32
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|Win32.Build.0 = Debug|Win32
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|x64.ActiveCfg = Debug|x64
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|x64.Build.0 = Debug|x64
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|Win32.ActiveCfg = Release|Win32
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|Win32.Build.0 = Release|Win32
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|x64.ActiveCfg = Release|x64
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|x64.Build.0 = Release|x64
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|x64 Setup.ActiveCfg = Release|x64
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.All|Win32.ActiveCfg = Release|x64
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.All|x64.ActiveCfg = Release|x64
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.All|x64.Build.0 = Release|x64
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.All|x64 Setup.ActiveCfg = Release|x64
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.All|x64 Setup.Build.0 = Release|x64
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.All|x86 Setup.ActiveCfg = Release|x64
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|Win32.Build.0 = Debug|Win32
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|x64.ActiveCfg = Debug|x64
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|x64.Build.0 = Debug|x64
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|Win32.ActiveCfg = Release|Win32
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|Win32.Build.0 = Release|Win32
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|x64.ActiveCfg = Release|x64
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|x64.Build.0 = Release|x64
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|x64 Setup.ActiveCfg = Release|x64
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.All|Win32.ActiveCfg = Release|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.All|Win32.Build.0 = Release|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.All|x64.ActiveCfg = Release|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.All|x64 Setup.ActiveCfg = Release|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.All|x86 Setup.ActiveCfg = Release|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.All|x86 Setup.Build.0 = Release|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Debug|Win32.ActiveCfg = Debug|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Debug|Win32.Build.0 = Debug|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Debug|x64.ActiveCfg = Debug|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Debug|x64.Build.0 = Debug|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Debug|x64 Setup.ActiveCfg = Debug|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Release|Win32.ActiveCfg = Release|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Release|Win32.Build.0 = Release|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Release|x64.ActiveCfg = Release|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Release|x64.Build.0 = Release|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Release|x64 Setup.ActiveCfg = Release|Win32
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.All|Win32.ActiveCfg = Release|x64
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.All|x64.ActiveCfg = Release|x64
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.All|x64.Build.0 = Release|x64
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.All|x64 Setup.ActiveCfg = Release|x64
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.All|x64 Setup.Build.0 = Release|x64
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.All|x86 Setup.ActiveCfg = Release|x64
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Debug|Win32.ActiveCfg = Debug|Win32
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Debug|Win32.Build.0 = Debug|Win32
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Debug|x64.ActiveCfg = Debug|x64
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Debug|x64.Build.0 = Debug|x64
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Release|Win32.ActiveCfg = Release|Win32
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Release|Win32.Build.0 = Release|Win32
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Release|x64.ActiveCfg = Release|x64
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Release|x64.Build.0 = Release|x64
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Release|x64 Setup.ActiveCfg = Release|x64
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.All|Win32.ActiveCfg = Release Passthrough|x64
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.All|x64.ActiveCfg = Release Passthrough|x64
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.All|x64.Build.0 = Release Passthrough|x64
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.All|x64 Setup.ActiveCfg = Release Passthrough|x64
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.All|x64 Setup.Build.0 = Release Passthrough|x64
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.All|x86 Setup.ActiveCfg = Release Passthrough|x64
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Debug|Win32.ActiveCfg = Debug|Win32
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Debug|Win32.Build.0 = Debug|Win32
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Debug|x64.ActiveCfg = Debug|x64
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Debug|x64.Build.0 = Debug|x64
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Release|Win32.ActiveCfg = Release|Win32
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Release|Win32.Build.0 = Release|Win32
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Release|x64.ActiveCfg = Release|x64
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Release|x64.Build.0 = Release|x64
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Release|x64 Setup.ActiveCfg = Release|x64
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.All|Win32.ActiveCfg = Release|Win32
++ {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.All|Win32.Build.0 = Release|Win32
++ {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.All|x64.ActiveCfg = Release|Win32
++ {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.All|x64 Setup.ActiveCfg = Release|Win32
++ {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.All|x86 Setup.ActiveCfg = Release|Win32
++ {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.All|x86 Setup.Build.0 = Release|Win32
++ {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Debug|Win32.ActiveCfg = Debug|Win32
++ {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Debug|x64.ActiveCfg = Debug|Win32
++ {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Debug|x64 Setup.ActiveCfg = Debug|Win32
++ {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Release|Win32.ActiveCfg = Release|Win32
++ {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Release|x64.ActiveCfg = Release|Win32
++ {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Release|x64 Setup.ActiveCfg = Release|Win32
++ {7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.All|Win32.ActiveCfg = Release|x64
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.All|x64.ActiveCfg = Release|x64
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.All|x64.Build.0 = Release|x64
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.All|x64 Setup.ActiveCfg = Release|x64
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.All|x64 Setup.Build.0 = Release|x64
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.All|x86 Setup.ActiveCfg = Release|x64
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|Win32.ActiveCfg = Debug|Win32
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|Win32.Build.0 = Debug|Win32
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|x64.ActiveCfg = Debug|x64
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|x64.Build.0 = Debug|x64
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|Win32.ActiveCfg = Release|Win32
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|Win32.Build.0 = Release|Win32
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|x64.ActiveCfg = Release|x64
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|x64.Build.0 = Release|x64
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|x64 Setup.ActiveCfg = Release|x64
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.All|Win32.ActiveCfg = Release|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.All|Win32.Build.0 = Release|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.All|x64.ActiveCfg = Release|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.All|x64 Setup.ActiveCfg = Release|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.All|x86 Setup.ActiveCfg = Release|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.All|x86 Setup.Build.0 = Release|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|Win32.ActiveCfg = Debug|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|Win32.Build.0 = Debug|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|x64.ActiveCfg = Debug|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|x64.Build.0 = Debug|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|x64 Setup.ActiveCfg = Debug|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|Win32.ActiveCfg = Release|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|Win32.Build.0 = Release|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|x64.ActiveCfg = Release|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|x64.Build.0 = Release|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|x64 Setup.ActiveCfg = Release|Win32
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.All|Win32.ActiveCfg = Release|x64
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.All|x64.ActiveCfg = Release|x64
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.All|x64.Build.0 = Release|x64
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.All|x64 Setup.ActiveCfg = Release|x64
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.All|x64 Setup.Build.0 = Release|x64
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.All|x86 Setup.ActiveCfg = Release|x64
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|Win32.ActiveCfg = Debug|Win32
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|Win32.Build.0 = Debug|Win32
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|x64.ActiveCfg = Debug|x64
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|x64.Build.0 = Debug|x64
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|Win32.ActiveCfg = Release|Win32
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|Win32.Build.0 = Release|Win32
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|x64.ActiveCfg = Release|x64
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|x64.Build.0 = Release|x64
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|x64 Setup.ActiveCfg = Release|x64
++ {9778F1C0-09BC-4698-8EBC-BD982247209A}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.All|Win32.ActiveCfg = Release|x64
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.All|x64.ActiveCfg = Release|x64
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.All|x64.Build.0 = Release|x64
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.All|x64 Setup.ActiveCfg = Release|x64
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.All|x64 Setup.Build.0 = Release|x64
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.All|x86 Setup.ActiveCfg = Release|x64
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Debug|Win32.ActiveCfg = Debug|Win32
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Debug|Win32.Build.0 = Debug|Win32
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Debug|x64.ActiveCfg = Debug|x64
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Debug|x64.Build.0 = Debug|x64
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Release|Win32.ActiveCfg = Release|Win32
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Release|Win32.Build.0 = Release|Win32
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Release|x64.ActiveCfg = Release|x64
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Release|x64.Build.0 = Release|x64
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Release|x64 Setup.ActiveCfg = Release|x64
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.All|Win32.ActiveCfg = Release|Win32
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.All|Win32.Build.0 = Release|Win32
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.All|x64.ActiveCfg = Release|Win32
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.All|x64 Setup.ActiveCfg = Release|Win32
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.All|x86 Setup.ActiveCfg = Release|Win32
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.All|x86 Setup.Build.0 = Release|Win32
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Debug|Win32.ActiveCfg = Debug|Win32
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Debug|Win32.Build.0 = Debug|Win32
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Debug|x64.ActiveCfg = Debug|x64
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Debug|x64.Build.0 = Debug|x64
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Release|Win32.ActiveCfg = Release|Win32
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Release|Win32.Build.0 = Release|Win32
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Release|x64.ActiveCfg = Release|x64
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Release|x64.Build.0 = Release|x64
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Release|x64 Setup.ActiveCfg = Release|x64
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.All|Win32.ActiveCfg = Release|Win32
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.All|Win32.Build.0 = Release|Win32
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.All|x64.ActiveCfg = Release|Win32
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.All|x64 Setup.ActiveCfg = Release|Win32
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.All|x86 Setup.ActiveCfg = Release|Win32
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.All|x86 Setup.Build.0 = Release|Win32
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Debug|Win32.ActiveCfg = Debug|Win32
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Debug|Win32.Build.0 = Debug|Win32
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Debug|x64.ActiveCfg = Debug|x64
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Debug|x64.Build.0 = Debug|x64
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Release|Win32.ActiveCfg = Release|Win32
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Release|Win32.Build.0 = Release|Win32
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Release|x64.ActiveCfg = Release|x64
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Release|x64.Build.0 = Release|x64
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Release|x64 Setup.ActiveCfg = Release|x64
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.All|Win32.ActiveCfg = Release|x64
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.All|x64.ActiveCfg = Release|x64
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.All|x64.Build.0 = Release|x64
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.All|x64 Setup.ActiveCfg = Release|x64
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.All|x64 Setup.Build.0 = Release|x64
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.All|x86 Setup.ActiveCfg = Release|x64
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Debug|Win32.ActiveCfg = Debug|Win32
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Debug|Win32.Build.0 = Debug|Win32
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Debug|x64.ActiveCfg = Debug|x64
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Debug|x64.Build.0 = Debug|x64
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Release|Win32.ActiveCfg = Release|Win32
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Release|Win32.Build.0 = Release|Win32
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Release|x64.ActiveCfg = Release|x64
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Release|x64.Build.0 = Release|x64
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Release|x64 Setup.ActiveCfg = Release|x64
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.All|Win32.ActiveCfg = Release|x64
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.All|x64.ActiveCfg = Release|x64
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.All|x64.Build.0 = Release|x64
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.All|x64 Setup.ActiveCfg = Release|x64
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.All|x64 Setup.Build.0 = Release|x64
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.All|x86 Setup.ActiveCfg = Release|x64
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Debug|Win32.ActiveCfg = Debug|Win32
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Debug|Win32.Build.0 = Debug|Win32
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Debug|x64.ActiveCfg = Debug|x64
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Debug|x64.Build.0 = Debug|x64
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Release|Win32.ActiveCfg = Release|Win32
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Release|Win32.Build.0 = Release|Win32
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Release|x64.ActiveCfg = Release|x64
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Release|x64.Build.0 = Release|x64
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Release|x64 Setup.ActiveCfg = Release|x64
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.All|Win32.ActiveCfg = Release|x64
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.All|x64.ActiveCfg = Release|x64
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.All|x64.Build.0 = Release|x64
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.All|x64 Setup.ActiveCfg = Release|x64
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.All|x64 Setup.Build.0 = Release|x64
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.All|x86 Setup.ActiveCfg = Release|x64
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Debug|Win32.Build.0 = Debug|Win32
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Debug|x64.ActiveCfg = Debug|x64
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Debug|x64.Build.0 = Debug|x64
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Release|Win32.ActiveCfg = Release|Win32
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Release|Win32.Build.0 = Release|Win32
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Release|x64.ActiveCfg = Release|x64
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Release|x64.Build.0 = Release|x64
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Release|x64 Setup.ActiveCfg = Release|x64
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.All|Win32.ActiveCfg = Release|x64
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.All|x64.ActiveCfg = Release|x64
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.All|x64.Build.0 = Release|x64
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.All|x64 Setup.ActiveCfg = Release|x64
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.All|x64 Setup.Build.0 = Release|x64
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.All|x86 Setup.ActiveCfg = Release|x64
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Debug|Win32.ActiveCfg = Debug|Win32
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Debug|Win32.Build.0 = Debug|Win32
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Debug|x64.ActiveCfg = Debug|x64
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Debug|x64.Build.0 = Debug|x64
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Release|Win32.ActiveCfg = Release|Win32
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Release|Win32.Build.0 = Release|Win32
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Release|x64.ActiveCfg = Release|x64
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Release|x64.Build.0 = Release|x64
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Release|x64 Setup.ActiveCfg = Release|x64
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.All|Win32.ActiveCfg = Release|x64
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.All|x64.ActiveCfg = Release|x64
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.All|x64.Build.0 = Release|x64
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.All|x64 Setup.ActiveCfg = Release|x64
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.All|x64 Setup.Build.0 = Release|x64
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.All|x86 Setup.ActiveCfg = Release|x64
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Debug|Win32.ActiveCfg = Debug|Win32
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Debug|Win32.Build.0 = Debug|Win32
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Debug|x64.ActiveCfg = Debug|x64
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Debug|x64.Build.0 = Debug|x64
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Release|Win32.ActiveCfg = Release|Win32
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Release|Win32.Build.0 = Release|Win32
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Release|x64.ActiveCfg = Release|x64
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Release|x64.Build.0 = Release|x64
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Release|x64 Setup.ActiveCfg = Release|x64
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.All|Win32.ActiveCfg = Release|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.All|Win32.Build.0 = Release|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.All|x64.ActiveCfg = Release|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.All|x64 Setup.ActiveCfg = Release|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.All|x86 Setup.ActiveCfg = Release|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.All|x86 Setup.Build.0 = Release|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.Debug|Win32.Build.0 = Debug|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.Debug|x64.ActiveCfg = Debug|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.Debug|x64.Build.0 = Debug|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.Debug|x64 Setup.ActiveCfg = Debug|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.Release|Win32.ActiveCfg = Release|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.Release|Win32.Build.0 = Release|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.Release|x64.ActiveCfg = Release|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.Release|x64.Build.0 = Release|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.Release|x64 Setup.ActiveCfg = Release|Win32
++ {D578E676-7EC8-4548-BD8B-845C635F14AD}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.All|Win32.ActiveCfg = Release|x64
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.All|x64.ActiveCfg = Release|x64
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.All|x64.Build.0 = Release|x64
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.All|x64 Setup.ActiveCfg = Release|x64
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.All|x64 Setup.Build.0 = Release|x64
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.All|x86 Setup.ActiveCfg = Release|x64
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|Win32.ActiveCfg = Debug|Win32
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|Win32.Build.0 = Debug|Win32
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|x64.ActiveCfg = Debug|x64
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|x64.Build.0 = Debug|x64
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|Win32.ActiveCfg = Release|Win32
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|Win32.Build.0 = Release|Win32
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|x64.ActiveCfg = Release|x64
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|x64.Build.0 = Release|x64
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|x64 Setup.ActiveCfg = Release|x64
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.All|Win32.ActiveCfg = Release|x64
++ {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.All|x64.ActiveCfg = Release|x64
++ {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.All|x64.Build.0 = Release|x64
++ {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.All|x64 Setup.ActiveCfg = Release|x64
++ {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.All|x64 Setup.Build.0 = Release|x64
++ {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.All|x86 Setup.ActiveCfg = Release|x64
++ {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.Debug|Win32.ActiveCfg = Debug|Win32
++ {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.Debug|Win32.Build.0 = Debug|Win32
++ {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.Debug|x64.ActiveCfg = Debug|x64
++ {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.Debug|x64.Build.0 = Debug|x64
++ {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.Release|Win32.ActiveCfg = Release|Win32
++ {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.Release|Win32.Build.0 = Release|Win32
++ {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.Release|x64.ActiveCfg = Release|x64
++ {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.Release|x64.Build.0 = Release|x64
++ {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.Release|x64 Setup.ActiveCfg = Release|x64
++ {B889A18E-70A7-44B5-B2C9-47798D4F43B3}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-7338E2514666}.All|Win32.ActiveCfg = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-7338E2514666}.All|Win32.Build.0 = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-7338E2514666}.All|x64.ActiveCfg = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-7338E2514666}.All|x64 Setup.ActiveCfg = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-7338E2514666}.All|x86 Setup.ActiveCfg = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-7338E2514666}.All|x86 Setup.Build.0 = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-7338E2514666}.Debug|Win32.ActiveCfg = Debug|Win32
++ {05C9FB27-480E-4D53-B3B7-7338E2514666}.Debug|x64.ActiveCfg = Debug|x64
++ {05C9FB27-480E-4D53-B3B7-7338E2514666}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {05C9FB27-480E-4D53-B3B7-7338E2514666}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {05C9FB27-480E-4D53-B3B7-7338E2514666}.Release|Win32.ActiveCfg = Release|Win32
++ {05C9FB27-480E-4D53-B3B7-7338E2514666}.Release|x64.ActiveCfg = Release|x64
++ {05C9FB27-480E-4D53-B3B7-7338E2514666}.Release|x64 Setup.ActiveCfg = Release|x64
++ {05C9FB27-480E-4D53-B3B7-7338E2514666}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.All|Win32.ActiveCfg = Release|x64
++ {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.All|x64.ActiveCfg = Release|x64
++ {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.All|x64.Build.0 = Release|x64
++ {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.All|x64 Setup.ActiveCfg = Release|x64
++ {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.All|x64 Setup.Build.0 = Release|x64
++ {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.All|x86 Setup.ActiveCfg = Release|x64
++ {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.Debug|Win32.ActiveCfg = Debug|Win32
++ {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.Debug|Win32.Build.0 = Debug|Win32
++ {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.Debug|x64.ActiveCfg = Debug|x64
++ {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.Debug|x64.Build.0 = Debug|x64
++ {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.Release|Win32.ActiveCfg = Release|Win32
++ {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.Release|Win32.Build.0 = Release|Win32
++ {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.Release|x64.ActiveCfg = Release|x64
++ {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.Release|x64.Build.0 = Release|x64
++ {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.Release|x64 Setup.ActiveCfg = Release|x64
++ {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {47213370-B933-487D-9F45-BCA26D7E2B6F}.All|Win32.ActiveCfg = Release|x86
++ {47213370-B933-487D-9F45-BCA26D7E2B6F}.All|x64.ActiveCfg = Release|x86
++ {47213370-B933-487D-9F45-BCA26D7E2B6F}.All|x64 Setup.ActiveCfg = Release|x86
++ {47213370-B933-487D-9F45-BCA26D7E2B6F}.All|x86 Setup.ActiveCfg = Release|x86
++ {47213370-B933-487D-9F45-BCA26D7E2B6F}.Debug|Win32.ActiveCfg = Debug|x86
++ {47213370-B933-487D-9F45-BCA26D7E2B6F}.Debug|x64.ActiveCfg = Debug|x64
++ {47213370-B933-487D-9F45-BCA26D7E2B6F}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {47213370-B933-487D-9F45-BCA26D7E2B6F}.Debug|x64 Setup.Build.0 = Debug|x64
++ {47213370-B933-487D-9F45-BCA26D7E2B6F}.Debug|x86 Setup.ActiveCfg = Debug|x86
++ {47213370-B933-487D-9F45-BCA26D7E2B6F}.Debug|x86 Setup.Build.0 = Debug|x86
++ {47213370-B933-487D-9F45-BCA26D7E2B6F}.Release|Win32.ActiveCfg = Release|x86
++ {47213370-B933-487D-9F45-BCA26D7E2B6F}.Release|x64.ActiveCfg = Release|x64
++ {47213370-B933-487D-9F45-BCA26D7E2B6F}.Release|x64 Setup.ActiveCfg = Release|x64
++ {47213370-B933-487D-9F45-BCA26D7E2B6F}.Release|x64 Setup.Build.0 = Release|x64
++ {47213370-B933-487D-9F45-BCA26D7E2B6F}.Release|x86 Setup.ActiveCfg = Release|x86
++ {47213370-B933-487D-9F45-BCA26D7E2B6F}.Release|x86 Setup.Build.0 = Release|x86
++ {7C22BDFF-CC09-400C-8A09-660733980028}.All|Win32.ActiveCfg = Release|x64
++ {7C22BDFF-CC09-400C-8A09-660733980028}.All|x64.ActiveCfg = Release|x64
++ {7C22BDFF-CC09-400C-8A09-660733980028}.All|x64.Build.0 = Release|x64
++ {7C22BDFF-CC09-400C-8A09-660733980028}.All|x64 Setup.ActiveCfg = Release|x64
++ {7C22BDFF-CC09-400C-8A09-660733980028}.All|x86 Setup.ActiveCfg = Release|x64
++ {7C22BDFF-CC09-400C-8A09-660733980028}.Debug|Win32.ActiveCfg = Debug|Win32
++ {7C22BDFF-CC09-400C-8A09-660733980028}.Debug|Win32.Build.0 = Debug|Win32
++ {7C22BDFF-CC09-400C-8A09-660733980028}.Debug|x64.ActiveCfg = Debug|x64
++ {7C22BDFF-CC09-400C-8A09-660733980028}.Debug|x64.Build.0 = Debug|x64
++ {7C22BDFF-CC09-400C-8A09-660733980028}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {7C22BDFF-CC09-400C-8A09-660733980028}.Debug|x86 Setup.ActiveCfg = Debug|x64
++ {7C22BDFF-CC09-400C-8A09-660733980028}.Release|Win32.ActiveCfg = Release|Win32
++ {7C22BDFF-CC09-400C-8A09-660733980028}.Release|Win32.Build.0 = Release|Win32
++ {7C22BDFF-CC09-400C-8A09-660733980028}.Release|x64.ActiveCfg = Release|x64
++ {7C22BDFF-CC09-400C-8A09-660733980028}.Release|x64.Build.0 = Release|x64
++ {7C22BDFF-CC09-400C-8A09-660733980028}.Release|x64 Setup.ActiveCfg = Release|x64
++ {7C22BDFF-CC09-400C-8A09-660733980028}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.All|Win32.ActiveCfg = Release|x64
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.All|x64.ActiveCfg = Release|x64
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.All|x64.Build.0 = Release|x64
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.All|x64 Setup.ActiveCfg = Release|x64
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.All|x86 Setup.ActiveCfg = Release|x64
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.Debug|Win32.ActiveCfg = Debug|Win32
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.Debug|Win32.Build.0 = Debug|Win32
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.Debug|x64.ActiveCfg = Debug|x64
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.Debug|x64.Build.0 = Debug|x64
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.Debug|x86 Setup.ActiveCfg = Debug|x64
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.Release|Win32.ActiveCfg = Release|Win32
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.Release|Win32.Build.0 = Release|Win32
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.Release|x64.ActiveCfg = Release|x64
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.Release|x64.Build.0 = Release|x64
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.Release|x64 Setup.ActiveCfg = Release|x64
++ {23B4D303-79FC-49E0-89E2-2280E7E28940}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.All|Win32.ActiveCfg = Release|x64
++ {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.All|x64.ActiveCfg = Release|x64
++ {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.All|x64.Build.0 = Release|x64
++ {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.All|x64 Setup.ActiveCfg = Release|x64
++ {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.All|x86 Setup.ActiveCfg = Release|x64
++ {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Debug|Win32.ActiveCfg = Debug|Win32
++ {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Debug|Win32.Build.0 = Debug|Win32
++ {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Debug|x64.ActiveCfg = Debug|x64
++ {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Debug|x64.Build.0 = Debug|x64
++ {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Debug|x86 Setup.ActiveCfg = Debug|x64
++ {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Release|Win32.ActiveCfg = Release|Win32
++ {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Release|Win32.Build.0 = Release|Win32
++ {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Release|x64.ActiveCfg = Release|x64
++ {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Release|x64.Build.0 = Release|x64
++ {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Release|x64 Setup.ActiveCfg = Release|x64
++ {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {50AAC2CE-BFC9-4912-87CC-C6381850D735}.All|Win32.ActiveCfg = Release|x64
++ {50AAC2CE-BFC9-4912-87CC-C6381850D735}.All|x64.ActiveCfg = Release|x64
++ {50AAC2CE-BFC9-4912-87CC-C6381850D735}.All|x64.Build.0 = Release|x64
++ {50AAC2CE-BFC9-4912-87CC-C6381850D735}.All|x64 Setup.ActiveCfg = Release|x64
++ {50AAC2CE-BFC9-4912-87CC-C6381850D735}.All|x86 Setup.ActiveCfg = Release|x64
++ {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Debug|Win32.ActiveCfg = Debug|Win32
++ {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Debug|Win32.Build.0 = Debug|Win32
++ {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Debug|x64.ActiveCfg = Debug|x64
++ {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Debug|x64.Build.0 = Debug|x64
++ {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Debug|x86 Setup.ActiveCfg = Debug|x64
++ {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Release|Win32.ActiveCfg = Release|Win32
++ {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Release|Win32.Build.0 = Release|Win32
++ {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Release|x64.ActiveCfg = Release|x64
++ {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Release|x64.Build.0 = Release|x64
++ {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Release|x64 Setup.ActiveCfg = Release|x64
++ {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.All|Win32.ActiveCfg = Release|x64
++ {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.All|x64.ActiveCfg = Release|x64
++ {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.All|x64.Build.0 = Release|x64
++ {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.All|x64 Setup.ActiveCfg = Release|x64
++ {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.All|x86 Setup.ActiveCfg = Release|x64
++ {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.Debug|Win32.ActiveCfg = Debug|Win32
++ {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.Debug|Win32.Build.0 = Debug|Win32
++ {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.Debug|x64.ActiveCfg = Debug|x64
++ {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.Debug|x64.Build.0 = Debug|x64
++ {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.Debug|x86 Setup.ActiveCfg = Debug|x64
++ {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.Release|Win32.ActiveCfg = Release|Win32
++ {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.Release|Win32.Build.0 = Release|Win32
++ {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.Release|x64.ActiveCfg = Release|x64
++ {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.Release|x64.Build.0 = Release|x64
++ {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.Release|x64 Setup.ActiveCfg = Release|x64
++ {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.All|Win32.ActiveCfg = Release|x64
++ {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.All|x64.ActiveCfg = Release|x64
++ {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.All|x64.Build.0 = Release|x64
++ {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.All|x64 Setup.ActiveCfg = Release|x64
++ {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.All|x86 Setup.ActiveCfg = Release|x64
++ {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Debug|Win32.ActiveCfg = Debug|Win32
++ {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Debug|Win32.Build.0 = Debug|Win32
++ {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Debug|x64.ActiveCfg = Debug|x64
++ {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Debug|x64.Build.0 = Debug|x64
++ {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Debug|x86 Setup.ActiveCfg = Debug|x64
++ {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Release|Win32.ActiveCfg = Release|Win32
++ {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Release|Win32.Build.0 = Release|Win32
++ {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Release|x64.ActiveCfg = Release|x64
++ {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Release|x64.Build.0 = Release|x64
++ {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Release|x64 Setup.ActiveCfg = Release|x64
++ {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.All|Win32.ActiveCfg = Release|x64
++ {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.All|x64.ActiveCfg = Release|x64
++ {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.All|x64.Build.0 = Release|x64
++ {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.All|x64 Setup.ActiveCfg = Release|x64
++ {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.All|x86 Setup.ActiveCfg = Release|x64
++ {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Debug|Win32.ActiveCfg = Debug|Win32
++ {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Debug|Win32.Build.0 = Debug|Win32
++ {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Debug|x64.ActiveCfg = Debug|x64
++ {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Debug|x64.Build.0 = Debug|x64
++ {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Debug|x86 Setup.ActiveCfg = Debug|x64
++ {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Release|Win32.ActiveCfg = Release|Win32
++ {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Release|Win32.Build.0 = Release|Win32
++ {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Release|x64.ActiveCfg = Release|x64
++ {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Release|x64.Build.0 = Release|x64
++ {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Release|x64 Setup.ActiveCfg = Release|x64
++ {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.All|Win32.ActiveCfg = Release|x64
++ {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.All|x64.ActiveCfg = Release|x64
++ {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.All|x64.Build.0 = Release|x64
++ {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.All|x64 Setup.ActiveCfg = Release|x64
++ {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.All|x86 Setup.ActiveCfg = Release|x64
++ {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Debug|Win32.ActiveCfg = Debug|Win32
++ {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Debug|Win32.Build.0 = Debug|Win32
++ {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Debug|x64.ActiveCfg = Debug|x64
++ {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Debug|x64.Build.0 = Debug|x64
++ {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Debug|x86 Setup.ActiveCfg = Debug|x64
++ {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|Win32.ActiveCfg = Release|Win32
++ {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|Win32.Build.0 = Release|Win32
++ {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|x64.ActiveCfg = Release|x64
++ {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|x64.Build.0 = Release|x64
++ {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|x64 Setup.ActiveCfg = Release|x64
++ {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|Win32.ActiveCfg = Release|x64
++ {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|x64.ActiveCfg = Release|x64
++ {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|x64.Build.0 = Release|x64
++ {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|x64 Setup.ActiveCfg = Release|x64
++ {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|x86 Setup.ActiveCfg = Release|x64
++ {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|Win32.ActiveCfg = Debug|Win32
++ {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|x64.ActiveCfg = Debug|x64
++ {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|x86 Setup.ActiveCfg = Debug|x64
++ {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|Win32.ActiveCfg = Release|Win32
++ {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|x64.ActiveCfg = Release|x64
++ {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|x64 Setup.ActiveCfg = Release|x64
++ {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|x86 Setup.ActiveCfg = Release|x64
++ {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|Win32.ActiveCfg = Release|x64
++ {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|x64.ActiveCfg = Release|x64
++ {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|x64.Build.0 = Release|x64
++ {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|x64 Setup.ActiveCfg = Release|x64
++ {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|x86 Setup.ActiveCfg = Release|x64
++ {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|Win32.ActiveCfg = Debug|Win32
++ {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|x64.ActiveCfg = Debug|x64
++ {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|x86 Setup.ActiveCfg = Debug|x64
++ {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|Win32.ActiveCfg = Release|Win32
++ {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|x64.ActiveCfg = Release|x64
++ {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|x64 Setup.ActiveCfg = Release|x64
++ {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|x86 Setup.ActiveCfg = Release|x64
++ {C13CC324-0032-4492-9A30-310A6BD64FF5}.All|Win32.ActiveCfg = Release|Win32
++ {C13CC324-0032-4492-9A30-310A6BD64FF5}.All|Win32.Build.0 = Release|Win32
++ {C13CC324-0032-4492-9A30-310A6BD64FF5}.All|x64.ActiveCfg = Release|Win32
++ {C13CC324-0032-4492-9A30-310A6BD64FF5}.All|x64 Setup.ActiveCfg = Release|Win32
++ {C13CC324-0032-4492-9A30-310A6BD64FF5}.All|x86 Setup.ActiveCfg = Release|Win32
++ {C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|Win32.ActiveCfg = Debug|Win32
++ {C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|Win32.Build.0 = Debug|Win32
++ {C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|x64.ActiveCfg = Debug|x64
++ {C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|x64.Build.0 = Debug|x64
++ {C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|x64 Setup.ActiveCfg = Debug|Win32
++ {C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|Win32.ActiveCfg = Release|Win32
++ {C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|Win32.Build.0 = Release|Win32
++ {C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|x64.ActiveCfg = Release|x64
++ {C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|x64.Build.0 = Release|x64
++ {C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|x64 Setup.ActiveCfg = Release|Win32
++ {C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.All|Win32.ActiveCfg = Release|x64
++ {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.All|x64.ActiveCfg = Release|x64
++ {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.All|x64.Build.0 = Release|x64
++ {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.All|x64 Setup.ActiveCfg = Release|x64
++ {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.All|x86 Setup.ActiveCfg = Release|x64
++ {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.Debug|Win32.ActiveCfg = Debug|Win32
++ {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.Debug|Win32.Build.0 = Debug|Win32
++ {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.Debug|x64.ActiveCfg = Debug|x64
++ {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.Debug|x64.Build.0 = Debug|x64
++ {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.Debug|x86 Setup.ActiveCfg = Debug|x64
++ {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.Release|Win32.ActiveCfg = Release|Win32
++ {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.Release|Win32.Build.0 = Release|Win32
++ {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.Release|x64.ActiveCfg = Release|x64
++ {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.Release|x64.Build.0 = Release|x64
++ {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.Release|x64 Setup.ActiveCfg = Release|x64
++ {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.Release|x86 Setup.ActiveCfg = Release|x64
++ {652AD5F7-8488-489F-AAD0-7FBE064703B6}.All|Win32.ActiveCfg = Release|Win32
++ {652AD5F7-8488-489F-AAD0-7FBE064703B6}.All|Win32.Build.0 = Release|Win32
++ {652AD5F7-8488-489F-AAD0-7FBE064703B6}.All|x64.ActiveCfg = Release|Win32
++ {652AD5F7-8488-489F-AAD0-7FBE064703B6}.All|x64 Setup.ActiveCfg = Release|Win32
++ {652AD5F7-8488-489F-AAD0-7FBE064703B6}.All|x86 Setup.ActiveCfg = Release|Win32
++ {652AD5F7-8488-489F-AAD0-7FBE064703B6}.Debug|Win32.ActiveCfg = Debug|Win32
++ {652AD5F7-8488-489F-AAD0-7FBE064703B6}.Debug|Win32.Build.0 = Debug|Win32
++ {652AD5F7-8488-489F-AAD0-7FBE064703B6}.Debug|x64.ActiveCfg = Debug|Win32
++ {652AD5F7-8488-489F-AAD0-7FBE064703B6}.Debug|x64.Build.0 = Debug|Win32
++ {652AD5F7-8488-489F-AAD0-7FBE064703B6}.Debug|x64 Setup.ActiveCfg = Debug|Win32
++ {652AD5F7-8488-489F-AAD0-7FBE064703B6}.Debug|x86 Setup.ActiveCfg = Debug|Win32
++ {652AD5F7-8488-489F-AAD0-7FBE064703B6}.Release|Win32.ActiveCfg = Release|Win32
++ {652AD5F7-8488-489F-AAD0-7FBE064703B6}.Release|Win32.Build.0 = Release|Win32
++ {652AD5F7-8488-489F-AAD0-7FBE064703B6}.Release|x64.ActiveCfg = Release|Win32
++ {652AD5F7-8488-489F-AAD0-7FBE064703B6}.Release|x64.Build.0 = Release|Win32
++ {652AD5F7-8488-489F-AAD0-7FBE064703B6}.Release|x64 Setup.ActiveCfg = Release|Win32
++ {652AD5F7-8488-489F-AAD0-7FBE064703B6}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.All|Win32.ActiveCfg = Release|Win32
++ {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.All|Win32.Build.0 = Release|Win32
++ {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.All|x64.ActiveCfg = Release|Win32
++ {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.All|x64 Setup.ActiveCfg = Release|Win32
++ {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.All|x86 Setup.ActiveCfg = Release|Win32
++ {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Debug|Win32.ActiveCfg = Debug|Win32
++ {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Debug|Win32.Build.0 = Debug|Win32
++ {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Debug|x64.ActiveCfg = Debug|x64
++ {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Debug|x64.Build.0 = Debug|x64
++ {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Debug|x64 Setup.ActiveCfg = Release|Win32
++ {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Debug|x86 Setup.ActiveCfg = Release|Win32
++ {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Release|Win32.ActiveCfg = Release|Win32
++ {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Release|Win32.Build.0 = Release|Win32
++ {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Release|x64.ActiveCfg = Release|x64
++ {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Release|x64.Build.0 = Release|x64
++ {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Release|x64 Setup.ActiveCfg = Release|Win32
++ {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Release|x86 Setup.ActiveCfg = Release|Win32
++ {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|Win32.ActiveCfg = Release|x64
++ {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|x64.ActiveCfg = Release|x64
++ {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|x64.Build.0 = Release|x64
++ {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|x64 Setup.ActiveCfg = Release|x64
++ {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|x86 Setup.ActiveCfg = Release|x64
++ {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|Win32.ActiveCfg = Debug|Win32
++ {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|Win32.Build.0 = Debug|Win32
++ {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|x64.ActiveCfg = Debug|x64
++ {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|x64.Build.0 = Debug|x64
++ {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|x86 Setup.ActiveCfg = Debug|x64
++ {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|Win32.ActiveCfg = Release|Win32
++ {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|Win32.Build.0 = Release|Win32
++ {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|x64.ActiveCfg = Release|x64
++ {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|x64.Build.0 = Release|x64
++ {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|x64 Setup.ActiveCfg = Release|x64
++ {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|x86 Setup.ActiveCfg = Release|x64
++ {BED7539C-0099-4A14-AD5D-30828F15A171}.All|Win32.ActiveCfg = Release|x64
++ {BED7539C-0099-4A14-AD5D-30828F15A171}.All|x64.ActiveCfg = Release|x64
++ {BED7539C-0099-4A14-AD5D-30828F15A171}.All|x64.Build.0 = Release|x64
++ {BED7539C-0099-4A14-AD5D-30828F15A171}.All|x64 Setup.ActiveCfg = Release|x64
++ {BED7539C-0099-4A14-AD5D-30828F15A171}.All|x86 Setup.ActiveCfg = Release|x64
++ {BED7539C-0099-4A14-AD5D-30828F15A171}.Debug|Win32.ActiveCfg = Debug|Win32
++ {BED7539C-0099-4A14-AD5D-30828F15A171}.Debug|Win32.Build.0 = Debug|Win32
++ {BED7539C-0099-4A14-AD5D-30828F15A171}.Debug|x64.ActiveCfg = Debug|x64
++ {BED7539C-0099-4A14-AD5D-30828F15A171}.Debug|x64.Build.0 = Debug|x64
++ {BED7539C-0099-4A14-AD5D-30828F15A171}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {BED7539C-0099-4A14-AD5D-30828F15A171}.Debug|x86 Setup.ActiveCfg = Debug|x64
++ {BED7539C-0099-4A14-AD5D-30828F15A171}.Release|Win32.ActiveCfg = Release|Win32
++ {BED7539C-0099-4A14-AD5D-30828F15A171}.Release|Win32.Build.0 = Release|Win32
++ {BED7539C-0099-4A14-AD5D-30828F15A171}.Release|x64.ActiveCfg = Release|x64
++ {BED7539C-0099-4A14-AD5D-30828F15A171}.Release|x64.Build.0 = Release|x64
++ {BED7539C-0099-4A14-AD5D-30828F15A171}.Release|x64 Setup.ActiveCfg = Release|x64
++ {BED7539C-0099-4A14-AD5D-30828F15A171}.Release|x86 Setup.ActiveCfg = Release|x64
++ {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|Win32.ActiveCfg = Release|x64
++ {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|x64.ActiveCfg = Release|x64
++ {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|x64.Build.0 = Release|x64
++ {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|x64 Setup.ActiveCfg = Release|x64
++ {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|x86 Setup.ActiveCfg = Release|x64
++ {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|Win32.ActiveCfg = Debug|Win32
++ {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|Win32.Build.0 = Debug|Win32
++ {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|x64.ActiveCfg = Debug|x64
++ {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|x64.Build.0 = Debug|x64
++ {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|x86 Setup.ActiveCfg = Debug|x64
++ {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Win32.ActiveCfg = Release|Win32
++ {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Win32.Build.0 = Release|Win32
++ {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x64.ActiveCfg = Release|x64
++ {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x64.Build.0 = Release|x64
++ {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x64 Setup.ActiveCfg = Release|x64
++ {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x86 Setup.ActiveCfg = Release|x64
++ {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|Win32.ActiveCfg = Release|x64
++ {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|x64.ActiveCfg = Release|x64
++ {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|x64.Build.0 = Release|x64
++ {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|x64 Setup.ActiveCfg = Release|x64
++ {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|x86 Setup.ActiveCfg = Release|x64
++ {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|Win32.ActiveCfg = Debug|Win32
++ {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|Win32.Build.0 = Debug|Win32
++ {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|x64.ActiveCfg = Debug|x64
++ {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|x64.Build.0 = Debug|x64
++ {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|x86 Setup.ActiveCfg = Debug|x64
++ {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|Win32.ActiveCfg = Release|Win32
++ {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|Win32.Build.0 = Release|Win32
++ {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|x64.ActiveCfg = Release|x64
++ {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|x64.Build.0 = Release|x64
++ {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|x64 Setup.ActiveCfg = Release|x64
++ {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|x86 Setup.ActiveCfg = Release|x64
++ {B535402E-38D2-4D54-8360-423ACBD17192}.All|Win32.ActiveCfg = Release|x64
++ {B535402E-38D2-4D54-8360-423ACBD17192}.All|x64.ActiveCfg = Release|x64
++ {B535402E-38D2-4D54-8360-423ACBD17192}.All|x64.Build.0 = Release|x64
++ {B535402E-38D2-4D54-8360-423ACBD17192}.All|x64 Setup.ActiveCfg = Release|x64
++ {B535402E-38D2-4D54-8360-423ACBD17192}.All|x86 Setup.ActiveCfg = Release|x64
++ {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|Win32.ActiveCfg = Debug|Win32
++ {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|Win32.Build.0 = Debug|Win32
++ {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|x64.ActiveCfg = Debug|x64
++ {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|x64.Build.0 = Debug|x64
++ {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|x64 Setup.ActiveCfg = Debug|x64
++ {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|x86 Setup.ActiveCfg = Debug|x64
++ {B535402E-38D2-4D54-8360-423ACBD17192}.Release|Win32.ActiveCfg = Release|Win32
++ {B535402E-38D2-4D54-8360-423ACBD17192}.Release|Win32.Build.0 = Release|Win32
++ {B535402E-38D2-4D54-8360-423ACBD17192}.Release|x64.ActiveCfg = Release|x64
++ {B535402E-38D2-4D54-8360-423ACBD17192}.Release|x64.Build.0 = Release|x64
++ {B535402E-38D2-4D54-8360-423ACBD17192}.Release|x64 Setup.ActiveCfg = Release|x64
++ {B535402E-38D2-4D54-8360-423ACBD17192}.Release|x86 Setup.ActiveCfg = Release|x64
++ EndGlobalSection
++ GlobalSection(SolutionProperties) = preSolution
++ HideSolutionNode = FALSE
++ EndGlobalSection
++ GlobalSection(NestedProjects) = preSolution
++ {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
++ {5580D60E-0F77-4716-9CD4-B8E5986FA375} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
++ {D3EC0AFF-76FC-4210-A825-9A17410660A3} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
++ {FEA1EEF7-876F-48DE-88BF-C0E3E606D758} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
++ {7F1610F1-DD5A-4CF7-8610-30AB12C60ADD} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
++ {8DEB383C-4091-4F42-A56F-C9E46D552D79} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
++ {2C3C2423-234B-4772-8899-D3B137E5CA35} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
++ {0B6C905B-142E-4999-B39D-92FF7951E921} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
++ {D5C87B19-150D-4EF3-A671-96589BD2D14A} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
++ {4D418176-3B33-47E6-A63E-01BA34ADD21C} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
++ {AFA983D6-4569-4F88-BA94-555ED00FD9A8} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
++ {5FD31A25-5D83-4794-8BEE-904DAD84CE71} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
++ {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
++ {0DF3ABD0-DDC0-4265-B778-07C66780979B} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
++ {B3F424EC-3D8F-417C-B244-3919D5E1A577} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
++ {05C9FB27-480E-4D53-B3B7-6338E2526666} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
++ {CC1DD008-9406-448D-A0AD-33C3186CFADB} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
++ {48414740-C693-4968-9846-EE058020C64F} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
++ {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
++ {05C9FB27-480E-4D53-B3B7-7338E2514666} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
++ {74B120FF-6935-4DFE-A142-CDB6BEA99C90} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
++ {30A5B29C-983E-4580-9FD0-D647CCDCC7EB} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {C24FB505-05D7-4319-8485-7540B44C8603} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {B5881A85-FE70-4F64-8607-2CAAE52669C6} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {71A967D5-0E99-4CEF-A587-98836EE6F2EF} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {3850D93A-5F24-4922-BC1C-74D08C37C256} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {D7F1E3F2-A3F4-474C-8555-15122571AF52} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {75DF7F29-2FBF-47F7-B5AF-5B4952DC1ABD} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {F6A33240-8F29-48BD-98F0-826995911799} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {65A6273D-FCAB-4C55-B09E-65100141A5D4} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {E3246D17-E29B-4AB5-962A-C69B0C5837BB} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {2A3D00C6-588D-4E86-81AC-9EF5EDE86E03} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {14E4A972-9CFB-436D-B0A5-4943F3F80D47} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {329FD5B0-EF28-4606-86D0-F6EA21CF8E36} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {1A3793D1-05D1-4B57-9B0F-5AF3E79DC439} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {3C977801-FE88-48F2-83D3-FA2EBFF6688E} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {432DB165-1EB2-4781-A9C0-71E62610B20A} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {990BAA76-89D3-4E38-8479-C7B28784EFC8} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {1E21AFE0-6FDB-41D2-942D-863607C24B91} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {2E250296-0C08-4342-9C8A-BCBDD0E7DF65} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {B889A18E-70A7-44B5-B2C9-47798D4F43B3} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {A61D7CB4-75A5-4A55-8CA1-BE5AF615D921} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {50AAC2CE-BFC9-4912-87CC-C6381850D735} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {4748FF56-CA85-4809-97D6-A94C0FAC1D77} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {2469B306-B027-4FF2-8815-C9C1EA2CAE79} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
++ {07113B25-D3AF-4E04-BA77-4CD1171F022C} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4}
++ {A27CCA23-1541-4337-81A4-F0A6413078A0} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4}
++ {E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4}
++ {784113EF-44D9-4949-835D-7065D3C7AD08} = {9ADF1E48-2F5C-4ED7-A893-596259FABFE0}
++ {05515420-16DE-4E63-BE73-85BE85BA5142} = {9ADF1E48-2F5C-4ED7-A893-596259FABFE0}
++ {44D7DEAF-FDA5-495E-8B9D-1439E4F4C21E} = {9ADF1E48-2F5C-4ED7-A893-596259FABFE0}
++ {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6} = {A5A27244-AD24-46E5-B01B-840CD296C91D}
++ {9254C4B0-6F60-42B6-BB3A-36D63FC001C7} = {A5A27244-AD24-46E5-B01B-840CD296C91D}
++ {2CA40887-1622-46A1-A7F9-17FD7E7E545B} = {A5A27244-AD24-46E5-B01B-840CD296C91D}
++ {6FF941AC-82C5-429F-AA4C-AD2FB9E5DA52} = {A5A27244-AD24-46E5-B01B-840CD296C91D}
++ {38FE0559-9910-43A8-9E45-3E5004C27692} = {A5A27244-AD24-46E5-B01B-840CD296C91D}
++ {CBD81696-EFB4-4D2F-8451-1B8DAA86155A} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {62F27B1A-C919-4A70-8478-51F178F3B18F} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {89385C74-5860-4174-9CAF-A39E7C48909C} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {1906D736-08BD-4EE1-924F-B536249B9A54} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {8D04B550-D240-4A44-8A18-35DA3F7038D9} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {1CED5987-A529-46DC-B30F-870D85FF9C94} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {E727E8F6-935D-46FE-8B0E-37834748A0E3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {3D0370CA-BED2-4657-A475-32375CBCB6E4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {155844C3-EC5F-407F-97A4-A2DDADED9B2F} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {204FA0DE-305D-4414-AE2E-F195A23F390D} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {4043FC6A-9A30-4577-8AD5-9B233C9575D8} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {0A18A071-125E-442F-AFF7-A3F68ABECF99} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {94001A0E-A837-445C-8004-F918F10D0226} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {0AD1177E-1FD8-4643-9391-431467A11084} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {E316772F-5D8F-4F2A-8F71-094C3E859D34} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {D3D8B329-20BE-475E-9E83-653CEA0E0EF5} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {0FEEAEC6-4399-4C46-B7DB-62ECE80D15B4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {419C8F80-D858-4B48-A25C-AF4007608137} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {CF405366-9558-4AE8-90EF-5E21B51CCB4E} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {E972C52F-9E85-4D65-B19C-031E511E9DB4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {03207781-0D1C-4DB3-A71D-45C608F28DBD} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {9A5DDF08-C88C-4A35-B7F6-D605228446BD} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {D0B36172-CD76-454A-9B89-990025266C2A} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {DEE932AB-5911-4700-9EEB-8C7090A0A330} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {329A6FA0-0FCC-4435-A950-E670AEFA9838} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {CF70F278-3364-4395-A2E1-23501C9B8AD2} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {ABB71A76-42B0-47A4-973A-42E3D920C6FD} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {9778F1C0-09BC-4698-8EBC-BD982247209A} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {56B91D01-9150-4BBF-AFA1-5B68AB991B76} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {E4D29906-8B73-4F8A-B5F4-CA8BFA648F5A} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {23B4D303-79FC-49E0-89E2-2280E7E28940} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {9DE35039-A8F6-4FBF-B1B6-EB527F802411} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {C13CC324-0032-4492-9A30-310A6BD64FF5} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
++ {EC3E5C7F-EE09-47E2-80FE-546363D14A98} = {B8F5B47B-8568-46EB-B320-64C17D2A98BC}
++ {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {0C808854-54D1-4230-BFF5-77B5FD905000}
++ {ACFFF684-4D19-4D48-AF12-88EA1D778BDF} = {0C808854-54D1-4230-BFF5-77B5FD905000}
++ {8F992C49-6C51-412F-B2A3-34EAB708EB65} = {0C808854-54D1-4230-BFF5-77B5FD905000}
++ {0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF} = {0C808854-54D1-4230-BFF5-77B5FD905000}
++ {028C7278-05D7-4E18-82FE-BE231B844F41} = {0C808854-54D1-4230-BFF5-77B5FD905000}
++ {36E854E3-CE12-4348-A125-CCF3F9D74813} = {0C808854-54D1-4230-BFF5-77B5FD905000}
++ {7B077E7F-1BE7-4291-AB86-55E527B25CAC} = {0C808854-54D1-4230-BFF5-77B5FD905000}
++ {7B42BDA1-72C0-4378-A9B6-5C530F8CD61E} = {0C808854-54D1-4230-BFF5-77B5FD905000}
++ {834E2B2F-5483-4B80-8FE3-FE48FF76E5C0} = {0C808854-54D1-4230-BFF5-77B5FD905000}
++ {692F6330-4D87-4C82-81DF-40DB5892636E} = {4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}
++ {2286DA73-9FC5-45BC-A508-85994C3317AB} = {4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}
++ {66444AEE-554C-11DD-A9F0-8C5D56D89593} = {4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}
++ {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD} = {4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}
++ {1C453396-D912-4213-89FD-9B489162B7B5} = {A7AB4405-FDB7-4853-9FBB-1516B1C3D80A}
++ {D0BCAC02-D94B-46B8-9B49-CDDCC2BD7909} = {A7AB4405-FDB7-4853-9FBB-1516B1C3D80A}
++ {CBEC7225-0C21-4DA8-978E-1F158F8AD950} = {F69A4A6B-9360-4EBB-A280-22AA3C455AC5}
++ {AB91A099-7690-4ECF-8994-E458F4EA1ED4} = {F69A4A6B-9360-4EBB-A280-22AA3C455AC5}
++ {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836} = {F69A4A6B-9360-4EBB-A280-22AA3C455AC5}
++ {1A1FF289-4FD6-4285-A422-D31DD67A4723} = {CBD81696-EFB4-4D2F-8451-1B8DAA86155A}
++ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {4F92B672-DADB-4047-8D6A-4BB3796733FD} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {2DEE4895-1134-439C-B688-52203E57D878} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {AF8163EE-FA76-4904-A11D-7D70A1B5BA2E} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {3CE1DC99-8246-4DB1-A709-74F19F08EC67} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {87A1FE3D-F410-4C8E-9591-8C625985BC70} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {6E49F6C2-ADDA-4BFB-81FE-AB9AF51B455F} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {D5D2BF72-29FE-4982-A9FA-82FDD086DB1B} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {D5D2BF72-29FE-4982-A9FA-82AB2086DB1B} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {D5D2BF72-29FE-4982-A9FA-82AB3086DB1B} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {D5D2BF72-29FE-4982-A9FA-82AB1086DB1B} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {E796E337-DE78-4303-8614-9A590862EE95} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {1F0A8A77-E661-418F-BB92-82172AE43803} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {4F5C9D55-98EF-4256-8311-32D7BD360406} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {E10571C4-E7F4-4608-B5F2-B22E7EB95400} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {FFF82F9B-6A2B-4BE3-95D8-DC5A4FC71E19} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {B808178B-82F0-4CF4-A2B1-921939FA24D0} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {D578E676-7EC8-4548-BD8B-845C635F14AD} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {652AD5F7-8488-489F-AAD0-7FBE064703B6} = {C120A020-773F-4EA3-923F-B67AF28B750D}
++ {988CACF7-3FCB-4992-BE69-77872AE67DC8} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}
++ {5BC072DB-3826-48EA-AF34-FE32AA01E83B} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}
++ {FA429E98-8B03-45E6-A096-A4BC5E821DE4} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}
++ {06E3A538-AB32-44F2-B477-755FF9CB5D37} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}
++ {6D1BEC70-4DCD-4FE9-ADBD-4A43A67E4D05} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}
++ {A4B122CF-5196-476B-8C0E-D8BD59AC3C14} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}
++ {B6A9FB7A-1CC4-442B-812D-EC33E4E4A36E} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}
++ {0382E8FD-CFDC-41C0-8B03-792C7C84FC31} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}
++ {7C22BDFF-CC09-400C-8A09-660733980028} = {6CD61A1D-797C-470A-BE08-8C31B68BB336}
++ {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0} = {57D119DC-484F-420F-B9E9-8589FD9A8DF8}
++ {3C90CCF0-2CDD-4A7A-ACFF-208C1E271692} = {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0}
++ {C7E2382E-2C22-4D18-BF93-80C6A1FFA7AC} = {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0}
++ {FC71C66E-E268-4EAD-B1F5-F008DC382E83} = {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0}
++ {8E2E8798-8B6F-4A55-8E4F-4E6FDE40ED26} = {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0}
++ {09455AA9-C243-4F16-A1A1-A016881A2765} = {3B08FEFD-4D3D-4C16-BA94-EE83509E32A0}
++ {CDE9B06A-3C27-4987-8FAE-DF1006BC705D} = {DB1024A8-41BF-4AD7-9AE6-13202230D1F3}
++ {57199684-EC63-4A60-9DC6-11815AF6B413} = {09455AA9-C243-4F16-A1A1-A016881A2765}
++ {2DED4BA2-D6B0-4064-BB2A-76DE3AA49E7C} = {09455AA9-C243-4F16-A1A1-A016881A2765}
++ {D4A12E4C-DBDA-4614-BA26-3425AE9F60F5} = {09455AA9-C243-4F16-A1A1-A016881A2765}
++ {765EF1B9-5027-4820-BC37-A44466A51631} = {57199684-EC63-4A60-9DC6-11815AF6B413}
++ {713E4747-1126-40B1-BD84-58F9A7745423} = {57199684-EC63-4A60-9DC6-11815AF6B413}
++ {D3E5C8ED-3A6A-4FEA-92A2-48A0BA865358} = {2DED4BA2-D6B0-4064-BB2A-76DE3AA49E7C}
++ {CC3E7F48-2590-49CB-AD8B-BE3650F55462} = {2DED4BA2-D6B0-4064-BB2A-76DE3AA49E7C}
++ {F1B71990-EB04-4EB5-B28A-BC3EB6F7E843} = {D4A12E4C-DBDA-4614-BA26-3425AE9F60F5}
++ {3DAF028C-AB5B-4183-A01B-DCC43F5A87F0} = {D4A12E4C-DBDA-4614-BA26-3425AE9F60F5}
++ {7A8D8174-B355-4114-AFC1-04777CB9DE0A} = {4F227C26-768F-46A3-8684-1D08A46FB374}
++ {7EB71250-F002-4ED8-92CA-CA218114537A} = {4F227C26-768F-46A3-8684-1D08A46FB374}
++ {464AAB78-5489-4916-BE51-BF8D61822311} = {4F227C26-768F-46A3-8684-1D08A46FB374}
++ {D1ABE208-6442-4FB4-9AAD-1677E41BC870} = {4F227C26-768F-46A3-8684-1D08A46FB374}
++ {BA599D0A-4310-4505-91DA-6A6447B3E289} = {4F227C26-768F-46A3-8684-1D08A46FB374}
++ {EED13FC7-4F81-4E6F-93DB-CDB7DF5CF959} = {4F227C26-768F-46A3-8684-1D08A46FB374}
++ {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2} = {62F27B1A-C919-4A70-8478-51F178F3B18F}
++ {B5A00BFA-6083-4FAE-A097-71642D6473B5} = {62F27B1A-C919-4A70-8478-51F178F3B18F}
++ {1C320193-46A6-4B34-9C56-8AB584FC1B56} = {62F27B1A-C919-4A70-8478-51F178F3B18F}
++ {72782932-37CC-46AE-8C7F-9A7B1A6EE108} = {62F27B1A-C919-4A70-8478-51F178F3B18F}
++ {12A49562-BAB9-43A3-A21D-15B60BBB4C31} = {62F27B1A-C919-4A70-8478-51F178F3B18F}
++ {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA} = {62F27B1A-C919-4A70-8478-51F178F3B18F}
++ {504B3154-7A4F-459D-9877-B951021C3F1F} = {62F27B1A-C919-4A70-8478-51F178F3B18F}
++ {746F3632-5BB2-4570-9453-31D6D58A7D8E} = {62F27B1A-C919-4A70-8478-51F178F3B18F}
++ {DEB01ACB-D65F-4A62-AED9-58C1054499E9} = {62F27B1A-C919-4A70-8478-51F178F3B18F}
++ {D331904D-A00A-4694-A5A3-FCFF64AB5DBE} = {E4D29906-8B73-4F8A-B5F4-CA8BFA648F5A}
++ {B4B62169-5AD4-4559-8707-3D933AC5DB39} = {E4D29906-8B73-4F8A-B5F4-CA8BFA648F5A}
++ {25BD39B1-C8BF-4676-A738-9CABD9C6BC79} = {E4D29906-8B73-4F8A-B5F4-CA8BFA648F5A}
++ {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9} = {9DE35039-A8F6-4FBF-B1B6-EB527F802411}
++ {BED7539C-0099-4A14-AD5D-30828F15A171} = {9DE35039-A8F6-4FBF-B1B6-EB527F802411}
++ {0D108721-EAE8-4BAF-8102-D8960EC93647} = {9DE35039-A8F6-4FBF-B1B6-EB527F802411}
++ {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA} = {9DE35039-A8F6-4FBF-B1B6-EB527F802411}
++ {B535402E-38D2-4D54-8360-423ACBD17192} = {9DE35039-A8F6-4FBF-B1B6-EB527F802411}
++ EndGlobalSection
++EndGlobal
+diff --git a/configure.in b/configure.in
+index e8ab623..a10daf8 100644
+--- a/configure.in
++++ b/configure.in
+@@ -490,9 +490,8 @@ AC_SUBST(LIBTOOL_LIB_EXTEN)
+ # Checks for header files.
+ AC_HEADER_DIRENT
+ AC_HEADER_STDC
+-AC_CHECK_HEADERS([sys/types.h sys/resource.h sched.h wchar.h sys/filio.h sys/ioctl.h netdb.h execinfo.h])
++AC_CHECK_HEADERS([sys/types.h sys/resource.h sched.h wchar.h sys/filio.h sys/ioctl.h sys/select.h netdb.h execinfo.h])
+
+-# for xmlrpc-c config.h
+ if test x"$ac_cv_header_wchar_h" = xyes; then
+ HAVE_WCHAR_H_DEFINE=1
+ else
+@@ -500,6 +499,31 @@ else
+ fi
+ AC_SUBST(HAVE_WCHAR_H_DEFINE)
+
++# Needed by Abyss on Solaris:
++
++if test x"$ac_cv_header_sys_filio_h" = xyes; then
++ HAVE_SYS_FILIO_H_DEFINE=1
++else
++ HAVE_SYS_FILIO_H_DEFINE=0
++fi
++AC_SUBST(HAVE_SYS_FILIO_H_DEFINE)
++
++# Needed by Abyss on Solaris:
++
++if test x"$ac_cv_header_sys_ioctl_h" = xyes; then
++ HAVE_SYS_IOCTL_H_DEFINE=1
++else
++ HAVE_SYS_IOCTL_H_DEFINE=0
++fi
++AC_SUBST(HAVE_SYS_IOCTL_H_DEFINE)
++
++if test x"$ac_cv_header_sys_select_h" = xyes; then
++ HAVE_SYS_SELECT_H_DEFINE=1
++else
++ HAVE_SYS_SELECT_H_DEFINE=0
++fi
++AC_SUBST(HAVE_SYS_SELECT_H_DEFINE)
++
+ # Checks for typedefs, structures, and compiler characteristics.
+ AC_C_CONST
+ AC_C_INLINE
+@@ -603,6 +627,7 @@ fi
+ # xmlrpc-c checks
+ #
+
++AC_CHECK_FUNCS(setenv strtoll strtoull strtoq strtouq __strtoll __strtoull)
+
+ HAVE_LIBWWW_SSL_DEFINE=0
+ AC_SUBST(HAVE_LIBWWW_SSL_DEFINE)
+@@ -1049,8 +1074,10 @@ AC_CONFIG_FILES([Makefile
+ build/getg729.sh
+ build/freeswitch.pc
+ build/modmake.rules
+- libs/xmlrpc-c/include/xmlrpc-c/config.h
+ libs/xmlrpc-c/xmlrpc_config.h
++ libs/xmlrpc-c/config.mk
++ libs/xmlrpc-c/srcdir.mk
++ libs/xmlrpc-c/stamp-h
+ scripts/gentls_cert])
+
+ AM_CONDITIONAL(ISLINUX, [test `uname -s` = Linux])
+diff --git a/libs/.gitignore b/libs/.gitignore
+index 1bc99bc..ed326e9 100644
+--- a/libs/.gitignore
++++ b/libs/.gitignore
+@@ -884,11 +884,14 @@ opal
+ /win32/libshout/*/*/libshout.log
+ /win32/pcre/pcre_chartables.c
+ /win32/tmp*.bat
+-/xmlrpc-c/include/xmlrpc-c/config.h
+ !/xmlrpc-c/include/xmlrpc-c/config.h.in
+ /xmlrpc-c/stamp-h2
+-/xmlrpc-c/xmlrpc_amconfig.h
++/xmlrpc-c/examples/config.h
++/xmlrpc-c/include/xmlrpc-c/config.h
++/xmlrpc-c/transport_config.h
++/xmlrpc-c/version.h
+ /xmlrpc-c/xmlrpc_config.h
++# /xmlrpc-c/xmlrpc_amconfig.h
+ /yaml/
+ /yaml/config.h
+ /yaml/stamp-h1
+@@ -944,4 +947,3 @@ opal
+ !/yaml/config/ltmain.sh
+ !/yaml/config/missing
+ !/yaml/configure
+-
+diff --git a/libs/win32/apr-util/libaprutil.2010.vcxproj.filters b/libs/win32/apr-util/libaprutil.2010.vcxproj.filters
+index 9ba92f9..66ad7f9 100644
+--- a/libs/win32/apr-util/libaprutil.2010.vcxproj.filters
++++ b/libs/win32/apr-util/libaprutil.2010.vcxproj.filters
+@@ -1,304 +1,307 @@
+-<?xml version="1.0" encoding="utf-8"?>\r
+-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+- <ItemGroup>\r
+- <Filter Include="Source Files">\r
+- <UniqueIdentifier>{fefe4b16-83a4-46b0-ab4b-858531a32218}</UniqueIdentifier>\r
+- </Filter>\r
+- <Filter Include="Source Files\buckets">\r
+- <UniqueIdentifier>{66bee6b2-6ba2-4e7d-9c04-5e52ea75b8ee}</UniqueIdentifier>\r
+- </Filter>\r
+- <Filter Include="Source Files\crypto">\r
+- <UniqueIdentifier>{ec602915-b144-4258-81ce-f8931434e1eb}</UniqueIdentifier>\r
+- </Filter>\r
+- <Filter Include="Source Files\dbd">\r
+- <UniqueIdentifier>{47b5e91f-ec43-4b87-8d11-cc109d0f0733}</UniqueIdentifier>\r
+- </Filter>\r
+- <Filter Include="Source Files\dbm">\r
+- <UniqueIdentifier>{12d41721-8bc3-476e-bffa-6bab3ebbcfef}</UniqueIdentifier>\r
+- </Filter>\r
+- <Filter Include="Source Files\encoding">\r
+- <UniqueIdentifier>{aafe340f-5f94-4402-a3f4-977c302848c1}</UniqueIdentifier>\r
+- </Filter>\r
+- <Filter Include="Source Files\hooks">\r
+- <UniqueIdentifier>{627c064a-54af-49ae-b154-01343f2be90e}</UniqueIdentifier>\r
+- </Filter>\r
+- <Filter Include="Source Files\ldap">\r
+- <UniqueIdentifier>{3791a803-8653-410b-905e-934728270db6}</UniqueIdentifier>\r
+- </Filter>\r
+- <Filter Include="Source Files\misc">\r
+- <UniqueIdentifier>{5133e514-d14d-46b5-9e37-3ab909e4ef28}</UniqueIdentifier>\r
+- </Filter>\r
+- <Filter Include="Source Files\sdbm">\r
+- <UniqueIdentifier>{62959b64-29f8-483f-830f-91e3005c15b9}</UniqueIdentifier>\r
+- </Filter>\r
+- <Filter Include="Source Files\strmatch">\r
+- <UniqueIdentifier>{ec299ad2-8fa6-4923-95f4-b8c7f6184dcf}</UniqueIdentifier>\r
+- </Filter>\r
+- <Filter Include="Source Files\uri">\r
+- <UniqueIdentifier>{ef13505a-0a7a-4fdc-a55a-b47e92957a85}</UniqueIdentifier>\r
+- </Filter>\r
+- <Filter Include="Source Files\xlate">\r
+- <UniqueIdentifier>{80fa8ffc-4776-4a21-bd8b-bfa055f9f46d}</UniqueIdentifier>\r
+- </Filter>\r
+- <Filter Include="Generated Files">\r
+- <UniqueIdentifier>{fdb27306-6946-4cf2-bdb6-39e03cdeeae6}</UniqueIdentifier>\r
+- </Filter>\r
+- <Filter Include="Public Header Files">\r
+- <UniqueIdentifier>{ee62af10-73ee-4af5-85d1-442efcd33aa2}</UniqueIdentifier>\r
+- </Filter>\r
+- </ItemGroup>\r
+- <ItemGroup>\r
+- <ClCompile Include="..\..\apr-util\buckets\apr_brigade.c">\r
+- <Filter>Source Files\buckets</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\buckets\apr_buckets.c">\r
+- <Filter>Source Files\buckets</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\buckets\apr_buckets_alloc.c">\r
+- <Filter>Source Files\buckets</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\buckets\apr_buckets_eos.c">\r
+- <Filter>Source Files\buckets</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\buckets\apr_buckets_file.c">\r
+- <Filter>Source Files\buckets</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\buckets\apr_buckets_flush.c">\r
+- <Filter>Source Files\buckets</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\buckets\apr_buckets_heap.c">\r
+- <Filter>Source Files\buckets</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\buckets\apr_buckets_mmap.c">\r
+- <Filter>Source Files\buckets</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\buckets\apr_buckets_pipe.c">\r
+- <Filter>Source Files\buckets</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\buckets\apr_buckets_pool.c">\r
+- <Filter>Source Files\buckets</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\buckets\apr_buckets_refcount.c">\r
+- <Filter>Source Files\buckets</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\buckets\apr_buckets_simple.c">\r
+- <Filter>Source Files\buckets</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\buckets\apr_buckets_socket.c">\r
+- <Filter>Source Files\buckets</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\crypto\apr_md4.c">\r
+- <Filter>Source Files\crypto</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\crypto\apr_md5.c">\r
+- <Filter>Source Files\crypto</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\crypto\apr_sha1.c">\r
+- <Filter>Source Files\crypto</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\crypto\getuuid.c">\r
+- <Filter>Source Files\crypto</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\crypto\uuid.c">\r
+- <Filter>Source Files\crypto</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\dbd\apr_dbd.c">\r
+- <Filter>Source Files\dbd</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\dbd\apr_dbd_pgsql.c">\r
+- <Filter>Source Files\dbd</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\dbd\apr_dbd_sqlite2.c">\r
+- <Filter>Source Files\dbd</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\dbd\apr_dbd_sqlite3.c">\r
+- <Filter>Source Files\dbd</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\dbm\apr_dbm.c">\r
+- <Filter>Source Files\dbm</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\dbm\apr_dbm_berkeleydb.c">\r
+- <Filter>Source Files\dbm</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\dbm\apr_dbm_gdbm.c">\r
+- <Filter>Source Files\dbm</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\dbm\apr_dbm_sdbm.c">\r
+- <Filter>Source Files\dbm</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\encoding\apr_base64.c">\r
+- <Filter>Source Files\encoding</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\hooks\apr_hooks.c">\r
+- <Filter>Source Files\hooks</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\ldap\apr_ldap_init.c">\r
+- <Filter>Source Files\ldap</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\ldap\apr_ldap_option.c">\r
+- <Filter>Source Files\ldap</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\ldap\apr_ldap_url.c">\r
+- <Filter>Source Files\ldap</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\misc\apr_date.c">\r
+- <Filter>Source Files\misc</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\misc\apr_queue.c">\r
+- <Filter>Source Files\misc</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\misc\apr_reslist.c">\r
+- <Filter>Source Files\misc</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\misc\apr_rmm.c">\r
+- <Filter>Source Files\misc</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\dbm\sdbm\sdbm.c">\r
+- <Filter>Source Files\sdbm</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\dbm\sdbm\sdbm_hash.c">\r
+- <Filter>Source Files\sdbm</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\dbm\sdbm\sdbm_lock.c">\r
+- <Filter>Source Files\sdbm</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\dbm\sdbm\sdbm_pair.c">\r
+- <Filter>Source Files\sdbm</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\strmatch\apr_strmatch.c">\r
+- <Filter>Source Files\strmatch</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\uri\apr_uri.c">\r
+- <Filter>Source Files\uri</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\xlate\xlate.c">\r
+- <Filter>Source Files\xlate</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\..\apr-util\xml\apr_xml.c" />\r
+- </ItemGroup>\r
+- <ItemGroup>\r
+- <ClInclude Include="..\..\apr-util\include\apr_anylock.h">\r
+- <Filter>Public Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\..\apr-util\include\apr_base64.h">\r
+- <Filter>Public Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\..\apr-util\include\apr_buckets.h">\r
+- <Filter>Public Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\..\apr-util\include\apr_date.h">\r
+- <Filter>Public Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\..\apr-util\include\apr_dbm.h">\r
+- <Filter>Public Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\..\apr-util\include\apr_hooks.h">\r
+- <Filter>Public Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\..\apr-util\include\apr_ldap_url.h">\r
+- <Filter>Public Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\..\apr-util\include\apr_md4.h">\r
+- <Filter>Public Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\..\apr-util\include\apr_md5.h">\r
+- <Filter>Public Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\..\apr-util\include\apr_optional.h">\r
+- <Filter>Public Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\..\apr-util\include\apr_optional_hooks.h">\r
+- <Filter>Public Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\..\apr-util\include\apr_queue.h">\r
+- <Filter>Public Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\..\apr-util\include\apr_reslist.h">\r
+- <Filter>Public Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\..\apr-util\include\apr_rmm.h">\r
+- <Filter>Public Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\..\apr-util\include\apr_sdbm.h">\r
+- <Filter>Public Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\..\apr-util\include\apr_sha1.h">\r
+- <Filter>Public Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\..\apr-util\include\apr_strmatch.h">\r
+- <Filter>Public Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\..\apr-util\include\apr_uri.h">\r
+- <Filter>Public Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\..\apr-util\include\apr_uuid.h">\r
+- <Filter>Public Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\..\apr-util\include\apr_xlate.h">\r
+- <Filter>Public Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\..\apr-util\include\apr_xml.h">\r
+- <Filter>Public Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\..\apr-util\include\apu_version.h">\r
+- <Filter>Public Header Files</Filter>\r
+- </ClInclude>\r
+- </ItemGroup>\r
+- <ItemGroup>\r
+- <None Include="..\..\apr-util\include\apr_ldap.h.in">\r
+- <Filter>Generated Files</Filter>\r
+- </None>\r
+- <None Include="..\..\apr-util\include\apr_ldap.hnw">\r
+- <Filter>Generated Files</Filter>\r
+- </None>\r
+- <None Include="..\..\apr-util\include\apu.h.in">\r
+- <Filter>Generated Files</Filter>\r
+- </None>\r
+- <None Include="..\..\apr-util\include\apu.hnw">\r
+- <Filter>Generated Files</Filter>\r
+- </None>\r
+- <None Include="..\..\apr-util\include\private\apu_config.h.in">\r
+- <Filter>Generated Files</Filter>\r
+- </None>\r
+- <None Include="..\..\apr-util\include\private\apu_select_dbm.h.in">\r
+- <Filter>Generated Files</Filter>\r
+- </None>\r
+- <None Include="..\..\apr-util\include\apu_want.h.in">\r
+- <Filter>Generated Files</Filter>\r
+- </None>\r
+- <None Include="..\..\apr-util\include\apu_want.hnw">\r
+- <Filter>Generated Files</Filter>\r
+- </None>\r
+- </ItemGroup>\r
+- <ItemGroup>\r
+- <ResourceCompile Include="..\..\apr-util\libaprutil.rc" />\r
+- </ItemGroup>\r
+- <ItemGroup>\r
+- <CustomBuildStep Include="..\..\apr-util\dbm\sdbm\sdbm_pair.h">\r
+- <Filter>Source Files\sdbm</Filter>\r
+- </CustomBuildStep>\r
+- <CustomBuildStep Include="..\..\apr-util\dbm\sdbm\sdbm_private.h">\r
+- <Filter>Source Files\sdbm</Filter>\r
+- </CustomBuildStep>\r
+- <CustomBuildStep Include="..\..\apr-util\dbm\sdbm\sdbm_tune.h">\r
+- <Filter>Source Files\sdbm</Filter>\r
+- </CustomBuildStep>\r
+- </ItemGroup>\r
+- <ItemGroup>\r
+- <CustomBuild Include="..\..\apr-util\include\apr_ldap.hw">\r
+- <Filter>Generated Files</Filter>\r
+- </CustomBuild>\r
+- <CustomBuild Include="..\..\apr-util\include\apu.hw">\r
+- <Filter>Generated Files</Filter>\r
+- </CustomBuild>\r
+- <CustomBuild Include="..\..\apr-util\include\private\apu_config.hw">\r
+- <Filter>Generated Files</Filter>\r
+- </CustomBuild>\r
+- <CustomBuild Include="..\..\apr-util\include\private\apu_select_dbm.hw">\r
+- <Filter>Generated Files</Filter>\r
+- </CustomBuild>\r
+- <CustomBuild Include="..\..\apr-util\include\apu_want.hw">\r
+- <Filter>Generated Files</Filter>\r
+- </CustomBuild>\r
+- </ItemGroup>\r
++<?xml version="1.0" encoding="utf-8"?>
++<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
++ <ItemGroup>
++ <Filter Include="Source Files">
++ <UniqueIdentifier>{fefe4b16-83a4-46b0-ab4b-858531a32218}</UniqueIdentifier>
++ </Filter>
++ <Filter Include="Source Files\buckets">
++ <UniqueIdentifier>{66bee6b2-6ba2-4e7d-9c04-5e52ea75b8ee}</UniqueIdentifier>
++ </Filter>
++ <Filter Include="Source Files\crypto">
++ <UniqueIdentifier>{ec602915-b144-4258-81ce-f8931434e1eb}</UniqueIdentifier>
++ </Filter>
++ <Filter Include="Source Files\dbd">
++ <UniqueIdentifier>{47b5e91f-ec43-4b87-8d11-cc109d0f0733}</UniqueIdentifier>
++ </Filter>
++ <Filter Include="Source Files\dbm">
++ <UniqueIdentifier>{12d41721-8bc3-476e-bffa-6bab3ebbcfef}</UniqueIdentifier>
++ </Filter>
++ <Filter Include="Source Files\encoding">
++ <UniqueIdentifier>{aafe340f-5f94-4402-a3f4-977c302848c1}</UniqueIdentifier>
++ </Filter>
++ <Filter Include="Source Files\hooks">
++ <UniqueIdentifier>{627c064a-54af-49ae-b154-01343f2be90e}</UniqueIdentifier>
++ </Filter>
++ <Filter Include="Source Files\ldap">
++ <UniqueIdentifier>{3791a803-8653-410b-905e-934728270db6}</UniqueIdentifier>
++ </Filter>
++ <Filter Include="Source Files\misc">
++ <UniqueIdentifier>{5133e514-d14d-46b5-9e37-3ab909e4ef28}</UniqueIdentifier>
++ </Filter>
++ <Filter Include="Source Files\sdbm">
++ <UniqueIdentifier>{62959b64-29f8-483f-830f-91e3005c15b9}</UniqueIdentifier>
++ </Filter>
++ <Filter Include="Source Files\strmatch">
++ <UniqueIdentifier>{ec299ad2-8fa6-4923-95f4-b8c7f6184dcf}</UniqueIdentifier>
++ </Filter>
++ <Filter Include="Source Files\uri">
++ <UniqueIdentifier>{ef13505a-0a7a-4fdc-a55a-b47e92957a85}</UniqueIdentifier>
++ </Filter>
++ <Filter Include="Source Files\xlate">
++ <UniqueIdentifier>{80fa8ffc-4776-4a21-bd8b-bfa055f9f46d}</UniqueIdentifier>
++ </Filter>
++ <Filter Include="Generated Files">
++ <UniqueIdentifier>{fdb27306-6946-4cf2-bdb6-39e03cdeeae6}</UniqueIdentifier>
++ </Filter>
++ <Filter Include="Public Header Files">
++ <UniqueIdentifier>{ee62af10-73ee-4af5-85d1-442efcd33aa2}</UniqueIdentifier>
++ </Filter>
++ <Filter Include="Source Files\xml">
++ <UniqueIdentifier>{0ea472ce-22be-43c7-b06d-a50dd027a9fe}</UniqueIdentifier>
++ </Filter>
++ </ItemGroup>
++ <ItemGroup>
++ <ClCompile Include="..\..\apr-util\buckets\apr_brigade.c">
++ <Filter>Source Files\buckets</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\buckets\apr_buckets.c">
++ <Filter>Source Files\buckets</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\buckets\apr_buckets_alloc.c">
++ <Filter>Source Files\buckets</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\buckets\apr_buckets_eos.c">
++ <Filter>Source Files\buckets</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\buckets\apr_buckets_file.c">
++ <Filter>Source Files\buckets</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\buckets\apr_buckets_flush.c">
++ <Filter>Source Files\buckets</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\buckets\apr_buckets_heap.c">
++ <Filter>Source Files\buckets</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\buckets\apr_buckets_mmap.c">
++ <Filter>Source Files\buckets</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\buckets\apr_buckets_pipe.c">
++ <Filter>Source Files\buckets</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\buckets\apr_buckets_pool.c">
++ <Filter>Source Files\buckets</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\buckets\apr_buckets_refcount.c">
++ <Filter>Source Files\buckets</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\buckets\apr_buckets_simple.c">
++ <Filter>Source Files\buckets</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\buckets\apr_buckets_socket.c">
++ <Filter>Source Files\buckets</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\crypto\apr_md4.c">
++ <Filter>Source Files\crypto</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\crypto\apr_md5.c">
++ <Filter>Source Files\crypto</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\crypto\apr_sha1.c">
++ <Filter>Source Files\crypto</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\crypto\getuuid.c">
++ <Filter>Source Files\crypto</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\crypto\uuid.c">
++ <Filter>Source Files\crypto</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\dbd\apr_dbd.c">
++ <Filter>Source Files\dbd</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\dbd\apr_dbd_pgsql.c">
++ <Filter>Source Files\dbd</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\dbd\apr_dbd_sqlite2.c">
++ <Filter>Source Files\dbd</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\dbd\apr_dbd_sqlite3.c">
++ <Filter>Source Files\dbd</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\dbm\apr_dbm.c">
++ <Filter>Source Files\dbm</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\dbm\apr_dbm_berkeleydb.c">
++ <Filter>Source Files\dbm</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\dbm\apr_dbm_gdbm.c">
++ <Filter>Source Files\dbm</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\dbm\apr_dbm_sdbm.c">
++ <Filter>Source Files\dbm</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\encoding\apr_base64.c">
++ <Filter>Source Files\encoding</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\hooks\apr_hooks.c">
++ <Filter>Source Files\hooks</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\ldap\apr_ldap_init.c">
++ <Filter>Source Files\ldap</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\ldap\apr_ldap_option.c">
++ <Filter>Source Files\ldap</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\ldap\apr_ldap_url.c">
++ <Filter>Source Files\ldap</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\misc\apr_date.c">
++ <Filter>Source Files\misc</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\misc\apr_queue.c">
++ <Filter>Source Files\misc</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\misc\apr_reslist.c">
++ <Filter>Source Files\misc</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\misc\apr_rmm.c">
++ <Filter>Source Files\misc</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\dbm\sdbm\sdbm.c">
++ <Filter>Source Files\sdbm</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\dbm\sdbm\sdbm_hash.c">
++ <Filter>Source Files\sdbm</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\dbm\sdbm\sdbm_lock.c">
++ <Filter>Source Files\sdbm</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\dbm\sdbm\sdbm_pair.c">
++ <Filter>Source Files\sdbm</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\strmatch\apr_strmatch.c">
++ <Filter>Source Files\strmatch</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\uri\apr_uri.c">
++ <Filter>Source Files\uri</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\xlate\xlate.c">
++ <Filter>Source Files\xlate</Filter>
++ </ClCompile>
++ <ClCompile Include="..\..\apr-util\xml\apr_xml.c" />
++ </ItemGroup>
++ <ItemGroup>
++ <ClInclude Include="..\..\apr-util\include\apr_anylock.h">
++ <Filter>Public Header Files</Filter>
++ </ClInclude>
++ <ClInclude Include="..\..\apr-util\include\apr_base64.h">
++ <Filter>Public Header Files</Filter>
++ </ClInclude>
++ <ClInclude Include="..\..\apr-util\include\apr_buckets.h">
++ <Filter>Public Header Files</Filter>
++ </ClInclude>
++ <ClInclude Include="..\..\apr-util\include\apr_date.h">
++ <Filter>Public Header Files</Filter>
++ </ClInclude>
++ <ClInclude Include="..\..\apr-util\include\apr_dbm.h">
++ <Filter>Public Header Files</Filter>
++ </ClInclude>
++ <ClInclude Include="..\..\apr-util\include\apr_hooks.h">
++ <Filter>Public Header Files</Filter>
++ </ClInclude>
++ <ClInclude Include="..\..\apr-util\include\apr_ldap_url.h">
++ <Filter>Public Header Files</Filter>
++ </ClInclude>
++ <ClInclude Include="..\..\apr-util\include\apr_md4.h">
++ <Filter>Public Header Files</Filter>
++ </ClInclude>
++ <ClInclude Include="..\..\apr-util\include\apr_md5.h">
++ <Filter>Public Header Files</Filter>
++ </ClInclude>
++ <ClInclude Include="..\..\apr-util\include\apr_optional.h">
++ <Filter>Public Header Files</Filter>
++ </ClInclude>
++ <ClInclude Include="..\..\apr-util\include\apr_optional_hooks.h">
++ <Filter>Public Header Files</Filter>
++ </ClInclude>
++ <ClInclude Include="..\..\apr-util\include\apr_queue.h">
++ <Filter>Public Header Files</Filter>
++ </ClInclude>
++ <ClInclude Include="..\..\apr-util\include\apr_reslist.h">
++ <Filter>Public Header Files</Filter>
++ </ClInclude>
++ <ClInclude Include="..\..\apr-util\include\apr_rmm.h">
++ <Filter>Public Header Files</Filter>
++ </ClInclude>
++ <ClInclude Include="..\..\apr-util\include\apr_sdbm.h">
++ <Filter>Public Header Files</Filter>
++ </ClInclude>
++ <ClInclude Include="..\..\apr-util\include\apr_sha1.h">
++ <Filter>Public Header Files</Filter>
++ </ClInclude>
++ <ClInclude Include="..\..\apr-util\include\apr_strmatch.h">
++ <Filter>Public Header Files</Filter>
++ </ClInclude>
++ <ClInclude Include="..\..\apr-util\include\apr_uri.h">
++ <Filter>Public Header Files</Filter>
++ </ClInclude>
++ <ClInclude Include="..\..\apr-util\include\apr_uuid.h">
++ <Filter>Public Header Files</Filter>
++ </ClInclude>
++ <ClInclude Include="..\..\apr-util\include\apr_xlate.h">
++ <Filter>Public Header Files</Filter>
++ </ClInclude>
++ <ClInclude Include="..\..\apr-util\include\apr_xml.h">
++ <Filter>Public Header Files</Filter>
++ </ClInclude>
++ <ClInclude Include="..\..\apr-util\include\apu_version.h">
++ <Filter>Public Header Files</Filter>
++ </ClInclude>
++ </ItemGroup>
++ <ItemGroup>
++ <None Include="..\..\apr-util\include\apr_ldap.h.in">
++ <Filter>Generated Files</Filter>
++ </None>
++ <None Include="..\..\apr-util\include\apr_ldap.hnw">
++ <Filter>Generated Files</Filter>
++ </None>
++ <None Include="..\..\apr-util\include\apu.h.in">
++ <Filter>Generated Files</Filter>
++ </None>
++ <None Include="..\..\apr-util\include\apu.hnw">
++ <Filter>Generated Files</Filter>
++ </None>
++ <None Include="..\..\apr-util\include\private\apu_config.h.in">
++ <Filter>Generated Files</Filter>
++ </None>
++ <None Include="..\..\apr-util\include\private\apu_select_dbm.h.in">
++ <Filter>Generated Files</Filter>
++ </None>
++ <None Include="..\..\apr-util\include\apu_want.h.in">
++ <Filter>Generated Files</Filter>
++ </None>
++ <None Include="..\..\apr-util\include\apu_want.hnw">
++ <Filter>Generated Files</Filter>
++ </None>
++ </ItemGroup>
++ <ItemGroup>
++ <ResourceCompile Include="..\..\apr-util\libaprutil.rc" />
++ </ItemGroup>
++ <ItemGroup>
++ <CustomBuildStep Include="..\..\apr-util\dbm\sdbm\sdbm_pair.h">
++ <Filter>Source Files\sdbm</Filter>
++ </CustomBuildStep>
++ <CustomBuildStep Include="..\..\apr-util\dbm\sdbm\sdbm_private.h">
++ <Filter>Source Files\sdbm</Filter>
++ </CustomBuildStep>
++ <CustomBuildStep Include="..\..\apr-util\dbm\sdbm\sdbm_tune.h">
++ <Filter>Source Files\sdbm</Filter>
++ </CustomBuildStep>
++ </ItemGroup>
++ <ItemGroup>
++ <CustomBuild Include="..\..\apr-util\include\apr_ldap.hw">
++ <Filter>Generated Files</Filter>
++ </CustomBuild>
++ <CustomBuild Include="..\..\apr-util\include\apu.hw">
++ <Filter>Generated Files</Filter>
++ </CustomBuild>
++ <CustomBuild Include="..\..\apr-util\include\private\apu_config.hw">
++ <Filter>Generated Files</Filter>
++ </CustomBuild>
++ <CustomBuild Include="..\..\apr-util\include\private\apu_select_dbm.hw">
++ <Filter>Generated Files</Filter>
++ </CustomBuild>
++ <CustomBuild Include="..\..\apr-util\include\apu_want.hw">
++ <Filter>Generated Files</Filter>
++ </CustomBuild>
++ </ItemGroup>
+ </Project>
+\ No newline at end of file
+diff --git a/libs/xmlrpc-c/.cvsignore b/libs/xmlrpc-c/.cvsignore
+deleted file mode 100644
+index f007c35..0000000
+--- a/libs/xmlrpc-c/.cvsignore
++++ /dev/null
+@@ -1,18 +0,0 @@
+-Makefile.config
+-autogen.sh
+-autom4te.cache
+-configure
+-config.log
+-stamp-h
+-stamp-h1
+-config.cache
+-libtool
+-config.status
+-xmlrpc_config.h
+-xmlrpc_amconfig.h
+-xmlrpc-c-config
+-xmlrpc-c-config.test
+-xmlrpc-c-*.tar.gz
+-xmlrpc-c.spec
+-transport_config.h
+-
+diff --git a/libs/xmlrpc-c/.update b/libs/xmlrpc-c/.update
+deleted file mode 100644
+index 60fffd1..0000000
+--- a/libs/xmlrpc-c/.update
++++ /dev/null
+@@ -1 +0,0 @@
+-date
+diff --git a/libs/xmlrpc-c/GNUmakefile b/libs/xmlrpc-c/GNUmakefile
+index be7e423..976e92c 100644
+--- a/libs/xmlrpc-c/GNUmakefile
++++ b/libs/xmlrpc-c/GNUmakefile
+@@ -1,4 +1,4 @@
+-include Makefile.srcdir
++include srcdir.mk
+
+ BLDDIR = $(CURDIR)
+ SUBDIR =
+@@ -6,7 +6,6 @@ SUBDIR =
+ export SRCDIR
+ export BLDDIR
+
+-include $(BLDDIR)/Makefile.version
+ include $(BLDDIR)/config.mk
+
+ SUBDIRS = include lib src tools examples
+@@ -24,10 +23,25 @@ SUBDIRS = include lib src tools examples
+
+ DEFAULT_SUBDIRS = include lib src
+
++ifeq ($(BUILD_TOOLS),yes)
++ DEFAULT_SUBDIRS += tools
++endif
++
+ PROGRAMS_TO_INSTALL = xmlrpc-c-config
+
+ default: xmlrpc-c-config xmlrpc-c-config.test $(DEFAULT_SUBDIRS:%=%/all)
+
++# We don't want common.mk's rule for version.h
++OMIT_VERSION_H = Y
++
++# We don't want common.mk's rule for transport_config.h
++OMIT_TRANSPORT_CONFIG_H = Y
++
++# We don't want common.mk's rule for xmlrpc-c-config.test:
++OMIT_XMLRPC_C_CONFIG_TEST = Y
++
++include $(SRCDIR)/common.mk
++
+ .PHONY: all
+ all: xmlrpc-c-config xmlrpc-c-config.test $(SUBDIRS:%=%/all)
+
+@@ -61,22 +75,15 @@ src/all: lib/all
+ MAJOR := $(XMLRPC_MAJOR_RELEASE)
+ MINOR := $(XMLRPC_MINOR_RELEASE)
+ POINT := $(XMLRPC_POINT_RELEASE)
+-version.h: $(SRCDIR)/Makefile.version
++version.h: $(SRCDIR)/version.mk
+ rm -f $@
+ echo "/* Generated by make file rule */" >>$@
+- echo "#define XMLRPC_C_VERSION" \
+- \"Xmlrpc-c $(MAJOR).$(MINOR).$(POINT)"\"" >>$@
++ echo "#define XMLRPC_C_VERSION" \"$(MAJOR).$(MINOR).$(POINT)"\"" >>$@
+ echo "#define XMLRPC_VERSION_MAJOR $(MAJOR)" >>$@
+ echo "#define XMLRPC_VERSION_MINOR $(MINOR)" >>$@
+ echo "#define XMLRPC_VERSION_POINT $(POINT)" >>$@
+
+-# We don't want common.mk's rule for version.h
+-OMIT_VERSION_H = Y
+-
+-# We don't want common.mk's rule for transport_config.h
+-OMIT_TRANSPORT_CONFIG_H = Y
+-
+-include transport_config.make
++include transport_config.mk
+
+ # shell_config is a fragment to place inside a Bourne shell program that
+ # sets variables that tell how the build is configured.
+@@ -94,17 +101,15 @@ shell_config: $(BLDDIR)/config.mk
+ @echo 'MUST_BUILD_CURL_CLIENT="$(MUST_BUILD_CURL_CLIENT)"' >>$@
+ @echo 'MUST_BUILD_LIBWWW_CLIENT="$(MUST_BUILD_LIBWWW_CLIENT)"' >>$@
+ @echo 'NEED_RPATH="$(NEED_RPATH)"' >>$@
+- @echo 'NEED_WL_RPATH="$(NEED_WL)RPATH)"' >>$@
++ @echo 'NEED_WL_RPATH="$(NEED_WL_RPATH)"' >>$@
++ @echo 'LIBXMLRPCPP_NAME="$(LIBXMLRPCPP_NAME)"' >>$@
+ @echo 'LSOCKET="$(LSOCKET)"' >>$@
+ @echo 'WININET_LDADD="$(WININET_LDADD)"' >>$@
+- @echo 'WININET_RPATH="$(WININET_RPATH)"' >>$@
+- @echo 'WININET_WL_RPATH="$(WININET_WL_RPATH)"' >>$@
++ @echo 'WININET_LIBDIR="$(WININET_LIBDIR)"' >>$@
+ @echo 'CURL_LDADD="$(CURL_LDADD)"' >>$@
+- @echo 'CURL_RPATH="$(CURL_RPATH)"' >>$@
+- @echo 'CURL_WL_RPATH="$(CURL_WL_RPATH)"' >>$@
++ @echo 'CURL_LIBDIR="$(CURL_LIBDIR)"' >>$@
+ @echo 'LIBWWW_LDADD="$(LIBWWW_LDADD)"' >>$@
+- @echo 'LIBWWW_RPATH="$(LIBWWW_RPATH)"' >>$@
+- @echo 'LIBWWW_WL_RPATH="$(LIBWWW_WL_RPATH)"' >>$@
++ @echo 'LIBWWW_LIBDIR="$(LIBWWW_LIBDIR)"' >>$@
+ @echo 'XMLRPC_MAJOR_RELEASE="$(XMLRPC_MAJOR_RELEASE)"' >>$@
+ @echo 'XMLRPC_MINOR_RELEASE="$(XMLRPC_MINOR_RELEASE)"' >>$@
+ @echo 'XMLRPC_POINT_RELEASE="$(XMLRPC_POINT_RELEASE)"' >>$@
+@@ -116,9 +121,6 @@ shell_config: $(BLDDIR)/config.mk
+ @echo 'ABS_SRCDIR="$(ABS_SRCDIR)"' >>$@
+ @echo '#######################################################' >>$@
+
+-# We don't want config.mk's xmlrpc-c-config.test rule:
+-OMIT_XMLRPC_C_CONFIG_TEST = Y
+-
+ xmlrpc-c-config xmlrpc-c-config.test:%: %.main shell_config
+ rm -f $@
+ @echo "Echoes to '$@' suppressed here ..."
+@@ -140,7 +142,7 @@ clean-local:
+ distclean: $(SUBDIRS:%=%/distclean) distclean-common distclean-local
+
+ distclean-local: clean-local
+- rm -f config.log config.status config.mk Makefile.srcdir
++ rm -f config.log config.status config.mk srcdir.mk
+ rm -f xmlrpc_config.h xmlrpc_amconfig.h stamp-h
+ rm -f shell_config xmlrpc-c-config xmlrpc-c-config.test
+ rm -f TAGS
+@@ -162,11 +164,8 @@ xmlrpc_config.h xmlrpc_amconfig.h \
+ :%:%.in $(SRCDIR)/configure
+ $(SRCDIR)/configure
+
+-include $(SRCDIR)/common.mk
+-
+-
+ # A trick to catch a common user error. When you don't run 'configure',
+-# you don't have a Makefile.srcdir, which means $(SRCDIR) is null.
++# you don't have a srcdir.mk, which means $(SRCDIR) is null.
+
+ /common.mk:
+ @echo =======================================
+diff --git a/libs/xmlrpc-c/Makefile.common b/libs/xmlrpc-c/Makefile.common
+deleted file mode 100644
+index bf51040..0000000
+--- a/libs/xmlrpc-c/Makefile.common
++++ /dev/null
+@@ -1,272 +0,0 @@
+-# -*-makefile-*- <-- an Emacs control
+-
+-# This file contains rules and variable settings for the convenience
+-# of every other make file in the package.
+-
+-# No make file is required to use this file, but it usually saves a lot
+-# of duplication.
+-
+-# The following make variables are meaningful as input to this file:
+-#
+-# SRCDIR: Name of directory which is the top of the Xmlrpc-c source tree.
+-# BUILDDIR: Name of directory which is the top of the Xmlrpc-c build tree.
+-
+-LIBTOOL = $(SRCDIR)/libtool
+-LINK = $(LIBTOOL) --mode=link $(CCLD)
+-
+-GCC_WARNINGS = -Wall -Wundef -Wimplicit -W -Winline
+- # We need -Wwrite-strings after we fix all the missing consts
+-
+-GCC_C_WARNINGS = $(GCC_WARNINGS) \
+- -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes
+-
+-GCC_CXX_WARNINGS = $(GCC_WARNINGS) -Woverloaded-virtual -Wsynth
+-
+-ifeq ($(C_COMPILER_GNU),yes)
+- CFLAGS_COMMON = $(GCC_C_WARNINGS) $(COMPILER_CFLAGS) -fno-common -g
+-else
+- CFLAGS_COMMON = $(COMPILER_CFLAGS)
+-endif
+-
+-ifeq ($(CXX_COMPILER_GNU),yes)
+- CXXFLAGS_COMMON = $(GCC_CXX_WARNINGS) $(COMPILER_CXXFLAGS)
+-else
+- CXXFLAGS_COMMON = $(COMPILER_CXXFLAGS)
+-endif
+-
+-DISTDIR = $(BUILDDIR)/$(PACKAGE)-$(VERSION)/$(SUBDIR)
+-
+-LDFLAGS_VERSINFO = -version-info 7:0:4
+-
+-# CURDIR was introduced in GNU Make 3.77.
+-ifeq ($(CURDIR)x,x)
+- CURDIR := $(shell /bin/pwd)
+-endif
+-
+-##############################################################################
+-# RULES #
+-##############################################################################
+-
+-$(SUBDIRS:%=%/all): %/all: $(CURDIR)/%
+- $(MAKE) -C $(dir $@) -f $(SRCDIR)/$(SUBDIR)/$(dir $@)Makefile \
+- $(notdir $@)
+-
+-$(SUBDIRS:%=%/install): %/install: $(CURDIR)/%
+- $(MAKE) -C $(dir $@) -f $(SRCDIR)/$(SUBDIR)/$(dir $@)Makefile \
+- $(notdir $@)
+-
+-$(SUBDIRS:%=%/clean): %/clean: $(CURDIR)/%
+- $(MAKE) -C $(dir $@) -f $(SRCDIR)/$(SUBDIR)/$(dir $@)Makefile \
+- $(notdir $@)
+-
+-$(SUBDIRS:%=%/distclean): %/distclean: $(CURDIR)/%
+- $(MAKE) -C $(dir $@) -f $(SRCDIR)/$(SUBDIR)/$(dir $@)Makefile \
+- $(notdir $@)
+-
+-$(SUBDIRS:%=%/distdir): %/distdir: $(CURDIR)/%
+- $(MAKE) -C $(dir $@) -f $(SRCDIR)/$(SUBDIR)/$(dir $@)Makefile \
+- $(notdir $@)
+-
+-$(SUBDIRS:%=%/dep): %/dep: $(CURDIR)/%
+- $(MAKE) -C $(dir $@) -f $(SRCDIR)/$(SUBDIR)/$(dir $@)Makefile \
+- $(notdir $@)
+-
+-$(BUILDDIR)/lib/util/casprintf.lo: FORCE
+- $(MAKE) -C $(dir $@) -f $(SRCDIR)/lib/util/Makefile $(notdir $@)
+-
+-$(BUILDDIR)/lib/expat/xmlparse/libxmlrpc_xmlparse.la: FORCE
+- $(MAKE) -C $(dir $@) -f $(SRCDIR)/lib/expat/xmlparse/Makefile \
+- $(notdir $@)
+-
+-$(BUILDDIR)/lib/expat/xmltok/libxmlrpc_xmltok.la: FORCE
+- $(MAKE) -C $(dir $@) -f $(SRCDIR)/lib/expat/xmltok/Makefile \
+- $(notdir $@)
+-
+-$(BUILDDIR)/lib/wininet_transport/xmlrpc_wininet_transport.lo: FORCE
+- $(MAKE) -C $(dir $@) -f $(SRCDIR)/lib/wininet_transport/Makefile \
+- $(notdir $@)
+-
+-$(BUILDDIR)/lib/curl_transport/xmlrpc_curl_transport.lo: FORCE
+- $(MAKE) -C $(dir $@) -f $(SRCDIR)/lib/curl_transport/Makefile \
+- $(notdir $@)
+-
+-$(BUILDDIR)/lib/libwww_transport/xmlrpc_libwww_transport.lo: FORCE
+- $(MAKE) -C $(dir $@) -f $(SRCDIR)/lib/libwww_transport/Makefile \
+- $(notdir $@)
+-
+-$(BUILDDIR)/src/libxmlrpc.la: FORCE
+- $(MAKE) -C $(dir $@) -f $(SRCDIR)/src/Makefile \
+- $(notdir $@)
+-
+-$(BUILDDIR)/src/libxmlrpc_client.la: FORCE
+- $(MAKE) -C $(dir $@) -f $(SRCDIR)/src/Makefile \
+- $(notdir $@)
+-
+-$(BUILDDIR)/src/libxmlrpc_server.la: FORCE
+- $(MAKE) -C $(dir $@) -f $(SRCDIR)/src/Makefile \
+- $(notdir $@)
+-
+-ifneq ($(OMIT_TRANSPORT_CONFIG_H),Y)
+-$(BUILDDIR)/transport_config.h:
+- $(MAKE) -C $(dir $@) $(notdir $@)
+-endif
+-
+-MKINSTALLDIRS = $(SHELL) $(SRCDIR)/mkinstalldirs
+-
+-.PHONY: install-common install-libraries install-headers install-bin
+-install-common: \
+- install-ltlibraries install-libraries install-headers install-bin
+-
+-INSTALL_LIB_CMD = $(INSTALL_DATA) $$p $(DESTDIR)$(LIBINST_DIR)/$$p
+-RANLIB_CMD = $(RANLIB) $(DESTDIR)$(LIBINST_DIR)/$$p
+-
+-install-libraries: $(LIBRARIES_TO_INSTALL)
+- $(MKINSTALLDIRS) $(DESTDIR)$(LIBINST_DIR)
+- @list='$(LIBRARIES_TO_INSTALL)'; for p in $$list; do \
+- if test -f $$p; then \
+- echo " $(INSTALL_LIB_CMD)"; \
+- $(INSTALL_LIB_CMD); \
+- else :; fi; \
+- done
+- @$(POST_INSTALL)
+- @list='$(LIBRARIES_TO_INSTALL)'; for p in $$list; do \
+- if test -f $$p; then \
+- echo " $(RANLIB_CMD)"; \
+- $(RANLIB_CMD); \
+- else :; fi; \
+- done
+-
+-LIBTOOL_INSTALL_CMD = $(LIBTOOL) --mode=install \
+- $(INSTALL) $$p $(DESTDIR)$(LIBINST_DIR)/$$p
+-
+-install-ltlibraries: $(LTLIBRARIES_TO_INSTALL)
+- $(MKINSTALLDIRS) $(DESTDIR)$(LIBINST_DIR)
+- @list='$(LTLIBRARIES_TO_INSTALL)'; for p in $$list; do \
+- if test -f $$p; then \
+- echo " $(LIBTOOL_INSTALL_CMD)"; \
+- $(LIBTOOL_INSTALL_CMD); \
+- else :; fi; \
+- done
+-
+-HEADERDESTDIR = $(DESTDIR)$(HEADERINST_DIR)
+-INSTALL_HDR_CMD = $(INSTALL_DATA) $$d$$p $(HEADERDESTDIR)/$$p
+-
+-install-headers: $(HEADERS_TO_INSTALL)
+- $(MKINSTALLDIRS) $(HEADERDESTDIR)
+- $(MKINSTALLDIRS) $(HEADERDESTDIR)/xmlrpc-c
+- @list='$(HEADERS_TO_INSTALL)'; for p in $$list; do \
+- if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \
+- echo " $(INSTALL_HDR_CMD)"; \
+- $(INSTALL_HDR_CMD); \
+- done
+-
+-
+-INSTALL_PROGRAM_CMD = $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p \
+- $(DESTDIR)$(PROGRAMINST_DIR)/$$p
+-
+-install-bin: $(PROGRAMS_TO_INSTALL) $(DESTDIR)$(PROGRAMINST_DIR)
+- @list='$(PROGRAMS_TO_INSTALL)'; \
+- for p in $$list; do \
+- echo "$(INSTALL_PROGRAM_CMD)"; \
+- $(INSTALL_PROGRAM_CMD); \
+- done
+-
+-$(DESTDIR)$(PROGRAMINST_DIR):
+- $(MKINSTALLDIRS) $@
+-
+-
+-.PHONY: clean-common
+-clean-common:
+- rm -f *.o *.a *.s *.i *.la *.lo
+- rm -rf .libs
+-
+-.PHONY: distclean-common
+-distclean-common:
+-# Makefile.depend is generated by 'make dep' and contains only dependencies
+-# that make parts get _rebuilt_ when parts upon which they depend change.
+-# It does not contain dependencies that are necessary to cause a part to
+-# get built in the first place. E.g. if foo.c uses bar.h and bar.h gets built
+-# by a make rule, you must put the dependency of foo.c on bar.h somewhere
+-# besides Makefile.depend.
+-#
+-# Because of this, a user doesn't need Makefile.depend, because he
+-# doesn't modify source files. A developer, on the other hand, must make his
+-# own Makefile.depend, because 'make dep' creates Makefile.depend with
+-# absolute pathnames, specific to the developer's system.
+-#
+-# So we empty out Makefile.depend here. The developer must do 'make dep' if
+-# he wants to edit and rebuild.
+-#
+-# Other projects have 'make distclean' _remove_ Makefile.depend and then
+-# have 'make' automatically build Makefile.depend. We have
+-# found that to be an utter disaster -- it's way too complicated and prone
+-# to failure, especially with built .h files. Better not to burden the user,
+-# who gains nothing from it, with that.
+-#
+- cat /dev/null >Makefile.depend
+- rm -f TAGS
+-
+-
+-.PHONY: distdir-common
+-distdir-common:
+- @for file in $(DISTFILES); do \
+- d=$(SRCDIR); \
+- if test -d $$d/$$file; then \
+- cp -pr $$d/$$file $(DISTDIR)/$$file; \
+- else \
+- test -f $(DISTDIR)/$$file \
+- || ln $$d/$$file $(DISTDIR)/$$file 2> /dev/null \
+- || cp -p $$d/$$file $(DISTDIR)/$$file || :; \
+- fi; \
+- done
+-
+-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
+- tags=; \
+- here=`pwd`; \
+- list='$(SUBDIRS)'; for subdir in $$list; do \
+- if test "$$subdir" = .; then :; else \
+- test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
+- fi; \
+- done; \
+- list='$(SOURCES) $(HEADERS)'; \
+- unique=`for i in $$list; do echo $$i; done | \
+- awk ' { files[$$0] = 1; } \
+- END { for (i in files) print i; }'`; \
+- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
+- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
+-
+-DEP_SOURCES = $(wildcard *.c *.cpp)
+-
+-# This is a filter to turn "foo.o:" rules into "foo.o foo.lo:" because Libtool
+-# uses .lo for object files. I'd like to purge the build of Libtool some day
+-# and eliminate this complication.
+-
+-LIBTOOL_DEPEND_MASSAGER = perl -walnpe's{^(.*)\.o:}{$$1.o $$1.lo:}'
+-
+-
+-
+-.PHONY: dep-common
+-dep-common: FORCE
+-ifneq ($(DEP_SOURCES)x,x)
+- -$(CC) -MM -MG -I. $(INCLUDES) $(DEP_SOURCES) | \
+- $(LIBTOOL_DEPEND_MASSAGER) \
+- >Makefile.depend
+-endif
+-
+-Makefile.depend:
+- cat /dev/null >$@
+-
+-# The automatic dependency generation is a pain in the butt and
+-# totally unnecessary for people just installing the distributed code,
+-# so to avoid needless failures in the field and a complex build, the
+-# 'distclean' target simply makes Makefile.depend an empty file. A
+-# developer may do 'make dep' to create a Makefile.depend full of real
+-# dependencies.
+-
+-# Tell versions [3.59,3.63) of GNU make to not export all variables.
+-# Otherwise a system limit (for SysV at least) may be exceeded.
+-.NOEXPORT:
+-
+-
+-# Use the FORCE target as a dependency to force a target to get remade
+-FORCE:
+diff --git a/libs/xmlrpc-c/Makefile.config.in b/libs/xmlrpc-c/Makefile.config.in
+deleted file mode 100644
+index efdcf4f..0000000
+--- a/libs/xmlrpc-c/Makefile.config.in
++++ /dev/null
+@@ -1,79 +0,0 @@
+-# Makefile.config is generated by 'configure' using Makefile.config.in
+-# as a template and information that 'configure' gathers from the build
+-# system and from user options.
+-
+-# Makefile.config should someday replace most of the other files that
+-# 'configure' generates, thus simplifying development and customization.
+-# Makefile.config is intended to contain information specific to the
+-# particular build environment or user build choices.
+-
+-# Furthermore, most of the logic in 'configure', and thus 'configure.in',
+-# should go into the make files to simplify the build. Makefile.config
+-# should just pass raw configure variables through to the make file.
+-
+-# Tokens of the form @TOKEN@ in the template file get replaced by
+-# 'configure' with the values of variables of the same name within
+-# 'configure', because of a AC_SUBST(TOKEN) statement in the
+-# 'configure.in' from which 'configure' was built.
+-
+-# Here are the options the user chose on 'configure':
+-
+-ENABLE_ABYSS_SERVER = @ENABLE_ABYSS_SERVER@
+-ENABLE_ABYSS_THREADS = @ENABLE_ABYSS_THREADS@
+-ENABLE_CPLUSPLUS = @ENABLE_CPLUSPLUS@
+-ENABLE_CGI_SERVER = @ENABLE_CGI_SERVER@
+-ENABLE_LIBXML2_BACKEND = @ENABLE_LIBXML2_BACKEND@
+-ENABLE_EFENCE = @ENABLE_EFENCE@
+-
+-MUST_BUILD_WININET_CLIENT = @MUST_BUILD_WININET_CLIENT@
+-MUST_BUILD_CURL_CLIENT = @MUST_BUILD_CURL_CLIENT@
+-MUST_BUILD_LIBWWW_CLIENT = @MUST_BUILD_LIBWWW_CLIENT@
+-
+-LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
+-LIBXML2_LIBS = @LIBXML2_LIBS@
+-
+-MUST_BUILD_CLIENT = no
+-ifeq ($(MUST_BUILD_WININET_CLIENT),yes)
+- MUST_BUILD_CLIENT = yes
+-endif
+-ifeq ($(MUST_BUILD_CURL_CLIENT),yes)
+- MUST_BUILD_CLIENT = yes
+-endif
+-ifeq ($(MUST_BUILD_LIBWWW_CLIENT),yes)
+- MUST_BUILD_CLIENT = yes
+-endif
+-
+-# Stuff 'configure' figured out about our build platform:
+-
+-SHELL = @SHELL@
+-CC = @CC@
+-CXX = @CXX@
+-CCLD = $(CC)
+-CXXLD = $(CXX)
+-AR = ar
+-RANLIB = @RANLIB@
+-LN_S = @LN_S@
+-INSTALL = @INSTALL@
+-
+-C_COMPILER_GNU = @C_COMPILER_GNU@
+-CXX_COMPILER_GNU = @CXX_COMPILER_GNU@
+-COMPILER_CFLAGS = @COMPILER_CFLAGS@
+-COMPILER_CXXFLAGS = @COMPILER_CXXFLAGS@
+-
+-# Here are the commands 'make install' uses to install various kinds of files:
+-
+-INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
+-INSTALL_DATA = @INSTALL_DATA@
+-INSTALL_SCRIPT = @INSTALL_SCRIPT@
+-
+-# Here are the locations at which 'make install' puts files:
+-
+-# DESTDIR is designed to be overriden at make time in order to relocate
+-# the entire install into a subdirectory.
+-DESTDIR =
+-
+-exec_prefix = @exec_prefix@
+-prefix = @prefix@
+-LIBINST_DIR = @libdir@
+-HEADERINST_DIR = @includedir@
+-PROGRAMINST_DIR = @bindir@
+diff --git a/libs/xmlrpc-c/Makefile.srcdir.in b/libs/xmlrpc-c/Makefile.srcdir.in
+deleted file mode 100644
+index d389df1..0000000
+--- a/libs/xmlrpc-c/Makefile.srcdir.in
++++ /dev/null
+@@ -1 +0,0 @@
+-SRCDIR=@abs_srcdir@
+diff --git a/libs/xmlrpc-c/Makefile.version b/libs/xmlrpc-c/Makefile.version
+deleted file mode 100644
+index 6dc75a2..0000000
+--- a/libs/xmlrpc-c/Makefile.version
++++ /dev/null
+@@ -1,11 +0,0 @@
+-###############################################################################
+-# This is not only a make file inclusion, but a source file for the program
+-# 'mkvers' in the Windows build system. The latter is very particular about
+-# the format of this file. Do not change white space, add comment lines, or
+-# anything!
+-#
+-#
+-###############################################################################
+-XMLRPC_MAJOR_RELEASE = 1
+-XMLRPC_MINOR_RELEASE = 14
+-XMLRPC_POINT_RELEASE = 99
+diff --git a/libs/xmlrpc-c/Windows/CleanWin32.bat b/libs/xmlrpc-c/Windows/CleanWin32.bat
+index 907b32b..181c3aa 100644
+--- a/libs/xmlrpc-c/Windows/CleanWin32.bat
++++ b/libs/xmlrpc-c/Windows/CleanWin32.bat
+@@ -1,43 +1,30 @@
+-@echo Windows build\r
+-@echo This batch file deletes the copied header files,\r
+-@echo Deleting Win32 header files...\r
+-@echo #####################################################\r
+-@echo IF YOU HAVE MADE CHANGES IN ..\xmlrpc_config.h, ..\include\xmlrpc-c\config.h etc ...\r
+-@echo THESE CHANGES WILL BE LOST!\r
+-@echo You should run diffcfg.bat first to check for changes,\r
+-@echo and updcfg.bat if you have made changes ...\r
+-@echo #####################################################\r
+-@echo ARE YOU SURE YOU WANT TO DO THIS? Ctrl+C to abort ...\r
+-@echo #####################################################\r
+-@pause\r
+-@set TEMP1=\r
+-@if NOT EXIST ..\include\xmlrpc-c\config.h goto DN1\r
+-del ..\include\xmlrpc-c\config.h > nul\r
+-@set TEMP1=%TEMP1% ..\include\xmlrpc-c\config.h\r
+-:DN1\r
+-@if NOT EXIST ..\xmlrpc_config.h goto DN2\r
+-del ..\xmlrpc_config.h > nul\r
+-@set TEMP1=%TEMP1% ..\xmlrpc_config.h\r
+-:DN2\r
+-@if NOT EXIST ..\transport_config.h goto DN3\r
+-del ..\transport_config.h > nul\r
+-@set TEMP1=%TEMP1% ..\transport_config.h\r
+-:DN3\r
+-@if NOT EXIST ..\version.h goto DN4\r
+-del ..\version.h > nul\r
+-@set TEMP1=%TEMP1% ..\version.h\r
+-:DN4\r
+-@if NOT EXIST ..\examples\config.h goto DN5\r
+-del ..\examples\config.h > nul\r
+-@set TEMP1=%TEMP1% ..\examples\config.h\r
+-:DN5\r
+-@if "%TEMP1%." == "." goto ALLDN\r
+-@echo DELETED win32 header files.\r
+-@echo %TEMP1%\r
+-@goto END\r
+-\r
+-:ALLDN\r
+-@echo NOne to DELETE ...\r
+-@goto END\r
+-\r
+-:END\r
++@if NOT EXIST ..\include\xmlrpc-c\config.h goto DN1
++del ..\include\xmlrpc-c\config.h > nul
++@set TEMP1=%TEMP1% ..\include\xmlrpc-c\config.h
++:DN1
++@if NOT EXIST ..\xmlrpc_config.h goto DN2
++del ..\xmlrpc_config.h > nul
++@set TEMP1=%TEMP1% ..\xmlrpc_config.h
++:DN2
++@if NOT EXIST ..\transport_config.h goto DN3
++del ..\transport_config.h > nul
++@set TEMP1=%TEMP1% ..\transport_config.h
++:DN3
++@if NOT EXIST ..\version.h goto DN4
++del ..\version.h > nul
++@set TEMP1=%TEMP1% ..\version.h
++:DN4
++@if NOT EXIST ..\examples\config.h goto DN5
++del ..\examples\config.h > nul
++@set TEMP1=%TEMP1% ..\examples\config.h
++:DN5
++@if "%TEMP1%." == "." goto ALLDN
++@echo DELETED win32 header files.
++@echo %TEMP1%
++@goto END
++
++:ALLDN
++@echo NOne to DELETE ...
++@goto END
++
++:END
+diff --git a/libs/xmlrpc-c/Windows/ReadMeWin32.txt b/libs/xmlrpc-c/Windows/ReadMeWin32.txt
+index 2da1575..c3d5d5d 100644
+--- a/libs/xmlrpc-c/Windows/ReadMeWin32.txt
++++ b/libs/xmlrpc-c/Windows/ReadMeWin32.txt
+@@ -1,64 +1,66 @@
+-Build Instructions For XML-RPC For C/C++ On Windows\r
+----------------------------------------------------\r
+-\r
+-Latest Windows work was done by\r
+-\r
+- Geoff McLane\r
+- 19 October, 2007\r
+- home: http://geoffair.net\r
+-\r
+-\r
+-1. Run the batch file ConfigureWin32.bat, found in the Windows\r
+-directory. This will copy four(4) headers to the appropriate folders.\r
+-\r
+-2. Load xmlrpc.dsw in MSVC[7,8] or later, and build the Release or Debug\r
+-configurations. DLL configurations are not included, and may not compile.\r
+-\r
+-This build requires that you have a Microsoft SDK, or Plaform SDK\r
+-installed, since among other things, it uses <http.h>, and\r
+-HTTPAPI.LIB, from the SDK.\r
+-\r
+-Once built, the rpctest.exe, in the bin folder, should run with no errors,\r
+-and the xmlrpc_sample_add_server.exe, using port 8080, and\r
+-xmlrpc_sample_add_sync_client.exe should communicate ... proving 7+5 = 12 ;=))\r
+-\r
+-Have fun.\r
+-\r
+-PS: Several other batch files are included in the Windows folder ...\r
+-\r
+-delsln.bat - to delete all the MSVC7 and 8 solution file.\r
+-\r
+-diffcfg.bat - compare the headers in windows with the version used in\r
+-the compile. Requires diff.exe to be in the path.\r
+-\r
+-updcfg.bat - copy the 3 manually maintained configuration files back\r
+-to the Windows folder (for distribution).\r
+-\r
+-cleawin32.bat - deletes the headers used in the compile. That is does the\r
+-opposite of ConfigureWin32.bat.\r
+-\r
+-cleanall.bat - to remove ALL the binary files created. Requires an xdelete\r
+-program which will recursively delete an entire folder.\r
+-\r
+-\r
+-There is some historical information in ReadMeOld.txt, which used to be\r
+-the contents of this file. Some of it is still valid.\r
+-\r
+-\r
+-Developing XML-RPC For C/C++ for Windows\r
+-----------------------------------------\r
+-\r
+-If you fix or enhance something in the Windows build system, please send\r
+-your updates to the Xmlrpc-c maintainer to be included in future releases\r
+-so others don't have to repeat your work.\r
+-\r
+-Output of a Subversion 'diff' is usually the best way to send updates,\r
+-but you can also send complete files or just a description of the\r
+-change if that is easier.\r
+-\r
+-For the project files, we distribute only MSVC6-compatible DSP and DSW\r
+-files (which are, of course, usable as input to later versions of MSVC\r
+-as well). That means if you need to modify something in the project\r
+-files and you are not using MSVC6, you must edit the project files\r
+-manually as text files. Modifying them via the IDE would simply\r
+-generate new files in a format that cannot be used with older MSVC.\r
++Build Instructions For XML-RPC For C/C++ On Windows
++---------------------------------------------------
++
++-------------------------------------------------------------------------
++These instructions are for static link libraries, using Microsoft Visual
++Studio 7 and later. There are project files to create DLLs, using
++Visual Studio 2008 or later, in the 'dll' subdirectory. People maintain
++those project files separately from the rest of the build system, so it's
++not uncommon for something to work with one but not the other.
++-------------------------------------------------------------------------
++
++
++1. Run the batch file ConfigureWin32.bat, found in the Windows
++directory. This will copy four(4) headers to the appropriate folders.
++
++2. Load xmlrpc.dsw in MSVC[7,8] or later, and build the Release or Debug
++configurations. DLL configurations are not included, and may not compile.
++
++This build requires that you have a Microsoft SDK, or Plaform SDK
++installed, since among other things, it uses <http.h>, and
++HTTPAPI.LIB, from the SDK.
++
++Once built, the rpctest.exe, in the bin folder, should run with no errors,
++and the xmlrpc_sample_add_server.exe, using port 8080, and
++xmlrpc_sample_add_sync_client.exe should communicate ... proving 7+5 = 12 ;=))
++
++Have fun.
++
++PS: Several other batch files are included in the Windows folder ...
++
++delsln.bat - to delete all the MSVC7 and 8 solution file.
++
++diffcfg.bat - compare the headers in windows with the version used in
++the compile. Requires diff.exe to be in the path.
++
++updcfg.bat - copy the 3 manually maintained configuration files back
++to the Windows folder (for distribution).
++
++cleawin32.bat - deletes the headers used in the compile. That is does the
++opposite of ConfigureWin32.bat.
++
++cleanall.bat - to remove ALL the binary files created. Requires an xdelete
++program which will recursively delete an entire folder.
++
++
++There is some historical information in ReadMeOld.txt, which used to be
++the contents of this file. Some of it is still valid.
++
++
++Developing XML-RPC For C/C++ for Windows
++----------------------------------------
++
++If you fix or enhance something in the Windows build system, please send
++your updates to the Xmlrpc-c maintainer to be included in future releases
++so others don't have to repeat your work.
++
++Output of a Subversion 'diff' is usually the best way to send updates,
++but you can also send complete files or just a description of the
++change if that is easier.
++
++For the project files, we distribute only MSVC6-compatible DSP and DSW
++files (which are, of course, usable as input to later versions of MSVC
++as well). That means if you need to modify something in the project
++files and you are not using MSVC6, you must edit the project files
++manually as text files. Modifying them via the IDE would simply
++generate new files in a format that cannot be used with older MSVC.
+diff --git a/libs/xmlrpc-c/Windows/abyss.2008.vcproj b/libs/xmlrpc-c/Windows/abyss.2008.vcproj
+deleted file mode 100644
+index 45508db..0000000
+--- a/libs/xmlrpc-c/Windows/abyss.2008.vcproj
++++ /dev/null
+@@ -1,1298 +0,0 @@
+-<?xml version="1.0" encoding="Windows-1252"?>\r
+-<VisualStudioProject\r
+- ProjectType="Visual C++"\r
+- Version="9.00"\r
+- Name="abyss"\r
+- ProjectGUID="{D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}"\r
+- RootNamespace="abyss"\r
+- TargetFrameworkVersion="131072"\r
+- >\r
+- <Platforms>\r
+- <Platform\r
+- Name="Win32"\r
+- />\r
+- <Platform\r
+- Name="x64"\r
+- />\r
+- </Platforms>\r
+- <ToolFiles>\r
+- </ToolFiles>\r
+- <Configurations>\r
+- <Configuration\r
+- Name="Debug|Win32"\r
+- OutputDirectory=".\Debug\abyss"\r
+- IntermediateDirectory=".\Debug\abyss"\r
+- ConfigurationType="4"\r
+- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
+- UseOfMFC="0"\r
+- ATLMinimizesCRunTimeLibraryUsage="false"\r
+- CharacterSet="2"\r
+- >\r
+- <Tool\r
+- Name="VCPreBuildEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCCustomBuildTool"\r
+- />\r
+- <Tool\r
+- Name="VCXMLDataGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCWebServiceProxyGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCMIDLTool"\r
+- />\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- Optimization="0"\r
+- AdditionalIncludeDirectories="..\,..\include,..\lib\util\include,."\r
+- PreprocessorDefinitions="WIN32;_DEBUG;_LIB;ABYSS_WIN32;_THREAD"\r
+- MinimalRebuild="true"\r
+- BasicRuntimeChecks="3"\r
+- RuntimeLibrary="3"\r
+- PrecompiledHeaderFile=".\Debug\abyss/abyss.pch"\r
+- AssemblerListingLocation=".\Debug\abyss/"\r
+- ObjectFile=".\Debug\abyss/"\r
+- ProgramDataBaseFileName=".\Debug\abyss/"\r
+- WarningLevel="3"\r
+- SuppressStartupBanner="true"\r
+- DebugInformationFormat="3"\r
+- />\r
+- <Tool\r
+- Name="VCManagedResourceCompilerTool"\r
+- />\r
+- <Tool\r
+- Name="VCResourceCompilerTool"\r
+- PreprocessorDefinitions="_DEBUG"\r
+- Culture="1033"\r
+- />\r
+- <Tool\r
+- Name="VCPreLinkEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCLibrarianTool"\r
+- OutputFile="..\lib\abyssD.lib"\r
+- SuppressStartupBanner="true"\r
+- />\r
+- <Tool\r
+- Name="VCALinkTool"\r
+- />\r
+- <Tool\r
+- Name="VCXDCMakeTool"\r
+- />\r
+- <Tool\r
+- Name="VCBscMakeTool"\r
+- SuppressStartupBanner="true"\r
+- OutputFile=".\Debug\abyss/abyss.bsc"\r
+- />\r
+- <Tool\r
+- Name="VCFxCopTool"\r
+- />\r
+- <Tool\r
+- Name="VCPostBuildEventTool"\r
+- />\r
+- </Configuration>\r
+- <Configuration\r
+- Name="Debug|x64"\r
+- OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
+- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
+- ConfigurationType="4"\r
+- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
+- UseOfMFC="0"\r
+- ATLMinimizesCRunTimeLibraryUsage="false"\r
+- CharacterSet="2"\r
+- >\r
+- <Tool\r
+- Name="VCPreBuildEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCCustomBuildTool"\r
+- />\r
+- <Tool\r
+- Name="VCXMLDataGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCWebServiceProxyGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCMIDLTool"\r
+- TargetEnvironment="3"\r
+- />\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- Optimization="0"\r
+- AdditionalIncludeDirectories="..\,..\include,..\lib\util\include,."\r
+- PreprocessorDefinitions="WIN32;_DEBUG;_LIB;ABYSS_WIN32;_THREAD"\r
+- MinimalRebuild="true"\r
+- BasicRuntimeChecks="3"\r
+- RuntimeLibrary="3"\r
+- PrecompiledHeaderFile=".\Debug\abyss/abyss.pch"\r
+- ObjectFile="$(IntDir)\Abyss\"\r
+- ProgramDataBaseFileName="$(IntDir)\Abyss\vc90.pdb"\r
+- WarningLevel="3"\r
+- SuppressStartupBanner="true"\r
+- DebugInformationFormat="3"\r
+- />\r
+- <Tool\r
+- Name="VCManagedResourceCompilerTool"\r
+- />\r
+- <Tool\r
+- Name="VCResourceCompilerTool"\r
+- PreprocessorDefinitions="_DEBUG"\r
+- Culture="1033"\r
+- />\r
+- <Tool\r
+- Name="VCPreLinkEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCLibrarianTool"\r
+- OutputFile="..\lib\$(PlatformName)\$(ConfigurationName)\abyssD.lib"\r
+- SuppressStartupBanner="true"\r
+- />\r
+- <Tool\r
+- Name="VCALinkTool"\r
+- />\r
+- <Tool\r
+- Name="VCXDCMakeTool"\r
+- />\r
+- <Tool\r
+- Name="VCBscMakeTool"\r
+- SuppressStartupBanner="true"\r
+- OutputFile=".\Debug\abyss/abyss.bsc"\r
+- />\r
+- <Tool\r
+- Name="VCFxCopTool"\r
+- />\r
+- <Tool\r
+- Name="VCPostBuildEventTool"\r
+- />\r
+- </Configuration>\r
+- <Configuration\r
+- Name="Release|Win32"\r
+- OutputDirectory=".\Release\Abyss"\r
+- IntermediateDirectory=".\Release\Abyss"\r
+- ConfigurationType="4"\r
+- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
+- UseOfMFC="0"\r
+- ATLMinimizesCRunTimeLibraryUsage="false"\r
+- CharacterSet="2"\r
+- >\r
+- <Tool\r
+- Name="VCPreBuildEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCCustomBuildTool"\r
+- />\r
+- <Tool\r
+- Name="VCXMLDataGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCWebServiceProxyGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCMIDLTool"\r
+- />\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- Optimization="2"\r
+- InlineFunctionExpansion="1"\r
+- AdditionalIncludeDirectories="..\,..\include,..\lib\util\include,."\r
+- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;ABYSS_WIN32;_THREAD"\r
+- StringPooling="true"\r
+- RuntimeLibrary="2"\r
+- EnableFunctionLevelLinking="true"\r
+- PrecompiledHeaderFile=".\Release\Abyss/abyss.pch"\r
+- AssemblerListingLocation=".\Release\Abyss/"\r
+- ObjectFile=".\Release\Abyss/"\r
+- ProgramDataBaseFileName=".\Release\Abyss/"\r
+- WarningLevel="3"\r
+- SuppressStartupBanner="true"\r
+- />\r
+- <Tool\r
+- Name="VCManagedResourceCompilerTool"\r
+- />\r
+- <Tool\r
+- Name="VCResourceCompilerTool"\r
+- PreprocessorDefinitions="NDEBUG"\r
+- Culture="1033"\r
+- />\r
+- <Tool\r
+- Name="VCPreLinkEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCLibrarianTool"\r
+- OutputFile="..\lib\abyss.lib"\r
+- SuppressStartupBanner="true"\r
+- />\r
+- <Tool\r
+- Name="VCALinkTool"\r
+- />\r
+- <Tool\r
+- Name="VCXDCMakeTool"\r
+- />\r
+- <Tool\r
+- Name="VCBscMakeTool"\r
+- SuppressStartupBanner="true"\r
+- OutputFile=".\Release\Abyss/abyss.bsc"\r
+- />\r
+- <Tool\r
+- Name="VCFxCopTool"\r
+- />\r
+- <Tool\r
+- Name="VCPostBuildEventTool"\r
+- />\r
+- </Configuration>\r
+- <Configuration\r
+- Name="Release|x64"\r
+- OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
+- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
+- ConfigurationType="4"\r
+- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
+- UseOfMFC="0"\r
+- ATLMinimizesCRunTimeLibraryUsage="false"\r
+- CharacterSet="2"\r
+- >\r
+- <Tool\r
+- Name="VCPreBuildEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCCustomBuildTool"\r
+- />\r
+- <Tool\r
+- Name="VCXMLDataGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCWebServiceProxyGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCMIDLTool"\r
+- TargetEnvironment="3"\r
+- />\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- Optimization="2"\r
+- InlineFunctionExpansion="1"\r
+- AdditionalIncludeDirectories="..\,..\include,..\lib\util\include,."\r
+- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;ABYSS_WIN32;_THREAD"\r
+- StringPooling="true"\r
+- RuntimeLibrary="2"\r
+- EnableFunctionLevelLinking="true"\r
+- PrecompiledHeaderFile=".\Release\Abyss/abyss.pch"\r
+- ObjectFile="$(IntDir)\Abyss\"\r
+- ProgramDataBaseFileName="$(IntDir)\Abyss\vc90.pdb"\r
+- WarningLevel="3"\r
+- SuppressStartupBanner="true"\r
+- />\r
+- <Tool\r
+- Name="VCManagedResourceCompilerTool"\r
+- />\r
+- <Tool\r
+- Name="VCResourceCompilerTool"\r
+- PreprocessorDefinitions="NDEBUG"\r
+- Culture="1033"\r
+- />\r
+- <Tool\r
+- Name="VCPreLinkEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCLibrarianTool"\r
+- OutputFile="..\lib\$(PlatformName)\$(ConfigurationName)\abyss.lib"\r
+- SuppressStartupBanner="true"\r
+- />\r
+- <Tool\r
+- Name="VCALinkTool"\r
+- />\r
+- <Tool\r
+- Name="VCXDCMakeTool"\r
+- />\r
+- <Tool\r
+- Name="VCBscMakeTool"\r
+- SuppressStartupBanner="true"\r
+- OutputFile=".\Release\Abyss/abyss.bsc"\r
+- />\r
+- <Tool\r
+- Name="VCFxCopTool"\r
+- />\r
+- <Tool\r
+- Name="VCPostBuildEventTool"\r
+- />\r
+- </Configuration>\r
+- </Configurations>\r
+- <References>\r
+- </References>\r
+- <Files>\r
+- <Filter\r
+- Name="Source Files"\r
+- Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
+- >\r
+- <File\r
+- RelativePath="..\lib\abyss\src\channel.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\chanswitch.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\conf.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\conn.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\data.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\date.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\file.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\handler.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\http.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\init.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\response.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\server.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\session.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\socket.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\socket_openssl.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\socket_unix.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\socket_win.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\thread_fork.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\thread_pthread.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\thread_windows.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\token.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\trace.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- </Filter>\r
+- <Filter\r
+- Name="Header Files"\r
+- Filter="h;hpp;hxx;hm;inl"\r
+- >\r
+- <File\r
+- RelativePath="..\lib\abyss\src\abyss_info.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\channel.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\chanswitch.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\conn.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\data.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\date.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\file.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\handler.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\http.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\server.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\session.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\socket.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\socket_win.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\thread.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\token.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\trace.h"\r
+- >\r
+- </File>\r
+- </Filter>\r
+- </Files>\r
+- <Globals>\r
+- </Globals>\r
+-</VisualStudioProject>\r
+diff --git a/libs/xmlrpc-c/Windows/abyss.2010.vcxproj b/libs/xmlrpc-c/Windows/abyss.2010.vcxproj
+deleted file mode 100644
+index 8f366a8..0000000
+--- a/libs/xmlrpc-c/Windows/abyss.2010.vcxproj
++++ /dev/null
+@@ -1,437 +0,0 @@
+-<?xml version="1.0" encoding="utf-8"?>\r
+-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+- <ItemGroup Label="ProjectConfigurations">\r
+- <ProjectConfiguration Include="Debug|Win32">\r
+- <Configuration>Debug</Configuration>\r
+- <Platform>Win32</Platform>\r
+- </ProjectConfiguration>\r
+- <ProjectConfiguration Include="Debug|x64">\r
+- <Configuration>Debug</Configuration>\r
+- <Platform>x64</Platform>\r
+- </ProjectConfiguration>\r
+- <ProjectConfiguration Include="Release|Win32">\r
+- <Configuration>Release</Configuration>\r
+- <Platform>Win32</Platform>\r
+- </ProjectConfiguration>\r
+- <ProjectConfiguration Include="Release|x64">\r
+- <Configuration>Release</Configuration>\r
+- <Platform>x64</Platform>\r
+- </ProjectConfiguration>\r
+- </ItemGroup>\r
+- <PropertyGroup Label="Globals">\r
+- <ProjectName>abyss</ProjectName>\r
+- <ProjectGuid>{D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}</ProjectGuid>\r
+- <RootNamespace>abyss</RootNamespace>\r
+- </PropertyGroup>\r
+- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+- <ConfigurationType>StaticLibrary</ConfigurationType>\r
+- <UseOfMfc>false</UseOfMfc>\r
+- <CharacterSet>MultiByte</CharacterSet>\r
+- </PropertyGroup>\r
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+- <ConfigurationType>StaticLibrary</ConfigurationType>\r
+- <UseOfMfc>false</UseOfMfc>\r
+- <CharacterSet>MultiByte</CharacterSet>\r
+- </PropertyGroup>\r
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+- <ConfigurationType>StaticLibrary</ConfigurationType>\r
+- <UseOfMfc>false</UseOfMfc>\r
+- <CharacterSet>MultiByte</CharacterSet>\r
+- </PropertyGroup>\r
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+- <ConfigurationType>StaticLibrary</ConfigurationType>\r
+- <UseOfMfc>false</UseOfMfc>\r
+- <CharacterSet>MultiByte</CharacterSet>\r
+- </PropertyGroup>\r
+- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+- <ImportGroup Label="ExtensionSettings">\r
+- </ImportGroup>\r
+- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+- <Import Project="..\..\..\w32\extlib.props" />\r
+- </ImportGroup>\r
+- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+- <Import Project="..\..\..\w32\extlib.props" />\r
+- </ImportGroup>\r
+- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+- <Import Project="..\..\..\w32\extlib.props" />\r
+- </ImportGroup>\r
+- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+- <Import Project="..\..\..\w32\extlib.props" />\r
+- </ImportGroup>\r
+- <PropertyGroup Label="UserMacros" />\r
+- <PropertyGroup>\r
+- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(PlatformName)\abyss\$(Configuration)\</IntDir>\r
+- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(PlatformName)\abyss\$(Configuration)\</IntDir>\r
+- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(PlatformName)\abyss\$(Configuration)\</IntDir>\r
+- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(PlatformName)\abyss\$(Configuration)\</IntDir>\r
+- </PropertyGroup>\r
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+- <ClCompile>\r
+- <Optimization>Disabled</Optimization>\r
+- <AdditionalIncludeDirectories>..\;..\include;..\lib\util\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;ABYSS_WIN32;_THREAD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <MinimalRebuild>true</MinimalRebuild>\r
+- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+- <WarningLevel>Level3</WarningLevel>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </ClCompile>\r
+- <ResourceCompile>\r
+- <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <Culture>0x0409</Culture>\r
+- </ResourceCompile>\r
+- <Lib>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </Lib>\r
+- <Bscmake>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- <OutputFile>.\Debug\abyss/abyss.bsc</OutputFile>\r
+- </Bscmake>\r
+- </ItemDefinitionGroup>\r
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+- <Midl>\r
+- <TargetEnvironment>X64</TargetEnvironment>\r
+- </Midl>\r
+- <ClCompile>\r
+- <Optimization>Disabled</Optimization>\r
+- <AdditionalIncludeDirectories>..\;..\include;..\lib\util\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;ABYSS_WIN32;_THREAD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <MinimalRebuild>true</MinimalRebuild>\r
+- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+- <WarningLevel>Level3</WarningLevel>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </ClCompile>\r
+- <ResourceCompile>\r
+- <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <Culture>0x0409</Culture>\r
+- </ResourceCompile>\r
+- <Lib>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </Lib>\r
+- <Bscmake>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- <OutputFile>.\Debug\abyss/abyss.bsc</OutputFile>\r
+- </Bscmake>\r
+- </ItemDefinitionGroup>\r
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+- <ClCompile>\r
+- <Optimization>MaxSpeed</Optimization>\r
+- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+- <AdditionalIncludeDirectories>..\;..\include;..\lib\util\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;ABYSS_WIN32;_THREAD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <StringPooling>true</StringPooling>\r
+- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+- <FunctionLevelLinking>true</FunctionLevelLinking>\r
+- <WarningLevel>Level3</WarningLevel>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </ClCompile>\r
+- <ResourceCompile>\r
+- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <Culture>0x0409</Culture>\r
+- </ResourceCompile>\r
+- <Lib>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </Lib>\r
+- <Bscmake>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- <OutputFile>.\Release\Abyss/abyss.bsc</OutputFile>\r
+- </Bscmake>\r
+- </ItemDefinitionGroup>\r
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+- <Midl>\r
+- <TargetEnvironment>X64</TargetEnvironment>\r
+- </Midl>\r
+- <ClCompile>\r
+- <Optimization>MaxSpeed</Optimization>\r
+- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+- <AdditionalIncludeDirectories>..\;..\include;..\lib\util\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;ABYSS_WIN32;_THREAD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <StringPooling>true</StringPooling>\r
+- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+- <FunctionLevelLinking>true</FunctionLevelLinking>\r
+- <WarningLevel>Level3</WarningLevel>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </ClCompile>\r
+- <ResourceCompile>\r
+- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <Culture>0x0409</Culture>\r
+- </ResourceCompile>\r
+- <Lib>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </Lib>\r
+- <Bscmake>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- <OutputFile>.\Release\Abyss/abyss.bsc</OutputFile>\r
+- </Bscmake>\r
+- </ItemDefinitionGroup>\r
+- <ItemGroup>\r
+- <ClCompile Include="..\lib\abyss\src\channel.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\chanswitch.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\conf.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\conn.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\data.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\date.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\file.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\handler.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\http.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\init.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\response.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\server.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\session.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\socket.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\socket_openssl.c">\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\socket_unix.c">\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\socket_win.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\thread_fork.c">\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\thread_pthread.c">\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\thread_windows.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\token.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\trace.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- </ItemGroup>\r
+- <ItemGroup>\r
+- <ClInclude Include="..\lib\abyss\src\abyss_info.h" />\r
+- <ClInclude Include="..\lib\abyss\src\channel.h" />\r
+- <ClInclude Include="..\lib\abyss\src\chanswitch.h" />\r
+- <ClInclude Include="..\lib\abyss\src\conn.h" />\r
+- <ClInclude Include="..\lib\abyss\src\data.h" />\r
+- <ClInclude Include="..\lib\abyss\src\date.h" />\r
+- <ClInclude Include="..\lib\abyss\src\file.h" />\r
+- <ClInclude Include="..\lib\abyss\src\handler.h" />\r
+- <ClInclude Include="..\lib\abyss\src\http.h" />\r
+- <ClInclude Include="..\lib\abyss\src\server.h" />\r
+- <ClInclude Include="..\lib\abyss\src\session.h" />\r
+- <ClInclude Include="..\lib\abyss\src\socket.h" />\r
+- <ClInclude Include="..\lib\abyss\src\socket_win.h" />\r
+- <ClInclude Include="..\lib\abyss\src\thread.h" />\r
+- <ClInclude Include="..\lib\abyss\src\token.h" />\r
+- <ClInclude Include="..\lib\abyss\src\trace.h" />\r
+- </ItemGroup>\r
+- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+- <ImportGroup Label="ExtensionTargets">\r
+- </ImportGroup>\r
+-</Project>
+\ No newline at end of file
+diff --git a/libs/xmlrpc-c/Windows/abyss.2010.vcxproj.filters b/libs/xmlrpc-c/Windows/abyss.2010.vcxproj.filters
+deleted file mode 100644
+index 63a3cb3..0000000
+--- a/libs/xmlrpc-c/Windows/abyss.2010.vcxproj.filters
++++ /dev/null
+@@ -1,131 +0,0 @@
+-<?xml version="1.0" encoding="utf-8"?>\r
+-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+- <ItemGroup>\r
+- <Filter Include="Source Files">\r
+- <UniqueIdentifier>{8ac4971f-a9ba-4930-a7e3-b291ad24d6ca}</UniqueIdentifier>\r
+- <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>\r
+- </Filter>\r
+- <Filter Include="Header Files">\r
+- <UniqueIdentifier>{05489d43-6c6b-4bb8-95db-414e8137ee9e}</UniqueIdentifier>\r
+- <Extensions>h;hpp;hxx;hm;inl</Extensions>\r
+- </Filter>\r
+- </ItemGroup>\r
+- <ItemGroup>\r
+- <ClCompile Include="..\lib\abyss\src\channel.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\chanswitch.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\conf.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\conn.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\data.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\date.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\file.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\handler.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\http.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\init.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\response.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\server.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\session.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\socket.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\socket_openssl.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\socket_unix.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\socket_win.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\thread_fork.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\thread_pthread.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\thread_windows.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\token.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\abyss\src\trace.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- </ItemGroup>\r
+- <ItemGroup>\r
+- <ClInclude Include="..\lib\abyss\src\abyss_info.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\channel.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\chanswitch.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\conn.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\data.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\date.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\file.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\handler.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\http.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\server.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\session.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\socket.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\socket_win.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\thread.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\token.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\trace.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- </ItemGroup>\r
+-</Project>
+\ No newline at end of file
+diff --git a/libs/xmlrpc-c/Windows/cpptest.dsp b/libs/xmlrpc-c/Windows/cpptest.dsp
+index 9db8ccc..49f52c1 100644
+--- a/libs/xmlrpc-c/Windows/cpptest.dsp
++++ b/libs/xmlrpc-c/Windows/cpptest.dsp
+@@ -1,121 +1,128 @@
+-# Microsoft Developer Studio Project File - Name="cpptest" - Package Owner=<4>\r
+-# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+-# ** DO NOT EDIT **\r
+-\r
+-# TARGTYPE "Win32 (x86) Console Application" 0x0103\r
+-\r
+-CFG=cpptest - Win32 Debug\r
+-!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+-!MESSAGE use the Export Makefile command and run\r
+-!MESSAGE \r
+-!MESSAGE NMAKE /f "cpptest.mak".\r
+-!MESSAGE \r
+-!MESSAGE You can specify a configuration when running NMAKE\r
+-!MESSAGE by defining the macro CFG on the command line. For example:\r
+-!MESSAGE \r
+-!MESSAGE NMAKE /f "cpptest.mak" CFG="cpptest - Win32 Debug"\r
+-!MESSAGE \r
+-!MESSAGE Possible choices for configuration are:\r
+-!MESSAGE \r
+-!MESSAGE "cpptest - Win32 Release" (based on "Win32 (x86) Console Application")\r
+-!MESSAGE "cpptest - Win32 Debug" (based on "Win32 (x86) Console Application")\r
+-!MESSAGE \r
+-\r
+-# Begin Project\r
+-# PROP AllowPerConfigDependencies 0\r
+-CPP=cl.exe\r
+-RSC=rc.exe\r
+-\r
+-!IF "$(CFG)" == "cpptest - Win32 Release"\r
+-\r
+-# PROP BASE Use_MFC 0\r
+-# PROP BASE Use_Debug_Libraries 0\r
+-# PROP BASE Output_Dir "Release"\r
+-# PROP BASE Intermediate_Dir "Release"\r
+-# PROP BASE Target_Dir ""\r
+-# PROP Use_MFC 0\r
+-# PROP Use_Debug_Libraries 0\r
+-# PROP Output_Dir "Release\cpptest"\r
+-# PROP Intermediate_Dir "Release\cpptest"\r
+-# PROP Ignore_Export_Lib 0\r
+-# PROP Target_Dir ""\r
+-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c\r
+-# ADD CPP /nologo /MT /W3 /GX /O2 /I ".." /I "../include" /I "../lib/util/include" /I "../.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "ABYSS_WIN32" /D "CURL_STATICLIB" /D "_CRT_SECURE_NO_WARNINGS" /YX /FD /c\r
+-# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
+-# ADD RSC /l 0x409 /d "NDEBUG"\r
+-BSC32=bscmake.exe\r
+-# ADD BASE BSC32 /nologo\r
+-# ADD BSC32 /nologo\r
+-LINK32=link.exe\r
+-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386\r
+-# ADD LINK32 ..\lib\xmlrpccpp.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib Wininet.lib /nologo /subsystem:console /machine:I386 /out:"..\bin\cpptest.exe"\r
+-\r
+-!ELSEIF "$(CFG)" == "cpptest - Win32 Debug"\r
+-\r
+-# PROP BASE Use_MFC 0\r
+-# PROP BASE Use_Debug_Libraries 1\r
+-# PROP BASE Output_Dir "Debug"\r
+-# PROP BASE Intermediate_Dir "Debug"\r
+-# PROP BASE Target_Dir ""\r
+-# PROP Use_MFC 0\r
+-# PROP Use_Debug_Libraries 1\r
+-# PROP Output_Dir "Debug\cpptest"\r
+-# PROP Intermediate_Dir "Debug\cpptest"\r
+-# PROP Ignore_Export_Lib 0\r
+-# PROP Target_Dir ""\r
+-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c\r
+-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../.." /I ".." /I "../include" /I "../lib/util/include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "ABYSS_WIN32" /D "CURL_STATICLIB" /D "_CRT_SECURE_NO_WARNINGS" /YX /FD /GZ /c\r
+-# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
+-# ADD RSC /l 0x409 /d "_DEBUG"\r
+-BSC32=bscmake.exe\r
+-# ADD BASE BSC32 /nologo\r
+-# ADD BSC32 /nologo\r
+-LINK32=link.exe\r
+-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept\r
+-# ADD LINK32 ..\lib\xmlrpccppD.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib Wininet.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\bin\cpptestD.exe" /pdbtype:sept\r
+-\r
+-!ENDIF \r
+-\r
+-# Begin Target\r
+-\r
+-# Name "cpptest - Win32 Release"\r
+-# Name "cpptest - Win32 Debug"\r
+-# Begin Group "Source Files"\r
+-\r
+-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\test\registry.cpp\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\test\server_abyss.cpp\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\test\server_pstream.cpp\r
+-# PROP Exclude_From_Build 1\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\test\test.cpp\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\test\testclient_dummy.cpp\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\test\tools.cpp\r
+-# End Source File\r
+-# End Group\r
+-# Begin Group "Header Files"\r
+-\r
+-# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
+-# End Group\r
+-# Begin Group "Resource Files"\r
+-\r
+-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
+-# End Group\r
+-# End Target\r
+-# End Project\r
++# Microsoft Developer Studio Project File - Name="cpptest" - Package Owner=<4>
++# Microsoft Developer Studio Generated Build File, Format Version 6.00
++# ** DO NOT EDIT **
++
++# TARGTYPE "Win32 (x86) Console Application" 0x0103
++
++CFG=cpptest - Win32 Debug
++!MESSAGE This is not a valid makefile. To build this project using NMAKE,
++!MESSAGE use the Export Makefile command and run
++!MESSAGE
++!MESSAGE NMAKE /f "cpptest.mak".
++!MESSAGE
++!MESSAGE You can specify a configuration when running NMAKE
++!MESSAGE by defining the macro CFG on the command line. For example:
++!MESSAGE
++!MESSAGE NMAKE /f "cpptest.mak" CFG="cpptest - Win32 Debug"
++!MESSAGE
++!MESSAGE Possible choices for configuration are:
++!MESSAGE
++!MESSAGE "cpptest - Win32 Release" (based on "Win32 (x86) Console Application")
++!MESSAGE "cpptest - Win32 Debug" (based on "Win32 (x86) Console Application")
++!MESSAGE
++
++# Begin Project
++# PROP AllowPerConfigDependencies 0
++CPP=cl.exe
++RSC=rc.exe
++
++!IF "$(CFG)" == "cpptest - Win32 Release"
++
++# PROP BASE Use_MFC 0
++# PROP BASE Use_Debug_Libraries 0
++# PROP BASE Output_Dir "Release"
++# PROP BASE Intermediate_Dir "Release"
++# PROP BASE Target_Dir ""
++# PROP Use_MFC 0
++# PROP Use_Debug_Libraries 0
++# PROP Output_Dir "Release\cpptest"
++# PROP Intermediate_Dir "Release\cpptest"
++# PROP Ignore_Export_Lib 0
++# PROP Target_Dir ""
++# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
++# ADD CPP /nologo /MT /W3 /GX /O2 /I ".." /I "../include" /I "../lib/util/include" /I "../.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "ABYSS_WIN32" /D "CURL_STATICLIB" /D "_CRT_SECURE_NO_WARNINGS" /YX /FD /c
++# ADD BASE RSC /l 0x409 /d "NDEBUG"
++# ADD RSC /l 0x409 /d "NDEBUG"
++BSC32=bscmake.exe
++# ADD BASE BSC32 /nologo
++# ADD BSC32 /nologo
++LINK32=link.exe
++# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
++# ADD LINK32 ..\lib\xmlrpccpp.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib Wininet.lib /nologo /subsystem:console /machine:I386 /out:"..\bin\cpptest.exe"
++
++!ELSEIF "$(CFG)" == "cpptest - Win32 Debug"
++
++# PROP BASE Use_MFC 0
++# PROP BASE Use_Debug_Libraries 1
++# PROP BASE Output_Dir "Debug"
++# PROP BASE Intermediate_Dir "Debug"
++# PROP BASE Target_Dir ""
++# PROP Use_MFC 0
++# PROP Use_Debug_Libraries 1
++# PROP Output_Dir "Debug\cpptest"
++# PROP Intermediate_Dir "Debug\cpptest"
++# PROP Ignore_Export_Lib 0
++# PROP Target_Dir ""
++# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
++# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../.." /I ".." /I "../include" /I "../lib/util/include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "ABYSS_WIN32" /D "CURL_STATICLIB" /D "_CRT_SECURE_NO_WARNINGS" /YX /FD /GZ /c
++# ADD BASE RSC /l 0x409 /d "_DEBUG"
++# ADD RSC /l 0x409 /d "_DEBUG"
++BSC32=bscmake.exe
++# ADD BASE BSC32 /nologo
++# ADD BSC32 /nologo
++LINK32=link.exe
++# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
++# ADD LINK32 ..\lib\xmlrpccppD.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib Wininet.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\bin\cpptestD.exe" /pdbtype:sept
++
++!ENDIF
++
++# Begin Target
++
++# Name "cpptest - Win32 Release"
++# Name "cpptest - Win32 Debug"
++# Begin Group "Source Files"
++
++# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
++# Begin Source File
++
++SOURCE=..\src\cpp\test\value.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\test\registry.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\test\server_abyss.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\test\server_pstream.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\test\test.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\test\testclient_dummy.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\test\tools.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=.\socketpair.cpp
++# End Source File
++# End Group
++# Begin Group "Header Files"
++
++# PROP Default_Filter "h;hpp;hxx;hm;inl"
++# End Group
++# Begin Group "Resource Files"
++
++# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
++# End Group
++# End Target
++# End Project
+diff --git a/libs/xmlrpc-c/Windows/gennmtab.2008.vcproj b/libs/xmlrpc-c/Windows/gennmtab.2008.vcproj
+deleted file mode 100644
+index c4460dd..0000000
+--- a/libs/xmlrpc-c/Windows/gennmtab.2008.vcproj
++++ /dev/null
+@@ -1,242 +0,0 @@
+-<?xml version="1.0" encoding="Windows-1252"?>\r
+-<VisualStudioProject\r
+- ProjectType="Visual C++"\r
+- Version="9.00"\r
+- Name="gennmtab"\r
+- ProjectGUID="{A6F149DA-CD8D-4E8E-B914-25DFFE6269A7}"\r
+- RootNamespace="gennmtab"\r
+- TargetFrameworkVersion="131072"\r
+- >\r
+- <Platforms>\r
+- <Platform\r
+- Name="Win32"\r
+- />\r
+- </Platforms>\r
+- <ToolFiles>\r
+- </ToolFiles>\r
+- <Configurations>\r
+- <Configuration\r
+- Name="Debug|Win32"\r
+- OutputDirectory=".\Debug\gennmtab"\r
+- IntermediateDirectory=".\Debug\gennmtab"\r
+- ConfigurationType="1"\r
+- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
+- UseOfMFC="0"\r
+- ATLMinimizesCRunTimeLibraryUsage="false"\r
+- >\r
+- <Tool\r
+- Name="VCPreBuildEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCCustomBuildTool"\r
+- />\r
+- <Tool\r
+- Name="VCXMLDataGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCWebServiceProxyGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCMIDLTool"\r
+- TypeLibraryName=".\Debug\gennmtab/gennmtab.tlb"\r
+- HeaderFileName=""\r
+- />\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- Optimization="0"\r
+- AdditionalIncludeDirectories="..;."\r
+- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"\r
+- MinimalRebuild="true"\r
+- RuntimeLibrary="1"\r
+- PrecompiledHeaderFile=".\Debug\gennmtab/gennmtab.pch"\r
+- AssemblerListingLocation=".\Debug\gennmtab/"\r
+- ObjectFile=".\Debug\gennmtab/"\r
+- ProgramDataBaseFileName=".\Debug\gennmtab/"\r
+- WarningLevel="3"\r
+- SuppressStartupBanner="true"\r
+- DebugInformationFormat="4"\r
+- />\r
+- <Tool\r
+- Name="VCManagedResourceCompilerTool"\r
+- />\r
+- <Tool\r
+- Name="VCResourceCompilerTool"\r
+- PreprocessorDefinitions="_DEBUG"\r
+- Culture="2057"\r
+- />\r
+- <Tool\r
+- Name="VCPreLinkEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCLinkerTool"\r
+- OutputFile="..\bin\gennmtabD.exe"\r
+- LinkIncremental="2"\r
+- SuppressStartupBanner="true"\r
+- GenerateDebugInformation="true"\r
+- ProgramDatabaseFile=".\Debug\gennmtab/gennmtabD.pdb"\r
+- SubSystem="1"\r
+- RandomizedBaseAddress="1"\r
+- DataExecutionPrevention="0"\r
+- TargetMachine="1"\r
+- />\r
+- <Tool\r
+- Name="VCALinkTool"\r
+- />\r
+- <Tool\r
+- Name="VCManifestTool"\r
+- />\r
+- <Tool\r
+- Name="VCXDCMakeTool"\r
+- />\r
+- <Tool\r
+- Name="VCBscMakeTool"\r
+- SuppressStartupBanner="true"\r
+- OutputFile=".\Debug\gennmtab/gennmtab.bsc"\r
+- />\r
+- <Tool\r
+- Name="VCFxCopTool"\r
+- />\r
+- <Tool\r
+- Name="VCAppVerifierTool"\r
+- />\r
+- <Tool\r
+- Name="VCPostBuildEventTool"\r
+- Description="(D) Generating nametab.h ..."\r
+- CommandLine="..\bin\gennmtabD.exe >..\lib\expat\xmltok\nametab.h"\r
+- />\r
+- </Configuration>\r
+- <Configuration\r
+- Name="Release|Win32"\r
+- OutputDirectory=".\Release\gennmtab"\r
+- IntermediateDirectory=".\Release\gennmtab"\r
+- ConfigurationType="1"\r
+- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
+- UseOfMFC="0"\r
+- ATLMinimizesCRunTimeLibraryUsage="false"\r
+- >\r
+- <Tool\r
+- Name="VCPreBuildEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCCustomBuildTool"\r
+- />\r
+- <Tool\r
+- Name="VCXMLDataGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCWebServiceProxyGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCMIDLTool"\r
+- TypeLibraryName=".\Release\gennmtab/gennmtab.tlb"\r
+- HeaderFileName=""\r
+- />\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- Optimization="2"\r
+- InlineFunctionExpansion="1"\r
+- AdditionalIncludeDirectories="..;."\r
+- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"\r
+- StringPooling="true"\r
+- RuntimeLibrary="0"\r
+- EnableFunctionLevelLinking="true"\r
+- PrecompiledHeaderFile=".\Release\gennmtab/gennmtab.pch"\r
+- AssemblerListingLocation=".\Release\gennmtab/"\r
+- ObjectFile=".\Release\gennmtab/"\r
+- ProgramDataBaseFileName=".\Release\gennmtab/"\r
+- WarningLevel="3"\r
+- SuppressStartupBanner="true"\r
+- />\r
+- <Tool\r
+- Name="VCManagedResourceCompilerTool"\r
+- />\r
+- <Tool\r
+- Name="VCResourceCompilerTool"\r
+- PreprocessorDefinitions="NDEBUG"\r
+- Culture="2057"\r
+- />\r
+- <Tool\r
+- Name="VCPreLinkEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCLinkerTool"\r
+- OutputFile="..\bin\gennmtab.exe"\r
+- LinkIncremental="1"\r
+- SuppressStartupBanner="true"\r
+- ProgramDatabaseFile=".\Release\gennmtab/gennmtab.pdb"\r
+- SubSystem="1"\r
+- RandomizedBaseAddress="1"\r
+- DataExecutionPrevention="0"\r
+- TargetMachine="1"\r
+- />\r
+- <Tool\r
+- Name="VCALinkTool"\r
+- />\r
+- <Tool\r
+- Name="VCManifestTool"\r
+- />\r
+- <Tool\r
+- Name="VCXDCMakeTool"\r
+- />\r
+- <Tool\r
+- Name="VCBscMakeTool"\r
+- SuppressStartupBanner="true"\r
+- OutputFile=".\Release\gennmtab/gennmtab.bsc"\r
+- />\r
+- <Tool\r
+- Name="VCFxCopTool"\r
+- />\r
+- <Tool\r
+- Name="VCAppVerifierTool"\r
+- />\r
+- <Tool\r
+- Name="VCPostBuildEventTool"\r
+- Description="(R) Generating nametab.h ..."\r
+- CommandLine="..\bin\gennmtab.exe >..\lib\expat\xmltok\nametab.h"\r
+- />\r
+- </Configuration>\r
+- </Configurations>\r
+- <References>\r
+- </References>\r
+- <Files>\r
+- <Filter\r
+- Name="Source Files"\r
+- Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"\r
+- >\r
+- <File\r
+- RelativePath="..\lib\expat\gennmtab\gennmtab.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- </Filter>\r
+- <Filter\r
+- Name="Header Files"\r
+- Filter="h;hpp;hxx;hm;inl;fi;fd"\r
+- >\r
+- </Filter>\r
+- <Filter\r
+- Name="Resource Files"\r
+- Filter="ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"\r
+- >\r
+- </Filter>\r
+- </Files>\r
+- <Globals>\r
+- </Globals>\r
+-</VisualStudioProject>\r
+diff --git a/libs/xmlrpc-c/Windows/mkvers.bat b/libs/xmlrpc-c/Windows/mkvers.bat
+index 2f6ec1b..2ff46e0 100644
+--- a/libs/xmlrpc-c/Windows/mkvers.bat
++++ b/libs/xmlrpc-c/Windows/mkvers.bat
+@@ -1,53 +1,53 @@
+-@if EXIST ..\version.h goto SHOW\r
+-@if NOT EXIST ..\Makefile.version goto ERR1\r
+-@if NOT EXIST mkvers1.bat goto ERR2\r
+-@echo updating/creating ..\version.h ...\r
+-@set TEMP1=1\r
+-@for /F "skip=8 tokens=3" %%i in (..\Makefile.version) do @call mkvers1 %%i\r
+-@if "%TEMPX1%." == "." goto NOX1\r
+-@if "%TEMPX2%." == "." goto NOX1\r
+-@if "%TEMPX3%." == "." goto NOX1\r
+-@set TEMP1=..\version.h\r
+-@echo #ifndef XMLRPC_C_VERSION_INCLUDED > %TEMP1%\r
+-@echo #define XMLRPC_C_VERSION_INCLUDED >> %TEMP1%\r
+-@echo /* generated by Windows/mkvers.bat on %DATE% ... */ >> %TEMP1%\r
+-@echo #define XMLRPC_C_VERSION "Xmlrpc-c %TEMPX1%.%TEMPX2%.%TEMPX3%" >> %TEMP1%\r
+-@echo #define XMLRPC_VERSION_MAJOR %TEMPX1% >> %TEMP1%\r
+-@echo #define XMLRPC_VERSION_MINOR %TEMPX2% >> %TEMP1%\r
+-@echo #define XMLRPC_VERSION_POINT %TEMPX3% >> %TEMP1%\r
+-@echo #endif >> %TEMP1%\r
+-type %TEMP1%\r
+-@echo ..\version.h set to the above ...\r
+-@set TEMP1=\r
+-@set TEMPX1=\r
+-@set TEMPX2=\r
+-@set TEMPX3=\r
+-@goto END \r
+-\r
+-:NOX1\r
+-@echo Some error occurred in the batch process ...\r
+-@goto NOVER\r
+-\r
+-:NOVER\r
+-@echo Failed to create ..\version.h .\r
+-@pause\r
+-@goto END\r
+-\r
+-\r
+-:ERR1\r
+-@echo Can not locate ..\Makefile.version ... check name, location ...\r
+-@pause\r
+-@goto END\r
+-:ERR2\r
+-@echo Can not locate mkvers1.bat ... check name, location ...\r
+-@pause\r
+-@goto END\r
+-\r
+-:SHOW\r
+-@echo ..\version.h already exist, with version ...\r
+-@type ..\version.h\r
+-@echo Delete this file if you wish to redo it ...\r
+-@pause\r
+-@goto END\r
+-\r
+-:END\r
++@if EXIST ..\version.h goto SHOW
++@if NOT EXIST ..\version.mk goto ERR1
++@if NOT EXIST mkvers1.bat goto ERR2
++@echo updating/creating ..\version.h ...
++@set TEMP1=1
++@for /F "skip=8 tokens=3" %%i in (..\version.mk) do @call mkvers1 %%i
++@if "%TEMPX1%." == "." goto NOX1
++@if "%TEMPX2%." == "." goto NOX1
++@if "%TEMPX3%." == "." goto NOX1
++@set TEMP1=..\version.h
++@echo #ifndef XMLRPC_C_VERSION_INCLUDED > %TEMP1%
++@echo #define XMLRPC_C_VERSION_INCLUDED >> %TEMP1%
++@echo /* generated by Windows/mkvers.bat on %DATE% ... */ >> %TEMP1%
++@echo #define XMLRPC_C_VERSION "%TEMPX1%.%TEMPX2%.%TEMPX3%" >> %TEMP1%
++@echo #define XMLRPC_VERSION_MAJOR %TEMPX1% >> %TEMP1%
++@echo #define XMLRPC_VERSION_MINOR %TEMPX2% >> %TEMP1%
++@echo #define XMLRPC_VERSION_POINT %TEMPX3% >> %TEMP1%
++@echo #endif >> %TEMP1%
++type %TEMP1%
++@echo ..\version.h set to the above ...
++@set TEMP1=
++@set TEMPX1=
++@set TEMPX2=
++@set TEMPX3=
++@goto END
++
++:NOX1
++@echo Some error occurred in the batch process ...
++@goto NOVER
++
++:NOVER
++@echo Failed to create ..\version.h .
++@pause
++@goto END
++
++
++:ERR1
++@echo Can not locate ..\version.mk ... check name, location ...
++@pause
++@goto END
++:ERR2
++@echo Can not locate mkvers1.bat ... check name, location ...
++@pause
++@goto END
++
++:SHOW
++@echo ..\version.h already exist, with version ...
++@type ..\version.h
++@echo Delete this file if you wish to redo it ...
++@pause
++@goto END
++
++:END
+diff --git a/libs/xmlrpc-c/Windows/query_meerkat.dsp b/libs/xmlrpc-c/Windows/query_meerkat.dsp
+deleted file mode 100644
+index 2ffb15b..0000000
+--- a/libs/xmlrpc-c/Windows/query_meerkat.dsp
++++ /dev/null
+@@ -1,100 +0,0 @@
+-# Microsoft Developer Studio Project File - Name="query_meerkat" - Package Owner=<4>
+-# Microsoft Developer Studio Generated Build File, Format Version 6.00
+-# ** DO NOT EDIT **
+-
+-# TARGTYPE "Win32 (x86) Console Application" 0x0103
+-
+-CFG=query_meerkat - Win32 Debug
+-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+-!MESSAGE use the Export Makefile command and run
+-!MESSAGE
+-!MESSAGE NMAKE /f "query_meerkat.mak".
+-!MESSAGE
+-!MESSAGE You can specify a configuration when running NMAKE
+-!MESSAGE by defining the macro CFG on the command line. For example:
+-!MESSAGE
+-!MESSAGE NMAKE /f "query_meerkat.mak" CFG="query_meerkat - Win32 Debug"
+-!MESSAGE
+-!MESSAGE Possible choices for configuration are:
+-!MESSAGE
+-!MESSAGE "query_meerkat - Win32 Release" (based on "Win32 (x86) Console Application")
+-!MESSAGE "query_meerkat - Win32 Debug" (based on "Win32 (x86) Console Application")
+-!MESSAGE
+-
+-# Begin Project
+-# PROP AllowPerConfigDependencies 0
+-# PROP Scc_ProjName "query_meerkat"
+-# PROP Scc_LocalPath ".."
+-CPP=cl.exe
+-RSC=rc.exe
+-
+-!IF "$(CFG)" == "query_meerkat - Win32 Release"
+-
+-# PROP BASE Use_MFC 0
+-# PROP BASE Use_Debug_Libraries 0
+-# PROP BASE Output_Dir "Release"
+-# PROP BASE Intermediate_Dir "Release"
+-# PROP BASE Target_Dir ""
+-# PROP Use_MFC 0
+-# PROP Use_Debug_Libraries 0
+-# PROP Output_Dir "Release\query_meerkat"
+-# PROP Intermediate_Dir "Release\query_meerkat"
+-# PROP Target_Dir ""
+-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\\" /I "..\include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+-# ADD BASE RSC /l 0x409 /d "NDEBUG"
+-# ADD RSC /l 0x409 /d "NDEBUG"
+-BSC32=bscmake.exe
+-# ADD BASE BSC32 /nologo
+-# ADD BSC32 /nologo
+-LINK32=link.exe
+-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+-# ADD LINK32 ..\lib\xmlrpc.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib WinInet.lib /nologo /subsystem:console /machine:I386 /out:"..\bin\query_meerkat.exe"
+-
+-!ELSEIF "$(CFG)" == "query_meerkat - Win32 Debug"
+-
+-# PROP BASE Use_MFC 0
+-# PROP BASE Use_Debug_Libraries 1
+-# PROP BASE Output_Dir "Debug"
+-# PROP BASE Intermediate_Dir "Debug"
+-# PROP BASE Target_Dir ""
+-# PROP Use_MFC 0
+-# PROP Use_Debug_Libraries 1
+-# PROP Output_Dir "Debug\query_meerkat"
+-# PROP Intermediate_Dir "Debug\query_meerkat"
+-# PROP Target_Dir ""
+-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\\" /I "..\include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+-# ADD BASE RSC /l 0x409 /d "_DEBUG"
+-# ADD RSC /l 0x409 /d "_DEBUG"
+-BSC32=bscmake.exe
+-# ADD BASE BSC32 /nologo
+-# ADD BSC32 /nologo
+-LINK32=link.exe
+-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+-# ADD LINK32 ..\lib\xmlrpcD.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib WinInet.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\bin\query_meerkatD.exe" /pdbtype:sept
+-
+-!ENDIF
+-
+-# Begin Target
+-
+-# Name "query_meerkat - Win32 Release"
+-# Name "query_meerkat - Win32 Debug"
+-# Begin Group "Source Files"
+-
+-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+-# Begin Source File
+-
+-SOURCE="..\examples\query-meerkat.c"
+-# End Source File
+-# End Group
+-# Begin Group "Header Files"
+-
+-# PROP Default_Filter "h;hpp;hxx;hm;inl"
+-# End Group
+-# Begin Group "Resource Files"
+-
+-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+-# End Group
+-# End Target
+-# End Project
+diff --git a/libs/xmlrpc-c/Windows/rpctest.dsp b/libs/xmlrpc-c/Windows/rpctest.dsp
+index 159692c..7a7b350 100644
+--- a/libs/xmlrpc-c/Windows/rpctest.dsp
++++ b/libs/xmlrpc-c/Windows/rpctest.dsp
+@@ -1,210 +1,218 @@
+-# Microsoft Developer Studio Project File - Name="rpctest" - Package Owner=<4>\r
+-# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+-# ** DO NOT EDIT **\r
+-\r
+-# TARGTYPE "Win32 (x86) Console Application" 0x0103\r
+-\r
+-CFG=rpctest - Win32 Debug\r
+-!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+-!MESSAGE use the Export Makefile command and run\r
+-!MESSAGE \r
+-!MESSAGE NMAKE /f "rpctest.mak".\r
+-!MESSAGE \r
+-!MESSAGE You can specify a configuration when running NMAKE\r
+-!MESSAGE by defining the macro CFG on the command line. For example:\r
+-!MESSAGE \r
+-!MESSAGE NMAKE /f "rpctest.mak" CFG="rpctest - Win32 Debug"\r
+-!MESSAGE \r
+-!MESSAGE Possible choices for configuration are:\r
+-!MESSAGE \r
+-!MESSAGE "rpctest - Win32 Release" (based on "Win32 (x86) Console Application")\r
+-!MESSAGE "rpctest - Win32 Debug" (based on "Win32 (x86) Console Application")\r
+-!MESSAGE \r
+-\r
+-# Begin Project\r
+-# PROP AllowPerConfigDependencies 0\r
+-CPP=cl.exe\r
+-RSC=rc.exe\r
+-\r
+-!IF "$(CFG)" == "rpctest - Win32 Release"\r
+-\r
+-# PROP BASE Use_MFC 0\r
+-# PROP BASE Use_Debug_Libraries 0\r
+-# PROP BASE Output_Dir "Release"\r
+-# PROP BASE Intermediate_Dir "Release"\r
+-# PROP BASE Target_Dir ""\r
+-# PROP Use_MFC 0\r
+-# PROP Use_Debug_Libraries 0\r
+-# PROP Output_Dir "Release\rpctest"\r
+-# PROP Intermediate_Dir "Release\rpctest"\r
+-# PROP Ignore_Export_Lib 0\r
+-# PROP Target_Dir ""\r
+-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c\r
+-# ADD CPP /nologo /MT /W3 /GX /O2 /I ".." /I "../include" /I "../lib/util/include" /I "../.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "ABYSS_WIN32" /YX /FD /c\r
+-# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
+-# ADD RSC /l 0x409 /d "NDEBUG"\r
+-BSC32=bscmake.exe\r
+-# ADD BASE BSC32 /nologo\r
+-# ADD BSC32 /nologo\r
+-LINK32=link.exe\r
+-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386\r
+-# ADD LINK32 ..\lib\xmlrpc.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib Wininet.lib /nologo /subsystem:console /machine:I386 /out:"..\bin\rpctest.exe"\r
+-# Begin Special Build Tool\r
+-SOURCE="$(InputPath)"\r
+-PostBuild_Desc=Copy test files\r
+-PostBuild_Cmds=if not exist ..\Bin\data md ..\Bin\data copy ..\src\test\data\*.* ..\Bin\data\r
+-# End Special Build Tool\r
+-\r
+-!ELSEIF "$(CFG)" == "rpctest - Win32 Debug"\r
+-\r
+-# PROP BASE Use_MFC 0\r
+-# PROP BASE Use_Debug_Libraries 1\r
+-# PROP BASE Output_Dir "Debug"\r
+-# PROP BASE Intermediate_Dir "Debug"\r
+-# PROP BASE Target_Dir ""\r
+-# PROP Use_MFC 0\r
+-# PROP Use_Debug_Libraries 1\r
+-# PROP Output_Dir "Debug\rpctest"\r
+-# PROP Intermediate_Dir "Debug\rpctest"\r
+-# PROP Ignore_Export_Lib 0\r
+-# PROP Target_Dir ""\r
+-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c\r
+-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../.." /I ".." /I "../include" /I "../lib/util/include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "ABYSS_WIN32" /YX /FD /GZ /c\r
+-# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
+-# ADD RSC /l 0x409 /d "_DEBUG"\r
+-BSC32=bscmake.exe\r
+-# ADD BASE BSC32 /nologo\r
+-# ADD BSC32 /nologo\r
+-LINK32=link.exe\r
+-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept\r
+-# ADD LINK32 ..\lib\xmlrpcD.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib Wininet.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\bin\rpctestD.exe" /pdbtype:sept\r
+-# Begin Special Build Tool\r
+-SOURCE="$(InputPath)"\r
+-PostBuild_Desc=Copy test files\r
+-PostBuild_Cmds=if not exist ..\Bin\data md ..\Bin\data copy ..\src\test\data\*.* ..\Bin\data\r
+-# End Special Build Tool\r
+-\r
+-!ENDIF \r
+-\r
+-# Begin Target\r
+-\r
+-# Name "rpctest - Win32 Release"\r
+-# Name "rpctest - Win32 Debug"\r
+-# Begin Group "Source Files"\r
+-\r
+-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\test\abyss.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\test\cgi.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\test\client.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\util\casprintf.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\test\method_registry.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\test\parse_xml.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\test\serialize.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\test\serialize_value.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\test\server_abyss.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\test\test.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\abyss\src\token.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\test\value.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\test\xml_data.c\r
+-# End Source File\r
+-# End Group\r
+-# Begin Group "Header Files"\r
+-\r
+-# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\test\client.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\test\parse_xml.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\test\serialize.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\test\serialize_value.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\test\server_abyss.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\test\test.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\test\value.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\test\xml_data.h\r
+-# End Source File\r
+-# End Group\r
+-# Begin Group "Resource Files"\r
+-\r
+-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
+-# End Group\r
+-# Begin Group "TestFiles"\r
+-\r
+-# PROP Default_Filter ""\r
+-# Begin Source File\r
+-\r
+-SOURCE="..\src\testdata\http-req-simple.txt"\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\testdata\req_no_params.xml\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\testdata\req_out_of_order.xml\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\testdata\req_value_name.xml\r
+-# End Source File\r
+-# End Group\r
+-# End Target\r
+-# End Project\r
++# Microsoft Developer Studio Project File - Name="rpctest" - Package Owner=<4>
++# Microsoft Developer Studio Generated Build File, Format Version 6.00
++# ** DO NOT EDIT **
++
++# TARGTYPE "Win32 (x86) Console Application" 0x0103
++
++CFG=rpctest - Win32 Debug
++!MESSAGE This is not a valid makefile. To build this project using NMAKE,
++!MESSAGE use the Export Makefile command and run
++!MESSAGE
++!MESSAGE NMAKE /f "rpctest.mak".
++!MESSAGE
++!MESSAGE You can specify a configuration when running NMAKE
++!MESSAGE by defining the macro CFG on the command line. For example:
++!MESSAGE
++!MESSAGE NMAKE /f "rpctest.mak" CFG="rpctest - Win32 Debug"
++!MESSAGE
++!MESSAGE Possible choices for configuration are:
++!MESSAGE
++!MESSAGE "rpctest - Win32 Release" (based on "Win32 (x86) Console Application")
++!MESSAGE "rpctest - Win32 Debug" (based on "Win32 (x86) Console Application")
++!MESSAGE
++
++# Begin Project
++# PROP AllowPerConfigDependencies 0
++CPP=cl.exe
++RSC=rc.exe
++
++!IF "$(CFG)" == "rpctest - Win32 Release"
++
++# PROP BASE Use_MFC 0
++# PROP BASE Use_Debug_Libraries 0
++# PROP BASE Output_Dir "Release"
++# PROP BASE Intermediate_Dir "Release"
++# PROP BASE Target_Dir ""
++# PROP Use_MFC 0
++# PROP Use_Debug_Libraries 0
++# PROP Output_Dir "Release\rpctest"
++# PROP Intermediate_Dir "Release\rpctest"
++# PROP Ignore_Export_Lib 0
++# PROP Target_Dir ""
++# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
++# ADD CPP /nologo /MT /W3 /GX /O2 /I ".." /I "../include" /I "../lib/util/include" /I "../.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "ABYSS_WIN32" /YX /FD /c
++# ADD BASE RSC /l 0x409 /d "NDEBUG"
++# ADD RSC /l 0x409 /d "NDEBUG"
++BSC32=bscmake.exe
++# ADD BASE BSC32 /nologo
++# ADD BSC32 /nologo
++LINK32=link.exe
++# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
++# ADD LINK32 ..\lib\xmlrpc.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib Wininet.lib /nologo /subsystem:console /machine:I386 /out:"..\bin\rpctest.exe"
++# Begin Special Build Tool
++SOURCE="$(InputPath)"
++PostBuild_Desc=Copy test files
++PostBuild_Cmds=if not exist ..\Bin\data md ..\Bin\data copy ..\src\test\data\*.* ..\Bin\data
++# End Special Build Tool
++
++!ELSEIF "$(CFG)" == "rpctest - Win32 Debug"
++
++# PROP BASE Use_MFC 0
++# PROP BASE Use_Debug_Libraries 1
++# PROP BASE Output_Dir "Debug"
++# PROP BASE Intermediate_Dir "Debug"
++# PROP BASE Target_Dir ""
++# PROP Use_MFC 0
++# PROP Use_Debug_Libraries 1
++# PROP Output_Dir "Debug\rpctest"
++# PROP Intermediate_Dir "Debug\rpctest"
++# PROP Ignore_Export_Lib 0
++# PROP Target_Dir ""
++# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
++# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../.." /I ".." /I "../include" /I "../lib/util/include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "ABYSS_WIN32" /YX /FD /GZ /c
++# ADD BASE RSC /l 0x409 /d "_DEBUG"
++# ADD RSC /l 0x409 /d "_DEBUG"
++BSC32=bscmake.exe
++# ADD BASE BSC32 /nologo
++# ADD BSC32 /nologo
++LINK32=link.exe
++# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
++# ADD LINK32 ..\lib\xmlrpcD.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib Wininet.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\bin\rpctestD.exe" /pdbtype:sept
++# Begin Special Build Tool
++SOURCE="$(InputPath)"
++PostBuild_Desc=Copy test files
++PostBuild_Cmds=if not exist ..\Bin\data md ..\Bin\data copy ..\src\test\data\*.* ..\Bin\data
++# End Special Build Tool
++
++!ENDIF
++
++# Begin Target
++
++# Name "rpctest - Win32 Release"
++# Name "rpctest - Win32 Debug"
++# Begin Group "Source Files"
++
++# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
++# Begin Source File
++
++SOURCE=..\src\test\abyss.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\test\cgi.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\test\client.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\util\casprintf.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\test\method_registry.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\test\parse_xml.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\test\serialize.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\test\serialize_value.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\test\server_abyss.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\test\test.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\abyss\src\token.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\test\value.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\test\value_datetime.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\test\value_datetime.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\test\xml_data.c
++# End Source File
++# End Group
++# Begin Group "Header Files"
++
++# PROP Default_Filter "h;hpp;hxx;hm;inl"
++# Begin Source File
++
++SOURCE=..\src\test\client.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\test\parse_xml.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\test\serialize.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\test\serialize_value.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\test\server_abyss.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\test\test.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\test\value.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\test\xml_data.h
++# End Source File
++# End Group
++# Begin Group "Resource Files"
++
++# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
++# End Group
++# Begin Group "TestFiles"
++
++# PROP Default_Filter ""
++# Begin Source File
++
++SOURCE="..\src\testdata\http-req-simple.txt"
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\testdata\req_no_params.xml
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\testdata\req_out_of_order.xml
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\testdata\req_value_name.xml
++# End Source File
++# End Group
++# End Target
++# End Project
+diff --git a/libs/xmlrpc-c/Windows/transport_config.h b/libs/xmlrpc-c/Windows/transport_config.h
+deleted file mode 100644
+index 2642168..0000000
+--- a/libs/xmlrpc-c/Windows/transport_config.h
++++ /dev/null
+@@ -1,13 +0,0 @@
+-/* Win32 version of transport_config.h.\r
+-\r
+- For other platforms, this is generated automatically, but for Windows,\r
+- someone generates it manually. Nonetheless, we keep it looking as much\r
+- as possible like the automatically generated one to make it easier to\r
+- maintain (e.g. you can compare the two and see why something builds\r
+- differently for Windows that for some other platform).\r
+-*/\r
+-#define MUST_BUILD_WININET_CLIENT 1\r
+-#define MUST_BUILD_CURL_CLIENT 0\r
+-#define MUST_BUILD_LIBWWW_CLIENT 0\r
+-static const char * const XMLRPC_DEFAULT_TRANSPORT =\r
+-"wininet";\r
+diff --git a/libs/xmlrpc-c/Windows/win32_config.h b/libs/xmlrpc-c/Windows/win32_config.h
+index aabf9c2..a7e7a7d 100644
+--- a/libs/xmlrpc-c/Windows/win32_config.h
++++ b/libs/xmlrpc-c/Windows/win32_config.h
+@@ -1,38 +1,42 @@
+-#ifndef XMLRPC_C_CONFIG_H_INCLUDED\r
+-#define XMLRPC_C_CONFIG_H_INCLUDED\r
+-\r
+-/* This file, part of XML-RPC For C/C++, is meant to \r
+- define characteristics of this particular installation \r
+- that the other <xmlrpc-c/...> header files need in \r
+- order to compile correctly when #included in Xmlrpc-c\r
+- user code.\r
+-\r
+- Those header files #include this one.\r
+-\r
+- This file was created by a make rule.\r
+-*/\r
+-#define XMLRPC_HAVE_WCHAR 1\r
+-#ifdef WIN32\r
+- /* SOCKET is a type defined by <winsock.h>. Anyone who\r
+- uses XMLRPC_SOCKET on a WIN32 system must #include\r
+- <winsock.h>\r
+- */\r
+- #define XMLRPC_SOCKET SOCKET\r
+- #define XMLRPC_HAVE_TIMEVAL 0\r
+- #define XMLRPC_HAVE_TIMESPEC 0\r
+-#else\r
+- #define XMLRPC_SOCKET int\r
+- #define XMLRPC_HAVE_TIMEVAL 1\r
+- #define XMLRPC_HAVE_TIMESPEC 1\r
+-#endif\r
+-\r
+-#if defined(_MSC_VER)\r
+- /* Newer MSVC has long long, but MSVC 6 does not */\r
+- #define XMLRPC_INT64 __int64\r
+- #define XMLRPC_INT32 __int32\r
+-#else\r
+- #define XMLRPC_INT64 long long\r
+- #define XMLRPC_INT32 int\r
+-#endif\r
+-#endif\r
+-\r
++#ifndef XMLRPC_C_CONFIG_H_INCLUDED
++#define XMLRPC_C_CONFIG_H_INCLUDED
++
++/* This file, part of XML-RPC For C/C++, is meant to
++ define characteristics of this particular installation
++ that the other <xmlrpc-c/...> header files need in
++ order to compile correctly when #included in Xmlrpc-c
++ user code.
++
++ Those header files #include this one.
++
++ This file was created by a make rule.
++*/
++#define XMLRPC_HAVE_WCHAR 1
++#ifdef WIN32
++ /* SOCKET is a type defined by <winsock.h>. Anyone who
++ uses XMLRPC_SOCKET on a WIN32 system must #include
++ <winsock.h>
++ */
++ #define XMLRPC_SOCKET SOCKET
++ #define XMLRPC_HAVE_TIMEVAL 0
++ #define XMLRPC_HAVE_TIMESPEC 0
++ #define XMLRPC_HAVE_PTHREAD 0
++#else
++ #define XMLRPC_SOCKET int
++ #define XMLRPC_HAVE_TIMEVAL 1
++ #define XMLRPC_HAVE_TIMESPEC 1
++ #define XMLRPC_HAVE_PTHREAD 1
++#endif
++
++#if defined(_MSC_VER)
++ /* Newer MSVC has long long, but MSVC 6 does not */
++ #define XMLRPC_INT64 __int64
++ #define XMLRPC_INT32 __int32
++ #define XMLRPC_PRId64 PRId64
++#else
++ #define XMLRPC_INT64 long long
++ #define XMLRPC_INT32 int
++ #define XMLRPC_PRId64 "I64d"
++#endif
++#endif
++
+diff --git a/libs/xmlrpc-c/Windows/xmlparse.2008.vcproj b/libs/xmlrpc-c/Windows/xmlparse.2008.vcproj
+deleted file mode 100644
+index 15adb11..0000000
+--- a/libs/xmlrpc-c/Windows/xmlparse.2008.vcproj
++++ /dev/null
+@@ -1,387 +0,0 @@
+-<?xml version="1.0" encoding="Windows-1252"?>\r
+-<VisualStudioProject\r
+- ProjectType="Visual C++"\r
+- Version="9.00"\r
+- Name="xmlparse"\r
+- ProjectGUID="{0D108721-EAE8-4BAF-8102-D8960EC93647}"\r
+- RootNamespace="xmlparse"\r
+- TargetFrameworkVersion="131072"\r
+- >\r
+- <Platforms>\r
+- <Platform\r
+- Name="Win32"\r
+- />\r
+- <Platform\r
+- Name="x64"\r
+- />\r
+- </Platforms>\r
+- <ToolFiles>\r
+- </ToolFiles>\r
+- <Configurations>\r
+- <Configuration\r
+- Name="Release|Win32"\r
+- OutputDirectory=".\Release\xmlparse"\r
+- IntermediateDirectory=".\Release\xmlparse"\r
+- ConfigurationType="4"\r
+- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
+- UseOfMFC="0"\r
+- ATLMinimizesCRunTimeLibraryUsage="false"\r
+- CharacterSet="2"\r
+- >\r
+- <Tool\r
+- Name="VCPreBuildEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCCustomBuildTool"\r
+- />\r
+- <Tool\r
+- Name="VCXMLDataGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCWebServiceProxyGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCMIDLTool"\r
+- />\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- Optimization="2"\r
+- InlineFunctionExpansion="1"\r
+- AdditionalIncludeDirectories="..\lib\expat\xmltok,..\lib\expat\xmlwf,..,..\lib\util\include,..\include,."\r
+- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;XML_DTD;_LIB"\r
+- StringPooling="true"\r
+- RuntimeLibrary="0"\r
+- EnableFunctionLevelLinking="true"\r
+- PrecompiledHeaderFile=".\Release\xmlparse/xmlparse.pch"\r
+- AssemblerListingLocation=".\Release\xmlparse/"\r
+- ObjectFile=".\Release\xmlparse/"\r
+- ProgramDataBaseFileName=".\Release\xmlparse/"\r
+- WarningLevel="3"\r
+- SuppressStartupBanner="true"\r
+- />\r
+- <Tool\r
+- Name="VCManagedResourceCompilerTool"\r
+- />\r
+- <Tool\r
+- Name="VCResourceCompilerTool"\r
+- PreprocessorDefinitions="NDEBUG"\r
+- Culture="1033"\r
+- />\r
+- <Tool\r
+- Name="VCPreLinkEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCLibrarianTool"\r
+- OutputFile="..\lib\xmlparse.lib"\r
+- SuppressStartupBanner="true"\r
+- />\r
+- <Tool\r
+- Name="VCALinkTool"\r
+- />\r
+- <Tool\r
+- Name="VCXDCMakeTool"\r
+- />\r
+- <Tool\r
+- Name="VCBscMakeTool"\r
+- SuppressStartupBanner="true"\r
+- OutputFile=".\Release\xmlparse/xmlparse.bsc"\r
+- />\r
+- <Tool\r
+- Name="VCFxCopTool"\r
+- />\r
+- <Tool\r
+- Name="VCPostBuildEventTool"\r
+- />\r
+- </Configuration>\r
+- <Configuration\r
+- Name="Release|x64"\r
+- OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
+- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
+- ConfigurationType="4"\r
+- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
+- UseOfMFC="0"\r
+- ATLMinimizesCRunTimeLibraryUsage="false"\r
+- CharacterSet="2"\r
+- >\r
+- <Tool\r
+- Name="VCPreBuildEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCCustomBuildTool"\r
+- />\r
+- <Tool\r
+- Name="VCXMLDataGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCWebServiceProxyGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCMIDLTool"\r
+- TargetEnvironment="3"\r
+- />\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- Optimization="2"\r
+- InlineFunctionExpansion="1"\r
+- AdditionalIncludeDirectories="..\lib\expat\xmltok,..\lib\expat\xmlwf,..,..\lib\util\include,..\include,."\r
+- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;XML_DTD;_LIB"\r
+- StringPooling="true"\r
+- RuntimeLibrary="0"\r
+- EnableFunctionLevelLinking="true"\r
+- PrecompiledHeaderFile=".\Release\xmlparse/xmlparse.pch"\r
+- ObjectFile="$(IntDir)\xmlparse\"\r
+- ProgramDataBaseFileName="$(IntDir)\xmlparse\vc90.pdb"\r
+- WarningLevel="3"\r
+- SuppressStartupBanner="true"\r
+- />\r
+- <Tool\r
+- Name="VCManagedResourceCompilerTool"\r
+- />\r
+- <Tool\r
+- Name="VCResourceCompilerTool"\r
+- PreprocessorDefinitions="NDEBUG"\r
+- Culture="1033"\r
+- />\r
+- <Tool\r
+- Name="VCPreLinkEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCLibrarianTool"\r
+- OutputFile="..\lib\$(PlatformName)\$(ConfigurationName)\xmlparse.lib"\r
+- SuppressStartupBanner="true"\r
+- />\r
+- <Tool\r
+- Name="VCALinkTool"\r
+- />\r
+- <Tool\r
+- Name="VCXDCMakeTool"\r
+- />\r
+- <Tool\r
+- Name="VCBscMakeTool"\r
+- SuppressStartupBanner="true"\r
+- OutputFile=".\Release\xmlparse/xmlparse.bsc"\r
+- />\r
+- <Tool\r
+- Name="VCFxCopTool"\r
+- />\r
+- <Tool\r
+- Name="VCPostBuildEventTool"\r
+- />\r
+- </Configuration>\r
+- <Configuration\r
+- Name="Debug|Win32"\r
+- OutputDirectory=".\Debug\xmlparse"\r
+- IntermediateDirectory=".\Debug\xmlparse"\r
+- ConfigurationType="4"\r
+- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
+- UseOfMFC="0"\r
+- ATLMinimizesCRunTimeLibraryUsage="false"\r
+- CharacterSet="2"\r
+- >\r
+- <Tool\r
+- Name="VCPreBuildEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCCustomBuildTool"\r
+- />\r
+- <Tool\r
+- Name="VCXMLDataGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCWebServiceProxyGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCMIDLTool"\r
+- />\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- Optimization="0"\r
+- AdditionalIncludeDirectories="..\lib\expat\xmltok,..\lib\expat\xmlwf,..,..\lib\util\include,..\include,."\r
+- PreprocessorDefinitions="WIN32;_WINDOWS;XML_DTD;_LIB"\r
+- MinimalRebuild="true"\r
+- BasicRuntimeChecks="3"\r
+- RuntimeLibrary="3"\r
+- PrecompiledHeaderFile=".\Debug\xmlparse/xmlparse.pch"\r
+- AssemblerListingLocation=".\Debug\xmlparse/"\r
+- ObjectFile=".\Debug\xmlparse/"\r
+- ProgramDataBaseFileName=".\Debug\xmlparse/"\r
+- WarningLevel="3"\r
+- SuppressStartupBanner="true"\r
+- DebugInformationFormat="3"\r
+- />\r
+- <Tool\r
+- Name="VCManagedResourceCompilerTool"\r
+- />\r
+- <Tool\r
+- Name="VCResourceCompilerTool"\r
+- PreprocessorDefinitions="_DEBUG"\r
+- Culture="1033"\r
+- />\r
+- <Tool\r
+- Name="VCPreLinkEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCLibrarianTool"\r
+- OutputFile="..\lib\xmlparseD.lib"\r
+- SuppressStartupBanner="true"\r
+- />\r
+- <Tool\r
+- Name="VCALinkTool"\r
+- />\r
+- <Tool\r
+- Name="VCXDCMakeTool"\r
+- />\r
+- <Tool\r
+- Name="VCBscMakeTool"\r
+- SuppressStartupBanner="true"\r
+- OutputFile=".\Debug\xmlparse/xmlparse.bsc"\r
+- />\r
+- <Tool\r
+- Name="VCFxCopTool"\r
+- />\r
+- <Tool\r
+- Name="VCPostBuildEventTool"\r
+- />\r
+- </Configuration>\r
+- <Configuration\r
+- Name="Debug|x64"\r
+- OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
+- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
+- ConfigurationType="4"\r
+- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
+- UseOfMFC="0"\r
+- ATLMinimizesCRunTimeLibraryUsage="false"\r
+- CharacterSet="2"\r
+- >\r
+- <Tool\r
+- Name="VCPreBuildEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCCustomBuildTool"\r
+- />\r
+- <Tool\r
+- Name="VCXMLDataGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCWebServiceProxyGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCMIDLTool"\r
+- TargetEnvironment="3"\r
+- />\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- Optimization="0"\r
+- AdditionalIncludeDirectories="..\lib\expat\xmltok,..\lib\expat\xmlwf,..,..\lib\util\include,..\include,."\r
+- PreprocessorDefinitions="WIN32;_WINDOWS;XML_DTD;_LIB"\r
+- MinimalRebuild="true"\r
+- BasicRuntimeChecks="3"\r
+- RuntimeLibrary="3"\r
+- PrecompiledHeaderFile=".\Debug\xmlparse/xmlparse.pch"\r
+- ObjectFile="$(IntDir)\xmlparse\"\r
+- ProgramDataBaseFileName="$(IntDir)\xmlparse\vc90.pdb"\r
+- WarningLevel="3"\r
+- SuppressStartupBanner="true"\r
+- DebugInformationFormat="3"\r
+- />\r
+- <Tool\r
+- Name="VCManagedResourceCompilerTool"\r
+- />\r
+- <Tool\r
+- Name="VCResourceCompilerTool"\r
+- PreprocessorDefinitions="_DEBUG"\r
+- Culture="1033"\r
+- />\r
+- <Tool\r
+- Name="VCPreLinkEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCLibrarianTool"\r
+- OutputFile="..\lib\$(PlatformName)\$(ConfigurationName)\xmlparseD.lib"\r
+- SuppressStartupBanner="true"\r
+- />\r
+- <Tool\r
+- Name="VCALinkTool"\r
+- />\r
+- <Tool\r
+- Name="VCXDCMakeTool"\r
+- />\r
+- <Tool\r
+- Name="VCBscMakeTool"\r
+- SuppressStartupBanner="true"\r
+- OutputFile=".\Debug\xmlparse/xmlparse.bsc"\r
+- />\r
+- <Tool\r
+- Name="VCFxCopTool"\r
+- />\r
+- <Tool\r
+- Name="VCPostBuildEventTool"\r
+- />\r
+- </Configuration>\r
+- </Configurations>\r
+- <References>\r
+- </References>\r
+- <Files>\r
+- <Filter\r
+- Name="Source Files"\r
+- Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"\r
+- >\r
+- <File\r
+- RelativePath="..\lib\expat\xmlparse\xmlparse.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- </Filter>\r
+- <Filter\r
+- Name="Header Files"\r
+- Filter="h;hpp;hxx;hm;inl;fi;fd"\r
+- >\r
+- <File\r
+- RelativePath="..\lib\expat\xmlparse\xmlparse.h"\r
+- >\r
+- </File>\r
+- </Filter>\r
+- <Filter\r
+- Name="Resource Files"\r
+- Filter="ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"\r
+- >\r
+- </Filter>\r
+- </Files>\r
+- <Globals>\r
+- </Globals>\r
+-</VisualStudioProject>\r
+diff --git a/libs/xmlrpc-c/Windows/xmlparse.2010.vcxproj b/libs/xmlrpc-c/Windows/xmlparse.2010.vcxproj
+deleted file mode 100644
+index a747e32..0000000
+--- a/libs/xmlrpc-c/Windows/xmlparse.2010.vcxproj
++++ /dev/null
+@@ -1,198 +0,0 @@
+-<?xml version="1.0" encoding="utf-8"?>\r
+-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+- <ItemGroup Label="ProjectConfigurations">\r
+- <ProjectConfiguration Include="Debug|Win32">\r
+- <Configuration>Debug</Configuration>\r
+- <Platform>Win32</Platform>\r
+- </ProjectConfiguration>\r
+- <ProjectConfiguration Include="Debug|x64">\r
+- <Configuration>Debug</Configuration>\r
+- <Platform>x64</Platform>\r
+- </ProjectConfiguration>\r
+- <ProjectConfiguration Include="Release|Win32">\r
+- <Configuration>Release</Configuration>\r
+- <Platform>Win32</Platform>\r
+- </ProjectConfiguration>\r
+- <ProjectConfiguration Include="Release|x64">\r
+- <Configuration>Release</Configuration>\r
+- <Platform>x64</Platform>\r
+- </ProjectConfiguration>\r
+- </ItemGroup>\r
+- <PropertyGroup Label="Globals">\r
+- <ProjectName>xmlparse</ProjectName>\r
+- <ProjectGuid>{0D108721-EAE8-4BAF-8102-D8960EC93647}</ProjectGuid>\r
+- <RootNamespace>xmlparse</RootNamespace>\r
+- </PropertyGroup>\r
+- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+- <ConfigurationType>StaticLibrary</ConfigurationType>\r
+- <UseOfMfc>false</UseOfMfc>\r
+- <CharacterSet>MultiByte</CharacterSet>\r
+- </PropertyGroup>\r
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+- <ConfigurationType>StaticLibrary</ConfigurationType>\r
+- <UseOfMfc>false</UseOfMfc>\r
+- <CharacterSet>MultiByte</CharacterSet>\r
+- </PropertyGroup>\r
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+- <ConfigurationType>StaticLibrary</ConfigurationType>\r
+- <UseOfMfc>false</UseOfMfc>\r
+- <CharacterSet>MultiByte</CharacterSet>\r
+- </PropertyGroup>\r
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+- <ConfigurationType>StaticLibrary</ConfigurationType>\r
+- <UseOfMfc>false</UseOfMfc>\r
+- <CharacterSet>MultiByte</CharacterSet>\r
+- </PropertyGroup>\r
+- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+- <ImportGroup Label="ExtensionSettings">\r
+- </ImportGroup>\r
+- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+- <Import Project="..\..\..\w32\extlib.props" />\r
+- </ImportGroup>\r
+- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+- <Import Project="..\..\..\w32\extlib.props" />\r
+- </ImportGroup>\r
+- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+- <Import Project="..\..\..\w32\extlib.props" />\r
+- </ImportGroup>\r
+- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+- <Import Project="..\..\..\w32\extlib.props" />\r
+- </ImportGroup>\r
+- <PropertyGroup Label="UserMacros" />\r
+- <PropertyGroup>\r
+- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(PlatformName)\xmlparse\$(Configuration)\</IntDir>\r
+- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(PlatformName)\xmlparse\$(Configuration)\</IntDir>\r
+- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(PlatformName)\xmlparse\$(Configuration)\</IntDir>\r
+- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(PlatformName)\xmlparse\$(Configuration)\</IntDir>\r
+- </PropertyGroup>\r
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+- <ClCompile>\r
+- <Optimization>MaxSpeed</Optimization>\r
+- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+- <AdditionalIncludeDirectories>..\lib\expat\xmltok;..\lib\expat\xmlwf;..;..\lib\util\include;..\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions>NDEBUG;WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <StringPooling>true</StringPooling>\r
+- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+- <FunctionLevelLinking>true</FunctionLevelLinking>\r
+- <WarningLevel>Level3</WarningLevel>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </ClCompile>\r
+- <ResourceCompile>\r
+- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <Culture>0x0409</Culture>\r
+- </ResourceCompile>\r
+- <Lib>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </Lib>\r
+- <Bscmake>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- <OutputFile>.\Release\xmlparse/xmlparse.bsc</OutputFile>\r
+- </Bscmake>\r
+- </ItemDefinitionGroup>\r
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+- <Midl>\r
+- <TargetEnvironment>X64</TargetEnvironment>\r
+- </Midl>\r
+- <ClCompile>\r
+- <Optimization>MaxSpeed</Optimization>\r
+- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+- <AdditionalIncludeDirectories>..\lib\expat\xmltok;..\lib\expat\xmlwf;..;..\lib\util\include;..\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions>NDEBUG;WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <StringPooling>true</StringPooling>\r
+- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+- <FunctionLevelLinking>true</FunctionLevelLinking>\r
+- <WarningLevel>Level3</WarningLevel>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </ClCompile>\r
+- <ResourceCompile>\r
+- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <Culture>0x0409</Culture>\r
+- </ResourceCompile>\r
+- <Lib>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </Lib>\r
+- <Bscmake>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- <OutputFile>.\Release\xmlparse/xmlparse.bsc</OutputFile>\r
+- </Bscmake>\r
+- </ItemDefinitionGroup>\r
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+- <ClCompile>\r
+- <Optimization>Disabled</Optimization>\r
+- <AdditionalIncludeDirectories>..\lib\expat\xmltok;..\lib\expat\xmlwf;..;..\lib\util\include;..\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions>WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <MinimalRebuild>true</MinimalRebuild>\r
+- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+- <WarningLevel>Level3</WarningLevel>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+- </ClCompile>\r
+- <ResourceCompile>\r
+- <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <Culture>0x0409</Culture>\r
+- </ResourceCompile>\r
+- <Lib>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </Lib>\r
+- <Bscmake>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- <OutputFile>.\Debug\xmlparse/xmlparse.bsc</OutputFile>\r
+- </Bscmake>\r
+- </ItemDefinitionGroup>\r
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+- <Midl>\r
+- <TargetEnvironment>X64</TargetEnvironment>\r
+- </Midl>\r
+- <ClCompile>\r
+- <Optimization>Disabled</Optimization>\r
+- <AdditionalIncludeDirectories>..\lib\expat\xmltok;..\lib\expat\xmlwf;..;..\lib\util\include;..\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions>WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <MinimalRebuild>true</MinimalRebuild>\r
+- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+- <WarningLevel>Level3</WarningLevel>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+- </ClCompile>\r
+- <ResourceCompile>\r
+- <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <Culture>0x0409</Culture>\r
+- </ResourceCompile>\r
+- <Lib>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </Lib>\r
+- <Bscmake>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- <OutputFile>.\Debug\xmlparse/xmlparse.bsc</OutputFile>\r
+- </Bscmake>\r
+- </ItemDefinitionGroup>\r
+- <ItemGroup>\r
+- <ClCompile Include="..\lib\expat\xmlparse\xmlparse.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- </ItemGroup>\r
+- <ItemGroup>\r
+- <ClInclude Include="..\lib\expat\xmlparse\xmlparse.h" />\r
+- </ItemGroup>\r
+- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+- <ImportGroup Label="ExtensionTargets">\r
+- </ImportGroup>\r
+-</Project>
+\ No newline at end of file
+diff --git a/libs/xmlrpc-c/Windows/xmlrpc-c/config.h b/libs/xmlrpc-c/Windows/xmlrpc-c/config.h
+deleted file mode 100644
+index aabf9c2..0000000
+--- a/libs/xmlrpc-c/Windows/xmlrpc-c/config.h
++++ /dev/null
+@@ -1,38 +0,0 @@
+-#ifndef XMLRPC_C_CONFIG_H_INCLUDED\r
+-#define XMLRPC_C_CONFIG_H_INCLUDED\r
+-\r
+-/* This file, part of XML-RPC For C/C++, is meant to \r
+- define characteristics of this particular installation \r
+- that the other <xmlrpc-c/...> header files need in \r
+- order to compile correctly when #included in Xmlrpc-c\r
+- user code.\r
+-\r
+- Those header files #include this one.\r
+-\r
+- This file was created by a make rule.\r
+-*/\r
+-#define XMLRPC_HAVE_WCHAR 1\r
+-#ifdef WIN32\r
+- /* SOCKET is a type defined by <winsock.h>. Anyone who\r
+- uses XMLRPC_SOCKET on a WIN32 system must #include\r
+- <winsock.h>\r
+- */\r
+- #define XMLRPC_SOCKET SOCKET\r
+- #define XMLRPC_HAVE_TIMEVAL 0\r
+- #define XMLRPC_HAVE_TIMESPEC 0\r
+-#else\r
+- #define XMLRPC_SOCKET int\r
+- #define XMLRPC_HAVE_TIMEVAL 1\r
+- #define XMLRPC_HAVE_TIMESPEC 1\r
+-#endif\r
+-\r
+-#if defined(_MSC_VER)\r
+- /* Newer MSVC has long long, but MSVC 6 does not */\r
+- #define XMLRPC_INT64 __int64\r
+- #define XMLRPC_INT32 __int32\r
+-#else\r
+- #define XMLRPC_INT64 long long\r
+- #define XMLRPC_INT32 int\r
+-#endif\r
+-#endif\r
+-\r
+diff --git a/libs/xmlrpc-c/Windows/xmlrpc.2008.vcproj b/libs/xmlrpc-c/Windows/xmlrpc.2008.vcproj
+deleted file mode 100644
+index 6a16191..0000000
+--- a/libs/xmlrpc-c/Windows/xmlrpc.2008.vcproj
++++ /dev/null
+@@ -1,2042 +0,0 @@
+-<?xml version="1.0" encoding="Windows-1252"?>\r
+-<VisualStudioProject\r
+- ProjectType="Visual C++"\r
+- Version="9.00"\r
+- Name="xmlrpc"\r
+- ProjectGUID="{CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}"\r
+- RootNamespace="xmlrpc"\r
+- TargetFrameworkVersion="131072"\r
+- >\r
+- <Platforms>\r
+- <Platform\r
+- Name="Win32"\r
+- />\r
+- <Platform\r
+- Name="x64"\r
+- />\r
+- </Platforms>\r
+- <ToolFiles>\r
+- </ToolFiles>\r
+- <Configurations>\r
+- <Configuration\r
+- Name="Debug|Win32"\r
+- OutputDirectory=".\Debug\xmlrpc"\r
+- IntermediateDirectory=".\Debug\xmlrpc"\r
+- ConfigurationType="4"\r
+- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
+- UseOfMFC="0"\r
+- ATLMinimizesCRunTimeLibraryUsage="false"\r
+- CharacterSet="2"\r
+- >\r
+- <Tool\r
+- Name="VCPreBuildEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCCustomBuildTool"\r
+- />\r
+- <Tool\r
+- Name="VCXMLDataGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCWebServiceProxyGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCMIDLTool"\r
+- />\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- Optimization="0"\r
+- AdditionalIncludeDirectories="../lib,../lib/util/include,../include,..,../lib/expat/xmlparse,../lib/abyss/src,../lib/wininet_transport,."\r
+- PreprocessorDefinitions="_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
+- MinimalRebuild="true"\r
+- BasicRuntimeChecks="3"\r
+- RuntimeLibrary="3"\r
+- PrecompiledHeaderFile=".\Debug\xmlrpc/xmlrpc.pch"\r
+- AssemblerListingLocation=".\Debug\xmlrpc/"\r
+- ObjectFile=".\Debug\xmlrpc/"\r
+- ProgramDataBaseFileName=".\Debug\xmlrpc/"\r
+- WarningLevel="3"\r
+- SuppressStartupBanner="true"\r
+- DebugInformationFormat="3"\r
+- />\r
+- <Tool\r
+- Name="VCManagedResourceCompilerTool"\r
+- />\r
+- <Tool\r
+- Name="VCResourceCompilerTool"\r
+- PreprocessorDefinitions="_DEBUG"\r
+- Culture="1033"\r
+- />\r
+- <Tool\r
+- Name="VCPreLinkEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCLibrarianTool"\r
+- OutputFile="..\lib\xmlrpcD.lib"\r
+- SuppressStartupBanner="true"\r
+- />\r
+- <Tool\r
+- Name="VCALinkTool"\r
+- />\r
+- <Tool\r
+- Name="VCXDCMakeTool"\r
+- />\r
+- <Tool\r
+- Name="VCBscMakeTool"\r
+- SuppressStartupBanner="true"\r
+- OutputFile=".\Debug\xmlrpc/xmlrpc.bsc"\r
+- />\r
+- <Tool\r
+- Name="VCFxCopTool"\r
+- />\r
+- <Tool\r
+- Name="VCPostBuildEventTool"\r
+- />\r
+- </Configuration>\r
+- <Configuration\r
+- Name="Debug|x64"\r
+- OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
+- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
+- ConfigurationType="4"\r
+- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
+- UseOfMFC="0"\r
+- ATLMinimizesCRunTimeLibraryUsage="false"\r
+- CharacterSet="2"\r
+- >\r
+- <Tool\r
+- Name="VCPreBuildEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCCustomBuildTool"\r
+- />\r
+- <Tool\r
+- Name="VCXMLDataGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCWebServiceProxyGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCMIDLTool"\r
+- TargetEnvironment="3"\r
+- />\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- Optimization="0"\r
+- AdditionalIncludeDirectories="../lib,../lib/util/include,../include,..,../lib/expat/xmlparse,../lib/abyss/src,../lib/wininet_transport,."\r
+- PreprocessorDefinitions="_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
+- MinimalRebuild="true"\r
+- BasicRuntimeChecks="3"\r
+- RuntimeLibrary="3"\r
+- PrecompiledHeaderFile=".\Debug\xmlrpc/xmlrpc.pch"\r
+- ObjectFile="$(IntDir)\xmlrpc\"\r
+- ProgramDataBaseFileName="$(IntDir)\xmlrpc\vc90.pdb"\r
+- WarningLevel="3"\r
+- SuppressStartupBanner="true"\r
+- DebugInformationFormat="3"\r
+- />\r
+- <Tool\r
+- Name="VCManagedResourceCompilerTool"\r
+- />\r
+- <Tool\r
+- Name="VCResourceCompilerTool"\r
+- PreprocessorDefinitions="_DEBUG"\r
+- Culture="1033"\r
+- />\r
+- <Tool\r
+- Name="VCPreLinkEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCLibrarianTool"\r
+- OutputFile="..\lib\$(PlatformName)\$(ConfigurationName)\xmlrpcD.lib"\r
+- SuppressStartupBanner="true"\r
+- />\r
+- <Tool\r
+- Name="VCALinkTool"\r
+- />\r
+- <Tool\r
+- Name="VCXDCMakeTool"\r
+- />\r
+- <Tool\r
+- Name="VCBscMakeTool"\r
+- SuppressStartupBanner="true"\r
+- OutputFile=".\Debug\xmlrpc/xmlrpc.bsc"\r
+- />\r
+- <Tool\r
+- Name="VCFxCopTool"\r
+- />\r
+- <Tool\r
+- Name="VCPostBuildEventTool"\r
+- />\r
+- </Configuration>\r
+- <Configuration\r
+- Name="Release|Win32"\r
+- OutputDirectory=".\Release\xmlrpc"\r
+- IntermediateDirectory=".\Release\xmlrpc"\r
+- ConfigurationType="4"\r
+- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
+- UseOfMFC="0"\r
+- ATLMinimizesCRunTimeLibraryUsage="false"\r
+- CharacterSet="2"\r
+- >\r
+- <Tool\r
+- Name="VCPreBuildEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCCustomBuildTool"\r
+- />\r
+- <Tool\r
+- Name="VCXMLDataGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCWebServiceProxyGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCMIDLTool"\r
+- />\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- Optimization="2"\r
+- InlineFunctionExpansion="1"\r
+- AdditionalIncludeDirectories="../lib,../lib/util/include,../include,..,../lib/expat/xmlparse,../lib/abyss/src,../lib/wininet_transport,."\r
+- PreprocessorDefinitions="NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
+- StringPooling="true"\r
+- RuntimeLibrary="2"\r
+- EnableFunctionLevelLinking="true"\r
+- PrecompiledHeaderFile=".\Release\xmlrpc/xmlrpc.pch"\r
+- AssemblerListingLocation=".\Release\xmlrpc/"\r
+- ObjectFile=".\Release\xmlrpc/"\r
+- ProgramDataBaseFileName=".\Release\xmlrpc/"\r
+- WarningLevel="3"\r
+- SuppressStartupBanner="true"\r
+- />\r
+- <Tool\r
+- Name="VCManagedResourceCompilerTool"\r
+- />\r
+- <Tool\r
+- Name="VCResourceCompilerTool"\r
+- PreprocessorDefinitions="NDEBUG"\r
+- Culture="1033"\r
+- />\r
+- <Tool\r
+- Name="VCPreLinkEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCLibrarianTool"\r
+- OutputFile="..\lib\xmlrpc.lib"\r
+- SuppressStartupBanner="true"\r
+- />\r
+- <Tool\r
+- Name="VCALinkTool"\r
+- />\r
+- <Tool\r
+- Name="VCXDCMakeTool"\r
+- />\r
+- <Tool\r
+- Name="VCBscMakeTool"\r
+- SuppressStartupBanner="true"\r
+- OutputFile=".\Release\xmlrpc/xmlrpc.bsc"\r
+- />\r
+- <Tool\r
+- Name="VCFxCopTool"\r
+- />\r
+- <Tool\r
+- Name="VCPostBuildEventTool"\r
+- />\r
+- </Configuration>\r
+- <Configuration\r
+- Name="Release|x64"\r
+- OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
+- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
+- ConfigurationType="4"\r
+- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
+- UseOfMFC="0"\r
+- ATLMinimizesCRunTimeLibraryUsage="false"\r
+- CharacterSet="2"\r
+- >\r
+- <Tool\r
+- Name="VCPreBuildEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCCustomBuildTool"\r
+- />\r
+- <Tool\r
+- Name="VCXMLDataGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCWebServiceProxyGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCMIDLTool"\r
+- TargetEnvironment="3"\r
+- />\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- Optimization="2"\r
+- InlineFunctionExpansion="1"\r
+- AdditionalIncludeDirectories="../lib,../lib/util/include,../include,..,../lib/expat/xmlparse,../lib/abyss/src,../lib/wininet_transport,."\r
+- PreprocessorDefinitions="NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
+- StringPooling="true"\r
+- RuntimeLibrary="2"\r
+- EnableFunctionLevelLinking="true"\r
+- PrecompiledHeaderFile=".\Release\xmlrpc/xmlrpc.pch"\r
+- ObjectFile="$(IntDir)\xmlrpc\"\r
+- ProgramDataBaseFileName="$(IntDir)\xmlrpc\vc90.pdb"\r
+- WarningLevel="3"\r
+- SuppressStartupBanner="true"\r
+- />\r
+- <Tool\r
+- Name="VCManagedResourceCompilerTool"\r
+- />\r
+- <Tool\r
+- Name="VCResourceCompilerTool"\r
+- PreprocessorDefinitions="NDEBUG"\r
+- Culture="1033"\r
+- />\r
+- <Tool\r
+- Name="VCPreLinkEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCLibrarianTool"\r
+- OutputFile="..\lib\$(PlatformName)\$(ConfigurationName)\xmlrpc.lib"\r
+- SuppressStartupBanner="true"\r
+- />\r
+- <Tool\r
+- Name="VCALinkTool"\r
+- />\r
+- <Tool\r
+- Name="VCXDCMakeTool"\r
+- />\r
+- <Tool\r
+- Name="VCBscMakeTool"\r
+- SuppressStartupBanner="true"\r
+- OutputFile=".\Release\xmlrpc/xmlrpc.bsc"\r
+- />\r
+- <Tool\r
+- Name="VCFxCopTool"\r
+- />\r
+- <Tool\r
+- Name="VCPostBuildEventTool"\r
+- />\r
+- </Configuration>\r
+- </Configurations>\r
+- <References>\r
+- </References>\r
+- <Files>\r
+- <Filter\r
+- Name="Source Files"\r
+- Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;cc"\r
+- >\r
+- <File\r
+- RelativePath="..\lib\libutil\asprintf.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\double.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\libutil\error.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\libutil\make_printable.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\libutil\memblock.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\method.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\parse_value.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\util\pthreadx_win32.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\registry.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\resource.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\libutil\select.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\libutil\sleep.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\system_method.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\libutil\time.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\trace.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\libutil\utf8.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\version.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\xmlrpc_array.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\xmlrpc_authcookie.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\xmlrpc_base64.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\xmlrpc_build.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\xmlrpc_client.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\xmlrpc_client_global.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\curl_transport\xmlrpc_curl_transport.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=".;..\..\curl\include"\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=".;..\..\curl\include"\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=".;..\..\curl\include"\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=".;..\..\curl\include"\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\xmlrpc_data.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\xmlrpc_datetime.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\xmlrpc_decompose.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\xmlrpc_expat.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\xmlrpc_libxml2.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\xmlrpc_parse.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\xmlrpc_serialize.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\xmlrpc_server_abyss.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\xmlrpc_server_info.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\xmlrpc_server_w32httpsys.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- ExcludedFromBuild="true"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\xmlrpc_string.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\xmlrpc_struct.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\wininet_transport\xmlrpc_wininet_transport.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- </Filter>\r
+- <Filter\r
+- Name="Header Files"\r
+- Filter="h;hpp;hxx;hm;inl"\r
+- >\r
+- <File\r
+- RelativePath="..\include\xmlrpc-c\abyss.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\abyss_info.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\include\xmlrpc-c\abyss_winsock.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\include\xmlrpc-c\base.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\include\xmlrpc-c\base_int.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\util\include\bool.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\include\xmlrpc-c\c_util.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\util\include\c_util.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\util\include\casprintf.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\channel.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\chanswitch.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\include\xmlrpc-c\client.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\include\xmlrpc-c\client_global.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\include\xmlrpc-c\client_int.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\include\xmlrpc-c\config.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\conn.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\date.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\double.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\file.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\util\include\girmath.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\handler.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\http.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\util\include\inline.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\util\include\linklist.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\util\include\mallocvar.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\method.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\parse_value.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\util\include\pthreadx.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\registry.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\server.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\include\xmlrpc-c\server.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\include\xmlrpc-c\server_abyss.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\include\xmlrpc-c\server_cgi.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\include\xmlrpc-c\server_w32httpsys.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\include\xmlrpc-c\sleep_int.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\socket.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\socket_win.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\util\include\stdargx.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\include\xmlrpc-c\string_int.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\src\system_method.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\thread.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\include\xmlrpc-c\time_int.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\abyss\src\token.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\include\xmlrpc-c\transport.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\transport_config.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\include\xmlrpc-c\transport_int.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\include\xmlrpc-c\util_int.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\xml_rpc_alloc.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\expat\xmlparse\xmlparse.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\include\xmlrpc-c\xmlparser.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\xmlrpc_config.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\curl_transport\xmlrpc_curl_transport.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\wininet_transport\xmlrpc_wininet_transport.h"\r
+- >\r
+- </File>\r
+- </Filter>\r
+- </Files>\r
+- <Globals>\r
+- </Globals>\r
+-</VisualStudioProject>\r
+diff --git a/libs/xmlrpc-c/Windows/xmlrpc.2010.vcxproj b/libs/xmlrpc-c/Windows/xmlrpc.2010.vcxproj
+deleted file mode 100644
+index bdc988c..0000000
+--- a/libs/xmlrpc-c/Windows/xmlrpc.2010.vcxproj
++++ /dev/null
+@@ -1,620 +0,0 @@
+-<?xml version="1.0" encoding="utf-8"?>\r
+-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+- <ItemGroup Label="ProjectConfigurations">\r
+- <ProjectConfiguration Include="Debug|Win32">\r
+- <Configuration>Debug</Configuration>\r
+- <Platform>Win32</Platform>\r
+- </ProjectConfiguration>\r
+- <ProjectConfiguration Include="Debug|x64">\r
+- <Configuration>Debug</Configuration>\r
+- <Platform>x64</Platform>\r
+- </ProjectConfiguration>\r
+- <ProjectConfiguration Include="Release|Win32">\r
+- <Configuration>Release</Configuration>\r
+- <Platform>Win32</Platform>\r
+- </ProjectConfiguration>\r
+- <ProjectConfiguration Include="Release|x64">\r
+- <Configuration>Release</Configuration>\r
+- <Platform>x64</Platform>\r
+- </ProjectConfiguration>\r
+- </ItemGroup>\r
+- <PropertyGroup Label="Globals">\r
+- <ProjectName>xmlrpc</ProjectName>\r
+- <ProjectGuid>{CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}</ProjectGuid>\r
+- <RootNamespace>xmlrpc</RootNamespace>\r
+- </PropertyGroup>\r
+- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+- <ConfigurationType>StaticLibrary</ConfigurationType>\r
+- <UseOfMfc>false</UseOfMfc>\r
+- <CharacterSet>MultiByte</CharacterSet>\r
+- </PropertyGroup>\r
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+- <ConfigurationType>StaticLibrary</ConfigurationType>\r
+- <UseOfMfc>false</UseOfMfc>\r
+- <CharacterSet>MultiByte</CharacterSet>\r
+- </PropertyGroup>\r
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+- <ConfigurationType>StaticLibrary</ConfigurationType>\r
+- <UseOfMfc>false</UseOfMfc>\r
+- <CharacterSet>MultiByte</CharacterSet>\r
+- </PropertyGroup>\r
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+- <ConfigurationType>StaticLibrary</ConfigurationType>\r
+- <UseOfMfc>false</UseOfMfc>\r
+- <CharacterSet>MultiByte</CharacterSet>\r
+- </PropertyGroup>\r
+- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+- <ImportGroup Label="ExtensionSettings">\r
+- </ImportGroup>\r
+- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+- <Import Project="..\..\..\w32\extlib.props" />\r
+- </ImportGroup>\r
+- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+- <Import Project="..\..\..\w32\extlib.props" />\r
+- </ImportGroup>\r
+- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+- <Import Project="..\..\..\w32\extlib.props" />\r
+- </ImportGroup>\r
+- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+- <Import Project="..\..\..\w32\extlib.props" />\r
+- </ImportGroup>\r
+- <PropertyGroup Label="UserMacros" />\r
+- <PropertyGroup>\r
+- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(PlatformName)\xmlrpc\$(Configuration)\</IntDir>\r
+- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(PlatformName)\xmlrpc\$(Configuration)\</IntDir>\r
+- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(PlatformName)\xmlrpc\$(Configuration)\</IntDir>\r
+- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(PlatformName)\xmlrpc\$(Configuration)\</IntDir>\r
+- </PropertyGroup>\r
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+- <ClCompile>\r
+- <Optimization>Disabled</Optimization>\r
+- <AdditionalIncludeDirectories>../lib;../lib/util/include;../include;..;../lib/expat/xmlparse;../lib/abyss/src;../lib/wininet_transport;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions>_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <MinimalRebuild>true</MinimalRebuild>\r
+- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+- <WarningLevel>Level3</WarningLevel>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </ClCompile>\r
+- <ResourceCompile>\r
+- <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <Culture>0x0409</Culture>\r
+- </ResourceCompile>\r
+- <Lib>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </Lib>\r
+- <Bscmake>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- <OutputFile>.\Debug\xmlrpc/xmlrpc.bsc</OutputFile>\r
+- </Bscmake>\r
+- </ItemDefinitionGroup>\r
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+- <Midl>\r
+- <TargetEnvironment>X64</TargetEnvironment>\r
+- </Midl>\r
+- <ClCompile>\r
+- <Optimization>Disabled</Optimization>\r
+- <AdditionalIncludeDirectories>../lib;../lib/util/include;../include;..;../lib/expat/xmlparse;../lib/abyss/src;../lib/wininet_transport;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions>_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <MinimalRebuild>true</MinimalRebuild>\r
+- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+- <WarningLevel>Level3</WarningLevel>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </ClCompile>\r
+- <ResourceCompile>\r
+- <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <Culture>0x0409</Culture>\r
+- </ResourceCompile>\r
+- <Lib>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </Lib>\r
+- <Bscmake>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- <OutputFile>.\Debug\xmlrpc/xmlrpc.bsc</OutputFile>\r
+- </Bscmake>\r
+- </ItemDefinitionGroup>\r
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+- <ClCompile>\r
+- <Optimization>MaxSpeed</Optimization>\r
+- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+- <AdditionalIncludeDirectories>../lib;../lib/util/include;../include;..;../lib/expat/xmlparse;../lib/abyss/src;../lib/wininet_transport;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions>NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <StringPooling>true</StringPooling>\r
+- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+- <FunctionLevelLinking>true</FunctionLevelLinking>\r
+- <WarningLevel>Level3</WarningLevel>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </ClCompile>\r
+- <ResourceCompile>\r
+- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <Culture>0x0409</Culture>\r
+- </ResourceCompile>\r
+- <Lib>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </Lib>\r
+- <Bscmake>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- <OutputFile>.\Release\xmlrpc/xmlrpc.bsc</OutputFile>\r
+- </Bscmake>\r
+- </ItemDefinitionGroup>\r
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+- <Midl>\r
+- <TargetEnvironment>X64</TargetEnvironment>\r
+- </Midl>\r
+- <ClCompile>\r
+- <Optimization>MaxSpeed</Optimization>\r
+- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+- <AdditionalIncludeDirectories>../lib;../lib/util/include;../include;..;../lib/expat/xmlparse;../lib/abyss/src;../lib/wininet_transport;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions>NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <StringPooling>true</StringPooling>\r
+- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+- <FunctionLevelLinking>true</FunctionLevelLinking>\r
+- <WarningLevel>Level3</WarningLevel>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </ClCompile>\r
+- <ResourceCompile>\r
+- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <Culture>0x0409</Culture>\r
+- </ResourceCompile>\r
+- <Lib>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </Lib>\r
+- <Bscmake>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- <OutputFile>.\Release\xmlrpc/xmlrpc.bsc</OutputFile>\r
+- </Bscmake>\r
+- </ItemDefinitionGroup>\r
+- <ItemGroup>\r
+- <ClCompile Include="..\lib\libutil\asprintf.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\double.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\libutil\error.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\libutil\make_printable.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\libutil\memblock.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\method.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\parse_value.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\util\pthreadx_win32.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\registry.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\resource.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\libutil\select.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\libutil\sleep.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\system_method.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\libutil\time.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\trace.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\libutil\utf8.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\version.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_array.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_authcookie.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_base64.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_build.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_client.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_client_global.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\curl_transport\xmlrpc_curl_transport.c">\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.;..\..\curl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.;..\..\curl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.;..\..\curl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.;..\..\curl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_data.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_datetime.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_decompose.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_expat.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_libxml2.c">\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_parse.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_serialize.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_server_abyss.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_server_info.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_server_w32httpsys.c">\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_string.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_struct.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\wininet_transport\xmlrpc_wininet_transport.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- </ItemGroup>\r
+- <ItemGroup>\r
+- <ClInclude Include="..\include\xmlrpc-c\abyss.h" />\r
+- <ClInclude Include="..\lib\abyss\src\abyss_info.h" />\r
+- <ClInclude Include="..\include\xmlrpc-c\abyss_winsock.h" />\r
+- <ClInclude Include="..\include\xmlrpc-c\base.h" />\r
+- <ClInclude Include="..\include\xmlrpc-c\base_int.h" />\r
+- <ClInclude Include="..\lib\util\include\bool.h" />\r
+- <ClInclude Include="..\include\xmlrpc-c\c_util.h" />\r
+- <ClInclude Include="..\lib\util\include\c_util.h" />\r
+- <ClInclude Include="..\lib\util\include\casprintf.h" />\r
+- <ClInclude Include="..\lib\abyss\src\channel.h" />\r
+- <ClInclude Include="..\lib\abyss\src\chanswitch.h" />\r
+- <ClInclude Include="..\include\xmlrpc-c\client.h" />\r
+- <ClInclude Include="..\include\xmlrpc-c\client_global.h" />\r
+- <ClInclude Include="..\include\xmlrpc-c\client_int.h" />\r
+- <ClInclude Include="..\include\xmlrpc-c\config.h" />\r
+- <ClInclude Include="..\lib\abyss\src\conn.h" />\r
+- <ClInclude Include="..\lib\abyss\src\date.h" />\r
+- <ClInclude Include="..\src\double.h" />\r
+- <ClInclude Include="..\lib\abyss\src\file.h" />\r
+- <ClInclude Include="..\lib\util\include\girmath.h" />\r
+- <ClInclude Include="..\lib\abyss\src\handler.h" />\r
+- <ClInclude Include="..\lib\abyss\src\http.h" />\r
+- <ClInclude Include="..\lib\util\include\inline.h" />\r
+- <ClInclude Include="..\lib\util\include\linklist.h" />\r
+- <ClInclude Include="..\lib\util\include\mallocvar.h" />\r
+- <ClInclude Include="..\src\method.h" />\r
+- <ClInclude Include="..\src\parse_value.h" />\r
+- <ClInclude Include="..\lib\util\include\pthreadx.h" />\r
+- <ClInclude Include="..\src\registry.h" />\r
+- <ClInclude Include="..\lib\abyss\src\server.h" />\r
+- <ClInclude Include="..\include\xmlrpc-c\server.h" />\r
+- <ClInclude Include="..\include\xmlrpc-c\server_abyss.h" />\r
+- <ClInclude Include="..\include\xmlrpc-c\server_cgi.h" />\r
+- <ClInclude Include="..\include\xmlrpc-c\server_w32httpsys.h" />\r
+- <ClInclude Include="..\include\xmlrpc-c\sleep_int.h" />\r
+- <ClInclude Include="..\lib\abyss\src\socket.h" />\r
+- <ClInclude Include="..\lib\abyss\src\socket_win.h" />\r
+- <ClInclude Include="..\lib\util\include\stdargx.h" />\r
+- <ClInclude Include="..\include\xmlrpc-c\string_int.h" />\r
+- <ClInclude Include="..\src\system_method.h" />\r
+- <ClInclude Include="..\lib\abyss\src\thread.h" />\r
+- <ClInclude Include="..\include\xmlrpc-c\time_int.h" />\r
+- <ClInclude Include="..\lib\abyss\src\token.h" />\r
+- <ClInclude Include="..\include\xmlrpc-c\transport.h" />\r
+- <ClInclude Include="..\transport_config.h" />\r
+- <ClInclude Include="..\include\xmlrpc-c\transport_int.h" />\r
+- <ClInclude Include="..\include\xmlrpc-c\util_int.h" />\r
+- <ClInclude Include="..\xml_rpc_alloc.h" />\r
+- <ClInclude Include="..\lib\expat\xmlparse\xmlparse.h" />\r
+- <ClInclude Include="..\include\xmlrpc-c\xmlparser.h" />\r
+- <ClInclude Include="..\xmlrpc_config.h" />\r
+- <ClInclude Include="..\lib\curl_transport\xmlrpc_curl_transport.h" />\r
+- <ClInclude Include="..\lib\wininet_transport\xmlrpc_wininet_transport.h" />\r
+- </ItemGroup>\r
+- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+- <ImportGroup Label="ExtensionTargets">\r
+- </ImportGroup>\r
+-</Project>
+\ No newline at end of file
+diff --git a/libs/xmlrpc-c/Windows/xmlrpc.2010.vcxproj.filters b/libs/xmlrpc-c/Windows/xmlrpc.2010.vcxproj.filters
+deleted file mode 100644
+index 6886dfe..0000000
+--- a/libs/xmlrpc-c/Windows/xmlrpc.2010.vcxproj.filters
++++ /dev/null
+@@ -1,287 +0,0 @@
+-<?xml version="1.0" encoding="utf-8"?>\r
+-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+- <ItemGroup>\r
+- <Filter Include="Source Files">\r
+- <UniqueIdentifier>{7ca2b8b9-bf59-4407-aedf-588e548fe34a}</UniqueIdentifier>\r
+- <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;cc</Extensions>\r
+- </Filter>\r
+- <Filter Include="Header Files">\r
+- <UniqueIdentifier>{28891c93-973b-487f-a8f9-3fae090e14e3}</UniqueIdentifier>\r
+- <Extensions>h;hpp;hxx;hm;inl</Extensions>\r
+- </Filter>\r
+- </ItemGroup>\r
+- <ItemGroup>\r
+- <ClCompile Include="..\lib\libutil\asprintf.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\double.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\libutil\error.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\libutil\make_printable.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\libutil\memblock.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\method.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\parse_value.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\util\pthreadx_win32.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\registry.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\resource.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\libutil\select.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\libutil\sleep.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\system_method.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\libutil\time.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\trace.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\libutil\utf8.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\version.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_array.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_authcookie.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_base64.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_build.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_client.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_client_global.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\curl_transport\xmlrpc_curl_transport.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_data.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_datetime.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_decompose.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_expat.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_libxml2.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_parse.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_serialize.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_server_abyss.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_server_info.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_server_w32httpsys.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_string.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\src\xmlrpc_struct.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\wininet_transport\xmlrpc_wininet_transport.c">\r
+- <Filter>Source Files</Filter>\r
+- </ClCompile>\r
+- </ItemGroup>\r
+- <ItemGroup>\r
+- <ClInclude Include="..\include\xmlrpc-c\abyss.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\abyss_info.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\include\xmlrpc-c\abyss_winsock.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\include\xmlrpc-c\base.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\include\xmlrpc-c\base_int.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\util\include\bool.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\include\xmlrpc-c\c_util.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\util\include\c_util.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\util\include\casprintf.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\channel.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\chanswitch.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\include\xmlrpc-c\client.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\include\xmlrpc-c\client_global.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\include\xmlrpc-c\client_int.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\include\xmlrpc-c\config.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\conn.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\date.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\src\double.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\file.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\util\include\girmath.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\handler.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\http.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\util\include\inline.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\util\include\linklist.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\util\include\mallocvar.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\src\method.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\src\parse_value.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\util\include\pthreadx.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\src\registry.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\server.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\include\xmlrpc-c\server.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\include\xmlrpc-c\server_abyss.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\include\xmlrpc-c\server_cgi.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\include\xmlrpc-c\server_w32httpsys.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\include\xmlrpc-c\sleep_int.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\socket.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\socket_win.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\util\include\stdargx.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\include\xmlrpc-c\string_int.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\src\system_method.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\thread.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\include\xmlrpc-c\time_int.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\abyss\src\token.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\include\xmlrpc-c\transport.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\transport_config.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\include\xmlrpc-c\transport_int.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\include\xmlrpc-c\util_int.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\xml_rpc_alloc.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\expat\xmlparse\xmlparse.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\include\xmlrpc-c\xmlparser.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\xmlrpc_config.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\curl_transport\xmlrpc_curl_transport.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- <ClInclude Include="..\lib\wininet_transport\xmlrpc_wininet_transport.h">\r
+- <Filter>Header Files</Filter>\r
+- </ClInclude>\r
+- </ItemGroup>\r
+-</Project>
+\ No newline at end of file
+diff --git a/libs/xmlrpc-c/Windows/xmlrpc.dsp b/libs/xmlrpc-c/Windows/xmlrpc.dsp
+index 15d20f0..ce96807 100644
+--- a/libs/xmlrpc-c/Windows/xmlrpc.dsp
++++ b/libs/xmlrpc-c/Windows/xmlrpc.dsp
+@@ -1,469 +1,481 @@
+-# Microsoft Developer Studio Project File - Name="xmlrpc" - Package Owner=<4>\r
+-# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+-# ** DO NOT EDIT **\r
+-\r
+-# TARGTYPE "Win32 (x86) Static Library" 0x0104\r
+-\r
+-CFG=xmlrpc - Win32 Debug\r
+-!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+-!MESSAGE use the Export Makefile command and run\r
+-!MESSAGE \r
+-!MESSAGE NMAKE /f "xmlrpc.mak".\r
+-!MESSAGE \r
+-!MESSAGE You can specify a configuration when running NMAKE\r
+-!MESSAGE by defining the macro CFG on the command line. For example:\r
+-!MESSAGE \r
+-!MESSAGE NMAKE /f "xmlrpc.mak" CFG="xmlrpc - Win32 Debug"\r
+-!MESSAGE \r
+-!MESSAGE Possible choices for configuration are:\r
+-!MESSAGE \r
+-!MESSAGE "xmlrpc - Win32 Release" (based on "Win32 (x86) Static Library")\r
+-!MESSAGE "xmlrpc - Win32 Debug" (based on "Win32 (x86) Static Library")\r
+-!MESSAGE \r
+-\r
+-# Begin Project\r
+-# PROP AllowPerConfigDependencies 0\r
+-CPP=cl.exe\r
+-RSC=rc.exe\r
+-\r
+-!IF "$(CFG)" == "xmlrpc - Win32 Release"\r
+-\r
+-# PROP BASE Use_MFC 0\r
+-# PROP BASE Use_Debug_Libraries 0\r
+-# PROP BASE Output_Dir "Release"\r
+-# PROP BASE Intermediate_Dir "Release"\r
+-# PROP BASE Target_Dir ""\r
+-# PROP Use_MFC 0\r
+-# PROP Use_Debug_Libraries 0\r
+-# PROP Output_Dir "Release\xmlrpc"\r
+-# PROP Intermediate_Dir "Release\xmlrpc"\r
+-# PROP Target_Dir ""\r
+-LINK32=link.exe -lib\r
+-MTL=midl.exe\r
+-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c\r
+-# ADD CPP /nologo /MT /W3 /GX /O2 /I "../lib" /I "../lib/util/include" /I "../include" /I ".." /I "../lib/expat/xmlparse" /I "../lib/abyss/src" /I "../lib/wininet_transport" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "ABYSS_WIN32" /D "CURL_STATICLIB" /YX /FD /c\r
+-# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
+-# ADD RSC /l 0x409 /d "NDEBUG"\r
+-BSC32=bscmake.exe\r
+-# ADD BASE BSC32 /nologo\r
+-# ADD BSC32 /nologo\r
+-LIB32=link.exe -lib\r
+-# ADD BASE LIB32 /nologo\r
+-# ADD LIB32 /nologo /out:"..\lib\xmlrpc.lib"\r
+-\r
+-!ELSEIF "$(CFG)" == "xmlrpc - Win32 Debug"\r
+-\r
+-# PROP BASE Use_MFC 0\r
+-# PROP BASE Use_Debug_Libraries 1\r
+-# PROP BASE Output_Dir "Debug"\r
+-# PROP BASE Intermediate_Dir "Debug"\r
+-# PROP BASE Target_Dir ""\r
+-# PROP Use_MFC 0\r
+-# PROP Use_Debug_Libraries 1\r
+-# PROP Output_Dir "Debug\xmlrpc"\r
+-# PROP Intermediate_Dir "Debug\xmlrpc"\r
+-# PROP Target_Dir ""\r
+-LINK32=link.exe -lib\r
+-MTL=midl.exe\r
+-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c\r
+-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../lib" /I "../lib/util/include" /I "../include" /I ".." /I "../lib/expat/xmlparse" /I "../lib/abyss/src" /I "../lib/wininet_transport" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "ABYSS_WIN32" /D "CURL_STATICLIB" /YX /FD /GZ /c\r
+-# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
+-# ADD RSC /l 0x409 /d "_DEBUG"\r
+-BSC32=bscmake.exe\r
+-# ADD BASE BSC32 /nologo\r
+-# ADD BSC32 /nologo\r
+-LIB32=link.exe -lib\r
+-# ADD BASE LIB32 /nologo\r
+-# ADD LIB32 /nologo /out:"..\lib\xmlrpcD.lib"\r
+-\r
+-!ENDIF \r
+-\r
+-# Begin Target\r
+-\r
+-# Name "xmlrpc - Win32 Release"\r
+-# Name "xmlrpc - Win32 Debug"\r
+-# Begin Group "Source Files"\r
+-\r
+-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;cc"\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\libutil\asprintf.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\libutil\error.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\libutil\make_printable.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\libutil\memblock.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\method.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\util\pthreadx_win32.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\parse_value.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\registry.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\resource.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\libutil\select.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\libutil\sleep.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\system_method.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\libutil\time.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\trace.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\version.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\libutil\utf8.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\double.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\xmlrpc_array.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\xmlrpc_authcookie.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\xmlrpc_base64.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\xmlrpc_build.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\xmlrpc_client.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\xmlrpc_client_global.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\xmlrpc_server_info.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\curl_transport\xmlrpc_curl_transport.c\r
+-\r
+-!IF "$(CFG)" == "xmlrpc - Win32 Release"\r
+-\r
+-# ADD CPP /I "." /I "..\..\curl\include"\r
+-# PROP Exclude_From_Build 1\r
+-\r
+-!ELSEIF "$(CFG)" == "xmlrpc - Win32 Debug"\r
+-\r
+-# ADD CPP /I "." /I "..\..\curl\include"\r
+-# PROP Exclude_From_Build 1\r
+-\r
+-!ENDIF \r
+-\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\xmlrpc_data.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\xmlrpc_datetime.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\xmlrpc_decompose.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\xmlrpc_expat.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\xmlrpc_libxml2.c\r
+-# PROP Exclude_From_Build 1\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\xmlrpc_parse.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\xmlrpc_serialize.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\xmlrpc_server_abyss.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\xmlrpc_server_w32httpsys.c\r
+-# PROP Exclude_From_Build 1\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\xmlrpc_string.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\xmlrpc_struct.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\wininet_transport\xmlrpc_wininet_transport.c\r
+-# End Source File\r
+-# End Group\r
+-# Begin Group "Header Files"\r
+-\r
+-# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\abyss\src\http.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE="..\include\xmlrpc-c\abyss.h"\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\abyss\src\abyss_info.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE="..\include\xmlrpc-c\abyss_winsock.h"\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE="..\include\xmlrpc-c\base.h"\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE="..\include\xmlrpc-c\base_int.h"\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\util\include\bool.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE="..\include\xmlrpc-c\c_util.h"\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\util\include\c_util.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\util\include\casprintf.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\abyss\src\channel.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\abyss\src\chanswitch.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE="..\include\xmlrpc-c\client.h"\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE="..\include\xmlrpc-c\client_global.h"\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE="..\include\xmlrpc-c\client_int.h"\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE="..\include\xmlrpc-c\config.h"\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\abyss\src\conn.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\abyss\src\date.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\abyss\src\file.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\util\include\girmath.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\abyss\src\handler.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\util\include\inline.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\util\include\linklist.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\util\include\mallocvar.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\double.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\method.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\util\include\pthreadx.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\parse_value.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\registry.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE="..\include\xmlrpc-c\server.h"\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\abyss\src\server.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE="..\include\xmlrpc-c\server_abyss.h"\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE="..\include\xmlrpc-c\server_cgi.h"\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE="..\include\xmlrpc-c\server_w32httpsys.h"\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE="..\include\xmlrpc-c\sleep_int.h"\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\abyss\src\socket.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\abyss\src\socket_win.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\util\include\stdargx.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE="..\include\xmlrpc-c\string_int.h"\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\system_method.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\abyss\src\thread.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE="..\include\xmlrpc-c\time_int.h"\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\abyss\src\token.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE="..\include\xmlrpc-c\transport.h"\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\transport_config.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE="..\include\xmlrpc-c\transport_int.h"\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE="..\include\xmlrpc-c\util_int.h"\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\xml_rpc_alloc.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\expat\xmlparse\xmlparse.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE="..\include\xmlrpc-c\xmlparser.h"\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\xmlrpc_config.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\curl_transport\xmlrpc_curl_transport.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\wininet_transport\xmlrpc_wininet_transport.h\r
+-# End Source File\r
+-# End Group\r
+-# End Target\r
+-# End Project\r
++# Microsoft Developer Studio Project File - Name="xmlrpc" - Package Owner=<4>
++# Microsoft Developer Studio Generated Build File, Format Version 6.00
++# ** DO NOT EDIT **
++
++# TARGTYPE "Win32 (x86) Static Library" 0x0104
++
++CFG=xmlrpc - Win32 Debug
++!MESSAGE This is not a valid makefile. To build this project using NMAKE,
++!MESSAGE use the Export Makefile command and run
++!MESSAGE
++!MESSAGE NMAKE /f "xmlrpc.mak".
++!MESSAGE
++!MESSAGE You can specify a configuration when running NMAKE
++!MESSAGE by defining the macro CFG on the command line. For example:
++!MESSAGE
++!MESSAGE NMAKE /f "xmlrpc.mak" CFG="xmlrpc - Win32 Debug"
++!MESSAGE
++!MESSAGE Possible choices for configuration are:
++!MESSAGE
++!MESSAGE "xmlrpc - Win32 Release" (based on "Win32 (x86) Static Library")
++!MESSAGE "xmlrpc - Win32 Debug" (based on "Win32 (x86) Static Library")
++!MESSAGE
++
++# Begin Project
++# PROP AllowPerConfigDependencies 0
++CPP=cl.exe
++RSC=rc.exe
++
++!IF "$(CFG)" == "xmlrpc - Win32 Release"
++
++# PROP BASE Use_MFC 0
++# PROP BASE Use_Debug_Libraries 0
++# PROP BASE Output_Dir "Release"
++# PROP BASE Intermediate_Dir "Release"
++# PROP BASE Target_Dir ""
++# PROP Use_MFC 0
++# PROP Use_Debug_Libraries 0
++# PROP Output_Dir "Release\xmlrpc"
++# PROP Intermediate_Dir "Release\xmlrpc"
++# PROP Target_Dir ""
++LINK32=link.exe -lib
++MTL=midl.exe
++# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
++# ADD CPP /nologo /MT /W3 /GX /O2 /I "../lib" /I "../lib/util/include" /I "../include" /I ".." /I "../lib/expat/xmlparse" /I "../lib/abyss/src" /I "../lib/wininet_transport" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "ABYSS_WIN32" /D "CURL_STATICLIB" /YX /FD /c
++# ADD BASE RSC /l 0x409 /d "NDEBUG"
++# ADD RSC /l 0x409 /d "NDEBUG"
++BSC32=bscmake.exe
++# ADD BASE BSC32 /nologo
++# ADD BSC32 /nologo
++LIB32=link.exe -lib
++# ADD BASE LIB32 /nologo
++# ADD LIB32 /nologo /out:"..\lib\xmlrpc.lib"
++
++!ELSEIF "$(CFG)" == "xmlrpc - Win32 Debug"
++
++# PROP BASE Use_MFC 0
++# PROP BASE Use_Debug_Libraries 1
++# PROP BASE Output_Dir "Debug"
++# PROP BASE Intermediate_Dir "Debug"
++# PROP BASE Target_Dir ""
++# PROP Use_MFC 0
++# PROP Use_Debug_Libraries 1
++# PROP Output_Dir "Debug\xmlrpc"
++# PROP Intermediate_Dir "Debug\xmlrpc"
++# PROP Target_Dir ""
++LINK32=link.exe -lib
++MTL=midl.exe
++# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
++# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../lib" /I "../lib/util/include" /I "../include" /I ".." /I "../lib/expat/xmlparse" /I "../lib/abyss/src" /I "../lib/wininet_transport" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "ABYSS_WIN32" /D "CURL_STATICLIB" /YX /FD /GZ /c
++# ADD BASE RSC /l 0x409 /d "_DEBUG"
++# ADD RSC /l 0x409 /d "_DEBUG"
++BSC32=bscmake.exe
++# ADD BASE BSC32 /nologo
++# ADD BSC32 /nologo
++LIB32=link.exe -lib
++# ADD BASE LIB32 /nologo
++# ADD LIB32 /nologo /out:"..\lib\xmlrpcD.lib"
++
++!ENDIF
++
++# Begin Target
++
++# Name "xmlrpc - Win32 Release"
++# Name "xmlrpc - Win32 Debug"
++# Begin Group "Source Files"
++
++# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;cc"
++# Begin Source File
++
++SOURCE=..\lib\libutil\asprintf.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\libutil\base64.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\libutil\error.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\libutil\make_printable.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\libutil\memblock.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\method.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\util\pthreadx_win32.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\parse_datetime.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\parse_value.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\registry.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\resource.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\libutil\select.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\libutil\sleep.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\system_method.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\libutil\time.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\trace.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\version.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\libutil\utf8.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\double.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\xmlrpc_array.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\xmlrpc_authcookie.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\xmlrpc_base64.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\xmlrpc_build.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\xmlrpc_client.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\xmlrpc_client_global.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\xmlrpc_server_info.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\curl_transport\xmlrpc_curl_transport.c
++
++!IF "$(CFG)" == "xmlrpc - Win32 Release"
++
++# ADD CPP /I "." /I "..\..\curl\include"
++# PROP Exclude_From_Build 1
++
++!ELSEIF "$(CFG)" == "xmlrpc - Win32 Debug"
++
++# ADD CPP /I "." /I "..\..\curl\include"
++# PROP Exclude_From_Build 1
++
++!ENDIF
++
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\xmlrpc_data.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\xmlrpc_datetime.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\xmlrpc_decompose.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\xmlrpc_expat.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\xmlrpc_libxml2.c
++# PROP Exclude_From_Build 1
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\xmlrpc_parse.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\xmlrpc_serialize.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\xmlrpc_server_abyss.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\xmlrpc_server_w32httpsys.c
++# PROP Exclude_From_Build 1
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\xmlrpc_string.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\xmlrpc_struct.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\wininet_transport\xmlrpc_wininet_transport.c
++# End Source File
++# End Group
++# Begin Group "Header Files"
++
++# PROP Default_Filter "h;hpp;hxx;hm;inl"
++# Begin Source File
++
++SOURCE=..\lib\abyss\src\http.h
++# End Source File
++# Begin Source File
++
++SOURCE="..\include\xmlrpc-c\abyss.h"
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\abyss\src\abyss_info.h
++# End Source File
++# Begin Source File
++
++SOURCE="..\include\xmlrpc-c\abyss_winsock.h"
++# End Source File
++# Begin Source File
++
++SOURCE="..\include\xmlrpc-c\base.h"
++# End Source File
++# Begin Source File
++
++SOURCE="..\include\xmlrpc-c\base_int.h"
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\util\include\bool.h
++# End Source File
++# Begin Source File
++
++SOURCE="..\include\xmlrpc-c\c_util.h"
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\util\include\c_util.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\util\include\casprintf.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\abyss\src\channel.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\abyss\src\chanswitch.h
++# End Source File
++# Begin Source File
++
++SOURCE="..\include\xmlrpc-c\client.h"
++# End Source File
++# Begin Source File
++
++SOURCE="..\include\xmlrpc-c\client_global.h"
++# End Source File
++# Begin Source File
++
++SOURCE="..\include\xmlrpc-c\client_int.h"
++# End Source File
++# Begin Source File
++
++SOURCE="..\include\xmlrpc-c\config.h"
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\abyss\src\conn.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\abyss\src\date.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\abyss\src\file.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\util\include\girmath.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\abyss\src\handler.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\util\include\inline.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\util\include\linklist.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\util\include\mallocvar.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\double.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\method.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\util\include\pthreadx.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\parse_datetime.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\parse_value.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\registry.h
++# End Source File
++# Begin Source File
++
++SOURCE="..\include\xmlrpc-c\server.h"
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\abyss\src\server.h
++# End Source File
++# Begin Source File
++
++SOURCE="..\include\xmlrpc-c\server_abyss.h"
++# End Source File
++# Begin Source File
++
++SOURCE="..\include\xmlrpc-c\server_cgi.h"
++# End Source File
++# Begin Source File
++
++SOURCE="..\include\xmlrpc-c\server_w32httpsys.h"
++# End Source File
++# Begin Source File
++
++SOURCE="..\include\xmlrpc-c\sleep_int.h"
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\abyss\src\socket.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\abyss\src\socket_win.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\util\include\stdargx.h
++# End Source File
++# Begin Source File
++
++SOURCE="..\include\xmlrpc-c\string_int.h"
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\system_method.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\abyss\src\thread.h
++# End Source File
++# Begin Source File
++
++SOURCE="..\include\xmlrpc-c\time_int.h"
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\abyss\src\token.h
++# End Source File
++# Begin Source File
++
++SOURCE="..\include\xmlrpc-c\transport.h"
++# End Source File
++# Begin Source File
++
++SOURCE=..\transport_config.h
++# End Source File
++# Begin Source File
++
++SOURCE="..\include\xmlrpc-c\transport_int.h"
++# End Source File
++# Begin Source File
++
++SOURCE="..\include\xmlrpc-c\util_int.h"
++# End Source File
++# Begin Source File
++
++SOURCE=..\xml_rpc_alloc.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\expat\xmlparse\xmlparse.h
++# End Source File
++# Begin Source File
++
++SOURCE="..\include\xmlrpc-c\xmlparser.h"
++# End Source File
++# Begin Source File
++
++SOURCE=..\xmlrpc_config.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\curl_transport\xmlrpc_curl_transport.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\wininet_transport\xmlrpc_wininet_transport.h
++# End Source File
++# End Group
++# End Target
++# End Project
+diff --git a/libs/xmlrpc-c/Windows/xmlrpc.dsw b/libs/xmlrpc-c/Windows/xmlrpc.dsw
+index f7b676e..db3cb5a 100644
+--- a/libs/xmlrpc-c/Windows/xmlrpc.dsw
++++ b/libs/xmlrpc-c/Windows/xmlrpc.dsw
+@@ -1,242 +1,272 @@
+-Microsoft Developer Studio Workspace File, Format Version 6.00\r
+-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\r
+-\r
+-###############################################################################\r
+-\r
+-Project: "abyss"=".\abyss.dsp" - Package Owner=<4>\r
+-\r
+-Package=<5>\r
+-{{{\r
+-}}}\r
+-\r
+-Package=<4>\r
+-{{{\r
+-}}}\r
+-\r
+-###############################################################################\r
+-\r
+-Project: "cpptest"=".\cpptest.dsp" - Package Owner=<4>\r
+-\r
+-Package=<5>\r
+-{{{\r
+-}}}\r
+-\r
+-Package=<4>\r
+-{{{\r
+- Begin Project Dependency\r
+- Project_Dep_Name xmlrpc\r
+- End Project Dependency\r
+- Begin Project Dependency\r
+- Project_Dep_Name xmlrpccpp\r
+- End Project Dependency\r
+- Begin Project Dependency\r
+- Project_Dep_Name abyss\r
+- End Project Dependency\r
+-}}}\r
+-\r
+-###############################################################################\r
+-\r
+-Project: "gennmtab"=".\gennmtab.dsp" - Package Owner=<4>\r
+-\r
+-Package=<5>\r
+-{{{\r
+-}}}\r
+-\r
+-Package=<4>\r
+-{{{\r
+-}}}\r
+-\r
+-###############################################################################\r
+-\r
+-Project: "rpctest"=".\rpctest.dsp" - Package Owner=<4>\r
+-\r
+-Package=<5>\r
+-{{{\r
+-}}}\r
+-\r
+-Package=<4>\r
+-{{{\r
+- Begin Project Dependency\r
+- Project_Dep_Name xmlrpc\r
+- End Project Dependency\r
+- Begin Project Dependency\r
+- Project_Dep_Name abyss\r
+- End Project Dependency\r
+-}}}\r
+-\r
+-###############################################################################\r
+-\r
+-Project: "xmlhttpsys"=".\xmlhttpsys.dsp" - Package Owner=<4>\r
+-\r
+-Package=<5>\r
+-{{{\r
+-}}}\r
+-\r
+-Package=<4>\r
+-{{{\r
+-}}}\r
+-\r
+-###############################################################################\r
+-\r
+-Project: "xmlparse"=".\xmlparse.dsp" - Package Owner=<4>\r
+-\r
+-Package=<5>\r
+-{{{\r
+-}}}\r
+-\r
+-Package=<4>\r
+-{{{\r
+- Begin Project Dependency\r
+- Project_Dep_Name xmltok\r
+- End Project Dependency\r
+-}}}\r
+-\r
+-###############################################################################\r
+-\r
+-Project: "xmlrpc"=".\xmlrpc.dsp" - Package Owner=<4>\r
+-\r
+-Package=<5>\r
+-{{{\r
+-}}}\r
+-\r
+-Package=<4>\r
+-{{{\r
+- Begin Project Dependency\r
+- Project_Dep_Name xmlparse\r
+- End Project Dependency\r
+- Begin Project Dependency\r
+- Project_Dep_Name abyss\r
+- End Project Dependency\r
+-}}}\r
+-\r
+-###############################################################################\r
+-\r
+-Project: "xmlrpccpp"=".\xmlrpccpp.dsp" - Package Owner=<4>\r
+-\r
+-Package=<5>\r
+-{{{\r
+-}}}\r
+-\r
+-Package=<4>\r
+-{{{\r
+- Begin Project Dependency\r
+- Project_Dep_Name xmlparse\r
+- End Project Dependency\r
+- Begin Project Dependency\r
+- Project_Dep_Name abyss\r
+- End Project Dependency\r
+- Begin Project Dependency\r
+- Project_Dep_Name xmlrpc\r
+- End Project Dependency\r
+-}}}\r
+-\r
+-###############################################################################\r
+-\r
+-Project: "xmlrpc_sample_add_asynch_client"=".\xmlrpc_sample_add_asynch_client.dsp" - Package Owner=<4>\r
+-\r
+-Package=<5>\r
+-{{{\r
+-}}}\r
+-\r
+-Package=<4>\r
+-{{{\r
+- Begin Project Dependency\r
+- Project_Dep_Name xmlrpc\r
+- End Project Dependency\r
+-}}}\r
+-\r
+-###############################################################################\r
+-\r
+-Project: "xmlrpc_sample_add_server"=".\xmlrpc_sample_add_server.dsp" - Package Owner=<4>\r
+-\r
+-Package=<5>\r
+-{{{\r
+-}}}\r
+-\r
+-Package=<4>\r
+-{{{\r
+- Begin Project Dependency\r
+- Project_Dep_Name xmlrpc\r
+- End Project Dependency\r
+- Begin Project Dependency\r
+- Project_Dep_Name abyss\r
+- End Project Dependency\r
+-}}}\r
+-\r
+-###############################################################################\r
+-\r
+-Project: "xmlrpc_sample_add_server_w32httpsys"=".\xmlrpc_sample_add_server_w32httpsys.dsp" - Package Owner=<4>\r
+-\r
+-Package=<5>\r
+-{{{\r
+-}}}\r
+-\r
+-Package=<4>\r
+-{{{\r
+- Begin Project Dependency\r
+- Project_Dep_Name xmlhttpsys\r
+- End Project Dependency\r
+- Begin Project Dependency\r
+- Project_Dep_Name xmlrpc\r
+- End Project Dependency\r
+-}}}\r
+-\r
+-###############################################################################\r
+-\r
+-Project: "xmlrpc_sample_add_sync_client"=".\xmlrpc_sample_add_sync_client.dsp" - Package Owner=<4>\r
+-\r
+-Package=<5>\r
+-{{{\r
+-}}}\r
+-\r
+-Package=<4>\r
+-{{{\r
+- Begin Project Dependency\r
+- Project_Dep_Name xmlrpc\r
+- End Project Dependency\r
+-}}}\r
+-\r
+-###############################################################################\r
+-\r
+-Project: "xmlrpc_sample_auth_client"=".\xmlrpc_sample_auth_client.dsp" - Package Owner=<4>\r
+-\r
+-Package=<5>\r
+-{{{\r
+-}}}\r
+-\r
+-Package=<4>\r
+-{{{\r
+- Begin Project Dependency\r
+- Project_Dep_Name xmlrpc\r
+- End Project Dependency\r
+-}}}\r
+-\r
+-###############################################################################\r
+-\r
+-Project: "xmltok"=".\xmltok.dsp" - Package Owner=<4>\r
+-\r
+-Package=<5>\r
+-{{{\r
+-}}}\r
+-\r
+-Package=<4>\r
+-{{{\r
+- Begin Project Dependency\r
+- Project_Dep_Name gennmtab\r
+- End Project Dependency\r
+-}}}\r
+-\r
+-###############################################################################\r
+-\r
+-Global:\r
+-\r
+-Package=<5>\r
+-{{{\r
+-}}}\r
+-\r
+-Package=<3>\r
+-{{{\r
+-}}}\r
+-\r
+-###############################################################################\r
+-\r
++Microsoft Developer Studio Workspace File, Format Version 6.00
++# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
++
++###############################################################################
++
++Project: "abyss"=".\abyss.dsp" - Package Owner=<4>
++
++Package=<5>
++{{{
++}}}
++
++Package=<4>
++{{{
++}}}
++
++###############################################################################
++
++Project: "cpptest"=".\cpptest.dsp" - Package Owner=<4>
++
++Package=<5>
++{{{
++}}}
++
++Package=<4>
++{{{
++ Begin Project Dependency
++ Project_Dep_Name xmlrpc
++ End Project Dependency
++ Begin Project Dependency
++ Project_Dep_Name xmlrpccpp
++ End Project Dependency
++ Begin Project Dependency
++ Project_Dep_Name abyss
++ End Project Dependency
++}}}
++
++###############################################################################
++
++Project: "gennmtab"=".\gennmtab.dsp" - Package Owner=<4>
++
++Package=<5>
++{{{
++}}}
++
++Package=<4>
++{{{
++}}}
++
++###############################################################################
++
++Project: "rpctest"=".\rpctest.dsp" - Package Owner=<4>
++
++Package=<5>
++{{{
++}}}
++
++Package=<4>
++{{{
++ Begin Project Dependency
++ Project_Dep_Name xmlrpc
++ End Project Dependency
++ Begin Project Dependency
++ Project_Dep_Name abyss
++ End Project Dependency
++}}}
++
++###############################################################################
++
++Project: "xmlhttpsys"=".\xmlhttpsys.dsp" - Package Owner=<4>
++
++Package=<5>
++{{{
++}}}
++
++Package=<4>
++{{{
++}}}
++
++###############################################################################
++
++Project: "xmlparse"=".\xmlparse.dsp" - Package Owner=<4>
++
++Package=<5>
++{{{
++}}}
++
++Package=<4>
++{{{
++ Begin Project Dependency
++ Project_Dep_Name xmltok
++ End Project Dependency
++}}}
++
++###############################################################################
++
++Project: "xmlrpc"=".\xmlrpc.dsp" - Package Owner=<4>
++
++Package=<5>
++{{{
++}}}
++
++Package=<4>
++{{{
++ Begin Project Dependency
++ Project_Dep_Name xmlparse
++ End Project Dependency
++ Begin Project Dependency
++ Project_Dep_Name abyss
++ End Project Dependency
++}}}
++
++###############################################################################
++
++Project: "xmlrpc_misc"=".\xmlrpc_misc.dsp" - Package Owner=<4>
++
++Package=<5>
++{{{
++}}}
++
++Package=<4>
++{{{
++}}}
++
++###############################################################################
++
++Project: "xmlrpcclient"=".\xmlrpcclient.dsp" - Package Owner=<4>
++
++Package=<5>
++{{{
++}}}
++
++Package=<4>
++{{{
++ Begin Project Dependency
++ Project_Dep_Name xmlrpc
++ End Project Dependency
++ Begin Project Dependency
++ Project_Dep_Name xmlrpc_misc
++ End Project Dependency
++}}}
++
++###############################################################################
++
++Project: "xmlrpccpp"=".\xmlrpccpp.dsp" - Package Owner=<4>
++
++Package=<5>
++{{{
++}}}
++
++Package=<4>
++{{{
++ Begin Project Dependency
++ Project_Dep_Name xmlparse
++ End Project Dependency
++ Begin Project Dependency
++ Project_Dep_Name abyss
++ End Project Dependency
++ Begin Project Dependency
++ Project_Dep_Name xmlrpc
++ End Project Dependency
++}}}
++
++###############################################################################
++
++Project: "xmlrpc_sample_add_asynch_client"=".\xmlrpc_sample_add_asynch_client.dsp" - Package Owner=<4>
++
++Package=<5>
++{{{
++}}}
++
++Package=<4>
++{{{
++ Begin Project Dependency
++ Project_Dep_Name xmlrpc
++ End Project Dependency
++}}}
++
++###############################################################################
++
++Project: "xmlrpc_sample_add_server"=".\xmlrpc_sample_add_server.dsp" - Package Owner=<4>
++
++Package=<5>
++{{{
++}}}
++
++Package=<4>
++{{{
++ Begin Project Dependency
++ Project_Dep_Name xmlrpc
++ End Project Dependency
++ Begin Project Dependency
++ Project_Dep_Name abyss
++ End Project Dependency
++}}}
++
++###############################################################################
++
++Project: "xmlrpc_sample_add_server_w32httpsys"=".\xmlrpc_sample_add_server_w32httpsys.dsp" - Package Owner=<4>
++
++Package=<5>
++{{{
++}}}
++
++Package=<4>
++{{{
++ Begin Project Dependency
++ Project_Dep_Name xmlhttpsys
++ End Project Dependency
++ Begin Project Dependency
++ Project_Dep_Name xmlrpc
++ End Project Dependency
++}}}
++
++###############################################################################
++
++Project: "xmlrpc_sample_add_sync_client"=".\xmlrpc_sample_add_sync_client.dsp" - Package Owner=<4>
++
++Package=<5>
++{{{
++}}}
++
++Package=<4>
++{{{
++ Begin Project Dependency
++ Project_Dep_Name xmlrpc
++ End Project Dependency
++}}}
++
++###############################################################################
++
++Project: "xmlrpc_sample_auth_client"=".\xmlrpc_sample_auth_client.dsp" - Package Owner=<4>
++
++Package=<5>
++{{{
++}}}
++
++Package=<4>
++{{{
++ Begin Project Dependency
++ Project_Dep_Name xmlrpc
++ End Project Dependency
++}}}
++
++###############################################################################
++
++Project: "xmltok"=".\xmltok.dsp" - Package Owner=<4>
++
++Package=<5>
++{{{
++}}}
++
++Package=<4>
++{{{
++ Begin Project Dependency
++ Project_Dep_Name gennmtab
++ End Project Dependency
++}}}
++
++###############################################################################
++
++Global:
++
++Package=<5>
++{{{
++}}}
++
++Package=<3>
++{{{
++}}}
++
++###############################################################################
++
+diff --git a/libs/xmlrpc-c/Windows/xmlrpc_config.h b/libs/xmlrpc-c/Windows/xmlrpc_config.h
+deleted file mode 100644
+index 319dc2a..0000000
+--- a/libs/xmlrpc-c/Windows/xmlrpc_config.h
++++ /dev/null
+@@ -1,158 +0,0 @@
+-/* Win32 version of xmlrpc_config.h.\r
+-\r
+- For other platforms, this is generated automatically, but for Windows,\r
+- someone generates it manually. Nonetheless, we keep it looking as much\r
+- as possible like the automatically generated one to make it easier to\r
+- maintain (e.g. you can compare the two and see why something builds\r
+- differently for Windows than for some other platform).\r
+-\r
+- The purpose of this file is to define stuff particular to the build\r
+- environment being used to build Xmlrpc-c. Xmlrpc-c source files can\r
+- #include this file and have build-environment-independent source code.\r
+-\r
+- A major goal of this file is to reduce conditional compilation in\r
+- the other source files as much as possible. Even more, we want to avoid\r
+- having to generate source code particular to a build environment\r
+- except in this file. \r
+-\r
+- This file is NOT meant to be used by any code outside of the\r
+- Xmlrpc-c source tree. There is a similar file that gets installed\r
+- as <xmlrpc-c/config.h> that performs the same function for Xmlrpc-c\r
+- interface header files that get compiled as part of a user's program.\r
+-\r
+- Logical macros are 0 or 1 instead of the more traditional defined and\r
+- undefined. That's so we can distinguish when compiling code between\r
+- "false" and some problem with the code.\r
+-*/\r
+-\r
+-#ifndef XMLRPC_CONFIG_H_INCLUDED\r
+-#define XMLRPC_CONFIG_H_INCLUDED\r
+-\r
+-/* From xmlrpc_amconfig.h */\r
+-\r
+-#define HAVE__STRICMP 1\r
+-/* Name of package */\r
+-#define PACKAGE "xmlrpc-c"\r
+-/*----------------------------------*/\r
+-\r
+-#ifndef HAVE_SETGROUPS\r
+-#define HAVE_SETGROUPS 0\r
+-#endif\r
+-#ifndef HAVE_ASPRINTF\r
+-#define HAVE_ASPRINTF 0\r
+-#endif\r
+-#ifndef HAVE_SETENV\r
+-#define HAVE_SETENV 0\r
+-#endif\r
+-#ifndef HAVE_PSELECT\r
+-#define HAVE_PSELECT 0\r
+-#endif\r
+-#ifndef HAVE_WCSNCMP\r
+-#define HAVE_WCSNCMP 1\r
+-#endif\r
+-#ifndef HAVE_GETTIMEOFDAY\r
+-#define HAVE_GETTIMEOFDAY 0\r
+-#endif\r
+-#ifndef HAVE_LOCALTIME_R\r
+-#define HAVE_LOCALTIME_R 0\r
+-#endif\r
+-#ifndef HAVE_GMTIME_R\r
+-#define HAVE_GMTIME_R 0\r
+-#endif\r
+-#ifndef HAVE_STRCASECMP\r
+-#define HAVE_STRCASECMP 0\r
+-#endif\r
+-#ifndef HAVE_STRICMP\r
+-#define HAVE_STRICMP 0\r
+-#endif\r
+-#ifndef HAVE__STRICMP\r
+-#define HAVE__STRICMP 0\r
+-#endif\r
+-\r
+-#define HAVE_WCHAR_H 1\r
+-#define HAVE_SYS_FILIO_H 0\r
+-#define HAVE_SYS_IOCTL_H 0\r
+-\r
+-#define VA_LIST_IS_ARRAY 0\r
+-\r
+-#define HAVE_LIBWWW_SSL 0\r
+-\r
+-/* Used to mark an unused function parameter */\r
+-#define ATTR_UNUSED\r
+-\r
+-#define DIRECTORY_SEPARATOR "\\"\r
+-\r
+-#define HAVE_UNICODE_WCHAR 1\r
+-\r
+-/* Xmlrpc-c code uses __inline__ to declare functions that should\r
+- be compiled as inline code. GNU C recognizes the __inline__ keyword.\r
+- Others recognize 'inline' or '__inline' or nothing at all to say\r
+- a function should be inlined.\r
+-\r
+- We could make 'configure' simply do a trial compile to figure out\r
+- which one, but for now, this approximation is easier:\r
+-*/\r
+-#if (!defined(__GNUC__))\r
+- #if (!defined(__inline__))\r
+- #if (defined(__sgi) || defined(_AIX) || defined(_MSC_VER))\r
+- #define __inline__ __inline\r
+- #else \r
+- #define __inline__\r
+- #endif\r
+- #endif\r
+-#endif\r
+-\r
+-/* MSVCRT means we're using the Microsoft Visual C++ runtime library */\r
+-\r
+-#ifdef _MSC_VER\r
+-/* The compiler is Microsoft Visual C++. */\r
+- #define MSVCRT _MSC_VER\r
+-#else\r
+- #define MSVCRT 0\r
+-#endif\r
+-\r
+-#if MSVCRT\r
+- /* The MSVC runtime library _does_ have a 'struct timeval', but it is\r
+- part of the Winsock interface (along with select(), which is probably\r
+- its intended use), so isn't intended for use for general timekeeping.\r
+- */\r
+- #define HAVE_TIMEVAL 0\r
+- #define HAVE_TIMESPEC 0\r
+-#else\r
+- #define HAVE_TIMEVAL 1\r
+- /* timespec is Posix.1b. If we need to work on a non-Posix.1b non-Windows\r
+- system, we'll have to figure out how to make Configure determine this.\r
+- */\r
+- #define HAVE_TIMESPEC 1\r
+-#endif\r
+-\r
+-#if MSVCRT\r
+- #define XMLRPC_VSNPRINTF _vsnprintf\r
+-#else\r
+- #define XMLRPC_VSNPRINTF vsnprintf\r
+-#endif\r
+-\r
+-#if defined(_MSC_VER) && (_MSC_VER >= 1400)\r
+-/* Starting with MSVC 8, the runtime library defines various POSIX functions\r
+- such as strdup() whose names violate the ISO C standard (the standard\r
+- says the strXXX names are reserved for the standard), but warns you of\r
+- the standards violation. That warning is 4996, along with other warnings\r
+- that tell you you're using a function that Microsoft thinks you\r
+- shouldn't.\r
+-\r
+- Well, POSIX is more important than that element of ISO C, so we disable\r
+- that warning.\r
+-\r
+- FYI, msvcrt also defines _strdup(), etc, which doesn't violate the\r
+- naming standard. But since other environments don't define _strdup(),\r
+- we can't use it in portable code.\r
+-*/\r
+-#pragma warning(disable:4996)\r
+-#endif\r
+-\r
+-#define snprintf _snprintf\r
+-#define popen _popen\r
+-#define strtoll _strtoui64\r
+-#define strtoull _strtoui64\r
+-\r
+-#endif\r
+diff --git a/libs/xmlrpc-c/Windows/xmlrpc_win32_config.h b/libs/xmlrpc-c/Windows/xmlrpc_win32_config.h
+index e4e34fd..798b5b2 100644
+--- a/libs/xmlrpc-c/Windows/xmlrpc_win32_config.h
++++ b/libs/xmlrpc-c/Windows/xmlrpc_win32_config.h
+@@ -31,6 +31,8 @@
+ /* From xmlrpc_amconfig.h */
+
+ #define HAVE__STRICMP 1
++#define HAVE__STRTOUI64 1
++
+ /* Name of package */
+ #define PACKAGE "xmlrpc-c"
+ /*----------------------------------*/
+@@ -72,6 +74,7 @@
+ #define HAVE_WCHAR_H 1
+ #define HAVE_SYS_FILIO_H 0
+ #define HAVE_SYS_IOCTL_H 0
++#define HAVE_SYS_SELECT_H 0
+
+ #define VA_LIST_IS_ARRAY 0
+
+@@ -127,11 +130,41 @@
+ #endif
+
+ #if MSVCRT
++ #define HAVE_WINDOWS_THREAD 1
++#else
++ #define HAVE_WINDOWS_THREAD 0
++#endif
++
++/* Some people have and use pthreads on Windows. See
++ http://sourceware.org/pthreads-win32 . For that case, we can set
++ HAVE_PTHREAD to 1. The builder prefers to use pthreads if it has
++ a choice.
++*/
++#define HAVE_PTHREAD 0
++
++/* Note that the return value of XMLRPC_VSNPRINTF is int on Windows,
++ ssize_t on POSIX.
++*/
++#if MSVCRT
+ #define XMLRPC_VSNPRINTF _vsnprintf
+ #else
+ #define XMLRPC_VSNPRINTF vsnprintf
+ #endif
+
++#if MSVCRT
++ #define HAVE_REGEX 0
++#else
++ #define HAVE_REGEX 1
++#endif
++
++#if MSVCRT
++ #define XMLRPC_SOCKETPAIR xmlrpc_win32_socketpair
++ #define XMLRPC_CLOSESOCKET closesocket
++#else
++ #define XMLRPC_SOCKETPAIR socketpair
++ #define XMLRPC_CLOSESOCKET close
++#endif
++
+ #if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ /* Starting with MSVC 8, the runtime library defines various POSIX functions
+ such as strdup() whose names violate the ISO C standard (the standard
+@@ -149,10 +182,42 @@
+ */
+ #pragma warning(disable:4996)
+ #endif
++/* Warning C4090 is "different 'const' qualifiers".
++
++ We disable this warning because MSVC erroneously issues it when there is
++ in fact no difference in const qualifiers:
++
++ const char ** p;
++ void * q;
++ q = p;
++
++ Note that both p and q are pointers to non-const.
++
++ We have seen this in MSVC 7.1, 8, and 9 (but not 6).
++*/
++#pragma warning(disable:4090)
++
++#if HAVE_STRTOLL
++ # define XMLRPC_STRTOLL strtoll
++#elif HAVE_STRTOQ
++ # define XMLRPC_STRTOLL strtoq /* Interix */
++#elif HAVE___STRTOLL
++ # define XMLRPC_STRTOLL __strtoll /* HP-UX <= 11.11 */
++#elif HAVE__STRTOUI64
++ #define XMLRPC_STRTOLL _strtoui64 /* Windows MSVC */
++#endif
++
++#if HAVE_STRTOULL
++ # define XMLRPC_STRTOULL strtoull
++#elif HAVE_STRTOUQ
++ # define XMLRPC_STRTOULL strtouq /* Interix */
++#elif HAVE___STRTOULL
++ # define XMLRPC_STRTOULL __strtoull /* HP-UX <= 11.11 */
++#elif HAVE__STRTOUI64
++ #define XMLRPC_STRTOULL _strtoui64 /* Windows MSVC */
++#endif
+
+ #define snprintf _snprintf
+ #define popen _popen
+-#define strtoll _strtoui64
+-#define strtoull _strtoui64
+
+ #endif
+diff --git a/libs/xmlrpc-c/Windows/xmlrpccpp.dsp b/libs/xmlrpc-c/Windows/xmlrpccpp.dsp
+index fedf4e2..0ee50de 100644
+--- a/libs/xmlrpc-c/Windows/xmlrpccpp.dsp
++++ b/libs/xmlrpc-c/Windows/xmlrpccpp.dsp
+@@ -1,179 +1,182 @@
+-# Microsoft Developer Studio Project File - Name="xmlrpccpp" - Package Owner=<4>\r
+-# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+-# ** DO NOT EDIT **\r
+-\r
+-# TARGTYPE "Win32 (x86) Static Library" 0x0104\r
+-\r
+-CFG=xmlrpccpp - Win32 Debug\r
+-!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+-!MESSAGE use the Export Makefile command and run\r
+-!MESSAGE \r
+-!MESSAGE NMAKE /f "xmlrpccpp.mak".\r
+-!MESSAGE \r
+-!MESSAGE You can specify a configuration when running NMAKE\r
+-!MESSAGE by defining the macro CFG on the command line. For example:\r
+-!MESSAGE \r
+-!MESSAGE NMAKE /f "xmlrpccpp.mak" CFG="xmlrpccpp - Win32 Debug"\r
+-!MESSAGE \r
+-!MESSAGE Possible choices for configuration are:\r
+-!MESSAGE \r
+-!MESSAGE "xmlrpccpp - Win32 Release" (based on "Win32 (x86) Static Library")\r
+-!MESSAGE "xmlrpccpp - Win32 Debug" (based on "Win32 (x86) Static Library")\r
+-!MESSAGE \r
+-\r
+-# Begin Project\r
+-# PROP AllowPerConfigDependencies 0\r
+-CPP=cl.exe\r
+-RSC=rc.exe\r
+-\r
+-!IF "$(CFG)" == "xmlrpccpp - Win32 Release"\r
+-\r
+-# PROP BASE Use_MFC 0\r
+-# PROP BASE Use_Debug_Libraries 0\r
+-# PROP BASE Output_Dir "Release"\r
+-# PROP BASE Intermediate_Dir "Release"\r
+-# PROP BASE Target_Dir ""\r
+-# PROP Use_MFC 0\r
+-# PROP Use_Debug_Libraries 0\r
+-# PROP Output_Dir "Release\xmlrpccpp"\r
+-# PROP Intermediate_Dir "Release\xmlrpccpp"\r
+-# PROP Target_Dir ""\r
+-LINK32=link.exe -lib\r
+-MTL=midl.exe\r
+-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c\r
+-# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "../lib" /I "../lib/curl_transport" /I "../lib/util/include" /I "../include" /I ".." /I "../lib/expat/xmlparse" /I "../lib/abyss/src" /I "../lib/wininet_transport" /I "../.." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "ABYSS_WIN32" /D "CURL_STATICLIB" /YX /FD /c\r
+-# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
+-# ADD RSC /l 0x409 /d "NDEBUG"\r
+-BSC32=bscmake.exe\r
+-# ADD BASE BSC32 /nologo\r
+-# ADD BSC32 /nologo\r
+-LIB32=link.exe -lib\r
+-# ADD BASE LIB32 /nologo\r
+-# ADD LIB32 /nologo /out:"..\lib\xmlrpccpp.lib"\r
+-\r
+-!ELSEIF "$(CFG)" == "xmlrpccpp - Win32 Debug"\r
+-\r
+-# PROP BASE Use_MFC 0\r
+-# PROP BASE Use_Debug_Libraries 1\r
+-# PROP BASE Output_Dir "Debug"\r
+-# PROP BASE Intermediate_Dir "Debug"\r
+-# PROP BASE Target_Dir ""\r
+-# PROP Use_MFC 0\r
+-# PROP Use_Debug_Libraries 1\r
+-# PROP Output_Dir "Debug\xmlrpccpp"\r
+-# PROP Intermediate_Dir "Debug\xmlrpccpp"\r
+-# PROP Target_Dir ""\r
+-LINK32=link.exe -lib\r
+-MTL=midl.exe\r
+-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c\r
+-# ADD CPP /nologo /MTd /W3 /GR /Gm /GX /ZI /Od /I "../lib" /I "../lib/curl_transport" /I "../lib/util/include" /I "../include" /I ".." /I "../lib/expat/xmlparse" /I "../lib/abyss/src" /I "../lib/wininet_transport" /I "../.." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "ABYSS_WIN32" /D "CURL_STATICLIB" /YX /FD /GZ /c\r
+-# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
+-# ADD RSC /l 0x409 /d "_DEBUG"\r
+-BSC32=bscmake.exe\r
+-# ADD BASE BSC32 /nologo\r
+-# ADD BSC32 /nologo\r
+-LIB32=link.exe -lib\r
+-# ADD BASE LIB32 /nologo\r
+-# ADD LIB32 /nologo /out:"..\lib\xmlrpccppD.lib"\r
+-\r
+-!ENDIF \r
+-\r
+-# Begin Target\r
+-\r
+-# Name "xmlrpccpp - Win32 Release"\r
+-# Name "xmlrpccpp - Win32 Debug"\r
+-# Begin Group "Source Files"\r
+-\r
+-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;cc"\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\base64.cpp\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\client.cpp\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\client_simple.cpp\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\curl.cpp\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\env_wrap.cpp\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\fault.cpp\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\girerr.cpp\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\girmem.cpp\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\libwww.cpp\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\outcome.cpp\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\packetsocket.cpp\r
+-# PROP Exclude_From_Build 1\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\param_list.cpp\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\pstream.cpp\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\registry.cpp\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\server_abyss.cpp\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\server_pstream.cpp\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\value.cpp\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\wininet.cpp\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\xml.cpp\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\XmlRpcCpp.cpp\r
+-# End Source File\r
+-# End Group\r
+-# Begin Group "Header Files"\r
+-\r
+-# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\src\cpp\env_wrap.hpp\r
+-# End Source File\r
+-# End Group\r
+-# End Target\r
+-# End Project\r
++# Microsoft Developer Studio Project File - Name="xmlrpccpp" - Package Owner=<4>
++# Microsoft Developer Studio Generated Build File, Format Version 6.00
++# ** DO NOT EDIT **
++
++# TARGTYPE "Win32 (x86) Static Library" 0x0104
++
++CFG=xmlrpccpp - Win32 Debug
++!MESSAGE This is not a valid makefile. To build this project using NMAKE,
++!MESSAGE use the Export Makefile command and run
++!MESSAGE
++!MESSAGE NMAKE /f "xmlrpccpp.mak".
++!MESSAGE
++!MESSAGE You can specify a configuration when running NMAKE
++!MESSAGE by defining the macro CFG on the command line. For example:
++!MESSAGE
++!MESSAGE NMAKE /f "xmlrpccpp.mak" CFG="xmlrpccpp - Win32 Debug"
++!MESSAGE
++!MESSAGE Possible choices for configuration are:
++!MESSAGE
++!MESSAGE "xmlrpccpp - Win32 Release" (based on "Win32 (x86) Static Library")
++!MESSAGE "xmlrpccpp - Win32 Debug" (based on "Win32 (x86) Static Library")
++!MESSAGE
++
++# Begin Project
++# PROP AllowPerConfigDependencies 0
++CPP=cl.exe
++RSC=rc.exe
++
++!IF "$(CFG)" == "xmlrpccpp - Win32 Release"
++
++# PROP BASE Use_MFC 0
++# PROP BASE Use_Debug_Libraries 0
++# PROP BASE Output_Dir "Release"
++# PROP BASE Intermediate_Dir "Release"
++# PROP BASE Target_Dir ""
++# PROP Use_MFC 0
++# PROP Use_Debug_Libraries 0
++# PROP Output_Dir "Release\xmlrpccpp"
++# PROP Intermediate_Dir "Release\xmlrpccpp"
++# PROP Target_Dir ""
++LINK32=link.exe -lib
++MTL=midl.exe
++# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
++# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "../lib" /I "../lib/curl_transport" /I "../lib/util/include" /I "../include" /I ".." /I "../lib/expat/xmlparse" /I "../lib/abyss/src" /I "../lib/wininet_transport" /I "../.." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "ABYSS_WIN32" /D "CURL_STATICLIB" /YX /FD /c
++# ADD BASE RSC /l 0x409 /d "NDEBUG"
++# ADD RSC /l 0x409 /d "NDEBUG"
++BSC32=bscmake.exe
++# ADD BASE BSC32 /nologo
++# ADD BSC32 /nologo
++LIB32=link.exe -lib
++# ADD BASE LIB32 /nologo
++# ADD LIB32 /nologo /out:"..\lib\xmlrpccpp.lib"
++
++!ELSEIF "$(CFG)" == "xmlrpccpp - Win32 Debug"
++
++# PROP BASE Use_MFC 0
++# PROP BASE Use_Debug_Libraries 1
++# PROP BASE Output_Dir "Debug"
++# PROP BASE Intermediate_Dir "Debug"
++# PROP BASE Target_Dir ""
++# PROP Use_MFC 0
++# PROP Use_Debug_Libraries 1
++# PROP Output_Dir "Debug\xmlrpccpp"
++# PROP Intermediate_Dir "Debug\xmlrpccpp"
++# PROP Target_Dir ""
++LINK32=link.exe -lib
++MTL=midl.exe
++# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
++# ADD CPP /nologo /MTd /W3 /GR /Gm /GX /ZI /Od /I "../lib" /I "../lib/curl_transport" /I "../lib/util/include" /I "../include" /I ".." /I "../lib/expat/xmlparse" /I "../lib/abyss/src" /I "../lib/wininet_transport" /I "../.." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "ABYSS_WIN32" /D "CURL_STATICLIB" /YX /FD /GZ /c
++# ADD BASE RSC /l 0x409 /d "_DEBUG"
++# ADD RSC /l 0x409 /d "_DEBUG"
++BSC32=bscmake.exe
++# ADD BASE BSC32 /nologo
++# ADD BSC32 /nologo
++LIB32=link.exe -lib
++# ADD BASE LIB32 /nologo
++# ADD LIB32 /nologo /out:"..\lib\xmlrpccppD.lib"
++
++!ENDIF
++
++# Begin Target
++
++# Name "xmlrpccpp - Win32 Release"
++# Name "xmlrpccpp - Win32 Debug"
++# Begin Group "Source Files"
++
++# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;cc"
++# Begin Source File
++
++SOURCE=..\src\cpp\base64.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\client.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\client_simple.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\curl.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\env_wrap.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\fault.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\girerr.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\girmem.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\libwww.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\outcome.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\packetsocket.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\param_list.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\pstream.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\registry.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\server_abyss.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\server_pstream.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\server_pstream_conn.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\value.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\wininet.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\xml.cpp
++# End Source File
++# Begin Source File
++
++SOURCE=..\src\cpp\XmlRpcCpp.cpp
++# End Source File
++# End Group
++# Begin Group "Header Files"
++
++# PROP Default_Filter "h;hpp;hxx;hm;inl"
++# Begin Source File
++
++SOURCE=..\src\cpp\env_wrap.hpp
++# End Source File
++# End Group
++# End Target
++# End Project
+diff --git a/libs/xmlrpc-c/Windows/xmltok.2008.vcproj b/libs/xmlrpc-c/Windows/xmltok.2008.vcproj
+deleted file mode 100644
+index 0935ede..0000000
+--- a/libs/xmlrpc-c/Windows/xmltok.2008.vcproj
++++ /dev/null
+@@ -1,455 +0,0 @@
+-<?xml version="1.0" encoding="Windows-1252"?>\r
+-<VisualStudioProject\r
+- ProjectType="Visual C++"\r
+- Version="9.00"\r
+- Name="xmltok"\r
+- ProjectGUID="{B535402E-38D2-4D54-8360-423ACBD17192}"\r
+- RootNamespace="xmltok"\r
+- TargetFrameworkVersion="131072"\r
+- >\r
+- <Platforms>\r
+- <Platform\r
+- Name="Win32"\r
+- />\r
+- <Platform\r
+- Name="x64"\r
+- />\r
+- </Platforms>\r
+- <ToolFiles>\r
+- </ToolFiles>\r
+- <Configurations>\r
+- <Configuration\r
+- Name="Debug|Win32"\r
+- OutputDirectory=".\Debug\xmltok"\r
+- IntermediateDirectory=".\Debug\xmltok"\r
+- ConfigurationType="4"\r
+- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
+- UseOfMFC="0"\r
+- ATLMinimizesCRunTimeLibraryUsage="false"\r
+- CharacterSet="2"\r
+- >\r
+- <Tool\r
+- Name="VCPreBuildEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCCustomBuildTool"\r
+- />\r
+- <Tool\r
+- Name="VCXMLDataGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCWebServiceProxyGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCMIDLTool"\r
+- />\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- Optimization="0"\r
+- AdditionalIncludeDirectories="..,."\r
+- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;XML_DTD;XML_NS;_LIB"\r
+- MinimalRebuild="true"\r
+- BasicRuntimeChecks="3"\r
+- RuntimeLibrary="3"\r
+- PrecompiledHeaderFile=".\Debug\xmltok/xmltok.pch"\r
+- AssemblerListingLocation=".\Debug\xmltok/"\r
+- ObjectFile=".\Debug\xmltok/"\r
+- ProgramDataBaseFileName=".\Debug\xmltok/"\r
+- WarningLevel="3"\r
+- SuppressStartupBanner="true"\r
+- DebugInformationFormat="3"\r
+- />\r
+- <Tool\r
+- Name="VCManagedResourceCompilerTool"\r
+- />\r
+- <Tool\r
+- Name="VCResourceCompilerTool"\r
+- PreprocessorDefinitions="_DEBUG"\r
+- Culture="1033"\r
+- />\r
+- <Tool\r
+- Name="VCPreLinkEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCLibrarianTool"\r
+- OutputFile="..\lib\xmltokD.lib"\r
+- SuppressStartupBanner="true"\r
+- />\r
+- <Tool\r
+- Name="VCALinkTool"\r
+- />\r
+- <Tool\r
+- Name="VCXDCMakeTool"\r
+- />\r
+- <Tool\r
+- Name="VCBscMakeTool"\r
+- SuppressStartupBanner="true"\r
+- OutputFile=".\Debug\xmltok/xmltok.bsc"\r
+- />\r
+- <Tool\r
+- Name="VCFxCopTool"\r
+- />\r
+- <Tool\r
+- Name="VCPostBuildEventTool"\r
+- />\r
+- </Configuration>\r
+- <Configuration\r
+- Name="Debug|x64"\r
+- OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
+- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
+- ConfigurationType="4"\r
+- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
+- UseOfMFC="0"\r
+- ATLMinimizesCRunTimeLibraryUsage="false"\r
+- CharacterSet="2"\r
+- >\r
+- <Tool\r
+- Name="VCPreBuildEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCCustomBuildTool"\r
+- />\r
+- <Tool\r
+- Name="VCXMLDataGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCWebServiceProxyGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCMIDLTool"\r
+- TargetEnvironment="3"\r
+- />\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- Optimization="0"\r
+- AdditionalIncludeDirectories="..,."\r
+- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;XML_DTD;XML_NS;_LIB"\r
+- MinimalRebuild="true"\r
+- BasicRuntimeChecks="3"\r
+- RuntimeLibrary="3"\r
+- PrecompiledHeaderFile=".\Debug\xmltok/xmltok.pch"\r
+- ObjectFile="$(IntDir)\xmltok\"\r
+- ProgramDataBaseFileName="$(IntDir)\xmltok\vc90.pdb"\r
+- WarningLevel="3"\r
+- SuppressStartupBanner="true"\r
+- DebugInformationFormat="3"\r
+- />\r
+- <Tool\r
+- Name="VCManagedResourceCompilerTool"\r
+- />\r
+- <Tool\r
+- Name="VCResourceCompilerTool"\r
+- PreprocessorDefinitions="_DEBUG"\r
+- Culture="1033"\r
+- />\r
+- <Tool\r
+- Name="VCPreLinkEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCLibrarianTool"\r
+- OutputFile="..\lib\$(PlatformName)\$(ConfigurationName)\xmltokD.lib"\r
+- SuppressStartupBanner="true"\r
+- />\r
+- <Tool\r
+- Name="VCALinkTool"\r
+- />\r
+- <Tool\r
+- Name="VCXDCMakeTool"\r
+- />\r
+- <Tool\r
+- Name="VCBscMakeTool"\r
+- SuppressStartupBanner="true"\r
+- OutputFile=".\Debug\xmltok/xmltok.bsc"\r
+- />\r
+- <Tool\r
+- Name="VCFxCopTool"\r
+- />\r
+- <Tool\r
+- Name="VCPostBuildEventTool"\r
+- />\r
+- </Configuration>\r
+- <Configuration\r
+- Name="Release|Win32"\r
+- OutputDirectory=".\Release\xmltok"\r
+- IntermediateDirectory=".\Release\xmltok"\r
+- ConfigurationType="4"\r
+- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
+- UseOfMFC="0"\r
+- ATLMinimizesCRunTimeLibraryUsage="false"\r
+- CharacterSet="2"\r
+- >\r
+- <Tool\r
+- Name="VCPreBuildEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCCustomBuildTool"\r
+- />\r
+- <Tool\r
+- Name="VCXMLDataGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCWebServiceProxyGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCMIDLTool"\r
+- />\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- Optimization="2"\r
+- InlineFunctionExpansion="1"\r
+- AdditionalIncludeDirectories="..,."\r
+- PreprocessorDefinitions="NDEBUG;XML_NS;WIN32;_WINDOWS;XML_DTD;_LIB"\r
+- StringPooling="true"\r
+- RuntimeLibrary="0"\r
+- EnableFunctionLevelLinking="true"\r
+- PrecompiledHeaderFile=".\Release\xmltok/xmltok.pch"\r
+- AssemblerListingLocation=".\Release\xmltok/"\r
+- ObjectFile=".\Release\xmltok/"\r
+- ProgramDataBaseFileName=".\Release\xmltok/"\r
+- WarningLevel="3"\r
+- SuppressStartupBanner="true"\r
+- />\r
+- <Tool\r
+- Name="VCManagedResourceCompilerTool"\r
+- />\r
+- <Tool\r
+- Name="VCResourceCompilerTool"\r
+- PreprocessorDefinitions="NDEBUG"\r
+- Culture="1033"\r
+- />\r
+- <Tool\r
+- Name="VCPreLinkEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCLibrarianTool"\r
+- OutputFile="..\lib\xmltok.lib"\r
+- SuppressStartupBanner="true"\r
+- />\r
+- <Tool\r
+- Name="VCALinkTool"\r
+- />\r
+- <Tool\r
+- Name="VCXDCMakeTool"\r
+- />\r
+- <Tool\r
+- Name="VCBscMakeTool"\r
+- SuppressStartupBanner="true"\r
+- OutputFile=".\Release\xmltok/xmltok.bsc"\r
+- />\r
+- <Tool\r
+- Name="VCFxCopTool"\r
+- />\r
+- <Tool\r
+- Name="VCPostBuildEventTool"\r
+- />\r
+- </Configuration>\r
+- <Configuration\r
+- Name="Release|x64"\r
+- OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
+- IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
+- ConfigurationType="4"\r
+- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
+- UseOfMFC="0"\r
+- ATLMinimizesCRunTimeLibraryUsage="false"\r
+- CharacterSet="2"\r
+- >\r
+- <Tool\r
+- Name="VCPreBuildEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCCustomBuildTool"\r
+- />\r
+- <Tool\r
+- Name="VCXMLDataGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCWebServiceProxyGeneratorTool"\r
+- />\r
+- <Tool\r
+- Name="VCMIDLTool"\r
+- TargetEnvironment="3"\r
+- />\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- Optimization="2"\r
+- InlineFunctionExpansion="1"\r
+- AdditionalIncludeDirectories="..,."\r
+- PreprocessorDefinitions="NDEBUG;XML_NS;WIN32;_WINDOWS;XML_DTD;_LIB"\r
+- StringPooling="true"\r
+- RuntimeLibrary="0"\r
+- EnableFunctionLevelLinking="true"\r
+- PrecompiledHeaderFile=".\Release\xmltok/xmltok.pch"\r
+- ObjectFile="$(IntDir)\xmltok\"\r
+- ProgramDataBaseFileName="$(IntDir)\xmltok\vc90.pdb"\r
+- WarningLevel="3"\r
+- SuppressStartupBanner="true"\r
+- />\r
+- <Tool\r
+- Name="VCManagedResourceCompilerTool"\r
+- />\r
+- <Tool\r
+- Name="VCResourceCompilerTool"\r
+- PreprocessorDefinitions="NDEBUG"\r
+- Culture="1033"\r
+- />\r
+- <Tool\r
+- Name="VCPreLinkEventTool"\r
+- />\r
+- <Tool\r
+- Name="VCLibrarianTool"\r
+- OutputFile="..\lib\$(PlatformName)\$(ConfigurationName)\xmltok.lib"\r
+- SuppressStartupBanner="true"\r
+- />\r
+- <Tool\r
+- Name="VCALinkTool"\r
+- />\r
+- <Tool\r
+- Name="VCXDCMakeTool"\r
+- />\r
+- <Tool\r
+- Name="VCBscMakeTool"\r
+- SuppressStartupBanner="true"\r
+- OutputFile=".\Release\xmltok/xmltok.bsc"\r
+- />\r
+- <Tool\r
+- Name="VCFxCopTool"\r
+- />\r
+- <Tool\r
+- Name="VCPostBuildEventTool"\r
+- />\r
+- </Configuration>\r
+- </Configurations>\r
+- <References>\r
+- </References>\r
+- <Files>\r
+- <Filter\r
+- Name="Source Files"\r
+- Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"\r
+- >\r
+- <File\r
+- RelativePath="..\lib\expat\xmltok\xmlrole.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\expat\xmltok\xmltok.c"\r
+- >\r
+- <FileConfiguration\r
+- Name="Debug|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Debug|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|Win32"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- <FileConfiguration\r
+- Name="Release|x64"\r
+- >\r
+- <Tool\r
+- Name="VCCLCompilerTool"\r
+- AdditionalIncludeDirectories=""\r
+- PreprocessorDefinitions=""\r
+- />\r
+- </FileConfiguration>\r
+- </File>\r
+- </Filter>\r
+- <Filter\r
+- Name="Header Files"\r
+- Filter="h;hpp;hxx;hm;inl;fi;fd"\r
+- >\r
+- <File\r
+- RelativePath="..\lib\expat\xmltok\asciitab.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\expat\xmltok\iasciitab.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\expat\xmltok\latin1tab.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\expat\xmltok\nametab.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\expat\xmltok\utf8tab.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\expat\xmltok\xmldef.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\expat\xmltok\xmlrole.h"\r
+- >\r
+- </File>\r
+- <File\r
+- RelativePath="..\lib\expat\xmltok\xmltok.h"\r
+- >\r
+- </File>\r
+- </Filter>\r
+- <Filter\r
+- Name="Resource Files"\r
+- Filter="ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"\r
+- >\r
+- </Filter>\r
+- </Files>\r
+- <Globals>\r
+- </Globals>\r
+-</VisualStudioProject>\r
+diff --git a/libs/xmlrpc-c/Windows/xmltok.2010.vcxproj b/libs/xmlrpc-c/Windows/xmltok.2010.vcxproj
+deleted file mode 100644
+index a34b3f1..0000000
+--- a/libs/xmlrpc-c/Windows/xmltok.2010.vcxproj
++++ /dev/null
+@@ -1,213 +0,0 @@
+-<?xml version="1.0" encoding="utf-8"?>\r
+-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+- <ItemGroup Label="ProjectConfigurations">\r
+- <ProjectConfiguration Include="Debug|Win32">\r
+- <Configuration>Debug</Configuration>\r
+- <Platform>Win32</Platform>\r
+- </ProjectConfiguration>\r
+- <ProjectConfiguration Include="Debug|x64">\r
+- <Configuration>Debug</Configuration>\r
+- <Platform>x64</Platform>\r
+- </ProjectConfiguration>\r
+- <ProjectConfiguration Include="Release|Win32">\r
+- <Configuration>Release</Configuration>\r
+- <Platform>Win32</Platform>\r
+- </ProjectConfiguration>\r
+- <ProjectConfiguration Include="Release|x64">\r
+- <Configuration>Release</Configuration>\r
+- <Platform>x64</Platform>\r
+- </ProjectConfiguration>\r
+- </ItemGroup>\r
+- <PropertyGroup Label="Globals">\r
+- <ProjectName>xmltok</ProjectName>\r
+- <ProjectGuid>{B535402E-38D2-4D54-8360-423ACBD17192}</ProjectGuid>\r
+- <RootNamespace>xmltok</RootNamespace>\r
+- </PropertyGroup>\r
+- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+- <ConfigurationType>StaticLibrary</ConfigurationType>\r
+- <UseOfMfc>false</UseOfMfc>\r
+- <CharacterSet>MultiByte</CharacterSet>\r
+- </PropertyGroup>\r
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+- <ConfigurationType>StaticLibrary</ConfigurationType>\r
+- <UseOfMfc>false</UseOfMfc>\r
+- <CharacterSet>MultiByte</CharacterSet>\r
+- </PropertyGroup>\r
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+- <ConfigurationType>StaticLibrary</ConfigurationType>\r
+- <UseOfMfc>false</UseOfMfc>\r
+- <CharacterSet>MultiByte</CharacterSet>\r
+- </PropertyGroup>\r
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+- <ConfigurationType>StaticLibrary</ConfigurationType>\r
+- <UseOfMfc>false</UseOfMfc>\r
+- <CharacterSet>MultiByte</CharacterSet>\r
+- </PropertyGroup>\r
+- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+- <ImportGroup Label="ExtensionSettings">\r
+- </ImportGroup>\r
+- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+- <Import Project="..\..\..\w32\extlib.props" />\r
+- </ImportGroup>\r
+- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+- <Import Project="..\..\..\w32\extlib.props" />\r
+- </ImportGroup>\r
+- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+- <Import Project="..\..\..\w32\extlib.props" />\r
+- </ImportGroup>\r
+- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+- <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
+- <Import Project="..\..\..\w32\extlib.props" />\r
+- </ImportGroup>\r
+- <PropertyGroup Label="UserMacros" />\r
+- <PropertyGroup>\r
+- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(PlatformName)\xmltok\$(Configuration)\</IntDir>\r
+- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(PlatformName)\xmltok\$(Configuration)\</IntDir>\r
+- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(PlatformName)\xmltok\$(Configuration)\</IntDir>\r
+- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(PlatformName)\xmltok\$(Configuration)\</IntDir>\r
+- </PropertyGroup>\r
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+- <ClCompile>\r
+- <Optimization>Disabled</Optimization>\r
+- <AdditionalIncludeDirectories>..;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions>_DEBUG;WIN32;_WINDOWS;XML_DTD;XML_NS;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <MinimalRebuild>true</MinimalRebuild>\r
+- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+- <WarningLevel>Level3</WarningLevel>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </ClCompile>\r
+- <ResourceCompile>\r
+- <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <Culture>0x0409</Culture>\r
+- </ResourceCompile>\r
+- <Lib>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </Lib>\r
+- <Bscmake>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- <OutputFile>.\Debug\xmltok/xmltok.bsc</OutputFile>\r
+- </Bscmake>\r
+- </ItemDefinitionGroup>\r
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+- <Midl>\r
+- <TargetEnvironment>X64</TargetEnvironment>\r
+- </Midl>\r
+- <ClCompile>\r
+- <Optimization>Disabled</Optimization>\r
+- <AdditionalIncludeDirectories>..;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions>_DEBUG;WIN32;_WINDOWS;XML_DTD;XML_NS;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <MinimalRebuild>true</MinimalRebuild>\r
+- <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+- <WarningLevel>Level3</WarningLevel>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </ClCompile>\r
+- <ResourceCompile>\r
+- <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <Culture>0x0409</Culture>\r
+- </ResourceCompile>\r
+- <Lib>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </Lib>\r
+- <Bscmake>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- <OutputFile>.\Debug\xmltok/xmltok.bsc</OutputFile>\r
+- </Bscmake>\r
+- </ItemDefinitionGroup>\r
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+- <ClCompile>\r
+- <Optimization>MaxSpeed</Optimization>\r
+- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+- <AdditionalIncludeDirectories>..;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions>NDEBUG;XML_NS;WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <StringPooling>true</StringPooling>\r
+- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+- <FunctionLevelLinking>true</FunctionLevelLinking>\r
+- <WarningLevel>Level3</WarningLevel>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </ClCompile>\r
+- <ResourceCompile>\r
+- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <Culture>0x0409</Culture>\r
+- </ResourceCompile>\r
+- <Lib>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </Lib>\r
+- <Bscmake>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- <OutputFile>.\Release\xmltok/xmltok.bsc</OutputFile>\r
+- </Bscmake>\r
+- </ItemDefinitionGroup>\r
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+- <Midl>\r
+- <TargetEnvironment>X64</TargetEnvironment>\r
+- </Midl>\r
+- <ClCompile>\r
+- <Optimization>MaxSpeed</Optimization>\r
+- <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+- <AdditionalIncludeDirectories>..;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions>NDEBUG;XML_NS;WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <StringPooling>true</StringPooling>\r
+- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+- <FunctionLevelLinking>true</FunctionLevelLinking>\r
+- <WarningLevel>Level3</WarningLevel>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </ClCompile>\r
+- <ResourceCompile>\r
+- <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <Culture>0x0409</Culture>\r
+- </ResourceCompile>\r
+- <Lib>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- </Lib>\r
+- <Bscmake>\r
+- <SuppressStartupBanner>true</SuppressStartupBanner>\r
+- <OutputFile>.\Release\xmltok/xmltok.bsc</OutputFile>\r
+- </Bscmake>\r
+- </ItemDefinitionGroup>\r
+- <ItemGroup>\r
+- <ClCompile Include="..\lib\expat\xmltok\xmlrole.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- <ClCompile Include="..\lib\expat\xmltok\xmltok.c">\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- </ClCompile>\r
+- </ItemGroup>\r
+- <ItemGroup>\r
+- <ClInclude Include="..\lib\expat\xmltok\asciitab.h" />\r
+- <ClInclude Include="..\lib\expat\xmltok\iasciitab.h" />\r
+- <ClInclude Include="..\lib\expat\xmltok\latin1tab.h" />\r
+- <ClInclude Include="..\lib\expat\xmltok\nametab.h" />\r
+- <ClInclude Include="..\lib\expat\xmltok\utf8tab.h" />\r
+- <ClInclude Include="..\lib\expat\xmltok\xmldef.h" />\r
+- <ClInclude Include="..\lib\expat\xmltok\xmlrole.h" />\r
+- <ClInclude Include="..\lib\expat\xmltok\xmltok.h" />\r
+- </ItemGroup>\r
+- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+- <ImportGroup Label="ExtensionTargets">\r
+- </ImportGroup>\r
+-</Project>
+\ No newline at end of file
+diff --git a/libs/xmlrpc-c/Windows/xmltok.dsp b/libs/xmlrpc-c/Windows/xmltok.dsp
+index eaaebde..3c69d64 100644
+--- a/libs/xmlrpc-c/Windows/xmltok.dsp
++++ b/libs/xmlrpc-c/Windows/xmltok.dsp
+@@ -1,138 +1,138 @@
+-# Microsoft Developer Studio Project File - Name="xmltok" - Package Owner=<4>\r
+-# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+-# ** DO NOT EDIT **\r
+-\r
+-# TARGTYPE "Win32 (x86) Static Library" 0x0104\r
+-\r
+-CFG=xmltok - Win32 Release\r
+-!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+-!MESSAGE use the Export Makefile command and run\r
+-!MESSAGE \r
+-!MESSAGE NMAKE /f "xmltok.mak".\r
+-!MESSAGE \r
+-!MESSAGE You can specify a configuration when running NMAKE\r
+-!MESSAGE by defining the macro CFG on the command line. For example:\r
+-!MESSAGE \r
+-!MESSAGE NMAKE /f "xmltok.mak" CFG="xmltok - Win32 Release"\r
+-!MESSAGE \r
+-!MESSAGE Possible choices for configuration are:\r
+-!MESSAGE \r
+-!MESSAGE "xmltok - Win32 Release" (based on "Win32 (x86) Static Library")\r
+-!MESSAGE "xmltok - Win32 Debug" (based on "Win32 (x86) Static Library")\r
+-!MESSAGE \r
+-\r
+-# Begin Project\r
+-# PROP AllowPerConfigDependencies 0\r
+-CPP=cl.exe\r
+-RSC=rc.exe\r
+-\r
+-!IF "$(CFG)" == "xmltok - Win32 Release"\r
+-\r
+-# PROP BASE Use_MFC 0\r
+-# PROP BASE Use_Debug_Libraries 0\r
+-# PROP BASE Output_Dir ".\Release"\r
+-# PROP BASE Intermediate_Dir ".\Release"\r
+-# PROP BASE Target_Dir "."\r
+-# PROP Use_MFC 0\r
+-# PROP Use_Debug_Libraries 0\r
+-# PROP Output_Dir "Release\xmltok"\r
+-# PROP Intermediate_Dir "Release\xmltok"\r
+-# PROP Target_Dir "."\r
+-MTL=midl.exe\r
+-LINK32=link.exe -lib\r
+-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_LIB" /YX /FD /c\r
+-# ADD CPP /nologo /MT /W3 /GX /O2 /I ".." /D "NDEBUG" /D "XML_NS" /D "WIN32" /D "_WINDOWS" /D "XML_DTD" /D "_MBCS" /D "_LIB" /YX /FD /c\r
+-# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
+-# ADD RSC /l 0x409 /d "NDEBUG"\r
+-BSC32=bscmake.exe\r
+-# ADD BASE BSC32 /nologo\r
+-# ADD BSC32 /nologo\r
+-LIB32=link.exe -lib\r
+-# ADD BASE LIB32 /nologo\r
+-# ADD LIB32 /nologo /out:"..\lib\xmltok.lib"\r
+-\r
+-!ELSEIF "$(CFG)" == "xmltok - Win32 Debug"\r
+-\r
+-# PROP BASE Use_MFC 0\r
+-# PROP BASE Use_Debug_Libraries 1\r
+-# PROP BASE Output_Dir ".\Debug"\r
+-# PROP BASE Intermediate_Dir ".\Debug"\r
+-# PROP BASE Target_Dir "."\r
+-# PROP Use_MFC 0\r
+-# PROP Use_Debug_Libraries 1\r
+-# PROP Output_Dir "Debug\xmltok"\r
+-# PROP Intermediate_Dir "Debug\xmltok"\r
+-# PROP Target_Dir "."\r
+-MTL=midl.exe\r
+-LINK32=link.exe -lib\r
+-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c\r
+-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I ".." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "XML_DTD" /D "XML_NS" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c\r
+-# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
+-# ADD RSC /l 0x409 /d "_DEBUG"\r
+-BSC32=bscmake.exe\r
+-# ADD BASE BSC32 /nologo\r
+-# ADD BSC32 /nologo\r
+-LIB32=link.exe -lib\r
+-# ADD BASE LIB32 /nologo\r
+-# ADD LIB32 /nologo /out:"..\lib\xmltokD.lib"\r
+-\r
+-!ENDIF \r
+-\r
+-# Begin Target\r
+-\r
+-# Name "xmltok - Win32 Release"\r
+-# Name "xmltok - Win32 Debug"\r
+-# Begin Group "Source Files"\r
+-\r
+-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\expat\xmltok\xmlrole.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\expat\xmltok\xmltok.c\r
+-# End Source File\r
+-# End Group\r
+-# Begin Group "Header Files"\r
+-\r
+-# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\expat\xmltok\asciitab.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\expat\xmltok\iasciitab.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\expat\xmltok\latin1tab.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\expat\xmltok\nametab.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\expat\xmltok\utf8tab.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\expat\xmltok\xmldef.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\expat\xmltok\xmlrole.h\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=..\lib\expat\xmltok\xmltok.h\r
+-# End Source File\r
+-# End Group\r
+-# Begin Group "Resource Files"\r
+-\r
+-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"\r
+-# End Group\r
+-# End Target\r
+-# End Project\r
++# Microsoft Developer Studio Project File - Name="xmltok" - Package Owner=<4>
++# Microsoft Developer Studio Generated Build File, Format Version 6.00
++# ** DO NOT EDIT **
++
++# TARGTYPE "Win32 (x86) Static Library" 0x0104
++
++CFG=xmltok - Win32 Release
++!MESSAGE This is not a valid makefile. To build this project using NMAKE,
++!MESSAGE use the Export Makefile command and run
++!MESSAGE
++!MESSAGE NMAKE /f "xmltok.mak".
++!MESSAGE
++!MESSAGE You can specify a configuration when running NMAKE
++!MESSAGE by defining the macro CFG on the command line. For example:
++!MESSAGE
++!MESSAGE NMAKE /f "xmltok.mak" CFG="xmltok - Win32 Release"
++!MESSAGE
++!MESSAGE Possible choices for configuration are:
++!MESSAGE
++!MESSAGE "xmltok - Win32 Release" (based on "Win32 (x86) Static Library")
++!MESSAGE "xmltok - Win32 Debug" (based on "Win32 (x86) Static Library")
++!MESSAGE
++
++# Begin Project
++# PROP AllowPerConfigDependencies 0
++CPP=cl.exe
++RSC=rc.exe
++
++!IF "$(CFG)" == "xmltok - Win32 Release"
++
++# PROP BASE Use_MFC 0
++# PROP BASE Use_Debug_Libraries 0
++# PROP BASE Output_Dir ".\Release"
++# PROP BASE Intermediate_Dir ".\Release"
++# PROP BASE Target_Dir "."
++# PROP Use_MFC 0
++# PROP Use_Debug_Libraries 0
++# PROP Output_Dir "Release\xmltok"
++# PROP Intermediate_Dir "Release\xmltok"
++# PROP Target_Dir "."
++MTL=midl.exe
++LINK32=link.exe -lib
++# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_LIB" /YX /FD /c
++# ADD CPP /nologo /MT /W3 /GX /O2 /I ".." /I "..\lib\util\include" /D "NDEBUG" /D "XML_NS" /D "WIN32" /D "_WINDOWS" /D "XML_DTD" /D "_MBCS" /D "_LIB" /YX /FD /c
++# ADD BASE RSC /l 0x409 /d "NDEBUG"
++# ADD RSC /l 0x409 /d "NDEBUG"
++BSC32=bscmake.exe
++# ADD BASE BSC32 /nologo
++# ADD BSC32 /nologo
++LIB32=link.exe -lib
++# ADD BASE LIB32 /nologo
++# ADD LIB32 /nologo /out:"..\lib\xmltok.lib"
++
++!ELSEIF "$(CFG)" == "xmltok - Win32 Debug"
++
++# PROP BASE Use_MFC 0
++# PROP BASE Use_Debug_Libraries 1
++# PROP BASE Output_Dir ".\Debug"
++# PROP BASE Intermediate_Dir ".\Debug"
++# PROP BASE Target_Dir "."
++# PROP Use_MFC 0
++# PROP Use_Debug_Libraries 1
++# PROP Output_Dir "Debug\xmltok"
++# PROP Intermediate_Dir "Debug\xmltok"
++# PROP Target_Dir "."
++MTL=midl.exe
++LINK32=link.exe -lib
++# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
++# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I ".." /I "..\lib\util\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "XML_DTD" /D "XML_NS" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
++# ADD BASE RSC /l 0x409 /d "_DEBUG"
++# ADD RSC /l 0x409 /d "_DEBUG"
++BSC32=bscmake.exe
++# ADD BASE BSC32 /nologo
++# ADD BSC32 /nologo
++LIB32=link.exe -lib
++# ADD BASE LIB32 /nologo
++# ADD LIB32 /nologo /out:"..\lib\xmltokD.lib"
++
++!ENDIF
++
++# Begin Target
++
++# Name "xmltok - Win32 Release"
++# Name "xmltok - Win32 Debug"
++# Begin Group "Source Files"
++
++# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"
++# Begin Source File
++
++SOURCE=..\lib\expat\xmltok\xmlrole.c
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\expat\xmltok\xmltok.c
++# End Source File
++# End Group
++# Begin Group "Header Files"
++
++# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
++# Begin Source File
++
++SOURCE=..\lib\expat\xmltok\asciitab.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\expat\xmltok\iasciitab.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\expat\xmltok\latin1tab.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\expat\xmltok\nametab.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\expat\xmltok\utf8tab.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\expat\xmltok\xmldef.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\expat\xmltok\xmlrole.h
++# End Source File
++# Begin Source File
++
++SOURCE=..\lib\expat\xmltok\xmltok.h
++# End Source File
++# End Group
++# Begin Group "Resource Files"
++
++# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
++# End Group
++# End Target
++# End Project
+diff --git a/libs/xmlrpc-c/common.mk b/libs/xmlrpc-c/common.mk
+index 5b89fa1..a20bf42 100644
+--- a/libs/xmlrpc-c/common.mk
++++ b/libs/xmlrpc-c/common.mk
+@@ -9,7 +9,7 @@
+ # SRCDIR: Name of directory which is the top of the Xmlrpc-c source tree.
+ # BLDDIR: Name of directory which is the top of the Xmlrpc-c build tree.
+
+-include $(SRCDIR)/Makefile.version
++include $(SRCDIR)/version.mk
+
+ # .DELETE_ON_ERROR is a special predefined Make target that says to delete
+ # the target if a command in the rule for it fails. That's important,
+@@ -17,13 +17,27 @@ include $(SRCDIR)/Makefile.version
+ # fully made.
+ .DELETE_ON_ERROR:
+
+-GCC_WARNINGS = -Wall -Wundef -Wimplicit -W -Winline -Wundef
++GCC_WARNINGS = -Wall -W -Wno-uninitialized -Wundef -Wimplicit -Winline \
++ -Wno-unknown-pragmas
+ # We need -Wwrite-strings after we fix all the missing consts
++ #
++ # -Wuninitialized catches some great bugs, but it also flags a whole lot
++ # of perfectly good code that can't be written any better. Too bad there's
++ # no way to annotate particular variables as being OK, so we could turn
++ # on -Wuninitialized for all the others.
+
+ GCC_C_WARNINGS = $(GCC_WARNINGS) \
+ -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes
+
+-GCC_CXX_WARNINGS = $(GCC_WARNINGS) -Woverloaded-virtual -Wsynth
++GCC_CXX_WARNINGS = $(GCC_WARNINGS) -Wsynth
++
++# Before 09.05.20, we had -Woverloaded-virtual, but it doesn't seem to do
++# anything useful. It causes a warning that a method was hidden, but
++# experiments show nothing is actually hidden. The GCC manual's description
++# of what it does does not match empirical evidence. The option causes
++# warnings when a derived class of xmlrpc_c::method2 overrides one of the
++# execute() methods and not the other (as cpp/test/registry.cpp does), but the
++# code works fine.
+
+ # The NDEBUG macro says not to build code that assumes there are no bugs.
+ # This makes the code go faster. The main thing it does is tell the C library
+@@ -55,12 +69,21 @@ ifeq ($(CURDIR)x,x)
+ CURDIR := $(shell /bin/pwd)
+ endif
+
++# The package XmlRpc++ on Sourceforge includes a library named
++# libxmlrpc++ just as Xmlrpc-c does. To use them both, you may need
++# to rename one. To rename the Xmlrpc-c one, set the make variable
++# LIBXMLRPCPP_NAME, e.g. on the 'make' command line.
++
++ifeq ($(LIBXMLRPCPP_NAME),)
++ LIBXMLRPCPP_NAME := xmlrpc++
++endif
++
+ ##############################################################################
+ # STATIC LINK LIBRARY RULES #
+ ##############################################################################
+
+
+-# To use this rule, the including make file must set a target_specific
++# To use this rule, the including make file must set a target-specific
+ # variable LIBOBJECTS (and declare dependencies that include LIBOBJECTS).
+ # Example:
+ # FOO_OBJECTS = foo1.o foo2.o
+@@ -81,19 +104,19 @@ $(TARGET_STATIC_LIBRARIES):
+ ##############################################################################
+
+ ifeq ($(SHARED_LIB_TYPE),unix)
+- include $(SRCDIR)/unix-common.make
++ include $(SRCDIR)/unix-common.mk
+ endif
+
+ ifeq ($(SHARED_LIB_TYPE),irix)
+- include $(SRCDIR)/irix-common.make
++ include $(SRCDIR)/irix-common.mk
+ endif
+
+ ifeq ($(SHARED_LIB_TYPE),dll)
+- include $(SRCDIR)/dll-common.make
++ include $(SRCDIR)/dll-common.mk
+ endif
+
+ ifeq ($(SHARED_LIB_TYPE),dylib)
+- include $(SRCDIR)/dylib-common.make
++ include $(SRCDIR)/dylib-common.mk
+ endif
+
+ ifeq ($(SHARED_LIB_TYPE),NONE)
+@@ -127,10 +150,10 @@ endif
+
+ #------ the actual rules ----------------------------------------------------
+ $(TARGET_SHARED_LIBRARIES) dummyshlib:
+- $(CCLD) $(LDFLAGS_SHLIB) $(LIBDEP) -o $@ $(LIBOBJECTS) $(LADD)
++ $(CCLD) $(LADD) $(LDFLAGS_SHLIB) $(LIBOBJECTS) $(LIBDEP) -o $@
+
+ $(TARGET_SHARED_LIBS_PP) dummyshlibpp:
+- $(CXXLD) $(LDFLAGS_SHLIB) $(LIBDEP) -o $@ $(LIBOBJECTS) $(LADD)
++ $(CXXLD) $(LADD) $(LDFLAGS_SHLIB) $(LIBOBJECTS) $(LIBDEP) -o $@
+ #----------------------------------------------------------------------------
+
+ LIBXMLRPC_UTIL_DIR = $(BLDDIR)/lib/libutil
+@@ -186,7 +209,6 @@ LIBXMLRPC_ABYSS = \
+ LIBXMLRPC_ABYSS_A = $(LIBXMLRPC_ABYSS_DIR)/libxmlrpc_abyss.a
+ endif
+
+-ifneq ($(OMIT_CPP_LIB_RULES),Y)
+ LIBXMLRPC_CPP = \
+ $(call shliblefn, $(BLDDIR)/src/cpp/libxmlrpc_cpp)
+ LIBXMLRPC_CPP_A = $(BLDDIR)/src/cpp/libxmlrpc_cpp.a
+@@ -208,7 +230,6 @@ LIBXMLRPC_SERVER_ABYSSPP_A = $(BLDDIR)/src/cpp/libxmlrpc_server_abyss++.a
+ LIBXMLRPC_SERVER_PSTREAMPP = \
+ $(call shliblefn, $(BLDDIR)/src/cpp/libxmlrpc_server_pstream++)
+ LIBXMLRPC_SERVER_PSTREAMPP_A = $(BLDDIR)/src/cpp/libxmlrpc_server_pstream++.a
+-endif
+
+ # LIBXMLRPC_XML is the list of Xmlrpc-c libraries we need to parse
+ # XML. If we're using an external library to parse XML, this is null.
+@@ -239,31 +260,41 @@ endif
+ # foo.o foo.osh: INCLUDES = -Iinclude -I/usr/include/foostuff
+ # bar.o bar.osh: INCLUDES = -Iinclude -I/usr/include/barstuff
+ #
+-# include Makefile.common
++# include common.mk
+ #
+ # The above generates rules to build foo.o, bar.o, foo.osh, and bar.osh
+ #
+ # For C++ source files, use TARGET_MODS_PP instead.
+
+-# CFLAGS and CXXFLAGS are designed to be overridden on the make command
+-# line. We pile all the options except -I into these variables so the
+-# user can override them all if he wants.
++# CFLAGS and CXXFLAGS are designed to be picked up as environment
++# variables. The user may use them to add inclusion search directories
++# (-I) or control 32/64 bitness or the like. Using these is always
++# iffy, because the options one might include can interact in unpredictable
++# ways with what the make file is trying to do. But at least some users
++# get useful results.
++
++CFLAGS_ALL = $(CFLAGS_COMMON) $(CFLAGS_LOCAL) $(CFLAGS) \
++ $(INCLUDES) $(CFLAGS_PERSONAL) $(CADD)
++
++CXXFLAGS_ALL = $(CXXFLAGS_COMMON) $(CFLAGS_LOCAL) $(CXXFLAGS) \
++ $(INCLUDES) $(CFLAGS_PERSONAL) $(CADD)
++
+
+ $(TARGET_MODS:%=%.o):%.o:%.c
+- $(CC) -c -o $@ $(INCLUDES) $(CFLAGS) $<
++ $(CC) -c -o $@ $(CFLAGS_ALL) $<
+
+ $(TARGET_MODS:%=%.osh): CFLAGS_COMMON += $(CFLAGS_SHLIB)
+
+ $(TARGET_MODS:%=%.osh):%.osh:%.c
+- $(CC) -c -o $@ $(INCLUDES) $(CFLAGS) $(CFLAGS_SHLIB) $<
++ $(CC) -c -o $@ $(INCLUDES) $(CFLAGS_ALL) $(CFLAGS_SHLIB) $<
+
+ $(TARGET_MODS_PP:%=%.o):%.o:%.cpp
+- $(CXX) -c -o $@ $(INCLUDES) $(CXXFLAGS) $<
++ $(CXX) -c -o $@ $(INCLUDES) $(CXXFLAGS_ALL) $<
+
+ $(TARGET_MODS_PP:%=%.osh): CXXFLAGS_COMMON += $(CFLAGS_SHLIB)
+
+ $(TARGET_MODS_PP:%=%.osh):%.osh:%.cpp
+- $(CXX) -c -o $@ $(INCLUDES) $(CXXFLAGS) $<
++ $(CXX) -c -o $@ $(INCLUDES) $(CXXFLAGS_ALL) $<
+
+
+ ##############################################################################
+@@ -278,11 +309,6 @@ $(TARGET_MODS_PP:%=%.osh):%.osh:%.cpp
+ # to rebuild the symbolic link. So we don't make $(SRCDIR) a
+ # dependency of 'srcdir'.
+
+-# We should do the same for 'blddir'. We did once before, then undid
+-# it in an erroneous effort to enable parallel make. It's a little harder
+-# with blddir; when we did it before, we had to use the non-symlink
+-# version in a few places.
+-
+ srcdir:
+ $(LN_S) $(SRCDIR) $@
+ blddir:
+@@ -343,6 +369,12 @@ endif
+ ifneq ($(OMIT_CURL_TRANSPORT_RULE),Y)
+ $(BLDDIR)/lib/curl_transport/xmlrpc_curl_transport.o \
+ $(BLDDIR)/lib/curl_transport/xmlrpc_curl_transport.osh \
++$(BLDDIR)/lib/curl_transport/curltransaction.o \
++$(BLDDIR)/lib/curl_transport/curltransaction.osh \
++$(BLDDIR)/lib/curl_transport/curlmulti.o \
++$(BLDDIR)/lib/curl_transport/curlmulti.osh \
++$(BLDDIR)/lib/curl_transport/lock_pthread.o \
++$(BLDDIR)/lib/curl_transport/lock_pthread.osh \
+ : FORCE
+ $(MAKE) -C $(dir $@) -f $(SRCDIR)/lib/curl_transport/Makefile \
+ $(notdir $@)
+@@ -385,6 +417,8 @@ $(LIBXMLRPC_ABYSS) $(LIBXMLRPC_ABYSS_A): FORCE
+ $(MAKE) -C $(dir $@) -f $(SRCDIR)/lib/abyss/src/Makefile \
+ $(notdir $@)
+
++ifneq ($(OMIT_CPP_LIB_RULES),Y)
++
+ $(LIBXMLRPCPP) $(LIBXMLRPCPP_A) \
+ $(LIBXMLRPC_PACKETSOCKET) $(LIBXMLRPC_PACKETSOCKET_A) \
+ $(LIBXMLRPC_CLIENTPP) $(LIBXMLRPC_CLIENTPP_A) \
+@@ -394,6 +428,7 @@ $(LIBXMLRPC_SERVER_PSTREAMPP) $(LIBXMLRPC_SERVER_PSTREAMPP_A) \
+ $(LIBXMLRPC_CPP) $(LIBXMLRPC_CPP_A) : FORCE
+ $(MAKE) -C $(dir $@) -f $(SRCDIR)/src/cpp/Makefile \
+ $(notdir $@)
++endif
+
+ # For the following utilities, we don't bother with a library -- we
+ # just explicitly link the object file we need. This is to save
+@@ -421,12 +456,12 @@ CASPRINTF = $(UTIL_DIR)/casprintf.o
+
+ # About version.h: This is a built header file, which means it is a supreme
+ # pain in the ass. The biggest problem is that when we automatically make
+-# dependencies (Makefile.depend), it doesn't exist yet. This means Gcc
++# dependencies (depend.mk), it doesn't exist yet. This means Gcc
+ # generates a dependency on it being in the local directory. Therefore,
+ # we generate it in the local directory, as a symbolic link, wherever it
+ # is needed. But the original is always in the top level directory,
+ # generated by a rule in that directory's make file. Problem 2 is that
+-# the top directory's make file includes Makefile.common, so the rules
++# the top directory's make file includes common.mk, so the rules
+ # below conflict with it. That's what OMIT_VERSION_H is for.
+
+ ifneq ($(OMIT_VERSION_H),Y)
+@@ -471,10 +506,10 @@ $(SUBDIRS:%=$(CURDIR)/%):
+
+ MKINSTALLDIRS = $(SHELL) $(SRCDIR)/mkinstalldirs
+
+-.PHONY: install-common install-ltlibraries install-headers install-bin
++.PHONY: install-common install-headers install-bin install-man
+ install-common: \
+- install-ltlibraries install-static-libraries install-shared-libraries \
+- install-headers install-bin
++ install-static-libraries install-shared-libraries \
++ install-headers install-bin install-man
+
+ INSTALL_LIB_CMD = $(INSTALL_DATA) $$p $(DESTDIR)$(LIBINST_DIR)/$$p
+ RANLIB_CMD = $(RANLIB) $(DESTDIR)$(LIBINST_DIR)/$$p
+@@ -520,6 +555,16 @@ install-bin: $(PROGRAMS_TO_INSTALL) $(DESTDIR)$(PROGRAMINST_DIR)
+ $(DESTDIR)$(PROGRAMINST_DIR):
+ $(MKINSTALLDIRS) $@
+
++MANDESTDIR = $(DESTDIR)$(MANINST_DIR)
++INSTALL_MAN_CMD = $(INSTALL_DATA) $$p $(MANDESTDIR)/$$p
++
++install-man: $(MAN_FILES_TO_INSTALL)
++ $(MKINSTALLDIRS) $(MANDESTDIR)
++ @list='$(MAN_FILES_TO_INSTALL)'; \
++ for p in $$list; do \
++ echo "$(MAN_FILES_TO_INSTALL)"; \
++ $(INSTALL_MAN_CMD); \
++ done
+
+ ##############################################################################
+ # MISCELLANEOUS RULES #
+@@ -536,29 +581,30 @@ endif
+
+ .PHONY: distclean-common
+ distclean-common:
+-# Makefile.depend is generated by 'make dep' and contains only dependencies
++# depend.mk is generated by 'make dep' and contains only dependencies
+ # that make parts get _rebuilt_ when parts upon which they depend change.
+ # It does not contain dependencies that are necessary to cause a part to
+ # get built in the first place. E.g. if foo.c uses bar.h and bar.h gets built
+ # by a make rule, you must put the dependency of foo.c on bar.h somewhere
+-# besides Makefile.depend.
++# besides depend.mk.
+ #
+-# Because of this, a user doesn't need Makefile.depend, because he
++# Because of this, a user doesn't need depend.mk, because he
+ # doesn't modify source files. A developer, on the other hand, must make his
+-# own Makefile.depend, because 'make dep' creates Makefile.depend with
++# own depend.mk, because 'make dep' creates depend.mk with
+ # absolute pathnames, specific to the developer's system.
+ #
+-# So we obliterate Makefile.depend here. The build will automatically
+-# create an empty Makefile.depend when it is needed for the user. The
++# So we obliterate depend.mk here. The build will automatically
++# create an empty depend.mk when it is needed for the user. The
+ # developer must do 'make dep' if he wants to edit and rebuild.
+ #
+ # Other projects have the build automatically build a true
+-# Makefile.depend, suitable for a developer. We have found that to be
++# depend.mk, suitable for a developer. We have found that to be
+ # an utter disaster -- it's way too complicated and prone to failure,
+ # especially with built .h files. Better not to burden the user, who
+ # gains nothing from it, with that.
+ #
+- rm -f Makefile.depend
++ rm -f depend.mk
++ rm -f Makefile.depend # We used to create a file by this name
+ rm -f srcdir blddir
+
+ .PHONY: distdir-common
+@@ -589,17 +635,17 @@ dep-common: FORCE
+ ifneq ($(DEP_SOURCES)x,x)
+ -$(CC) -MM -MG -I. $(INCLUDES) $(DEP_SOURCES) | \
+ $(DEPEND_MASSAGER) \
+- >Makefile.depend
++ >depend.mk
+ endif
+
+-Makefile.depend:
++depend.mk:
+ cat /dev/null >$@
+
+ # The automatic dependency generation is a pain in the butt and
+ # totally unnecessary for people just installing the distributed code,
+ # so to avoid needless failures in the field and a complex build, the
+-# 'distclean' target simply makes Makefile.depend an empty file. A
+-# developer may do 'make dep' to create a Makefile.depend full of real
++# 'distclean' target simply makes depend.mk an empty file. A
++# developer may do 'make dep' to create a depend.mk full of real
+ # dependencies.
+
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+diff --git a/libs/xmlrpc-c/conf/abyss_root/conf/abyss.conf b/libs/xmlrpc-c/conf/abyss_root/conf/abyss.conf
+deleted file mode 100644
+index f9c09f2..0000000
+--- a/libs/xmlrpc-c/conf/abyss_root/conf/abyss.conf
++++ /dev/null
+@@ -1,56 +0,0 @@
+-# ABYSS Web Server configuration file
+-# (C) Moez Mahfoudh - 2000
+-
+-# Cases in option names are ignored,
+-# that means that PORT=port=PoRT=..
+-
+-# When writing paths, do not worry about / or \ use.
+-# ABYSS will substitute / with \ on Win32 systems.
+-
+-# Options which are system specific (such as User) are
+-# ignored on systems which do not handle them.
+-
+-# The Port option tells the server on which TCP port to listen.
+-# default is 80
+-Port 8080
+-
+-# The name or #number of the user to run the server as if it is
+-# launched as root (UNIX specific)
+-User nobody
+-
+-# The Server Root (UNIX systems style)
+-ServerRoot conf/abyss_root
+-
+-# The Server Root (Win32 systems style)
+-# ServerRoot G:\XML\xmlrpc-c-0.9.5\conf\abyss_root
+-
+-# The Path option specifies the web files path.
+-Path htdocs
+-
+-# The Default option contains the name of the files the server should
+-# look for when only a path is given (e.g. http://myserver/info/).
+-Default index.html index.htm INDEX.HTM INDEX.HTML
+-
+-# The KeepAlive option is used to set the maximum number of requests
+-# served using the same persistent connection.
+-KeepAlive 10
+-
+-# The TimeOut option tells the server how much seconds to wait for
+-# an idle connection before closing it.
+-TimeOut 10
+-
+-# The MimeTypes option specifies the location of the file
+-# containing the mapping of MIME types and files extensions
+-MimeTypes conf/mime.types
+-
+-# The path of the log file
+-LogFile log/access.log
+-
+-# The file where the pid of the server is logged (UNIX specific)
+-PidFile log/abyss.pid
+-
+-# If AdvertiseServer if set to no, then no server field would be
+-# appended to the responses. This is the way to make the server
+-# identity unknown to some malicious people which can profit from
+-# well known security holes in the software to crash it.
+-AdvertiseServer yes
+diff --git a/libs/xmlrpc-c/conf/abyss_root/conf/mime.types b/libs/xmlrpc-c/conf/abyss_root/conf/mime.types
+deleted file mode 100644
+index d53db0f..0000000
+--- a/libs/xmlrpc-c/conf/abyss_root/conf/mime.types
++++ /dev/null
+@@ -1,276 +0,0 @@
+-# This is a comment. I love comments.
+-
+-# This file controls what Internet media types are sent to the client for
+-# given file extension(s). Sending the correct media type to the client
+-# is important so they know how to handle the content of the file.
+-# Extra types can either be added here or by using an AddType directive
+-# in your config files. For more information about Internet media types,
+-# please read RFC 2045, 2046, 2047, 2048, and 2077. The Internet media type
+-# registry is at <ftp://ftp.iana.org/in-notes/iana/assignments/media-types/>.
+-
+-# MIME type Extension
+-application/EDI-Consent
+-application/EDI-X12
+-application/EDIFACT
+-application/activemessage
+-application/andrew-inset ez
+-application/applefile
+-application/atomicmail
+-application/cals-1840
+-application/commonground
+-application/cybercash
+-application/dca-rft
+-application/dec-dx
+-application/eshop
+-application/hyperstudio
+-application/iges
+-application/mac-binhex40 hqx
+-application/mac-compactpro cpt
+-application/macwriteii
+-application/marc
+-application/mathematica
+-application/msword doc
+-application/news-message-id
+-application/news-transmission
+-application/octet-stream bin dms lha lzh exe class
+-application/oda oda
+-application/pdf pdf
+-application/pgp-encrypted
+-application/pgp-keys
+-application/pgp-signature
+-application/pkcs10
+-application/pkcs7-mime
+-application/pkcs7-signature
+-application/postscript ai eps ps
+-application/prs.alvestrand.titrax-sheet
+-application/prs.cww
+-application/prs.nprend
+-application/remote-printing
+-application/riscos
+-application/rtf rtf
+-application/set-payment
+-application/set-payment-initiation
+-application/set-registration
+-application/set-registration-initiation
+-application/sgml
+-application/sgml-open-catalog
+-application/slate
+-application/smil smi smil
+-application/vemmi
+-application/vnd.3M.Post-it-Notes
+-application/vnd.FloGraphIt
+-application/vnd.acucobol
+-application/vnd.anser-web-certificate-issue-initiation
+-application/vnd.anser-web-funds-transfer-initiation
+-application/vnd.audiograph
+-application/vnd.businessobjects
+-application/vnd.claymore
+-application/vnd.comsocaller
+-application/vnd.dna
+-application/vnd.dxr
+-application/vnd.ecdis-update
+-application/vnd.ecowin.chart
+-application/vnd.ecowin.filerequest
+-application/vnd.ecowin.fileupdate
+-application/vnd.ecowin.series
+-application/vnd.ecowin.seriesrequest
+-application/vnd.ecowin.seriesupdate
+-application/vnd.enliven
+-application/vnd.epson.salt
+-application/vnd.fdf
+-application/vnd.ffsns
+-application/vnd.framemaker
+-application/vnd.fujitsu.oasys
+-application/vnd.fujitsu.oasys2
+-application/vnd.fujitsu.oasys3
+-application/vnd.fujitsu.oasysgp
+-application/vnd.fujitsu.oasysprs
+-application/vnd.fujixerox.docuworks
+-application/vnd.hp-HPGL
+-application/vnd.hp-PCL
+-application/vnd.hp-PCLXL
+-application/vnd.hp-hps
+-application/vnd.ibm.MiniPay
+-application/vnd.ibm.modcap
+-application/vnd.intercon.formnet
+-application/vnd.intertrust.digibox
+-application/vnd.intertrust.nncp
+-application/vnd.is-xpr
+-application/vnd.japannet-directory-service
+-application/vnd.japannet-jpnstore-wakeup
+-application/vnd.japannet-payment-wakeup
+-application/vnd.japannet-registration
+-application/vnd.japannet-registration-wakeup
+-application/vnd.japannet-setstore-wakeup
+-application/vnd.japannet-verification
+-application/vnd.japannet-verification-wakeup
+-application/vnd.koan
+-application/vnd.lotus-1-2-3
+-application/vnd.lotus-approach
+-application/vnd.lotus-freelance
+-application/vnd.lotus-organizer
+-application/vnd.lotus-screencam
+-application/vnd.lotus-wordpro
+-application/vnd.meridian-slingshot
+-application/vnd.mif mif
+-application/vnd.minisoft-hp3000-save
+-application/vnd.mitsubishi.misty-guard.trustweb
+-application/vnd.ms-artgalry
+-application/vnd.ms-asf
+-application/vnd.ms-excel xls
+-application/vnd.ms-powerpoint ppt
+-application/vnd.ms-project
+-application/vnd.ms-tnef
+-application/vnd.ms-works
+-application/vnd.music-niff
+-application/vnd.musician
+-application/vnd.netfpx
+-application/vnd.noblenet-directory
+-application/vnd.noblenet-sealer
+-application/vnd.noblenet-web
+-application/vnd.novadigm.EDM
+-application/vnd.novadigm.EDX
+-application/vnd.novadigm.EXT
+-application/vnd.osa.netdeploy
+-application/vnd.powerbuilder6
+-application/vnd.powerbuilder6-s
+-application/vnd.rapid
+-application/vnd.seemail
+-application/vnd.shana.informed.formtemplate
+-application/vnd.shana.informed.interchange
+-application/vnd.shana.informed.package
+-application/vnd.street-stream
+-application/vnd.svd
+-application/vnd.swiftview-ics
+-application/vnd.truedoc
+-application/vnd.visio
+-application/vnd.webturbo
+-application/vnd.wrq-hp3000-labelled
+-application/vnd.wt.stf
+-application/vnd.xara
+-application/vnd.yellowriver-custom-menu
+-application/wita
+-application/wordperfect5.1
+-application/x-bcpio bcpio
+-application/x-cdlink vcd
+-application/x-chess-pgn pgn
+-application/x-compress
+-application/x-cpio cpio
+-application/x-csh csh
+-application/x-director dcr dir dxr
+-application/x-dvi dvi
+-application/x-futuresplash spl
+-application/x-gtar gtar
+-application/x-gzip
+-application/x-hdf hdf
+-application/x-javascript js
+-application/x-koan skp skd skt skm
+-application/x-latex latex
+-application/x-netcdf nc cdf
+-application/x-sh sh
+-application/x-shar shar
+-application/x-shockwave-flash swf
+-application/x-stuffit sit
+-application/x-sv4cpio sv4cpio
+-application/x-sv4crc sv4crc
+-application/x-tar tar
+-application/x-tcl tcl
+-application/x-tex tex
+-application/x-texinfo texinfo texi
+-application/x-troff t tr roff
+-application/x-troff-man man
+-application/x-troff-me me
+-application/x-troff-ms ms
+-application/x-ustar ustar
+-application/x-wais-source src
+-application/x400-bp
+-application/xml
+-application/zip zip
+-audio/32kadpcm
+-audio/basic au snd
+-audio/midi mid midi kar
+-audio/mpeg mpga mp2 mp3
+-audio/vnd.qcelp
+-audio/x-aiff aif aiff aifc
+-audio/x-pn-realaudio ram rm
+-audio/x-pn-realaudio-plugin rpm
+-audio/x-realaudio ra
+-audio/x-wav wav
+-chemical/x-pdb pdb xyz
+-image/bmp bmp
+-image/cgm
+-image/g3fax
+-image/gif gif
+-image/ief ief
+-image/jpeg jpeg jpg jpe
+-image/naplps
+-image/png png
+-image/prs.btif
+-image/tiff tiff tif
+-image/vnd.dwg
+-image/vnd.dxf
+-image/vnd.fpx
+-image/vnd.net-fpx
+-image/vnd.svf
+-image/vnd.xiff
+-image/x-cmu-raster ras
+-image/x-portable-anymap pnm
+-image/x-portable-bitmap pbm
+-image/x-portable-graymap pgm
+-image/x-portable-pixmap ppm
+-image/x-rgb rgb
+-image/x-xbitmap xbm
+-image/x-xpixmap xpm
+-image/x-xwindowdump xwd
+-message/delivery-status
+-message/disposition-notification
+-message/external-body
+-message/http
+-message/news
+-message/partial
+-message/rfc822
+-model/iges igs iges
+-model/mesh msh mesh silo
+-model/vnd.dwf
+-model/vrml wrl vrml
+-multipart/alternative
+-multipart/appledouble
+-multipart/byteranges
+-multipart/digest
+-multipart/encrypted
+-multipart/form-data
+-multipart/header-set
+-multipart/mixed
+-multipart/parallel
+-multipart/related
+-multipart/report
+-multipart/signed
+-multipart/voice-message
+-text/css css
+-text/directory
+-text/enriched
+-text/html html htm
+-text/plain asc txt
+-text/prs.lines.tag
+-text/rfc822-headers
+-text/richtext rtx
+-text/rtf rtf
+-text/sgml sgml sgm
+-text/tab-separated-values tsv
+-text/uri-list
+-text/vnd.abc
+-text/vnd.flatland.3dml
+-text/vnd.fmi.flexstor
+-text/vnd.in3d.3dml
+-text/vnd.in3d.spot
+-text/vnd.latex-z
+-text/x-setext etx
+-text/xml xml
+-video/mpeg mpeg mpg mpe
+-video/quicktime qt mov
+-video/vnd.motorola.video
+-video/vnd.motorola.videop
+-video/vnd.vivo
+-video/x-msvideo avi
+-video/x-sgi-movie movie
+-x-conference/x-cooltalk ice
+diff --git a/libs/xmlrpc-c/conf/abyss_root/htdocs/index.htm b/libs/xmlrpc-c/conf/abyss_root/htdocs/index.htm
+deleted file mode 100644
+index f0369a5..0000000
+--- a/libs/xmlrpc-c/conf/abyss_root/htdocs/index.htm
++++ /dev/null
+@@ -1,21 +0,0 @@
+-<HTML>
+-<HEAD>
+-<TITLE>ABYSS is working !!!</TITLE>
+-</HEAD>
+-<BODY bgColor=#80a0f0 text=#000000>
+-<H1 align=center>Congratulations, ABYSS is working !!!</H1>
+-<BR>
+-<P>
+-<B>ABYSS</B> Web Server is working correctly on your system. You should now change this
+-page with yours.
+-<BR>
+-Please include in your web pages (at least the first), the <b><i>'Powered by ABYSS'</i></b>
+-banner to promote the use of <B>ABYSS</B>.
+-</P>
+-<hr>
+-<P>
+-<CENTER><FONT size=-1>
+-Copyright © 2000 <A href="mailto:mmoez@bigfoot.com">Moez Mahfoudh</A>. All rights reserved.
+-</FONT>
+-<BR><BR><A href="http://abyss.linuxave.net/"><IMG border=0 src="pwrabyss.gif"></A></center></P>
+-</BODY></HTML>
+diff --git a/libs/xmlrpc-c/config.mk.in b/libs/xmlrpc-c/config.mk.in
+index b583e6e..bebfa54 100644
+--- a/libs/xmlrpc-c/config.mk.in
++++ b/libs/xmlrpc-c/config.mk.in
+@@ -27,16 +27,15 @@ ENABLE_LIBXML2_BACKEND = @ENABLE_LIBXML2_BACKEND@
+ MUST_BUILD_WININET_CLIENT = @MUST_BUILD_WININET_CLIENT@
+ MUST_BUILD_CURL_CLIENT = @MUST_BUILD_CURL_CLIENT@
+ MUST_BUILD_LIBWWW_CLIENT = @MUST_BUILD_LIBWWW_CLIENT@
++BUILD_TOOLS = @BUILD_TOOLS@
++BUILD_XMLRPC_PSTREAM = @BUILD_XMLRPC_PSTREAM@
+ LSOCKET = @LSOCKET@
+ WININET_LDADD = @WININET_LDADD@
+-WININET_RPATH = @WININET_RPATH@
+-WININET_WL_RPATH = @WININET_WL_RPATH@
++WININET_LIBDIR = @WININET_LIBDIR@
+ CURL_LDADD = @CURL_LDADD@
+-CURL_RPATH = @CURL_RPATH@
+-CURL_WL_RPATH = @CURL_WL_RPATH@
++CURL_LIBDIR = @CURL_LIBDIR@
+ LIBWWW_LDADD = @LIBWWW_LDADD@
+-LIBWWW_RPATH = @LIBWWW_RPATH@
+-LIBWWW_WL_RPATH = @LIBWWW_WL_RPATH@
++LIBWWW_LIBDIR = @LIBWWW_LIBDIR@
+ FEATURE_LIST = @FEATURE_LIST@
+ ABS_SRCDIR = @abs_srcdir@
+ PREFIX = @prefix@
+@@ -164,7 +163,10 @@ MUST_BUILD_SHLIBLE = N
+ shlibfn = $(1:%=%.shlibdummy)
+ shliblefn = $(1:%=%.shlibledummy)
+
+-ifeq ($(HOST_OS),linux-gnu)
++# HOST_OS is usually has a version number suffix, e.g. "aix5.3.0.0", so
++# we compare based on prefix.
++
++ifeq ($(patsubst linux-gnu%,linux-gnu,$(HOST_OS)),linux-gnu)
+ # Assume linker is GNU Compiler (gcc)
+ SHARED_LIB_TYPE = unix
+ MUST_BUILD_SHLIB = Y
+@@ -177,20 +179,28 @@ ifeq ($(HOST_OS),linux-gnu)
+ CFLAGS_SHLIB=-fPIC
+ endif
+
+-ifeq ($(findstring solaris,$(HOST_OS)),solaris)
++ifeq ($(patsubst solaris%,solaris,$(HOST_OS)),solaris)
+ SHARED_LIB_TYPE = unix
+ MUST_BUILD_SHLIB = Y
+ MUST_BUILD_SHLIBLE = Y
+ SHLIB_SUFFIX = so
+ shlibfn = $(1:%=%.$(SHLIB_SUFFIX).$(MAJ).$(MIN))
+ shliblefn = $(1:%=%.$(SHLIB_SUFFIX))
++ # We assume Sun compiler and linker here. It isn't clear what to do
++ # about a user who uses GNU compiler and Ld instead. For that, the
++ # options should be the same as "linux-gnu" platform, above, except
++ # with NEED_WL_RPATH. If the user uses the GNU compiler but the Sun
++ # linker, it's even more complicated: we need an rpath option of the
++ # form -Wl,-R .
++
+ # Solaris compiler (Sun C 5.5) can't take multiple ld options as
+ # -Wl,-a,-b . Ld sees -a,-b in that case.
+ LDFLAGS_SHLIB = -Wl,-Bdynamic -Wl,-G -Wl,-h -Wl,$(SONAME)
+ CFLAGS_SHLIB = -Kpic
++ NEED_RPATH=yes
+ endif
+
+-ifeq ($(HOST_OS),aix)
++ifeq ($(patsubst aix%,aix,$(HOST_OS)),aix)
+ SHARED_LIB_TYPE = unix
+ MUST_BUILD_SHLIB = Y
+ MUST_BUILD_SHLIBLE = Y
+@@ -200,7 +210,7 @@ ifeq ($(HOST_OS),aix)
+ LDFLAGS_SHLIB = -qmkshrobj
+ endif
+
+-ifeq ($(HOST_OS),hpux)
++ifeq ($(patsubst hpux%,hpux,$(HOST_OS)),hpux)
+ SHARED_LIB_TYPE = unix
+ MUST_BUILD_SHLIB = Y
+ MUST_BUILD_SHLIBLE = Y
+@@ -210,7 +220,7 @@ ifeq ($(HOST_OS),hpux)
+ LDFLAGS_SHLIB: -shared -fPIC
+ endif
+
+-ifeq ($(HOST_OS),osf)
++ifeq ($(patsubst osf%,osf,$(HOST_OS)),osf)
+ SHARED_LIB_TYPE = unix
+ MUST_BUILD_SHLIB = Y
+ MUST_BUILD_SHLIBLE = Y
+@@ -220,7 +230,7 @@ ifeq ($(HOST_OS),osf)
+ LDFLAGS_SHLIB = -shared -expect_unresolved
+ endif
+
+-ifeq ($(findstring netbsd,$(HOST_OS)),netbsd)
++ifeq ($(patsubst netbsd%,netbsd,$(HOST_OS)),netbsd)
+ SHARED_LIB_TYPE = unix
+ SHLIB_SUFFIX = so
+ MUST_BUILD_SHLIB = Y
+@@ -232,7 +242,31 @@ ifeq ($(findstring netbsd,$(HOST_OS)),netbsd)
+ NEED_WL_RPATH=yes
+ endif
+
+-ifeq ($(HOST_OS),dragonfly)
++ifeq ($(patsubst freebsd%,freebsd,$(HOST_OS)),freebsd)
++ SHARED_LIB_TYPE = unix
++ SHLIB_SUFFIX = so
++ MUST_BUILD_SHLIB = Y
++ MUST_BUILD_SHLIBLE = Y
++ shlibfn = $(1:%=%.$(SHLIB_SUFFIX).$(MAJ).$(MIN))
++ shliblefn = $(1:%=%.$(SHLIB_SUFFIX))
++ CFLAGS_SHLIB = -fpic
++ LDFLAGS_SHLIB = -shared -Wl,-soname,$(SONAME) $(SHLIB_CLIB)
++ NEED_WL_RPATH=yes
++endif
++
++ifeq ($(findstring interix,$(HOST_OS)),interix)
++ SHARED_LIB_TYPE = unix
++ SHLIB_SUFFIX = so
++ MUST_BUILD_SHLIB = Y
++ MUST_BUILD_SHLIBLE = Y
++ shlibfn = $(1:%=%.$(SHLIB_SUFFIX).$(MAJ).$(MIN))
++ shliblefn = $(1:%=%.$(SHLIB_SUFFIX))
++ CFLAGS_SHLIB =
++ LDFLAGS_SHLIB = -shared -Wl,-soname,$(SONAME) $(SHLIB_CLIB)
++ NEED_WL_RPATH=yes
++endif
++
++ifeq ($(patsubst dragonfly%,dragonfly,$(HOST_OS)),dragonfly)
+ SHARED_LIB_TYPE = unix
+ MUST_BUILD_SHLIB = Y
+ MUST_BUILD_SHLIBLE = Y
+@@ -243,7 +277,7 @@ ifeq ($(HOST_OS),dragonfly)
+ LDFLAGS_SHLIB = -shared -Wl,-soname,$(SONAME) $(SHLIB_CLIB)
+ endif
+
+-ifeq ($(HOST_OS),beos)
++ifeq ($(patsubst beos%,beos,$(HOST_OS)),beos)
+ SHARED_LIB_TYPE = unix
+ MUST_BUILD_SHLIB = Y
+ MUST_BUILD_SHLIBLE = Y
+@@ -253,18 +287,18 @@ ifeq ($(HOST_OS),beos)
+ LDFLAGS_SHLIB = -nostart
+ endif
+
+-ifeq ($(patsubst darwin%, darwin, $(HOST_OS)), darwin)
+- # (I once saw a system that generated 'darwin8.10.1').
++ifeq ($(patsubst darwin%,darwin,$(HOST_OS)),darwin)
+ SHARED_LIB_TYPE = dylib
+ MUST_BUILD_SHLIB = Y
+ MUST_BUILD_SHLIBLE = Y
+ SHLIB_SUFFIX = dylib
+ shlibfn = $(1:%=%.$(MAJ).$(MIN).$(SHLIB_SUFFIX))
+ shliblefn = $(1:%=%.$(SHLIB_SUFFIX))
+- LDFLAGS_SHLIB = -shared -Wl,-soname,$(SONAME) $(SHLIB_CLIB)
++ LDFLAGS_SHLIB = -dynamiclib -undefined suppress -single_module \
++ -flat_namespace $(SHLIB_CLIB)
+ endif
+
+-ifeq ($(HOST_OS),irix)
++ifeq ($(patsubst irix%,irix,$(HOST_OS)),irix)
+ SHARED_LIB_TYPE = irix
+ MUST_BUILD_SHLIB = Y
+ MUST_BUILD_SHLIBLE = Y
+@@ -278,13 +312,13 @@ ifeq ($(HOST_OS),irix)
+ -set_version $(shell perl -e '$(VERSIONPERLPROG)') -lc
+ endif
+
+-ifeq ($(HOST_OS),cygwin)
++ifeq ($(patsubst cygwin%,cygwin,$(HOST_OS)),cygwin)
+ SHARED_LIB_TYPE = dll
+ MUST_BUILD_SHLIB = Y
+ MUST_BUILD_SHLIBLE = N
+ SHLIB_SUFFIX = dll
+- shlibfn = $(1:lib%=$(SHLIB_PREFIX)%.$(SHLIB_SUFFIX).$(MAJ).$(MIN))
+- shliblefn = $(1:%=%.shlibledummy)
++ shlibfn = $(1:%=%.$(SHLIB_SUFFIX))
++ shliblefn = $(1:%=%.$(SHLIB_SUFFIX))
+ LDFLAGS_SHLIB = -shared -Wl,-soname,$(SONAME) $(SHLIB_CLIB)
+ endif
+
+@@ -293,12 +327,12 @@ endif
+ ##############################################################################
+
+ # BUILDTOOL_CC is the compiler to use to generate build tools, which we
+-# will then run to build product. The typical reason this would be
++# will then run to build the product. The typical reason this would be
+ # different from CC is that you're cross-compiling: the product will run
+ # in Environment A, but you're building in Environment B, so you must
+-# build the build toos for Environment B.
++# build the build tools for Environment B.
+
+-# The cross compiling user can update Makefile.config or override
++# The cross compiling user can update config.mk or override
+ # BUILDTOOL_CC on a make command.
+
+ BUILDTOOL_CC = $(CC)
+@@ -316,9 +350,18 @@ INSTALL_SCRIPT = $(INSTALL) -c -m 755
+ # PREFIX is designed to be overridden at make time if the user decides
+ # he doesn't like the default specified at 'configure' time.
+
+-LIBINST_DIR = $(PREFIX)/lib
+-HEADERINST_DIR = $(PREFIX)/include
+-PROGRAMINST_DIR = $(PREFIX)/bin
++prefix = $(PREFIX)
++
++#datarootdir is the new Autoconf(2.60) name for datadir, which is still
++#accepted, but a warning is issued if datarootdir is not also used.
++
++exec_prefix = @exec_prefix@
++DATAROOT_DIR = @datarootdir@
++DATAINST_DIR = @datadir@
++LIBINST_DIR = @libdir@
++HEADERINST_DIR = @includedir@
++PROGRAMINST_DIR = @bindir@
++MANINST_DIR = @mandir@/man1
+
+ # DESTDIR is designed to be overridden at make time in order to relocate
+ # the entire install into a subdirectory.
+diff --git a/libs/xmlrpc-c/configure.gnu b/libs/xmlrpc-c/configure.gnu
+deleted file mode 100644
+index dda9b7d..0000000
+--- a/libs/xmlrpc-c/configure.gnu
++++ /dev/null
+@@ -1,4 +0,0 @@
+-#! /bin/sh
+-srcpath=$(dirname $0 2>/dev/null ) || srcpath="."
+-$srcpath/configure "$@" --disable-cplusplus --disable-wininet-client --disable-libwww-client --disable-shared --with-pic --disable-curl-client
+-
+diff --git a/libs/xmlrpc-c/configure.in b/libs/xmlrpc-c/configure.in
+index 231a1d3..8fbe80a 100644
+--- a/libs/xmlrpc-c/configure.in
++++ b/libs/xmlrpc-c/configure.in
+@@ -86,10 +86,45 @@ AC_MSG_RESULT($MUST_BUILD_LIBWWW_CLIENT)
+ AC_SUBST(MUST_BUILD_LIBWWW_CLIENT)
+
+
++AC_ARG_ENABLE(tools,
++ [ --enable-tools Build the tools], ,
++[enable_tools=no])
++
++# The first AC_CHECK_LIB has to be in unconditional code because as a
++# side effect, it determines what the object file suffix is on this system,
++# and if it is statically present even though not actually executed, Autoconf
++# later thinks it has already computed the object file suffix and uses it
++# without computing it. This was with Autoconf 2.59
++AC_CHECK_LIB(ncurses, main, [have_libncurses=yes], [have_libncurses=no])
++AC_CHECK_LIB(readline, main, [have_libreadline=yes], [have_libreadline=no])
++
++AC_MSG_CHECKING(whether to build tools)
++
++BUILD_XMLRPC_PSTREAM=no
++
++if test $enable_tools = yes; then
++ if ! test "$MUST_BUILD_WININET_CLIENT $MUST_BUILD_CURL_CLIENT $MUST_BUILD_LIBWWW_CLIENT" = "no no no"; then
++ if test $have_libreadline = yes && test $have_libncurses = yes; then
++ BUILD_XMLRPC_PSTREAM=yes
++ fi
++ BUILD_TOOLS=yes
++ fi
++else
++ BUILD_TOOLS=$enable_tools
++fi
++
++AC_MSG_RESULT($BUILD_TOOLS)
++AC_SUBST(BUILD_TOOLS)
++
++if test $BUILD_TOOLS = yes; then
++ AC_MSG_CHECKING(whether to build the xmlrpc_pstream tool)
++ AC_MSG_RESULT($BUILD_XMLRPC_PSTREAM)
++ AC_SUBST(BUILD_XMLRPC_PSTREAM)
++fi
++
++
+ dnl Set up the appropriate Makefile substitutions.
+
+-LIBXMLRPC_CLIENT_LA=libxmlrpc_client.la
+-AC_SUBST(LIBXMLRPC_CLIENT_LA)
+ CLIENTTEST=clienttest
+ AC_SUBST(CLIENTTEST)
+ XMLRPC_CLIENT_H=xmlrpc_client.h
+@@ -126,7 +161,6 @@ AC_SUBST(ENABLE_ABYSS_SERVER)
+
+ dnl Set up the appropriate Makefile substitutions.
+ ABYSS_SUBDIR=
+-LIBXMLRPC_ABYSS_SERVER_LA=
+ SERVERTEST=
+ VALIDATEE=
+ XMLRPC_ABYSS_H=
+@@ -134,14 +168,12 @@ SERVER=
+ if test x"$enable_abyss_server" != xno; then
+ FEATURE_LIST="abyss-server $FEATURE_LIST"
+ ABYSS_SUBDIR=abyss
+- LIBXMLRPC_ABYSS_SERVER_LA=libxmlrpc_abyss_server.la
+ SERVERTEST=servertest
+ VALIDATEE=validatee
+ XMLRPC_ABYSS_H=xmlrpc_abyss.h
+ SERVER=server
+ fi
+ AC_SUBST(ABYSS_SUBDIR)
+-AC_SUBST(LIBXMLRPC_ABYSS_SERVER_LA)
+ AC_SUBST(SERVERTEST)
+ AC_SUBST(VALIDATEE)
+ AC_SUBST(XMLRPC_ABYSS_H)
+@@ -198,7 +230,9 @@ dnl Checks for programs.
+ dnl =======================================================================
+
+ AC_PROG_CC
+-AC_PROG_CXX
++if test x"$enable_cplusplus" != xno; then
++ AC_PROG_CXX
++fi
+
+
+ dnl =======================================================================
+@@ -272,6 +306,14 @@ else
+ fi
+ AC_SUBST(HAVE_SYS_IOCTL_H_DEFINE)
+
++AC_CHECK_HEADERS(sys/select.h)
++if test x"$ac_cv_header_sys_select_h" = xyes; then
++ HAVE_SYS_SELECT_H_DEFINE=1
++else
++ HAVE_SYS_SELECT_H_DEFINE=0
++fi
++AC_SUBST(HAVE_SYS_SELECT_H_DEFINE)
++
+
+ AC_CHECK_HEADERS(stdarg.h, , [
+ AC_MSG_ERROR(stdarg.h is required to build this library)
+@@ -329,7 +371,7 @@ AC_CHECK_FUNCS(setgroups)
+
+ AC_CHECK_FUNCS(asprintf)
+
+-AC_CHECK_FUNCS(setenv)
++AC_CHECK_FUNCS(setenv strtoll strtoull strtoq strtouq __strtoll __strtoull)
+
+ dnl uclib doesn't have pselect
+ AC_CHECK_FUNCS(pselect)
+@@ -380,22 +422,22 @@ dnl you will need to configure this way..
+
+ if test $MUST_BUILD_WININET_CLIENT = yes; then
+
+- dnl You can control which of these gets chosen by fooling around with PATH.
++ dnl You can control which of these gets chosen by controlling PATH.
+ AC_PATH_PROGS(WININET_CONFIG, wininet-xmlrpc-config wininet-config, no)
+ if test "x$WININET_CONFIG" = "xno"; then
+- AC_MSG_ERROR(wininet lib not found; see './configure --help')
++ AC_MSG_ERROR(Configure INTERNAL ERROR - first wininet-config found, then not found)
+ fi
+
+ dnl Get our wininet version.
+ dnl Adapted from a macro which called gtk-config.
+ AC_MSG_CHECKING(for wininet version >= 1.0.0)
+- W3VER=`$WININET_CONFIG --version`
++ W3VER=$($WININET_CONFIG --version)
+ WININET_MAJOR=\
+-`echo $W3VER|sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
++$(echo $W3VER|sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/')
+ WININET_MINOR=\
+-`echo $W3VER|sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
++$(echo $W3VER|sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/')
+ WININET_MICRO=\
+-`echo $W3VER|sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
++$(echo $W3VER|sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/')
+ AC_MSG_RESULT($WININET_MAJOR.$WININET_MINOR.$WININET_MICRO)
+
+ dnl Check to make sure our version is OK.
+@@ -417,61 +459,44 @@ if test $MUST_BUILD_WININET_CLIENT = yes; then
+ fi
+
+ dnl Get the necessary CFLAGS, and merge them into our master list.
+- WININET_CFLAGS="`$WININET_CONFIG --cflags`"
++ WININET_CFLAGS=$($WININET_CONFIG --cflags)
+ AC_SUBST(WININET_CFLAGS)
+ CFLAGS="$CFLAGS $WININET_CFLAGS"
+
+ dnl Get the huge list of libraries we need to link against.
+- WININET_LDADD="`$WININET_CONFIG --libs`"
++ WININET_LDADD=$($WININET_CONFIG --libs)
+ AC_SUBST(WININET_LDADD)
+
+- dnl Oh, such massive brain damage! Because there may be another copy
+- dnl of libwww in the default dynamic loader search path, we need to
+- dnl adjust the search patch manually. Just gag me with a backquote, OK?
+ AC_MSG_CHECKING(for wininet library directory)
+- if $WININET_CONFIG --rpath-dir > /dev/null 2>&1; then
+- dnl Yay! We're using our smart version of wininet.
+- WININET_LIBDIR="`$WININET_CONFIG --rpath-dir`"
+- else
+- dnl Yawn. We're using the regular boring version.
+- WININET_LIBDIR="`$WININET_CONFIG --prefix`/lib"
+- fi
++ WININET_LIBDIR="$($WININET_CONFIG --prefix)/lib"
+ AC_MSG_RESULT($WININET_LIBDIR)
+ AC_SUBST(WININET_LIBDIR)
+- WININET_RPATH="-rpath $WININET_LIBDIR"
+- AC_SUBST(WININET_RPATH)
+- WININET_WL_RPATH="-Wl,--rpath -Wl,$WININET_LIBDIR"
+- AC_SUBST(WININET_WL_RPATH)
+
+ fi # MUST_BUILD_WININET_CLIENT
+
+ dnl =======================================================================
+ dnl Finding w3c-libwww
+ dnl =======================================================================
+-dnl Once upon a time, we used a patched copy of libwww that needed to
+-dnl co-exist with the system copy of libwww. We have some vestigal function
+-dnl for keeping track of libwww's rpath, although this is no longer really
+-dnl necessary.
+
+ if test $MUST_BUILD_LIBWWW_CLIENT = yes; then
+
+- dnl First of all, locate the semi-broken libwww config program.
+- dnl You can control which of these gets chosen by fooling around with PATH.
++ dnl First of all, locate the libwww config program.
++ dnl You can control which of these gets chosen by controlling PATH.
+ AC_PATH_PROGS(LIBWWW_CONFIG, libwww-xmlrpc-config libwww-config, no)
+ if test "x$LIBWWW_CONFIG" = "xno"; then
+- AC_MSG_ERROR(w3c-libwww not found; see './configure --help')
++ AC_MSG_ERROR(Configure INTERNAL ERROR - first libwww-config found, then not found)
+ fi
+
+ dnl Get our libwww version.
+ dnl Adapted from a macro which called gtk-config.
+ AC_MSG_CHECKING(for w3c-libwww version >= 5.2.8)
+- W3VER=`$LIBWWW_CONFIG --version`
++ W3VER=$($LIBWWW_CONFIG --version)
+ LIBWWW_MAJOR=\
+-`echo $W3VER|sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
++$(echo $W3VER|sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/')
+ LIBWWW_MINOR=\
+-`echo $W3VER|sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
++$(echo $W3VER|sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/')
+ LIBWWW_MICRO=\
+-`echo $W3VER|sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
++$(echo $W3VER|sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/')
+ AC_MSG_RESULT($LIBWWW_MAJOR.$LIBWWW_MINOR.$LIBWWW_MICRO)
+
+ dnl Check to make sure our version is OK.
+@@ -493,78 +518,46 @@ if test $MUST_BUILD_LIBWWW_CLIENT = yes; then
+ fi
+
+ dnl Get the huge list of libraries we need to link against.
+- LIBWWW_LDADD="`$LIBWWW_CONFIG --libs`"
++ LIBWWW_LDADD=$(LIBWWW_CONFIG --libs)
+ AC_SUBST(LIBWWW_LDADD)
+
+- dnl Oh, such massive brain damage! Because there may be another copy
+- dnl of libwww in the default dynamic loader search path, we need to
+- dnl adjust the search patch manually. Just gag me with a backquote, OK?
+ AC_MSG_CHECKING(for libwww library directory)
+- if $LIBWWW_CONFIG --rpath-dir > /dev/null 2>&1; then
+- dnl Yay! We're using our smart version of libwww.
+- LIBWWW_LIBDIR="`$LIBWWW_CONFIG --rpath-dir`"
+- else
+- dnl Yawn. We're using the regular boring version.
+- LIBWWW_LIBDIR="`$LIBWWW_CONFIG --prefix`/lib"
+- fi
++ LIBWWW_LIBDIR="$(LIBWWW_CONFIG --prefix)/lib"
+ AC_MSG_RESULT($LIBWWW_LIBDIR)
+ AC_SUBST(LIBWWW_LIBDIR)
+
+- # Some ancient rpath stuff, now disabled. I turned this off because it
+- # breaks Debian (and Mandrake?) policy, and we don't use it anymore.
+- # If you have multiple copies of w3c-libwww lying around, you can turn
+- # it back on.
+- #LIBWWW_RPATH="-rpath $LIBWWW_LIBDIR"
+- LIBWWW_RPATH=""
+- AC_SUBST(LIBWWW_RPATH)
+- #LIBWWW_WL_RPATH="-Wl,--rpath -Wl,$LIBWWW_LIBDIR"
+- LIBWWW_WL_RPATH=""
+- AC_SUBST(LIBWWW_WL_RPATH)
+-
+ fi # MUST_BUILD_LIBWWW_CLIENT
+
+
+ dnl =======================================================================
+-dnl Finding cURL
++dnl Finding Curl
+ dnl =======================================================================
+
+ if test $MUST_BUILD_CURL_CLIENT = yes; then
+
+- dnl First of all, locate the curl config program.
+- dnl You can control which of these gets chosen by fooling around with PATH.
++ dnl First of all, locate the Curl config program.
++ dnl You can control which of these gets chosen by controlling PATH.
+ AC_PATH_PROGS(CURL_CONFIG, curl-xmlrpc-config curl-config, no)
+ if test "x$CURL_CONFIG" = "xno"; then
+- AC_MSG_ERROR(cURL not found; see './configure --help')
++ AC_MSG_ERROR(Configure INTERNAL ERROR - first curl-config found, then not found)
+ fi
+
+ dnl There used to be code here to check the Curl version and make sure
+ dnl it is at least 7.8. But there were bugs both in the code and in
+- dnl curl (curl-config --vernum, at least in older versios of Curl,
++ dnl curl (curl-config --vernum, at least in older versions of Curl,
+ dnl omits the leading zero). So it didn't work. Plus, checking version
+ dnl numbers isn't a good idea. Better to check for feature presence.
+ dnl So we don't do any check now. If we find out there's a problem with
+ dnl older Curls, we will revisit that.
+
+- dnl Get the huge list of libraries we need to link against.
+- dnl MRB-20010516-For some reason, curl-config
+- dnl does not list itself '-lcurl'. 2004.12.12. It seems to do so
+- dnl now.
+- CURL_LDADD=`$CURL_CONFIG --libs`
++ CURL_LDADD=$($CURL_CONFIG --libs)
+ AC_SUBST(CURL_LDADD)
+
+- dnl Oh, such massive brain damage! Because there may be another copy
+- dnl of curl in the default dynamic loader search path, we need to
+- dnl adjust the search path manually. Just gag me with a backquote, OK?
+- AC_MSG_CHECKING(for curl library directory)
+- dnl Yawn. We're using the regular boring version.
+- CURL_LIBDIR="`$CURL_CONFIG --prefix`/lib"
++ AC_MSG_CHECKING(for Curl library directory)
++ CURL_LIBDIR="$($CURL_CONFIG --prefix)/lib"
+
+ AC_MSG_RESULT($CURL_LIBDIR)
+ AC_SUBST(CURL_LIBDIR)
+- CURL_RPATH="-rpath $CURL_LIBDIR"
+- AC_SUBST(CURL_RPATH)
+- CURL_WL_RPATH="-Wl,--rpath -Wl,$CURL_LIBDIR"
+- AC_SUBST(CURL_WL_RPATH)
+
+ fi # MUST_BUILD_CURL_CLIENT
+
+@@ -620,7 +613,7 @@ CPP_WARN_FLAGS=
+ AC_SUBST(CPP_WARN_FLAGS)
+
+
+-BUILDDIR=`pwd`
++BUILDDIR=$(pwd)
+ AC_SUBST(BUILDDIR)
+
+
+@@ -632,7 +625,7 @@ dnl Note that AM_CONFIG_HEADER at the top of this file outputs another
+ dnl result: xmlrpc_amconfig.h .
+
+ AC_OUTPUT( \
+- Makefile.srcdir \
++ srcdir.mk \
+ config.mk \
+ xmlrpc_config.h \
+ )
+@@ -647,7 +640,9 @@ fi
+
+
+ if test "$MUST_BUILD_WININET_CLIENT $MUST_BUILD_CURL_CLIENT $MUST_BUILD_LIBWWW_CLIENT" = "no no no"; then
+- AC_MSG_NOTICE([\n\n==>We are not building any client XML transport (see earlier messages explaining why), therefore WE WILL NOT BUILD THE CLIENT LIBRARY.])
++ AC_MSG_NOTICE([==>])
++ AC_MSG_NOTICE([==>We are not building any client XML transport (see earlier messages explaining why), therefore WE WILL NOT BUILD THE CLIENT LIBRARY.])
++ AC_MSG_NOTICE([==>])
+ fi
+
+
+diff --git a/libs/xmlrpc-c/debian/README.Debian b/libs/xmlrpc-c/debian/README.Debian
+deleted file mode 100644
+index 830df77..0000000
+--- a/libs/xmlrpc-c/debian/README.Debian
++++ /dev/null
+@@ -1,7 +0,0 @@
+-xmlrpc-c for Debian
+--------------------
+-
+-This is my first attempt at porting my RPM packages to Debian. User
+-beware!
+-
+- -- Eric Kidd <eric.kidd@pobox.com>, Tue, 26 Jun 2001 12:39:39 -0400
+diff --git a/libs/xmlrpc-c/debian/changelog b/libs/xmlrpc-c/debian/changelog
+deleted file mode 100644
+index 848fac8..0000000
+--- a/libs/xmlrpc-c/debian/changelog
++++ /dev/null
+@@ -1,22 +0,0 @@
+-xmlrpc-c (0.9.10-1) unstable; urgency=low
+-
+- * Updated from new upstream release.
+-
+- -- Eric Kidd <eric.kidd@pobox.com> Sun, 1 Jul 2001 10:45:51 -0400
+-
+-xmlrpc-c (0.9.9-2) unstable; urgency=low
+-
+- * Added man pages.
+- * Improved depends for xmlrpc-c-dev.
+-
+- -- Eric Kidd <eric.kidd@pobox.com> Wed, 27 Jun 2001 12:25:52 -0400
+-
+-xmlrpc-c (0.9.9-1) unstable; urgency=low
+-
+- * Initial Release.
+-
+- -- Eric Kidd <eric.kidd@pobox.com> Tue, 26 Jun 2001 12:39:39 -0400
+-
+-Local variables:
+-mode: debian-changelog
+-End:
+diff --git a/libs/xmlrpc-c/debian/control b/libs/xmlrpc-c/debian/control
+deleted file mode 100644
+index 45bd020..0000000
+--- a/libs/xmlrpc-c/debian/control
++++ /dev/null
+@@ -1,30 +0,0 @@
+-Source: xmlrpc-c
+-Section: devel
+-Priority: optional
+-Maintainer: Eric Kidd <eric.kidd@pobox.com>
+-Build-Depends: debhelper (>> 3.0.0), libwww0 (>= 5.3.2), libwww-dev (>= 5.3.2)
+-Standards-Version: 3.5.2
+-
+-Package: xmlrpc-c0
+-Architecture: any
+-Depends: ${shlibs:Depends}
+-Description: A library implementing XML-based remote procedure calls
+- XML-RPC is a lightweight RPC protocol based on XML and HTTP. This package
+- is used by XML-RPC clients and servers written in C and C++.
+-
+-Package: xmlrpc-c-dev
+-Architecture: any
+-Depends: xmlrpc-c0 (= ${Source-Version}), libc6-dev, libstdc++-dev, libfrontier-rpc-perl
+-Description: Libraries and header files for developing XML-RPC applications
+- Static libraries and header files for writing XML-RPC applications in C and
+- C++.
+-
+-Package: xmlrpc-c-apps
+-Architecture: any
+-Depends: xmlrpc-c0 (= ${Source-Version}), ${shlibs:Depends}
+-Description: Sample XML-RPC applications
+- Some handy XML-RPC demo applications based on the Meerkat Open Wire Service
+- (found at http://www.oreillynet.com/meerkat/). You can use 'query-meerkat' to
+- perform a regex search on recent news items, or 'meerkat-app-list' to get
+- a list of recent Linux software releases.
+-
+diff --git a/libs/xmlrpc-c/debian/copyright b/libs/xmlrpc-c/debian/copyright
+deleted file mode 100644
+index 8873b9d..0000000
+--- a/libs/xmlrpc-c/debian/copyright
++++ /dev/null
+@@ -1,128 +0,0 @@
+-This software package is covered by the XML-RPC C Library License.
+-Additionally, certain parts of this library are derived from pre-existing
+-code, which may carry its own license.
+-
+-In particular, the Expat Licence applies to the contents of the directory
+-lib/expat, the ABYSS Web Server License applies to the contents of the
+-directory lib/abyss and parts of the file src/xmlrpc_abyss.c, and the
+-Python 1.5.2 license applies to parts of the file src/xmlrpc_base64.c.
+-
+-And as for the tools/ directory, you'll have to examine the licenses on
+-your own.
+-
+-
+- XML-RPC C Library License
+- -------------------------
+-
+-Copyright (C) 2001 by First Peer, Inc. All rights reserved.
+-Copyright (C) 2001 by Eric Kidd. All rights reserved.
+-
+-Redistribution and use in source and binary forms, with or without
+-modification, are permitted provided that the following conditions
+-are met:
+-1. Redistributions of source code must retain the above copyright
+- notice, this list of conditions and the following disclaimer.
+-2. Redistributions in binary form must reproduce the above copyright
+- notice, this list of conditions and the following disclaimer in the
+- documentation and/or other materials provided with the distribution.
+-3. The name of the author may not be used to endorse or promote products
+- derived from this software without specific prior written permission.
+-
+-THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+-SUCH DAMAGE.
+-
+-
+- Expat License
+- -------------
+-
+-Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
+-
+-Permission is hereby granted, free of charge, to any person obtaining
+-a copy of this software and associated documentation files (the
+-"Software"), to deal in the Software without restriction, including
+-without limitation the rights to use, copy, modify, merge, publish,
+-distribute, sublicense, and/or sell copies of the Software, and to
+-permit persons to whom the Software is furnished to do so, subject to
+-the following conditions:
+-
+-The above copyright notice and this permission notice shall be included
+-in all copies or substantial portions of the Software.
+-
+-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+-
+-
+- ABYSS Web Server License
+- ------------------------
+-
+-Copyright (C) 2000 by Moez Mahfoudh <mmoez@bigfoot.com>. All rights reserved.
+-
+-Redistribution and use in source and binary forms, with or without
+-modification, are permitted provided that the following conditions
+-are met:
+-1. Redistributions of source code must retain the above copyright
+- notice, this list of conditions and the following disclaimer.
+-2. Redistributions in binary form must reproduce the above copyright
+- notice, this list of conditions and the following disclaimer in the
+- documentation and/or other materials provided with the distribution.
+-3. The name of the author may not be used to endorse or promote products
+- derived from this software without specific prior written permission.
+-
+-THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+-SUCH DAMAGE.
+-
+-
+-
+- Python 1.5.2 License
+- --------------------
+-
+-Copyright 1991, 1992, 1993, 1994 by Stichting Mathematisch Centrum,
+-Amsterdam, The Netherlands.
+-
+- All Rights Reserved
+-
+-Permission to use, copy, modify, and distribute this software and its
+-documentation for any purpose and without fee is hereby granted,
+-provided that the above copyright notice appear in all copies and that
+-both that copyright notice and this permission notice appear in
+-supporting documentation, and that the names of Stichting Mathematisch
+-Centrum or CWI or Corporation for National Research Initiatives or
+-CNRI not be used in advertising or publicity pertaining to
+-distribution of the software without specific, written prior
+-permission.
+-
+-While CWI is the initial source for this software, a modified version
+-is made available by the Corporation for National Research Initiatives
+-(CNRI) at the Internet address ftp://ftp.python.org.
+-
+-STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH
+-REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
+-MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH
+-CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+-PERFORMANCE OF THIS SOFTWARE.
+diff --git a/libs/xmlrpc-c/debian/postinst b/libs/xmlrpc-c/debian/postinst
+deleted file mode 100644
+index a7b0408..0000000
+--- a/libs/xmlrpc-c/debian/postinst
++++ /dev/null
+@@ -1,47 +0,0 @@
+-#! /bin/sh
+-# postinst script for xmlrpc-c
+-#
+-# see: dh_installdeb(1)
+-
+-set -e
+-
+-# summary of how this script can be called:
+-# * <postinst> `configure' <most-recently-configured-version>
+-# * <old-postinst> `abort-upgrade' <new version>
+-# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+-# <new-version>
+-# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+-# <failed-install-package> <version> `removing'
+-# <conflicting-package> <version>
+-# for details, see /usr/share/doc/packaging-manual/
+-#
+-# quoting from the policy:
+-# Any necessary prompting should almost always be confined to the
+-# post-installation script, and should be protected with a conditional
+-# so that unnecessary prompting doesn't happen if a package's
+-# installation fails and the `postinst' is called with `abort-upgrade',
+-# `abort-remove' or `abort-deconfigure'.
+-
+-case "$1" in
+- configure)
+- ldconfig
+- ;;
+-
+- abort-upgrade|abort-remove|abort-deconfigure)
+-
+- ;;
+-
+- *)
+- echo "postinst called with unknown argument \`$1'" >&2
+- exit 0
+- ;;
+-esac
+-
+-# dh_installdeb will replace this with shell code automatically
+-# generated by other debhelper scripts.
+-
+-#DEBHELPER#
+-
+-exit 0
+-
+-
+diff --git a/libs/xmlrpc-c/debian/postrm b/libs/xmlrpc-c/debian/postrm
+deleted file mode 100644
+index 3294e0a..0000000
+--- a/libs/xmlrpc-c/debian/postrm
++++ /dev/null
+@@ -1,39 +0,0 @@
+-#! /bin/sh
+-# postrm script for xmlrpc-c
+-#
+-# see: dh_installdeb(1)
+-
+-set -e
+-
+-# summary of how this script can be called:
+-# * <postrm> `remove'
+-# * <postrm> `purge'
+-# * <old-postrm> `upgrade' <new-version>
+-# * <new-postrm> `failed-upgrade' <old-version>
+-# * <new-postrm> `abort-install'
+-# * <new-postrm> `abort-install' <old-version>
+-# * <new-postrm> `abort-upgrade' <old-version>
+-# * <disappearer's-postrm> `disappear' <r>overwrit>r> <new-version>
+-# for details, see /usr/share/doc/packaging-manual/
+-
+-case "$1" in
+- remove)
+- ldconfig
+- ;;
+-
+- purge|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+-
+- ;;
+-
+- *)
+- echo "postrm called with unknown argument \`$1'" >&2
+- exit 0
+-
+-esac
+-
+-# dh_installdeb will replace this with shell code automatically
+-# generated by other debhelper scripts.
+-
+-#DEBHELPER#
+-
+-
+diff --git a/libs/xmlrpc-c/debian/rules b/libs/xmlrpc-c/debian/rules
+deleted file mode 100644
+index c7c728c..0000000
+--- a/libs/xmlrpc-c/debian/rules
++++ /dev/null
+@@ -1,97 +0,0 @@
+-#!/usr/bin/make -f
+-# Sample debian/rules that uses debhelper.
+-# GNU copyright 1997 to 1999 by Joey Hess.
+-
+-# Uncomment this to turn on verbose mode.
+-#export DH_VERBOSE=1
+-
+-# This is the debhelper compatability version to use.
+-export DH_COMPAT=3
+-
+-# shared library versions, option 1
+-#version=2.0.5
+-#major=2
+-# option 2, assuming the library is created as src/.libs/libfoo.so.2.0.5 or so
+-version=`ls src/.libs/lib*.so.* | \
+- awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'`
+-major=`ls src/.libs/lib*.so.* | \
+- awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'`
+-
+-configure: configure-stamp
+-configure-stamp:
+- dh_testdir
+- # Add here commands to configure the package.
+- ./configure --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info
+-
+- touch configure-stamp
+-
+-build: configure-stamp build-stamp
+-build-stamp:
+- dh_testdir
+-
+- # Add here commands to compile the package.
+- $(MAKE)
+- $(MAKE) check
+-
+- touch build-stamp
+-
+-clean:
+- dh_testdir
+- dh_testroot
+- rm -f build-stamp configure-stamp
+-
+- # Add here commands to clean up after the build process.
+- -$(MAKE) distclean
+-
+- dh_clean
+-
+-install: build
+- dh_testdir
+- dh_testroot
+- dh_clean -k
+- dh_installdirs
+-
+- # Add here commands to install the package into debian/tmp
+- $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
+-
+-
+-# Build architecture-independent files here.
+-binary-indep: build install
+-# We have nothing to do by default.
+-
+-# Build architecture-dependent files here.
+-binary-arch: build install
+- dh_testdir
+- dh_testroot
+- dh_movefiles
+-
+-# dh_installdebconf
+- dh_installdocs
+- dh_installexamples
+- dh_installmenu
+-# dh_installlogrotate
+-# dh_installemacsen
+-# dh_installpam
+-# dh_installmime
+-# dh_installinit
+- dh_installcron
+-# dh_installman debian/xmlrpc-c.7
+-# dh_installman -p xmlrpc-c-dev debian/xml-rpc-api2cpp.1 debian/xml-rpc-api2txt.1 debian/xmlrpc-c-config.1
+-# dh_installman -p xmlrpc-c-apps debian/meerkat-app-list.1 debian/query-meerkat.1
+- dh_installinfo
+-# dh_undocumented
+- dh_installchangelogs
+- dh_link
+- dh_strip
+- dh_compress
+- dh_fixperms
+- dh_makeshlibs
+- dh_installdeb
+-# dh_perl
+- dh_shlibdeps -l"$(CURDIR)/debian/xmlrpc-c0/usr/lib/:$$LD_LIBRARY_PATH"
+- dh_gencontrol
+- dh_md5sums
+- dh_builddeb
+-
+-binary: binary-indep binary-arch
+-.PHONY: build clean binary-indep binary-arch binary install configure
+diff --git a/libs/xmlrpc-c/debian/xmlrpc-c-apps.files b/libs/xmlrpc-c/debian/xmlrpc-c-apps.files
+deleted file mode 100644
+index 3f005c6..0000000
+--- a/libs/xmlrpc-c/debian/xmlrpc-c-apps.files
++++ /dev/null
+@@ -1,4 +0,0 @@
+-usr/bin/query-meerkat
+-usr/bin/meerkat-app-list
+-usr/share/man/man1/query-meerkat.1
+-usr/share/man/man1/meerkat-app-list.1
+diff --git a/libs/xmlrpc-c/debian/xmlrpc-c-dev.files b/libs/xmlrpc-c/debian/xmlrpc-c-dev.files
+deleted file mode 100644
+index f1cc55d..0000000
+--- a/libs/xmlrpc-c/debian/xmlrpc-c-dev.files
++++ /dev/null
+@@ -1,10 +0,0 @@
+-usr/bin/xmlrpc-c-config
+-usr/bin/xml-rpc-api2txt
+-usr/bin/xml-rpc-api2cpp
+-usr/include/*
+-usr/lib/lib*.a
+-usr/lib/lib*.la
+-usr/lib/lib*.so
+-usr/share/man/man1/xmlrpc-c-config.1
+-usr/share/man/man1/xml-rpc-api2txt.1
+-usr/share/man/man1/xml-rpc-api2cpp.1
+diff --git a/libs/xmlrpc-c/debian/xmlrpc-c0.docs b/libs/xmlrpc-c/debian/xmlrpc-c0.docs
+deleted file mode 100644
+index 6df52b9..0000000
+--- a/libs/xmlrpc-c/debian/xmlrpc-c0.docs
++++ /dev/null
+@@ -1,6 +0,0 @@
+-BUGS
+-NEWS
+-README
+-CREDITS
+-SECURITY
+-doc/*.txt
+diff --git a/libs/xmlrpc-c/debian/xmlrpc-c0.examples b/libs/xmlrpc-c/debian/xmlrpc-c0.examples
+deleted file mode 100644
+index d510cc5..0000000
+--- a/libs/xmlrpc-c/debian/xmlrpc-c0.examples
++++ /dev/null
+@@ -1,3 +0,0 @@
+-examples/*.c
+-examples/*.cc
+-conf
+diff --git a/libs/xmlrpc-c/debian/xmlrpc-c0.files b/libs/xmlrpc-c/debian/xmlrpc-c0.files
+deleted file mode 100644
+index 6f82592..0000000
+--- a/libs/xmlrpc-c/debian/xmlrpc-c0.files
++++ /dev/null
+@@ -1,2 +0,0 @@
+-usr/lib/lib*.so.*
+-usr/share/man/man7/xmlrpc-c.7
+diff --git a/libs/xmlrpc-c/dll-common.make b/libs/xmlrpc-c/dll-common.make
+deleted file mode 100644
+index 0d53c17..0000000
+--- a/libs/xmlrpc-c/dll-common.make
++++ /dev/null
+@@ -1,22 +0,0 @@
+-# -*-makefile-*- <-- an Emacs control
+-
+-# See unix-common.make for an explanation of this file. This file is
+-# analogous to unix-common.make, but is for a Windows system
+-
+-SONAME = $@
+-IMPLIB = $(@:%:%.dll.a)
+-
+-SHLIB_CMD = $(CCLD) $(LDFLAGS_SHLIB) -o $@ $^ $(LADD)
+-
+-.PHONY: $(SHLIB_INSTALL_TARGETS)
+-.PHONY: install-shared-libraries
+-
+-SHLIB_INSTALL_TARGETS = $(SHARED_LIBS_TO_INSTALL:%=%/install)
+-
+-#SHLIB_INSTALL_TARGETS is like "libfoo/install libbar/install"
+-
+-install-shared-libraries: $(SHLIB_INSTALL_TARGETS)
+-
+-$(SHLIB_INSTALL_TARGETS):lib%/install:$(SHLIB_PREFIX)%.$(SHLIB_SUFFIX).$(MAJ).$(MIN)
+-# $< is a library file name, e.g. cygfoo.so.3.1 .
+- $(INSTALL_SHLIB) $< $(DESTDIR)$(LIBINST_DIR)/$<
+diff --git a/libs/xmlrpc-c/doc/INSTALL b/libs/xmlrpc-c/doc/INSTALL
+index 76881fa..2790010 100644
+--- a/libs/xmlrpc-c/doc/INSTALL
++++ b/libs/xmlrpc-c/doc/INSTALL
+@@ -82,6 +82,48 @@ you have to have a -f option and set SRCDIR and BLDDIR on your 'make'
+ command.
+
+
++CROSS-COMPILING
++---------------
++
++Cross compiling is building code on one machine to be run on another,
++particularly when the two machines are different enough that it matters,
++e.g. one executes x86 instructions and the other executes PowerPC
++instructions.
++
++The machine that will run the code is called the target machine. The one
++that will build the code is the build machine.
++
++To cross-compile, you set up nearly all of the build environment for the
++target machine (that includes such things as the default include file search
++path for the compiler and library search path for the linker). On your
++'configure' command, you use a --host option to identify the kind of target
++machine (rather than let it default to the kind of machine on which
++'configure' is running). It's a nontrivial task, and beyond the scope of
++this document as it is not specific to Xmlrpc-c.
++
++There is one area that requires special attention and is specific to Xmlrpc-c:
++The Xmlrpc-c build does part of its job by compiling a program from C source
++code and running that program as part of the build. That compile, unlike all
++the regular ones, must be done for the build machine, not the target
++machine.
++
++To facilitate that, there are the BUILDTOOL_CC and BUILDTOOL_CCLD make
++variables. BUILDTOOL_CC is the command name for the appropriate compiler
++which which to build a build tool, i.e. a compiler that generates code to run
++on the build system. BUILDTOOL_CCLD is similarly for the linker, and should
++be the kind of linker command that invokes a combined compiler/linker,
++e.g. "gcc" instead of "ld".
++
++You can set these make variables on the Make command line, or if you prefer,
++by modifying the file 'config.mk' after 'configure' creates it. The default
++value of these variables (as set in 'config.mk') is the same compile and link
++commands as for building target code.
++
++(There is probably a way to do this with GNU Autoconf facilities and avoid the
++BUILDTOOL_CC complication. If you know how (without using Automake), tell the
++Xmlrpc-c maintainer and he will change the build system to use it).
++
++
+ COMMON PROBLEMS
+ ---------------
+
+@@ -135,7 +177,7 @@ to have it. The make file obviously specifies the path to the current
+ libraries that the user just built in the link library search order,
+ but the link is picking up the old system version instead. Why?
+ Because the link options say to search /usr/lib _before_ the local
+-build directory. And it does that because curl-config erroneously
++build directory. And they do that because curl-config erroneously
+ says that you need a -L /usr/lib link option to find the Curl library.
+
+
+diff --git a/libs/xmlrpc-c/dylib-common.make b/libs/xmlrpc-c/dylib-common.make
+deleted file mode 100644
+index a72d416..0000000
+--- a/libs/xmlrpc-c/dylib-common.make
++++ /dev/null
+@@ -1,37 +0,0 @@
+-# -*-makefile-*- <-- an Emacs control
+-
+-# See unix-common.make for an explanation of this file. This file is
+-# analogous to unix-common.make, but is for an Irix system.
+-
+-SONAME = $(@:%.$(MIN)=%)
+-
+-SHLIB_CMD = $(CCLD) $(LDFLAGS_SHLIB) -o $@ $^ $(LADD)
+-
+-SHLIBPP_CMD = $(CXXLD) $(LDFLAGS_SHLIB) -o $@ $^ $(LADD)
+-
+-SHLIB_LE_TARGETS = $(call shliblefn, $(SHARED_LIBS_TO_BUILD))
+-
+-$(SHLIB_LE_TARGETS):%.$(SHLIB_SUFFIX):%.$(MAJ).$(MIN).$(SHLIB_SUFFIX)
+- rm -f $@
+- $(LN_S) $< $@
+-
+-
+-.PHONY: $(SHLIB_INSTALL_TARGETS)
+-.PHONY: install-shared-libraries
+-
+-SHLIB_INSTALL_TARGETS = $(SHARED_LIBS_TO_INSTALL:%=%/install)
+-
+-#SHLIB_INSTALL_TARGETS is like "libfoo/install libbar/install"
+-
+-install-shared-libraries: $(SHLIB_INSTALL_TARGETS)
+-
+-$(SHLIB_INSTALL_TARGETS):%/install:%.$(MAJ).$(MIN).$(SHLIB_SUFFIX)
+-# $< is a library file name, e.g. libfoo.so.3.1 .
+- $(INSTALL_SHLIB) $< $(DESTDIR)$(LIBINST_DIR)/$<
+- cd $(DESTDIR)$(LIBINST_DIR); \
+- rm -f $(<:%.$(MIN).$(SHLIB_SUFFIX)=%.$(SHLIB_SUFFIX)); \
+- $(LN_S) $< $(<:%.$(MIN).$(SHLIB_SUFFIX)=%.$(SHLIB_SUFFIX))
+- cd $(DESTDIR)$(LIBINST_DIR); \
+- rm -f $(<:%.$(MAJ).$(MIN).$(SHLIB_SUFFIX)=%.$(SHLIB_SUFFIX)); \
+- $(LN_S) $(<:%.$(MIN).$(SHLIB_SUFFIX)=%.$(SHLIB_SUFFIX)) \
+- $(<:%.$(MAJ).$(MIN).$(SHLIB_SUFFIX)=%.$(SHLIB_SUFFIX))
+diff --git a/libs/xmlrpc-c/examples/.cvsignore b/libs/xmlrpc-c/examples/.cvsignore
+deleted file mode 100644
+index 792265c..0000000
+--- a/libs/xmlrpc-c/examples/.cvsignore
++++ /dev/null
+@@ -1,11 +0,0 @@
+-gen_sample_add_xml
+-meerkat-app-list
+-query-meerkat
+-synch_client
+-xmlrpc_asynch_client
+-auth_client
+-xmlrpc_loop_server
+-xmlrpc_sample_add_client
+-xmlrpc_sample_add_server
+-xmlrpc_server_validatee
+-*.cgi
+diff --git a/libs/xmlrpc-c/examples/Makefile b/libs/xmlrpc-c/examples/Makefile
+index 5a9fd19..c441c9f 100644
+--- a/libs/xmlrpc-c/examples/Makefile
++++ b/libs/xmlrpc-c/examples/Makefile
+@@ -1,8 +1,8 @@
+-# Since the programs in this directories are examples for the user, this
+-# make file should be as ordinary as possible. It should not rely heavily
+-# on included make files or configuration parameters. It should not use
+-# libtool. Also, we don't try to build or rebuild the libraries on which
+-# these programs depend.
++# Since the programs in this directory are examples for the user, this make
++# file should be as ordinary as possible. It should not rely heavily on
++# included make files or configuration parameters. Also, we don't try to
++# build or rebuild the libraries on which these programs depend or even
++# recognize that they've changed on their own.
+
+
+ ifeq ($(SRCDIR),)
+@@ -15,8 +15,8 @@ include $(BLDDIR)/config.mk
+
+ default: all
+
+-CFLAGS = $(CFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
+-LDFLAGS = $(LADD)
++CFLAGS = $(CFLAGS_PERSONAL) $(CADD)
++LDFLAGS += $(LADD)
+
+ # If this were a real application, working from an installed copy of
+ # Xmlrpc-c, XMLRPC_C_CONFIG would just be 'xmlrpc-c-config'. It would be
+@@ -25,6 +25,7 @@ XMLRPC_C_CONFIG = $(BLDDIR)/xmlrpc-c-config.test
+
+ CLIENTPROGS = \
+ auth_client \
++ compound_value_client \
+ synch_client \
+ xmlrpc_sample_add_client \
+ xmlrpc_asynch_client \
+@@ -37,6 +38,7 @@ SERVERPROGS_CGI = \
+ xmlrpc_sample_add_server.cgi
+
+ SERVERPROGS_ABYSS = \
++ compound_value_server \
+ interrupted_server \
+ xmlrpc_inetd_server \
+ xmlrpc_socket_server \
+@@ -44,15 +46,19 @@ SERVERPROGS_ABYSS = \
+ xmlrpc_sample_add_server \
+ xmlrpc_server_validatee \
+
++BASIC_PROGS = \
++ json \
++ gen_sample_add_xml \
++
+ # Build up PROGS:
+ PROGS =
+
++PROGS += $(BASIC_PROGS)
++
+ ifeq ($(ENABLE_ABYSS_SERVER),yes)
+ PROGS += $(SERVERPROGS_ABYSS)
+ endif
+
+-PROGS += gen_sample_add_xml
+-
+ ifeq ($(MUST_BUILD_CLIENT),yes)
+ PROGS += $(CLIENTPROGS)
+ endif
+@@ -63,17 +69,17 @@ endif
+
+ INCLUDES = -I. $(shell $(XMLRPC_C_CONFIG) client abyss-server --cflags)
+
+-LDADD_CLIENT = \
+- $(shell $(XMLRPC_C_CONFIG) client --ldadd)
++LIBS_CLIENT = \
++ $(shell $(XMLRPC_C_CONFIG) client --libs)
+
+-LDADD_SERVER_ABYSS = \
+- $(shell $(XMLRPC_C_CONFIG) abyss-server --ldadd)
++LIBS_SERVER_ABYSS = \
++ $(shell $(XMLRPC_C_CONFIG) abyss-server --libs)
+
+-LDADD_SERVER_CGI = \
+- $(shell $(XMLRPC_C_CONFIG) cgi-server --ldadd)
++LIBS_SERVER_CGI = \
++ $(shell $(XMLRPC_C_CONFIG) cgi-server --libs)
+
+-LDADD_BASE = \
+- $(shell $(XMLRPC_C_CONFIG) --ldadd)
++LIBS_BASE = \
++ $(shell $(XMLRPC_C_CONFIG) --libs)
+
+ all: $(PROGS)
+
+@@ -90,16 +96,17 @@ $(BLDDIR)/examples/cpp:
+ mkdir $@
+
+ $(CLIENTPROGS):%:%.o
+- $(CCLD) -o $@ $(LDFLAGS) $^ $(LDADD_CLIENT)
++ $(CCLD) -o $@ $^ $(LIBS_CLIENT) $(LDFLAGS)
+
+ $(SERVERPROGS_CGI):%.cgi:%_cgi.o
+- $(CCLD) -o $@ $(LDFLAGS) $^ $(LDADD_SERVER_CGI)
++ $(CCLD) -o $@ $^ $(LIBS_SERVER_CGI) $(LDFLAGS)
+
+ $(SERVERPROGS_ABYSS):%:%.o
+- $(CCLD) -o $@ $(LDFLAGS) $^ $(LDADD_SERVER_ABYSS)
++ $(CCLD) -o $@ $^ $(LIBS_SERVER_ABYSS) $(LDFLAGS)
++
++$(BASIC_PROGS):%:%.o
++ $(CCLD) -o $@ $^ $(LIBS_BASE) $(LDFLAGS)
+
+-gen_sample_add_xml:%:%.o
+- $(CCLD) -o $@ $(LDFLAGS) $^ $(LDADD_BASE)
+
+ OBJECTS = $(patsubst %,%.o,$(patsubst %.cgi,%_cgi,$(PROGS)))
+
+@@ -119,11 +126,9 @@ config.h:
+ xmlrpc_amconfig.h:
+ $(LN_S) $(BLDDIR)/$@ .
+
+-include $(SRCDIR)/common.mk
+-
+ .PHONY: clean
+-clean: clean-common
+- rm -f $(PROGS) config.h xmlrpc_amconfig.h
++clean:
++ rm -f $(PROGS) *.o config.h xmlrpc_amconfig.h
+ $(MAKE) -C cpp clean
+
+ .PHONY: distclean
+diff --git a/libs/xmlrpc-c/examples/README b/libs/xmlrpc-c/examples/README
+index 46b02b4..6691f8a 100644
+--- a/libs/xmlrpc-c/examples/README
++++ b/libs/xmlrpc-c/examples/README
+@@ -1,15 +1,12 @@
+ This directory contains working examples of uses of XML-RPC-c. There
+ are XML-RPC servers and XML-RPC clients that use the Xmlrpc-c libraries.
+
+-The simplest example is the 'query-meerkat' program, which contacts an
+-XML-RPC server that O'Reilly operates on the Internet called Meerkat.
+-Meerkat provides an RPC that returns a list of new articles that match
+-a specified search pattern. Run 'query-meerkat' like this example:
+-
+- $ ./query-meerkat Linux
+-
+-This responds with a list of new articles that contain the work "Linux",
+-according to O'reilly's Meerkat service.
++The make file is a combination of an example of how to build programs
++that use Xmlrpc-c libraries and something that actually does build the
++programs in this directory. As such, it isn't perfect for either of
++those purposes. To build the examples, you must first build the
++libraries (make dependencies will not take care of that for you). Then
++you can issue a simple 'make' in this directory.
+
+
+ The simplest server program is 'xmlrpc_sample_add_server'. This
+diff --git a/libs/xmlrpc-c/examples/auth_client.c b/libs/xmlrpc-c/examples/auth_client.c
+index 50047f4..fbbd0a9 100644
+--- a/libs/xmlrpc-c/examples/auth_client.c
++++ b/libs/xmlrpc-c/examples/auth_client.c
+@@ -35,7 +35,7 @@ die_if_fault_occurred(xmlrpc_env * const envP) {
+
+ int
+ main(int const argc,
+- const char ** const argv ATTR_UNUSED) {
++ const char ** const argv) {
+
+ xmlrpc_env env;
+ xmlrpc_server_info * serverP;
+diff --git a/libs/xmlrpc-c/examples/cpp/.cvsignore b/libs/xmlrpc-c/examples/cpp/.cvsignore
+deleted file mode 100644
+index fedad6b..0000000
+--- a/libs/xmlrpc-c/examples/cpp/.cvsignore
++++ /dev/null
+@@ -1,4 +0,0 @@
+-meerkat-app-list
+-xmlrpc_sample_add_server
+-xmlrpc_sample_add_client
+-sample_add_client_complex
+diff --git a/libs/xmlrpc-c/examples/cpp/Makefile b/libs/xmlrpc-c/examples/cpp/Makefile
+index 1c8b930..18798cb 100644
+--- a/libs/xmlrpc-c/examples/cpp/Makefile
++++ b/libs/xmlrpc-c/examples/cpp/Makefile
+@@ -15,8 +15,8 @@ include $(BLDDIR)/config.mk
+
+ default: all
+
+-CXXFLAGS = $(CXXFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
+-LDFLAGS = $(LADD)
++CXXFLAGS = $(CFLAGS_PERSONAL) $(CADD)
++LDFLAGS += $(LADD)
+
+ # If this were a real application, working from an installed copy of
+ # Xmlrpc-c, XMLRPC_C_CONFIG would just be 'xmlrpc-c-config'. It would be
+@@ -24,10 +24,14 @@ LDFLAGS = $(LADD)
+ XMLRPC_C_CONFIG = $(BLDDIR)/xmlrpc-c-config.test
+
+
++SERVERPROGS_CGI = \
++ xmlrpc_sample_add_server.cgi
++
+ SERVERPROGS_ABYSS = \
+ xmlrpc_inetd_server \
+ xmlrpc_loop_server \
+ xmlrpc_sample_add_server \
++ callinfo_abyss_server \
+
+ CLIENTPROGS = \
+ xmlrpc_sample_add_client \
+@@ -45,7 +49,11 @@ ifeq ($(MUST_BUILD_CLIENT),yes)
+ PROGS += $(CLIENTPROGS)
+ endif
+
+-PROGS += pstream_inetd_server
++ifeq ($(ENABLE_CGI_SERVER),yes)
++ PROGS += $(SERVERPROGS_CGI)
++endif
++
++PROGS += pstream_inetd_server pstream_serial_server
+
+ ifeq ($(MUST_BUILD_CLIENT),yes)
+ PROGS += pstream_client
+@@ -53,37 +61,43 @@ endif
+
+ INCLUDES = -I. $(shell $(XMLRPC_C_CONFIG) c++2 client abyss-server --cflags)
+
+-LDADD_SERVER_ABYSS = \
+- $(shell $(XMLRPC_C_CONFIG) c++2 abyss-server --ldadd)
++LIBS_SERVER_ABYSS = \
++ $(shell $(XMLRPC_C_CONFIG) c++2 abyss-server --libs)
+
+-LDADD_CLIENT = \
+- $(shell $(XMLRPC_C_CONFIG) c++2 client --ldadd)
++LIBS_SERVER_CGI = \
++ $(shell $(XMLRPC_C_CONFIG) c++2 cgi-server --libs)
+
+-LDADD_BASE = \
+- $(shell $(XMLRPC_C_CONFIG) c++2 --ldadd)
++LIBS_CLIENT = \
++ $(shell $(XMLRPC_C_CONFIG) c++2 client --libs)
++
++LIBS_BASE = \
++ $(shell $(XMLRPC_C_CONFIG) c++2 --libs)
+
+ all: $(PROGS)
+
++$(SERVERPROGS_CGI):%.cgi:%_cgi.o
++ $(CXXLD) -o $@ $^ $(LIBS_SERVER_CGI) $(LDFLAGS)
++
+ $(SERVERPROGS_ABYSS):%:%.o
+- $(CXXLD) -o $@ $(LDFLAGS) $^ $(LDADD_SERVER_ABYSS)
++ $(CXXLD) -o $@ $^ $(LIBS_SERVER_ABYSS) $(LDFLAGS)
+
+ $(CLIENTPROGS):%:%.o
+- $(CXXLD) -o $@ $(LDFLAGS) $^ $(LDADD_CLIENT)
++ $(CXXLD) -o $@ $^ $(LIBS_CLIENT) $(LDFLAGS)
+
+
+-LDADD_PSTREAM_CLIENT = \
+- $(shell $(XMLRPC_C_CONFIG) c++2 client --ldadd)
++LIBS_PSTREAM_CLIENT = \
++ $(shell $(XMLRPC_C_CONFIG) c++2 client --libs)
+
+ pstream_client:%:%.o
+- $(CXXLD) -o $@ $(LDFLAGS) $^ $(LDADD_PSTREAM_CLIENT)
++ $(CXXLD) -o $@ $^ $(LIBS_PSTREAM_CLIENT) $(LDFLAGS)
+
+-LDADD_PSTREAM_SERVER = \
+- $(shell $(XMLRPC_C_CONFIG) c++2 pstream-server --ldadd)
++LIBS_PSTREAM_SERVER = \
++ $(shell $(XMLRPC_C_CONFIG) c++2 pstream-server --libs)
+
+-pstream_inetd_server:%:%.o
+- $(CXXLD) -o $@ $(LDFLAGS) $^ $(LDADD_PSTREAM_SERVER)
++pstream_inetd_server pstream_serial_server:%:%.o
++ $(CXXLD) -o $@ $^ $(LIBS_PSTREAM_SERVER) $(LDFLAGS)
+
+-OBJECTS = $(PROGS:%=%.o)
++OBJECTS = $(patsubst %,%.o,$(patsubst %.cgi,%_cgi,$(PROGS)))
+
+ $(OBJECTS):%.o:%.cpp
+ $(CXX) -c $(INCLUDES) $(CXXFLAGS) $<
+@@ -97,11 +111,9 @@ config.h:
+ xmlrpc_amconfig.h:
+ $(LN_S) $(BLDDIR)/$@ .
+
+-include $(SRCDIR)/common.mk
+-
+ .PHONY: clean
+-clean: clean-common
+- rm -f $(PROGS) config.h xmlrpc_amconfig.h
++clean:
++ rm -f $(PROGS) *.o config.h xmlrpc_amconfig.h
+
+ .PHONY: distclean
+ distclean: clean
+diff --git a/libs/xmlrpc-c/examples/cpp/meerkat-app-list.cpp b/libs/xmlrpc-c/examples/cpp/meerkat-app-list.cpp
+deleted file mode 100644
+index c2bd1e3..0000000
+--- a/libs/xmlrpc-c/examples/cpp/meerkat-app-list.cpp
++++ /dev/null
+@@ -1,108 +0,0 @@
+-// List recently-released Linux applications. (Written in C++.)
+-// For more details about O'Reilly's excellent Meerkat news service, see:
+-// http://www.oreillynet.com/pub/a/rss/2000/11/14/meerkat_xmlrpc.html */
+-
+-#include <iostream>
+-#include <sstream>
+-#include <string>
+-
+-using namespace std;
+-
+-#include <xmlrpc-c/oldcppwrapper.hpp>
+-
+-#define NAME "XML-RPC C++ Meerkat Query Demo"
+-#define VERSION "0.1"
+-#define MEERKAT_URL "http://www.oreillynet.com/meerkat/xml-rpc/server.php"
+-#define SOFTWARE_LINUX (6)
+-
+-static void list_apps (int hours) {
+-
+- // Build our time_period parameter.
+- ostringstream time_period_stream;
+- time_period_stream << hours << "HOUR";
+- string time_period = time_period_stream.str();
+-
+- // Assemble our meerkat query recipe.
+- XmlRpcValue recipe = XmlRpcValue::makeStruct();
+- recipe.structSetValue("category", XmlRpcValue::makeInt(SOFTWARE_LINUX));
+- recipe.structSetValue("time_period", XmlRpcValue::makeString(time_period));
+- recipe.structSetValue("descriptions", XmlRpcValue::makeInt(76));
+-
+- // Build our parameter array.
+- XmlRpcValue param_array = XmlRpcValue::makeArray();
+- param_array.arrayAppendItem(recipe);
+-
+- // Create a client pointing to Meerkat.
+- XmlRpcClient meerkat (MEERKAT_URL);
+-
+- // Perform the query.
+- XmlRpcValue apps = meerkat.call("meerkat.getItems", param_array);
+-
+- // Print our results.
+- int first = 1;
+- size_t app_count = apps.arraySize();
+- for (size_t i = 0; i < app_count; i++) {
+- XmlRpcValue app = apps.arrayGetItem(i);
+-
+- // Get some information about our application.
+- string title = app.structGetValue("title").getString();
+- string link = app.structGetValue("link").getString();
+- string description = app.structGetValue("description").getString();
+-
+- // Print a separator line if necessary.
+- if (first)
+- first = 0;
+- else
+- cout << endl;
+-
+- // Print this application entry.
+- if (description.size() > 0) {
+- cout << title << endl << description << endl << link << endl;
+- } else {
+- cout << title << endl << description << endl << link << endl;
+- }
+- }
+-}
+-
+-// Print out a usage message.
+-static void usage (void)
+-{
+- cerr << "Usage: meekat-app-list [hours]" << endl;
+- cerr << "Data from <http://www.oreillynet.com/meerkat/>." << endl;
+- exit(1);
+-}
+-
+-int main (int argc, char **argv) {
+- int status = 0;
+- int hours = 25;
+-
+- // Parse our command-line arguments.
+- if (argc == 1) {
+- // Use default value for hours.
+- } else if (argc == 2) {
+- hours = atoi(argv[1]);
+- }
+- if (hours == 0)
+- usage();
+- if (hours > 49) {
+- cerr << "It's not nice to ask for > 49 hours at once." << endl;
+- exit(1);
+- }
+-
+- // Start up our client library.
+- XmlRpcClient::Initialize(NAME, VERSION);
+-
+- // Call our implementation, and watch out for faults.
+- try {
+- list_apps(hours);
+- } catch (XmlRpcFault& fault) {
+- cerr << argv[0] << ": XML-RPC fault #" << fault.getFaultCode()
+- << ": " << fault.getFaultString() << endl;
+- status = 1;
+- }
+-
+- // Shut down our client library.
+- XmlRpcClient::Terminate();
+-
+- return status;
+-}
+diff --git a/libs/xmlrpc-c/examples/cpp/pstream_client.cpp b/libs/xmlrpc-c/examples/cpp/pstream_client.cpp
+index 7a8f322..738e8ba 100644
+--- a/libs/xmlrpc-c/examples/cpp/pstream_client.cpp
++++ b/libs/xmlrpc-c/examples/cpp/pstream_client.cpp
+@@ -25,7 +25,7 @@
+ #include <string>
+ #include <iostream>
+ #include <unistd.h>
+-#include <sys/signal.h>
++#include <signal.h>
+ #include <xmlrpc-c/girerr.hpp>
+ #include <xmlrpc-c/base.hpp>
+ #include <xmlrpc-c/client.hpp>
+diff --git a/libs/xmlrpc-c/examples/cpp/pstream_inetd_server.cpp b/libs/xmlrpc-c/examples/cpp/pstream_inetd_server.cpp
+index 65f1aa5..00d930c 100644
+--- a/libs/xmlrpc-c/examples/cpp/pstream_inetd_server.cpp
++++ b/libs/xmlrpc-c/examples/cpp/pstream_inetd_server.cpp
+@@ -22,7 +22,7 @@
+ #endif
+ #include <cassert>
+ #include <iostream>
+-#include <sys/signal.h>
++#include <signal.h>
+
+ #include <xmlrpc-c/base.hpp>
+ #include <xmlrpc-c/registry.hpp>
+@@ -76,12 +76,7 @@ main(int const,
+ .socketFd(STDIN_FILENO)
+ .registryP(&myRegistry));
+
+- for (bool clientHasDisconnected = false; !clientHasDisconnected;)
+- server.runOnce(&clientHasDisconnected);
+- // This reads one packet (containing an XML-RPC call message)
+- // from Standard Input, executes the indicated RPC, and writes
+- // one packet containing the XML-RPC response message to
+- // Standard Input.
++ server.run();
+
+ } catch (exception const& e) {
+ cerr << "Something threw an error: " << e.what() << endl;
+diff --git a/libs/xmlrpc-c/examples/cpp/xmlrpc_inetd_server.cpp b/libs/xmlrpc-c/examples/cpp/xmlrpc_inetd_server.cpp
+index 0dd902a..3bfe186 100644
+--- a/libs/xmlrpc-c/examples/cpp/xmlrpc_inetd_server.cpp
++++ b/libs/xmlrpc-c/examples/cpp/xmlrpc_inetd_server.cpp
+@@ -1,6 +1,25 @@
+ /* A simple XML-RPC server that runs under Inetd. I.e. it lets the invoking
+ program handle all the connection switching and simply processes one
+ RPC on the provided connection (Standard Input) and exits.
++
++ A typical example of where this would be useful is with an Inetd
++ "super server."
++
++ xmlrpc_sample_add_server.cpp is a server that does the same thing,
++ but you give it a TCP port number and it listens for TCP connections
++ and processes RPCs ad infinitum. xmlrpc_socket_server.c is halfway
++ in between those -- you give it an already bound and listening
++ socket, and it listens for TCP connections and processes RPCs ad
++ infinitum.
++
++ Here is an easy way to test this program:
++
++ socketexec --accept --local_port=8080 --stdin -- ./xmlrpc_inetd_server
++
++ Now run the client program 'xmlrpc_sample_add_client'. Socketexec
++ will accept the connection that the client program requests and pass it
++ to this program on Standard Input. This program will perform the RPC,
++ respond to the client, then exit.
+ */
+
+ #ifndef WIN32
+@@ -49,10 +68,8 @@ main(int const,
+ myRegistry.addMethod("sample.add", sampleAddMethodP);
+
+ xmlrpc_c::serverAbyss myAbyssServer(
+- myRegistry,
+- 8080, // TCP port on which to listen
+- "/tmp/xmlrpc_log" // Log file
+- );
++ xmlrpc_c::serverAbyss::constrOpt()
++ .registryP(&myRegistry));
+
+ myAbyssServer.runConn(STDIN_FILENO);
+ /* This reads the HTTP POST request from Standard Input and
+diff --git a/libs/xmlrpc-c/examples/cpp/xmlrpc_sample_add_server.cpp b/libs/xmlrpc-c/examples/cpp/xmlrpc_sample_add_server.cpp
+index ff96ae2..f499e5a 100644
+--- a/libs/xmlrpc-c/examples/cpp/xmlrpc_sample_add_server.cpp
++++ b/libs/xmlrpc-c/examples/cpp/xmlrpc_sample_add_server.cpp
+@@ -62,10 +62,9 @@ main(int const,
+ myRegistry.addMethod("sample.add", sampleAddMethodP);
+
+ xmlrpc_c::serverAbyss myAbyssServer(
+- myRegistry,
+- 8080, // TCP port on which to listen
+- "/tmp/xmlrpc_log" // Log file
+- );
++ xmlrpc_c::serverAbyss::constrOpt()
++ .registryP(&myRegistry)
++ .portNumber(8080));
+
+ myAbyssServer.run();
+ // xmlrpc_c::serverAbyss.run() never returns
+diff --git a/libs/xmlrpc-c/examples/gen_sample_add_xml.c b/libs/xmlrpc-c/examples/gen_sample_add_xml.c
+index 736d822..dd65699 100644
+--- a/libs/xmlrpc-c/examples/gen_sample_add_xml.c
++++ b/libs/xmlrpc-c/examples/gen_sample_add_xml.c
+@@ -28,7 +28,7 @@ die_if_fault_occurred(xmlrpc_env * const envP) {
+
+ int
+ main(int const argc,
+- const char ** const argv ATTR_UNUSED) {
++ const char ** const argv) {
+
+ char * const methodName = "sample.add";
+
+diff --git a/libs/xmlrpc-c/examples/interrupted_client.c b/libs/xmlrpc-c/examples/interrupted_client.c
+index 89cd4e8..1652be2 100644
+--- a/libs/xmlrpc-c/examples/interrupted_client.c
++++ b/libs/xmlrpc-c/examples/interrupted_client.c
+@@ -2,6 +2,7 @@
+ both by timeout and by control-C.
+ */
+
++#define _XOPEN_SOURCE 600
+ #include <stdlib.h>
+ #include <unistd.h>
+ #include <stdio.h>
+@@ -110,7 +111,7 @@ addInterruptibly(xmlrpc_client * const clientP,
+
+ int
+ main(int const argc,
+- const char ** const argv ATTR_UNUSED) {
++ const char ** const argv) {
+
+ const char * const serverUrl = "http://localhost:8080/RPC2";
+
+diff --git a/libs/xmlrpc-c/examples/interrupted_server.c b/libs/xmlrpc-c/examples/interrupted_server.c
+index 9d5c593..56bac81 100644
+--- a/libs/xmlrpc-c/examples/interrupted_server.c
++++ b/libs/xmlrpc-c/examples/interrupted_server.c
+@@ -1,4 +1,4 @@
+-/* A simple standalone XML-RPC server based on Abyss.
++/* A simple standalone XML-RPC server program based on Abyss.
+
+ You can terminate this server in controlled fashion with a SIGTERM
+ signal.
+@@ -7,6 +7,7 @@
+ simpler code, but it is not interruptible with SIGTERM.
+ */
+
++#define _XOPEN_SOURCE 600
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <signal.h>
+@@ -36,7 +37,7 @@ dieIfFailed(const char * const description,
+ static xmlrpc_server_abyss_t * serverToTerminateP;
+
+ static void
+-sigtermHandler(int const signalClass ATTR_UNUSED) {
++sigtermHandler(int const signalClass) {
+
+ xmlrpc_env env;
+
+@@ -82,8 +83,8 @@ restoreSigtermHandler(void){
+ static xmlrpc_value *
+ sample_add(xmlrpc_env * const envP,
+ xmlrpc_value * const paramArrayP,
+- void * const serverInfo ATTR_UNUSED,
+- void * const channelInfo ATTR_UNUSED) {
++ void * const serverInfo,
++ void * const channelInfo) {
+
+ xmlrpc_int x, y, z;
+
+@@ -105,6 +106,11 @@ int
+ main(int const argc,
+ const char ** const argv) {
+
++ struct xmlrpc_method_info3 const methodInfo = {
++ .methodName = "sample.add",
++ .methodFunction = &sample_add,
++ .serverInfo = NULL
++ };
+ xmlrpc_server_abyss_parms serverparm;
+ xmlrpc_server_abyss_t * serverP;
+ xmlrpc_registry * registryP;
+@@ -126,8 +132,7 @@ main(int const argc,
+ registryP = xmlrpc_registry_new(&env);
+ dieIfFailed("xmlrpc_registry_new", env);
+
+- xmlrpc_registry_add_method2(
+- &env, registryP, "sample.add", &sample_add, NULL, NULL, NULL);
++ xmlrpc_registry_add_method3(&env, registryP, &methodInfo);
+ dieIfFailed("xmlrpc_registry_add_method2", env);
+
+ serverparm.config_file_name = NULL;
+diff --git a/libs/xmlrpc-c/examples/query-meerkat.c b/libs/xmlrpc-c/examples/query-meerkat.c
+deleted file mode 100644
+index e566654..0000000
+--- a/libs/xmlrpc-c/examples/query-meerkat.c
++++ /dev/null
+@@ -1,156 +0,0 @@
+-/* A simple news-searcher, written in C to demonstrate how to use the
+- xmplrpc-c client library.
+-
+- This program connects to an XMLRPC server that O'Reilly runs on the
+- Internet, gets some information, and displays it on Standard Output.
+-
+- Note that that server is not in any way designed specifically for xmlrpc-c.
+- It simply implements the XMLRPC protocol, and works with any client that
+- implements XMLRPC.
+-
+- The service that the aforementioned server provides is that it gives you
+- a list of news articles that match a certain regular expression. You give
+- that regular expression an argument to this client program.
+-
+- For more details about O'Reilly's excellent Meerkat news service, see:
+- http://www.oreillynet.com/pub/a/rss/2000/11/14/meerkat_xmlrpc.html
+-*/
+-
+-#include <stdlib.h>
+-#include <stdio.h>
+-#include <string.h>
+-
+-#include <xmlrpc-c/base.h>
+-#include <xmlrpc-c/client.h>
+-
+-#include "config.h" /* information about this build environment */
+-
+-#define NAME "XML-RPC C Meerkat Query Demo"
+-#define VERSION "1.0"
+-#define MEERKAT_URL "http://www.oreillynet.com/meerkat/xml-rpc/server.php"
+-
+-struct cmdline {
+- const char * searchArg;
+- int hours;
+-};
+-
+-
+-static void
+-parseCommandLine(int const argc,
+- const char ** const argv,
+- struct cmdline * const cmdlineP) {
+-
+- if (argc-1 < 1) {
+- fprintf(stderr, "Need at least one argument: "
+- "A mysql regular expression "
+- "search pattern. Try 'query-meerkat Linux'\n");
+- exit(1);
+- } else {
+- cmdlineP->searchArg = argv[1];
+-
+- if (argc-1 < 2) {
+- cmdlineP->hours = 24;
+- } else {
+- cmdlineP->hours = atoi(argv[2]);
+- if (cmdlineP->hours > 49) {
+- fprintf(stderr, "It's not nice to ask for > 49 hours "
+- "at once.\n");
+- exit(1);
+- }
+- if (argc-1 > 2) {
+- fprintf(stderr, "There are at most 2 arguments: "
+- "search pattern "
+- "and number of hours.");
+- exit(1);
+- }
+- }
+- }
+-}
+-
+-
+-
+-static void
+-die_if_fault_occurred(xmlrpc_env * const env) {
+- /* We're a command-line utility, so we abort if an error occurs. */
+- if (env->fault_occurred) {
+- fprintf(stderr, "XML-RPC Fault #%d: %s\n",
+- env->fault_code, env->fault_string);
+- exit(1);
+- }
+-}
+-
+-
+-
+-/* Hey! We fit in one function. */
+-int
+-main(int const argc,
+- const char** const argv) {
+-
+- struct cmdline cmdline;
+- char time_period[16];
+- xmlrpc_env env;
+- xmlrpc_value *stories, *story;
+- size_t size, i;
+- int first;
+-
+- parseCommandLine(argc, argv, &cmdline);
+-
+- snprintf(time_period, sizeof(time_period), "%dHOUR", cmdline.hours);
+-
+- xmlrpc_env_init(&env);
+-
+- /* Set up our client. */
+- xmlrpc_client_init2(&env, XMLRPC_CLIENT_NO_FLAGS, NAME, VERSION, NULL, 0);
+-
+- die_if_fault_occurred(&env);
+-
+- /* Ask Meerkat to look for matching stories. */
+- stories = xmlrpc_client_call(&env, MEERKAT_URL,
+- "meerkat.getItems", "({s:s,s:i,s:s})",
+- "search", cmdline.searchArg,
+- "descriptions", (xmlrpc_int32) 76,
+- "time_period", time_period);
+- die_if_fault_occurred(&env);
+-
+- /* Loop over the stories. */
+- size = xmlrpc_array_size(&env, stories);
+- die_if_fault_occurred(&env);
+- first = 1;
+- for (i = 0; i < size; i++) {
+- const char * title;
+- const char * link;
+- const char * description;
+-
+- /* Extract the useful information from our story. */
+- story = xmlrpc_array_get_item(&env, stories, i);
+- die_if_fault_occurred(&env);
+- xmlrpc_decompose_value(&env, story, "{s:s,s:s,s:s,*}",
+- "title", &title,
+- "link", &link,
+- "description", &description);
+- die_if_fault_occurred(&env);
+-
+- /* Print a separator line if necessary. */
+- if (first)
+- first = 0;
+- else
+- printf("\n");
+-
+- /* Print the story. */
+- if (strlen(description) > 0) {
+- printf("%s\n%s\n%s\n", title, description, link);
+- } else {
+- printf("%s\n%s\n", title, link);
+- }
+- free((char*)title);
+- free((char*)link);
+- free((char*)description);
+- }
+-
+- /* Shut down our client. */
+- xmlrpc_DECREF(stories);
+- xmlrpc_env_clean(&env);
+- xmlrpc_client_cleanup();
+-
+- return 0;
+-}
+diff --git a/libs/xmlrpc-c/examples/synch_client.c b/libs/xmlrpc-c/examples/synch_client.c
+index 589aa7b..b9b62a2 100644
+--- a/libs/xmlrpc-c/examples/synch_client.c
++++ b/libs/xmlrpc-c/examples/synch_client.c
+@@ -1,4 +1,4 @@
+-/* A simple synchronous XML-RPC client written in C. */
++/* A simple synchronous XML-RPC client program written in C. */
+
+ #include <stdlib.h>
+ #include <stdio.h>
+@@ -24,7 +24,7 @@ die_if_fault_occurred(xmlrpc_env * const envP) {
+
+ int
+ main(int const argc,
+- const char ** const argv ATTR_UNUSED) {
++ const char ** const argv) {
+
+ xmlrpc_env env;
+ xmlrpc_value * resultP;
+diff --git a/libs/xmlrpc-c/examples/xmlrpc_asynch_client.c b/libs/xmlrpc-c/examples/xmlrpc_asynch_client.c
+index ec3bd31..ff56dfd 100644
+--- a/libs/xmlrpc-c/examples/xmlrpc_asynch_client.c
++++ b/libs/xmlrpc-c/examples/xmlrpc_asynch_client.c
+@@ -1,4 +1,4 @@
+-/* A simple asynchronous XML-RPC client written in C, as an example of
++/* A simple asynchronous XML-RPC client program written in C, as an example of
+ Xmlrpc-c asynchronous RPC facilities. This is the same as the
+ simpler synchronous client xmlprc_sample_add_client.c, except that
+ it adds 3 different pairs of numbers with the summation RPCs going on
+@@ -35,7 +35,7 @@ static void
+ handle_sample_add_response(const char * const serverUrl,
+ const char * const methodName,
+ xmlrpc_value * const paramArrayP,
+- void * const user_data ATTR_UNUSED,
++ void * const user_data,
+ xmlrpc_env * const faultP,
+ xmlrpc_value * const resultP) {
+
+@@ -70,7 +70,7 @@ handle_sample_add_response(const char * const serverUrl,
+
+ int
+ main(int const argc,
+- const char ** const argv ATTR_UNUSED) {
++ const char ** const argv) {
+
+ const char * const serverUrl = "http://localhost:8080/RPC2";
+ const char * const methodName = "sample.add";
+diff --git a/libs/xmlrpc-c/examples/xmlrpc_inetd_server.c b/libs/xmlrpc-c/examples/xmlrpc_inetd_server.c
+index 196b42a..8b1bb48 100644
+--- a/libs/xmlrpc-c/examples/xmlrpc_inetd_server.c
++++ b/libs/xmlrpc-c/examples/xmlrpc_inetd_server.c
+@@ -1,4 +1,4 @@
+-/* A simple standalone XML-RPC server based on Abyss that processes a
++/* A simple standalone XML-RPC server program based on Abyss that processes a
+ single RPC from an existing TCP connection on Standard Input.
+
+ A typical example of where this would be useful is with an Inetd
+@@ -21,6 +21,7 @@
+ respond to the client, then exit.
+ */
+
++#define _XOPEN_SOURCE 600
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <signal.h>
+@@ -63,8 +64,8 @@ setupSignalHandlers(void) {
+ static xmlrpc_value *
+ sample_add(xmlrpc_env * const envP,
+ xmlrpc_value * const paramArrayP,
+- void * const serverInfo ATTR_UNUSED,
+- void * const channelInfo ATTR_UNUSED) {
++ void * const serverInfo,
++ void * const channelInfo) {
+
+ xmlrpc_int x, y, z;
+
+@@ -86,6 +87,11 @@ int
+ main(int const argc,
+ const char ** const argv) {
+
++ struct xmlrpc_method_info3 const methodInfo = {
++ .methodName = "sample.add",
++ .methodFunction = &sample_add,
++ .serverInfo = NULL
++ };
+ TServer abyssServer;
+ xmlrpc_registry * registryP;
+ xmlrpc_env env;
+@@ -101,8 +107,7 @@ main(int const argc,
+
+ registryP = xmlrpc_registry_new(&env);
+
+- xmlrpc_registry_add_method2(
+- &env, registryP, "sample.add", &sample_add, NULL, NULL, NULL);
++ xmlrpc_registry_add_method3(&env, registryP, &methodInfo);
+
+ ServerCreateNoAccept(&abyssServer, "XmlRpcServer", NULL, NULL);
+
+diff --git a/libs/xmlrpc-c/examples/xmlrpc_loop_server.c b/libs/xmlrpc-c/examples/xmlrpc_loop_server.c
+index 2553ea6..af0c750 100644
+--- a/libs/xmlrpc-c/examples/xmlrpc_loop_server.c
++++ b/libs/xmlrpc-c/examples/xmlrpc_loop_server.c
+@@ -1,11 +1,14 @@
+-/* A simple standalone XML-RPC server based on Abyss that contains a
++/* A simple standalone XML-RPC server program based on Abyss that contains a
+ simple one-thread request processing loop.
+
++ This uses the "provide your own Abyss server" mode of operation.
++
+ xmlrpc_sample_add_server.c is a server that does the same thing, but
+ does it by running a full Abyss daemon in the background, so it has
+ less control over how the requests are served.
+ */
+
++#define _XOPEN_SOURCE 600
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <signal.h>
+@@ -66,7 +69,7 @@ printPeerIpAddr(TSession * const abyssSessionP) {
+ static xmlrpc_value *
+ sample_add(xmlrpc_env * const envP,
+ xmlrpc_value * const paramArrayP,
+- void * const serverInfo ATTR_UNUSED,
++ void * const serverInfo,
+ void * const channelInfo) {
+
+ xmlrpc_int x, y, z;
+@@ -117,6 +120,11 @@ int
+ main(int const argc,
+ const char ** const argv) {
+
++ struct xmlrpc_method_info3 const methodInfo = {
++ .methodName = "sample.add",
++ .methodFunction = &sample_add,
++ .serverInfo = NULL
++ };
+ TServer abyssServer;
+ xmlrpc_registry * registryP;
+ xmlrpc_env env;
+@@ -136,8 +144,7 @@ main(int const argc,
+
+ registryP = xmlrpc_registry_new(&env);
+
+- xmlrpc_registry_add_method2(
+- &env, registryP, "sample.add", &sample_add, NULL, NULL, NULL);
++ xmlrpc_registry_add_method3(&env, registryP, &methodInfo);
+
+ xmlrpc_registry_set_shutdown(registryP,
+ &requestShutdown, &terminationRequested);
+diff --git a/libs/xmlrpc-c/examples/xmlrpc_sample_add_client.c b/libs/xmlrpc-c/examples/xmlrpc_sample_add_client.c
+index f675a92..3a219dd 100644
+--- a/libs/xmlrpc-c/examples/xmlrpc_sample_add_client.c
++++ b/libs/xmlrpc-c/examples/xmlrpc_sample_add_client.c
+@@ -1,7 +1,10 @@
+-/* A simple synchronous XML-RPC client written in C, as an example of
++/* A simple synchronous XML-RPC client program written in C, as an example of
+ an Xmlrpc-c client. This invokes the sample.add procedure that the
+- Xmlrpc-c example server.c server provides. I.e. it adds to numbers
+- together, the hard way.
++ Xmlrpc-c example xmlrpc_sample_add_server.c server provides. I.e. it adds
++ two numbers together, the hard way.
++
++ This sends the RPC to the server running on the local system ("localhost"),
++ HTTP Port 8080.
+ */
+
+ #include <stdlib.h>
+@@ -16,9 +19,9 @@
+ #define VERSION "1.0"
+
+ static void
+-die_if_fault_occurred (xmlrpc_env * const envP) {
++dieIfFaultOccurred (xmlrpc_env * const envP) {
+ if (envP->fault_occurred) {
+- fprintf(stderr, "XML-RPC Fault: %s (%d)\n",
++ fprintf(stderr, "ERROR: %s (%d)\n",
+ envP->fault_string, envP->fault_code);
+ exit(1);
+ }
+@@ -28,7 +31,7 @@ die_if_fault_occurred (xmlrpc_env * const envP) {
+
+ int
+ main(int const argc,
+- const char ** const argv ATTR_UNUSED) {
++ const char ** const argv) {
+
+ xmlrpc_env env;
+ xmlrpc_value * resultP;
+@@ -46,7 +49,7 @@ main(int const argc,
+
+ /* Start up our XML-RPC client library. */
+ xmlrpc_client_init2(&env, XMLRPC_CLIENT_NO_FLAGS, NAME, VERSION, NULL, 0);
+- die_if_fault_occurred(&env);
++ dieIfFaultOccurred(&env);
+
+ printf("Making XMLRPC call to server url '%s' method '%s' "
+ "to request the sum "
+@@ -55,11 +58,11 @@ main(int const argc,
+ /* Make the remote procedure call */
+ resultP = xmlrpc_client_call(&env, serverUrl, methodName,
+ "(ii)", (xmlrpc_int32) 5, (xmlrpc_int32) 7);
+- die_if_fault_occurred(&env);
++ dieIfFaultOccurred(&env);
+
+ /* Get our sum and print it out. */
+ xmlrpc_read_int(&env, resultP, &sum);
+- die_if_fault_occurred(&env);
++ dieIfFaultOccurred(&env);
+ printf("The sum is %d\n", sum);
+
+ /* Dispose of our result value. */
+diff --git a/libs/xmlrpc-c/examples/xmlrpc_sample_add_server.c b/libs/xmlrpc-c/examples/xmlrpc_sample_add_server.c
+index dbd2861..a4a4370 100644
+--- a/libs/xmlrpc-c/examples/xmlrpc_sample_add_server.c
++++ b/libs/xmlrpc-c/examples/xmlrpc_sample_add_server.c
+@@ -1,4 +1,24 @@
+-/* A simple standalone XML-RPC server written in C. */
++/* A simple standalone XML-RPC server program written in C. */
++
++/* This server knows one RPC class (besides the system classes):
++ "sample.add".
++
++ The program takes one argument: the HTTP port number on which the server
++ is to accept connections, in decimal.
++
++ You can use the example program 'xmlrpc_sample_add_client' to send an RPC
++ to this server.
++
++ Example:
++
++ $ ./xmlrpc_sample_add_server 8080&
++ $ ./xmlrpc_sample_add_client
++
++ For more fun, run client and server in separate terminals and turn on
++ tracing for each:
++
++ $ export XMLRPC_TRACE_XML=1
++*/
+
+ #include <stdlib.h>
+ #include <stdio.h>
+@@ -25,8 +45,8 @@
+ static xmlrpc_value *
+ sample_add(xmlrpc_env * const envP,
+ xmlrpc_value * const paramArrayP,
+- void * const serverInfo ATTR_UNUSED,
+- void * const channelInfo ATTR_UNUSED) {
++ void * const serverInfo,
++ void * const channelInfo) {
+
+ xmlrpc_int32 x, y, z;
+
+@@ -54,6 +74,10 @@ int
+ main(int const argc,
+ const char ** const argv) {
+
++ struct xmlrpc_method_info3 const methodInfo = {
++ /* .methodName = */ "sample.add",
++ /* .methodFunction = */ &sample_add,
++ };
+ xmlrpc_server_abyss_parms serverparm;
+ xmlrpc_registry * registryP;
+ xmlrpc_env env;
+@@ -70,8 +94,7 @@ main(int const argc,
+
+ registryP = xmlrpc_registry_new(&env);
+
+- xmlrpc_registry_add_method2(
+- &env, registryP, "sample.add", &sample_add, NULL, NULL, NULL);
++ xmlrpc_registry_add_method3(&env, registryP, &methodInfo);
+
+ /* In the modern form of the Abyss API, we supply parameters in memory
+ like a normal API. We select the modern form by setting
+diff --git a/libs/xmlrpc-c/examples/xmlrpc_sample_add_server_cgi.c b/libs/xmlrpc-c/examples/xmlrpc_sample_add_server_cgi.c
+index fa476a7..e34c4d7 100644
+--- a/libs/xmlrpc-c/examples/xmlrpc_sample_add_server_cgi.c
++++ b/libs/xmlrpc-c/examples/xmlrpc_sample_add_server_cgi.c
+@@ -1,4 +1,22 @@
+-/* A simple standalone XML-RPC server written in C. */
++/* A CGI script written in C to effect a simple XML-RPC server.
++
++ Example of use:
++
++ - Compile this as the executable 'xmlrpc_sample_add_server.cgi'
++
++ - Place the .cgi file in web server www.example.com's /cgi-bin
++ directory.
++
++ - Configure the web server to permit CGI scripts in /cgi-bin
++ (Apache ExecCgi directory option).
++
++ - Configure the web server to recognize this .cgi file as a CGI
++ script (Apache "AddHandler cgi-script ..." or ScriptAlias).
++
++ - $ xmlrpc http://www.example.com/cgi-bin/xmlrpc_sample_add_server.cgi \
++ sample.add i/5 i/7
++*/
++
+
+ #include <stdlib.h>
+ #include <stdio.h>
+@@ -12,7 +30,7 @@
+ static xmlrpc_value *
+ sample_add(xmlrpc_env * const envP,
+ xmlrpc_value * const paramArrayP,
+- void * const user_data ATTR_UNUSED) {
++ void * const user_data) {
+
+ xmlrpc_int32 x, y, z;
+
+diff --git a/libs/xmlrpc-c/examples/xmlrpc_server_validatee.c b/libs/xmlrpc-c/examples/xmlrpc_server_validatee.c
+index 927da8a..ad613a8 100644
+--- a/libs/xmlrpc-c/examples/xmlrpc_server_validatee.c
++++ b/libs/xmlrpc-c/examples/xmlrpc_server_validatee.c
+@@ -66,7 +66,7 @@
+ static xmlrpc_value *
+ array_of_structs(xmlrpc_env * const envP,
+ xmlrpc_value * const paramArrayP,
+- void * const user_data ATTR_UNUSED) {
++ void * const user_data) {
+
+ xmlrpc_value * arrayP;
+ xmlrpc_value * retval;
+@@ -114,7 +114,7 @@ array_of_structs(xmlrpc_env * const envP,
+ static xmlrpc_value *
+ count_entities(xmlrpc_env * const envP,
+ xmlrpc_value * const paramArrayP,
+- void * const user_data ATTR_UNUSED) {
++ void * const user_data) {
+
+ const char * str;
+ size_t len, i;
+@@ -154,7 +154,7 @@ count_entities(xmlrpc_env * const envP,
+ static xmlrpc_value *
+ easy_struct(xmlrpc_env * const envP,
+ xmlrpc_value * const paramArrayP,
+- void * const user_data ATTR_UNUSED) {
++ void * const user_data) {
+
+ xmlrpc_int32 larry, moe, curly;
+
+@@ -179,7 +179,7 @@ easy_struct(xmlrpc_env * const envP,
+ static xmlrpc_value *
+ echo_struct(xmlrpc_env * const envP,
+ xmlrpc_value * const paramArrayP,
+- void * const user_data ATTR_UNUSED) {
++ void * const user_data) {
+
+ xmlrpc_value * sP;
+
+@@ -198,9 +198,9 @@ echo_struct(xmlrpc_env * const envP,
+ */
+
+ static xmlrpc_value *
+-many_types(xmlrpc_env * const env ATTR_UNUSED,
++many_types(xmlrpc_env * const env,
+ xmlrpc_value * const param_array,
+- void * const user_data ATTR_UNUSED) {
++ void * const user_data) {
+
+ /* Create another reference to our argument array and return it as is. */
+ xmlrpc_INCREF(param_array);
+@@ -244,7 +244,7 @@ concatenate(xmlrpc_env * const envP,
+ static xmlrpc_value *
+ moderate_array(xmlrpc_env * const envP,
+ xmlrpc_value * const paramArrayP,
+- void * const user_data ATTR_UNUSED) {
++ void * const user_data) {
+
+ xmlrpc_value * retval;
+ xmlrpc_value * arrayP;
+@@ -295,7 +295,7 @@ moderate_array(xmlrpc_env * const envP,
+ static xmlrpc_value *
+ nested_struct(xmlrpc_env * const envP,
+ xmlrpc_value * const paramArrayP,
+- void * const user_data ATTR_UNUSED) {
++ void * const user_data) {
+
+ xmlrpc_value * yearsP;
+ xmlrpc_value * retval;
+@@ -333,7 +333,7 @@ nested_struct(xmlrpc_env * const envP,
+ static xmlrpc_value *
+ struct_return(xmlrpc_env * const envP,
+ xmlrpc_value * const paramArrayP,
+- void * const user_data ATTR_UNUSED) {
++ void * const user_data) {
+
+ xmlrpc_int32 i;
+
+diff --git a/libs/xmlrpc-c/examples/xmlrpc_socket_server.c b/libs/xmlrpc-c/examples/xmlrpc_socket_server.c
+index 2e2cd8b..9cbc5aa 100644
+--- a/libs/xmlrpc-c/examples/xmlrpc_socket_server.c
++++ b/libs/xmlrpc-c/examples/xmlrpc_socket_server.c
+@@ -1,5 +1,5 @@
+-/* A simple standalone XML-RPC server written in C as an example of use of
+- the Xmlrpc-c libraries.
++/* A simple standalone XML-RPC server program written in C as an example of
++ use of the Xmlrpc-c libraries.
+
+ This example expects an already bound socket on Standard Input, ready to
+ be listened on for client connections. Also see xmlrpc_sample_add_server,
+@@ -7,7 +7,11 @@
+ creates the socket itself. Also see xmlrpc_inetd_server.c, which is
+ the same thing except you give it a socket which is already connected
+ to a client.
+- */
++
++ Example:
++
++ $ socketexec -local_port=8080 ./xmlrpc_socket_server
++*/
+
+ #include <stdlib.h>
+ #include <stdio.h>
+@@ -33,7 +37,8 @@
+ static xmlrpc_value *
+ sample_add(xmlrpc_env * const envP,
+ xmlrpc_value * const paramArrayP,
+- void * const user_data ATTR_UNUSED) {
++ void * const serverInfo,
++ void * const channelInfo) {
+
+ xmlrpc_int32 x, y, z;
+
+@@ -61,6 +66,11 @@ int
+ main(int const argc,
+ const char ** const argv) {
+
++ struct xmlrpc_method_info3 const methodInfo = {
++ .methodName = "sample.add",
++ .methodFunction = &sample_add,
++ .serverInfo = NULL
++ };
+ xmlrpc_server_abyss_parms serverparm;
+ xmlrpc_registry * registryP;
+ xmlrpc_env env;
+@@ -77,8 +87,7 @@ main(int const argc,
+
+ registryP = xmlrpc_registry_new(&env);
+
+- xmlrpc_registry_add_method(
+- &env, registryP, NULL, "sample.add", &sample_add, NULL);
++ xmlrpc_registry_add_method3(&env, registryP, &methodInfo);
+
+ /* In the modern form of the Abyss API, we supply parameters in memory
+ like a normal API. We select the modern form by setting
+diff --git a/libs/xmlrpc-c/include/Makefile b/libs/xmlrpc-c/include/Makefile
+index d396ca7..28fd00b 100644
+--- a/libs/xmlrpc-c/include/Makefile
++++ b/libs/xmlrpc-c/include/Makefile
+@@ -36,18 +36,22 @@ xmlrpc-c/config.h: $(BLDDIR)/$(SUBDIR)/xmlrpc-c
+ @echo ' #define XMLRPC_SOCKET SOCKET' >>$@
+ @echo ' #define XMLRPC_HAVE_TIMEVAL 0' >>$@
+ @echo ' #define XMLRPC_HAVE_TIMESPEC 0' >>$@
++ @echo ' #define XMLRPC_HAVE_PTHREAD 0' >>$@
+ @echo '#else' >>$@
+ @echo ' #define XMLRPC_SOCKET int' >>$@
+ @echo ' #define XMLRPC_HAVE_TIMEVAL 1' >>$@
+ @echo ' #define XMLRPC_HAVE_TIMESPEC 1' >>$@
++ @echo ' #define XMLRPC_HAVE_PTHREAD 1' >>$@
+ @echo '#endif' >>$@
+ @echo '' >>$@
+ @echo '#if defined(_MSC_VER)' >>$@
+ @echo ' /* Newer MSVC has long long, but MSVC 6 does not */' >>$@
+ @echo ' #define XMLRPC_INT64 __int64' >>$@
++ @echo ' #define XMLRPC_PRId64 "I64"' >>$@
+ @echo ' #define XMLRPC_INT32 __int32' >>$@
+ @echo '#else' >>$@
+ @echo ' #define XMLRPC_INT64 long long' >>$@
++ @echo ' #define XMLRPC_PRId64 "lld"' >>$@
+ @echo ' #define XMLRPC_INT32 int' >>$@
+ @echo '#endif' >>$@
+ @echo '#endif' >>$@
+@@ -58,7 +62,7 @@ $(BLDDIR)/$(SUBDIR)/xmlrpc-c:
+ COMPAT_LINK_CMDS = \
+ $(LN_S) xmlrpc-c/oldxmlrpc.h xmlrpc.h; \
+ $(LN_S) xmlrpc-c/server.h xmlrpc_server.h; \
+- $(LN_S) xmlrpc-c/server_abyss.h xmlrpc_server_abyss.h; \
++ $(LN_S) xmlrpc-c/server_abyss.h xmlrpc_abyss.h; \
+ $(LN_S) xmlrpc-c/server_w32httpsys.h xmlrpc_server_w32httpsys.h; \
+
+ HEADERS_TO_INSTALL = \
+@@ -67,6 +71,7 @@ HEADERS_TO_INSTALL = \
+ xmlrpc-c/c_util.h \
+ xmlrpc-c/util.h \
+ xmlrpc-c/base.h \
++ xmlrpc-c/json.h \
+ xmlrpc-c/abyss.h \
+ xmlrpc-c/abyss_unixsock.h \
+ xmlrpc-c/abyss_winsock.h \
+@@ -119,22 +124,25 @@ default: all
+ all:
+
+ .PHONY: install-compat-hdr
+-install-compat-hdr:
++install-compat-hdr: install-headers
+ # Install old names of header files for backward compatibility
+ cd $(DESTDIR)$(HEADERINST_DIR); \
+ rm -f xmlrpc.h xmlrpc_client.h xmlrpc_server.h xmlrpc_cgi.h \
+- xmlrpc_server_abyss.h xmlrpc_server_w32httpsys.h \
++ xmlrpc_server_abyss.h xmlrpc_abyss.h \
++ xmlrpc_server_w32httpsys.h \
+ XmlRpcCpp.h; \
+ $(COMPAT_LINK_CMDS)
+
+ .PHONY: install
+ install: install-common install-compat-hdr
+
+-.PHONY: clean distclean dep
++.PHONY: clean
+ clean:
+-distclean:
+ rm -f xmlrpc-c/config.h
+
++.PHONY: distclean
++distclean: clean
++
+ .PHONY: check
+ check:
+
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/abyss.h b/libs/xmlrpc-c/include/xmlrpc-c/abyss.h
+index e044008..627e872 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/abyss.h
++++ b/libs/xmlrpc-c/include/xmlrpc-c/abyss.h
+@@ -21,6 +21,7 @@ extern "C" {
+
+ #include <sys/types.h>
+
++#include <xmlrpc-c/c_util.h>
+ #include <xmlrpc-c/inttypes.h>
+
+ /****************************************************************************
+@@ -33,9 +34,11 @@ typedef int abyss_bool;
+ GLOBAL (STATIC) PROGRAM STUFF
+ ****************************************************************************/
+
++XMLRPC_DLLEXPORT
+ void
+ AbyssInit(const char ** const errorP);
+
++XMLRPC_DLLEXPORT
+ void
+ AbyssTerm(void);
+
+@@ -45,23 +48,29 @@ AbyssTerm(void);
+
+ typedef struct MIMEType MIMEType;
+
++XMLRPC_DLLEXPORT
+ MIMEType *
+ MIMETypeCreate(void);
+
++XMLRPC_DLLEXPORT
+ void
+ MIMETypeDestroy(MIMEType * const MIMETypeP);
+
++XMLRPC_DLLEXPORT
+ void
+ MIMETypeInit(void);
+
++XMLRPC_DLLEXPORT
+ void
+ MIMETypeTerm(void);
+
++XMLRPC_DLLEXPORT
+ abyss_bool
+ MIMETypeAdd2(MIMEType * const MIMETypeP,
+ const char * const type,
+ const char * const ext);
+
++XMLRPC_DLLEXPORT
+ abyss_bool
+ MIMETypeAdd(const char * const type,
+ const char * const ext);
+@@ -81,9 +90,11 @@ typedef struct _TSocket TSocket;
+ #include <xmlrpc-c/abyss_unixsock.h>
+ #endif
+
++XMLRPC_DLLEXPORT
+ void
+ ChanSwitchInit(const char ** const errorP);
+
++XMLRPC_DLLEXPORT
+ void
+ ChanSwitchTerm(void);
+
+@@ -92,18 +103,23 @@ ChanSwitchTerm(void);
+ in abyss_unixsock.h, etc.
+ */
+
++XMLRPC_DLLEXPORT
+ void
+ ChanSwitchDestroy(TChanSwitch * const chanSwitchP);
+
++XMLRPC_DLLEXPORT
+ void
+ ChannelInit(const char ** const errorP);
+
++XMLRPC_DLLEXPORT
+ void
+ ChannelTerm(void);
+
++XMLRPC_DLLEXPORT
+ void
+ ChannelDestroy(TChannel * const channelP);
+
++XMLRPC_DLLEXPORT
+ void
+ SocketDestroy(TSocket * const socketP);
+
+@@ -120,6 +136,7 @@ typedef struct {
+
+ typedef struct _TSession TSession;
+
++XMLRPC_DLLEXPORT
+ abyss_bool
+ ServerCreate(TServer * const serverP,
+ const char * const name,
+@@ -127,11 +144,13 @@ ServerCreate(TServer * const serverP,
+ const char * const filespath,
+ const char * const logfilename);
+
++XMLRPC_DLLEXPORT
+ void
+ ServerCreateSwitch(TServer * const serverP,
+ TChanSwitch * const chanSwitchP,
+ const char ** const errorP);
+
++XMLRPC_DLLEXPORT
+ abyss_bool
+ ServerCreateSocket(TServer * const serverP,
+ const char * const name,
+@@ -140,71 +159,87 @@ ServerCreateSocket(TServer * const serverP,
+ const char * const logfilename);
+
+ #define HAVE_SERVER_CREATE_SOCKET_2
++XMLRPC_DLLEXPORT
+ void
+ ServerCreateSocket2(TServer * const serverP,
+ TSocket * const socketP,
+ const char ** const errorP);
+
++XMLRPC_DLLEXPORT
+ abyss_bool
+ ServerCreateNoAccept(TServer * const serverP,
+ const char * const name,
+ const char * const filespath,
+ const char * const logfilename);
+
++XMLRPC_DLLEXPORT
+ void
+ ServerFree(TServer * const serverP);
+
++XMLRPC_DLLEXPORT
+ void
+ ServerSetName(TServer * const serverP,
+ const char * const name);
+
++XMLRPC_DLLEXPORT
+ void
+ ServerSetFilesPath(TServer * const serverP,
+ const char * const filesPath);
+
++XMLRPC_DLLEXPORT
+ void
+ ServerSetLogFileName(TServer * const serverP,
+ const char * const logFileName);
+
+ #define HAVE_SERVER_SET_KEEPALIVE_TIMEOUT 1
++XMLRPC_DLLEXPORT
+ void
+ ServerSetKeepaliveTimeout(TServer * const serverP,
+ xmlrpc_uint32_t const keepaliveTimeout);
+
+ #define HAVE_SERVER_SET_KEEPALIVE_MAX_CONN 1
++XMLRPC_DLLEXPORT
+ void
+ ServerSetKeepaliveMaxConn(TServer * const serverP,
+ xmlrpc_uint32_t const keepaliveMaxConn);
+
+ #define HAVE_SERVER_SET_TIMEOUT 1
++XMLRPC_DLLEXPORT
+ void
+ ServerSetTimeout(TServer * const serverP,
+ xmlrpc_uint32_t const timeout);
+
+ #define HAVE_SERVER_SET_ADVERTISE 1
++XMLRPC_DLLEXPORT
+ void
+ ServerSetAdvertise(TServer * const serverP,
+ abyss_bool const advertise);
+
+ #define HAVE_SERVER_SET_MIME_TYPE 1
++XMLRPC_DLLEXPORT
+ void
+ ServerSetMimeType(TServer * const serverP,
+ MIMEType * const MIMETypeP);
+
++XMLRPC_DLLEXPORT
+ int
+ ServerInit(TServer * const serverP);
+
++XMLRPC_DLLEXPORT
+ void
+ ServerRun(TServer * const serverP);
+
++XMLRPC_DLLEXPORT
+ void
+ ServerRunOnce(TServer * const serverP);
+
+ /* ServerRunOnce2() is obsolete. See user's guide. */
++XMLRPC_DLLEXPORT
+ void
+ ServerRunOnce2(TServer * const serverP,
+ enum abyss_foreback const foregroundBackground);
+
++XMLRPC_DLLEXPORT
+ void
+ ServerRunChannel(TServer * const serverP,
+ TChannel * const channelP,
+@@ -212,24 +247,30 @@ ServerRunChannel(TServer * const serverP,
+ const char ** const errorP);
+
+ #define HAVE_SERVER_RUN_CONN_2
++XMLRPC_DLLEXPORT
+ void
+ ServerRunConn2(TServer * const serverP,
+ TSocket * const connectedSocketP,
+ const char ** const errorP);
+
++XMLRPC_DLLEXPORT
+ void
+ ServerRunConn(TServer * const serverP,
+ TOsSocket const connectedSocket);
+
++XMLRPC_DLLEXPORT
+ void
+ ServerDaemonize(TServer * const serverP);
+
++XMLRPC_DLLEXPORT
+ void
+ ServerTerminate(TServer * const serverP);
+
++XMLRPC_DLLEXPORT
+ void
+ ServerResetTerminate(TServer * const serverP);
+
++XMLRPC_DLLEXPORT
+ void
+ ServerUseSigchld(TServer * const serverP);
+
+@@ -242,15 +283,31 @@ typedef abyss_bool (*URIHandler) (TSession *); /* deprecated */
+
+ struct URIHandler2;
+
+-typedef void (*initHandlerFn)(struct URIHandler2 *,
+- abyss_bool *);
++typedef void (*initHandlerFn)(struct URIHandler2 *, abyss_bool *);
+
+ typedef void (*termHandlerFn)(void *);
+
++typedef void (*handleReq3Fn)(void *,
++ TSession *,
++ abyss_bool *);
++
+ typedef void (*handleReq2Fn)(struct URIHandler2 *,
+ TSession *,
+ abyss_bool *);
+
++struct ServerReqHandler3 {
++ termHandlerFn term;
++ handleReq3Fn handleReq;
++ void * userdata;
++ size_t handleReqStackSize; /* zero = default */
++};
++
++XMLRPC_DLLEXPORT
++void
++ServerAddHandler3(TServer * const serverP,
++ const struct ServerReqHandler3 * const handlerP,
++ abyss_bool * const successP);
++
+ typedef struct URIHandler2 {
+ initHandlerFn init;
+ termHandlerFn term;
+@@ -259,11 +316,13 @@ typedef struct URIHandler2 {
+ void * userdata;
+ } URIHandler2;
+
++XMLRPC_DLLEXPORT
+ void
+ ServerAddHandler2(TServer * const srvP,
+ URIHandler2 * const handlerP,
+ abyss_bool * const successP);
+
++XMLRPC_DLLEXPORT
+ abyss_bool
+ ServerAddHandler(TServer * const srvP,
+ URIHandler const handler);
+@@ -274,6 +333,7 @@ typedef abyss_bool (*THandlerDflt) (TSession *);
+ for the same type
+ */
+
++XMLRPC_DLLEXPORT
+ void
+ ServerDefaultHandler(TServer * const srvP,
+ THandlerDflt const handler);
+@@ -283,10 +343,12 @@ ServerDefaultHandler(TServer * const srvP,
+ inappropriate for an API.
+ */
+
++XMLRPC_DLLEXPORT
+ abyss_bool
+ ConfReadServerFile(const char * const filename,
+ TServer * const srvP);
+
++XMLRPC_DLLEXPORT
+ void
+ LogWrite(TServer * const srvP,
+ const char * const c);
+@@ -309,7 +371,7 @@ typedef struct {
+ const char * query;
+ /* The query part of the URI (stuff after '?'). NULL if none. */
+ const char * host;
+- /* NOT the value of the host: header. Rather, the name of the
++ /* NOT the value of the host: header field. Rather, the name of the
+ target host (could be part of the host: value; could be from the
+ URI). No port number. NULL if request does not specify a host
+ name.
+@@ -319,7 +381,7 @@ typedef struct {
+ const char * referer;
+ const char * requestline;
+ const char * user;
+- /* Requesting user (from authorization: header). NULL if
++ /* Requesting user (from authorization: header field). NULL if
+ request doesn't specify or handler has not authenticated it.
+ */
+ xmlrpc_uint16_t port;
+@@ -329,98 +391,157 @@ typedef struct {
+ abyss_bool keepalive;
+ } TRequestInfo;
+
++XMLRPC_DLLEXPORT
+ abyss_bool
+ SessionRefillBuffer(TSession * const sessionP);
+
++XMLRPC_DLLEXPORT
+ size_t
+ SessionReadDataAvail(TSession * const sessionP);
+
++XMLRPC_DLLEXPORT
+ void
+ SessionGetReadData(TSession * const sessionP,
+ size_t const max,
+ const char ** const outStartP,
+ size_t * const outLenP);
+
++XMLRPC_DLLEXPORT
+ void
+ SessionGetRequestInfo(TSession * const sessionP,
+ const TRequestInfo ** const requestInfoPP);
+
++XMLRPC_DLLEXPORT
+ void
+ SessionGetChannelInfo(TSession * const sessionP,
+ void ** const channelInfoPP);
+
++XMLRPC_DLLEXPORT
+ void *
+ SessionGetDefaultHandlerCtx(TSession * const sessionP);
+
++XMLRPC_DLLEXPORT
+ char *
+ RequestHeaderValue(TSession * const sessionP,
+ const char * const name);
+
++XMLRPC_DLLEXPORT
+ abyss_bool
+ ResponseAddField(TSession * const sessionP,
+ const char * const name,
+ const char * const value);
+
+-void
++XMLRPC_DLLEXPORT
++abyss_bool
+ ResponseWriteStart(TSession * const sessionP);
+
+ /* For backward compatibility: */
+ #define ResponseWrite ResponseWriteStart
+
++XMLRPC_DLLEXPORT
+ abyss_bool
+ ResponseWriteBody(TSession * const sessionP,
+ const char * const data,
+ xmlrpc_uint32_t const len);
+
++XMLRPC_DLLEXPORT
+ abyss_bool
+ ResponseWriteEnd(TSession * const sessionP);
+
++XMLRPC_DLLEXPORT
+ abyss_bool
+ ResponseChunked(TSession * const sessionP);
+
++XMLRPC_DLLEXPORT
+ xmlrpc_uint16_t
+ ResponseStatusFromErrno(int const errnoArg);
+
++XMLRPC_DLLEXPORT
+ void
+ ResponseStatus(TSession * const sessionP,
+ xmlrpc_uint16_t const code);
+
++XMLRPC_DLLEXPORT
+ void
+ ResponseStatusErrno(TSession * const sessionP);
+
++XMLRPC_DLLEXPORT
+ abyss_bool
+ ResponseContentType(TSession * const serverP,
+ const char * const type);
+
++XMLRPC_DLLEXPORT
+ abyss_bool
+ ResponseContentLength(TSession * const sessionP,
+ xmlrpc_uint64_t const len);
+
++typedef struct {
++/*----------------------------------------------------------------------------
++ These are parameters to control the HTTP "Access Control functions. That's
++ where the client asks whether it is OK to send a request that some other
++ server asked the client to send (e.g. a person web browses a page at
++ a.example.com, and it sends a script that executes on the user's computer
++ and tries to perform an XML-RPC RPC on b.example.com. The user's browser
++ first asks b.example.com if it is OK to do an RPC that is really initiated
++ by a.example.com.
++-----------------------------------------------------------------------------*/
++ const char * allowOrigin;
++ /* This tells what original servers (a.example.com in the example
++ above) are allowed to submit RPCs indirectly to us. The value is a
++ verbatim value for an HTTP Access-Control-Allow-Origin header field
++ (just the value part of the field, not the whole field). "*"
++ therefore means everyone is allowed. "" means no one.
++
++ NULL means not to say anything about access control to the client.
++ */
++ abyss_bool expires;
++ /* The permissions herein expire after a certain period from now.
++ 'maxAge' is that period.
++ */
++ unsigned int maxAge;
++ /* Meaningful only when 'expires' is true. The expiration period
++ in seconds. Zero is valid.
++ */
++} ResponseAccessCtl;
++
++XMLRPC_DLLEXPORT
++void
++ResponseAccessControl(TSession * const abyssSessionP,
++ ResponseAccessCtl const accessControl);
++
++XMLRPC_DLLEXPORT
+ void
+ ResponseError2(TSession * const sessionP,
+ const char * const explanation);
+
++XMLRPC_DLLEXPORT
+ void
+ ResponseError(TSession * const sessionP);
+
++XMLRPC_DLLEXPORT
+ const char *
+ MIMETypeFromExt(const char * const ext);
+
++XMLRPC_DLLEXPORT
+ const char *
+ MIMETypeFromExt2(MIMEType * const MIMETypeP,
+ const char * const ext);
+
++XMLRPC_DLLEXPORT
+ const char *
+ MIMETypeFromFileName2(MIMEType * const MIMETypeP,
+ const char * const fileName);
+
++XMLRPC_DLLEXPORT
+ const char *
+ MIMETypeFromFileName(const char * const fileName);
+
++XMLRPC_DLLEXPORT
+ const char *
+ MIMETypeGuessFromFile2(MIMEType * const MIMETypeP,
+ const char * const fileName);
+
++XMLRPC_DLLEXPORT
+ const char *
+ MIMETypeGuessFromFile(const char * const filename);
+
+@@ -460,7 +581,7 @@ MIMETypeGuessFromFile(const char * const filename);
+ ** Maximum number of simultaneous connections
+ *********************************************************************/
+
+-#define MAX_CONN 100000
++#define MAX_CONN 16
+
+ /*********************************************************************
+ ** General purpose definitions
+@@ -482,26 +603,21 @@ MIMETypeGuessFromFile(const char * const filename);
+ ** Range
+ *********************************************************************/
+
++XMLRPC_DLLEXPORT
+ abyss_bool
+ RangeDecode(char * const str,
+ xmlrpc_uint64_t const filesize,
+ xmlrpc_uint64_t * const start,
+ xmlrpc_uint64_t * const end);
+
++XMLRPC_DLLEXPORT
+ abyss_bool DateInit(void);
+
+ /*********************************************************************
+-** Base64
+-*********************************************************************/
+-
+-void
+-Base64Encode(const char * const chars,
+- char * const base64);
+-
+-/*********************************************************************
+ ** Session
+ *********************************************************************/
+
++XMLRPC_DLLEXPORT
+ abyss_bool SessionLog(TSession * const s);
+
+
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/abyss_winsock.h b/libs/xmlrpc-c/include/xmlrpc-c/abyss_winsock.h
+index f376446..8aeb782 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/abyss_winsock.h
++++ b/libs/xmlrpc-c/include/xmlrpc-c/abyss_winsock.h
+@@ -7,17 +7,19 @@ struct abyss_win_chaninfo {
+ struct sockaddr peerAddr;
+ };
+
+-
++XMLRPC_DLLEXPORT
+ void
+ ChanSwitchWinCreate(unsigned short const portNumber,
+ TChanSwitch ** const chanSwitchPP,
+ const char ** const errorP);
+
++XMLRPC_DLLEXPORT
+ void
+ ChanSwitchWinCreateWinsock(SOCKET const winsock,
+ TChanSwitch ** const chanSwitchPP,
+ const char ** const errorP);
+
++XMLRPC_DLLEXPORT
+ void
+ ChannelWinCreateWinsock(SOCKET const fd,
+ TChannel ** const channelPP,
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/base.h b/libs/xmlrpc-c/include/xmlrpc-c/base.h
+index a68a4f1..cdc9161 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/base.h
++++ b/libs/xmlrpc-c/include/xmlrpc-c/base.h
+@@ -6,26 +6,40 @@
+ #include <stddef.h>
+ #include <stdarg.h>
+ #include <time.h>
++#include <xmlrpc-c/c_util.h>
+ #include <xmlrpc-c/util.h>
+ #include <xmlrpc-c/config.h>
+- /* Defines XMLRPC_HAVE_WCHAR, XMLRPC_INT64 */
++ /* Defines XMLRPC_HAVE_WCHAR, XMLRPC_INT64, XMLRPC_HAVE_TIMEVAL */
+
+ #if XMLRPC_HAVE_WCHAR
+ #include <wchar.h>
+ #endif
+
++#if XMLRPC_HAVE_TIMEVAL
++#include <sys/time.h>
++#endif
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+-
+ /*=========================================================================
+ ** Version of libxmlrpc
+ **=======================================================================*/
++
++/* These are for backward compatibility -- they can't be exported from a
++ Windows DLL. xmlrpc_server_version() is preferred.
++*/
+ extern unsigned int const xmlrpc_version_major;
+ extern unsigned int const xmlrpc_version_minor;
+ extern unsigned int const xmlrpc_version_point;
+
++XMLRPC_DLLEXPORT
++void
++xmlrpc_version(unsigned int * const majorP,
++ unsigned int * const minorP,
++ unsigned int * const pointP);
++
+ /*=========================================================================
+ ** C types equivalent to XML-RPC types
+ **=======================================================================*/
+@@ -50,6 +64,19 @@ typedef double xmlrpc_double;
+ so it's probably clearer just to use that. This typedef is here
+ for mathematical completeness.
+ */
++typedef struct {
++ /* A datetime of the type defined by XML-RPC <dateTime.iso8601> with
++ a few extensions. I.e. in the range 1-9999 AD with microsecond
++ resolution.
++ */
++ unsigned int Y; /* 1-? */
++ unsigned int M; /* 1-12 */
++ unsigned int D; /* 1-31 */
++ unsigned int h; /* 0-23 */
++ unsigned int m; /* 0-59 */
++ unsigned int s; /* 0-59 */
++ unsigned int u; /* 0-999999 */
++} xmlrpc_datetime;
+
+ /* xmlrpc_socket is just for backward compatibility, in case someone decided
+ to use this in user code. New code should use the native type for a
+@@ -89,12 +116,13 @@ typedef enum {
+
+ #define XMLRPC_HAVE_I8 1
+
+-/* These are *always* allocated on the heap. No exceptions. */
+ typedef struct _xmlrpc_value xmlrpc_value;
+
++XMLRPC_DLLEXPORT
+ const char *
+ xmlrpc_type_name(xmlrpc_type const type);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_abort_if_array_bad(xmlrpc_value * const arrayP);
+
+@@ -102,109 +130,193 @@ xmlrpc_abort_if_array_bad(xmlrpc_value * const arrayP);
+ xmlrpc_abort_if_array_bad(val)
+
+ /* Increment the reference count of an xmlrpc_value. */
+-extern void xmlrpc_INCREF (xmlrpc_value* const value);
++XMLRPC_DLLEXPORT
++extern void xmlrpc_INCREF(xmlrpc_value* const value);
+
+ /* Decrement the reference count of an xmlrpc_value. If there
+ ** are no more references, free it. */
+-extern void xmlrpc_DECREF (xmlrpc_value* const value);
++XMLRPC_DLLEXPORT
++extern void xmlrpc_DECREF(xmlrpc_value* const value);
+
+ /* Get the type of an XML-RPC value. */
++XMLRPC_DLLEXPORT
+ extern xmlrpc_type xmlrpc_value_type (xmlrpc_value* const value);
+
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_int_new(xmlrpc_env * const envP,
+ int const intValue);
+
++XMLRPC_DLLEXPORT
++void
++xmlrpc_read_int(xmlrpc_env * const envP,
++ const xmlrpc_value * const valueP,
++ int * const intValueP);
++
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_i8_new(xmlrpc_env * const envP,
+ xmlrpc_int64 const value);
+
++XMLRPC_DLLEXPORT
+ void
+-xmlrpc_read_int(xmlrpc_env * const envP,
+- const xmlrpc_value * const valueP,
+- int * const intValueP);
++xmlrpc_read_i8(xmlrpc_env * const envP,
++ const xmlrpc_value * const valueP,
++ xmlrpc_int64 * const intValueP);
+
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_bool_new(xmlrpc_env * const envP,
+ xmlrpc_bool const boolValue);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_read_bool(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ xmlrpc_bool * const boolValueP);
+
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_double_new(xmlrpc_env * const envP,
+ double const doubleValue);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_read_double(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ xmlrpc_double * const doubleValueP);
+
++XMLRPC_DLLEXPORT
++xmlrpc_value *
++xmlrpc_datetime_new(xmlrpc_env * const envP,
++ xmlrpc_datetime const dt);
++
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_datetime_new_str(xmlrpc_env * const envP,
+ const char * const value);
+
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_datetime_new_sec(xmlrpc_env * const envP,
+ time_t const value);
+
++XMLRPC_DLLEXPORT
++xmlrpc_value*
++xmlrpc_datetime_new_usec(xmlrpc_env * const envP,
++ time_t const secs,
++ unsigned int const usecs);
++
++#if XMLRPC_HAVE_TIMEVAL
++XMLRPC_DLLEXPORT
++xmlrpc_value *
++xmlrpc_datetime_new_timeval(xmlrpc_env * const envP,
++ struct timeval const value);
++#endif
++
++#if XMLRPC_HAVE_TIMESPEC
++XMLRPC_DLLEXPORT
++xmlrpc_value *
++xmlrpc_datetime_new_timespec(xmlrpc_env * const envP,
++ struct timespec const value);
++#endif
++
++void
++XMLRPC_DLLEXPORT
++xmlrpc_read_datetime(xmlrpc_env * const envP,
++ const xmlrpc_value * const valueP,
++ xmlrpc_datetime * const dtP);
++
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_read_datetime_str(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ const char ** const stringValueP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_read_datetime_sec(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ time_t * const timeValueP);
+
++XMLRPC_DLLEXPORT
++void
++xmlrpc_read_datetime_usec(xmlrpc_env * const envP,
++ const xmlrpc_value * const valueP,
++ time_t * const secsP,
++ unsigned int * const usecsP);
++
++#if XMLRPC_HAVE_TIMEVAL
++XMLRPC_DLLEXPORT
++void
++xmlrpc_read_datetime_timeval(xmlrpc_env * const envP,
++ const xmlrpc_value * const valueP,
++ struct timeval * const timeValueP);
++#endif
++
++#if XMLRPC_HAVE_TIMESPEC
++XMLRPC_DLLEXPORT
++void
++xmlrpc_read_datetime_timespec(xmlrpc_env * const envP,
++ const xmlrpc_value * const valueP,
++ struct timespec * const timeValueP);
++#endif
++
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_string_new(xmlrpc_env * const envP,
+ const char * const stringValue);
+
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_string_new_lp(xmlrpc_env * const envP,
+ size_t const length,
+ const char * const stringValue);
+
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_string_new_va(xmlrpc_env * const envP,
+ const char * const format,
+ va_list args);
+
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_string_new_f(xmlrpc_env * const envP,
+ const char * const format,
+ ...);
+
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_string_new_lp_cr(xmlrpc_env * const envP,
+ size_t const length,
+ const char * const value);
+
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_string_new_cr(xmlrpc_env * const envP,
+ const char * const value);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_read_string(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ const char ** const stringValueP);
+
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_read_string_crlf(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ const char ** const stringValueP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_read_string_lp_crlf(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ size_t * const lengthP,
+ const char ** const stringValueP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_read_string_lp(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+@@ -212,80 +324,93 @@ xmlrpc_read_string_lp(xmlrpc_env * const envP,
+ const char ** const stringValueP);
+
+ #if XMLRPC_HAVE_WCHAR
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_string_w_new(xmlrpc_env * const envP,
+ const wchar_t * const stringValue);
+
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_string_w_new_lp(xmlrpc_env * const envP,
+ size_t const length,
+ const wchar_t * const stringValue);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_read_string_w(xmlrpc_env * const envP,
+ xmlrpc_value * const valueP,
+ const wchar_t ** const stringValueP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_read_string_w_crlf(xmlrpc_env * const envP,
+ xmlrpc_value * const valueP,
+ const wchar_t ** const stringValueP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_read_string_w_lp(xmlrpc_env * const envP,
+ xmlrpc_value * const valueP,
+ size_t * const lengthP,
+ const wchar_t ** const stringValueP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_read_string_w_lp_crlf(xmlrpc_env * const envP,
+ xmlrpc_value * const valueP,
+ size_t * const lengthP,
+ const wchar_t ** const stringValueP);
+
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_string_w_new_lp_cr(xmlrpc_env * const envP,
+ size_t const length,
+ const wchar_t * const value);
+
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_string_w_new_cr(xmlrpc_env * const envP,
+ const wchar_t * const value);
+
+ #endif /* XMLRPC_HAVE_WCHAR */
+
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_base64_new(xmlrpc_env * const envP,
+ size_t const length,
+ const unsigned char * const value);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_read_base64(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ size_t * const lengthP,
+ const unsigned char ** const bytestringValueP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_read_base64_size(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ size_t * const lengthP);
+
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_array_new(xmlrpc_env * const envP);
+
+ /* Return the number of elements in an XML-RPC array.
+ ** Sets XMLRPC_TYPE_ERROR if 'array' is not an array. */
++XMLRPC_DLLEXPORT
+ int
+ xmlrpc_array_size(xmlrpc_env * const env,
+ const xmlrpc_value * const array);
+
+-/* Append an item to an XML-RPC array.
+-** Sets XMLRPC_TYPE_ERROR if 'array' is not an array. */
+-extern void
+-xmlrpc_array_append_item (xmlrpc_env * const envP,
+- xmlrpc_value * const arrayP,
+- xmlrpc_value * const valueP);
++XMLRPC_DLLEXPORT
++void
++xmlrpc_array_append_item(xmlrpc_env * const envP,
++ xmlrpc_value * const arrayP,
++ xmlrpc_value * const valueP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_array_read_item(xmlrpc_env * const envP,
+ const xmlrpc_value * const arrayP,
+@@ -299,30 +424,35 @@ xmlrpc_array_read_item(xmlrpc_env * const envP,
+ Sets XMLRPC_TYPE_ERROR if 'array' is not an array.
+ Sets XMLRPC_INDEX_ERROR if 'index' is out of bounds.
+ */
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_array_get_item(xmlrpc_env * const envP,
+ const xmlrpc_value * const arrayP,
+ int const index);
+
+ /* Not implemented--we don't need it yet.
+-extern
+-int xmlrpc_array_set_item (xmlrpc_env* env,
+-xmlrpc_value* array,
+-int index,
+- xmlrpc_value* value);
++XMLRPC_DLLEXPORT
++int
++xmlrpc_array_set_item(xmlrpc_env * const envP,
++ xmlrpc_value * const arrayP,
++ unsigned int const index,
++ xmlrpc_value * const valueP);
+ */
+
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_struct_new(xmlrpc_env * const env);
+
+ /* Return the number of key/value pairs in a struct.
+ ** Sets XMLRPC_TYPE_ERROR if 'strct' is not a struct. */
++XMLRPC_DLLEXPORT
+ int
+-xmlrpc_struct_size (xmlrpc_env * env,
+- xmlrpc_value * strct);
++xmlrpc_struct_size (xmlrpc_env * const env,
++ xmlrpc_value * const strct);
+
+ /* Returns true iff 'strct' contains 'key'.
+ ** Sets XMLRPC_TYPE_ERROR if 'strct' is not a struct. */
++XMLRPC_DLLEXPORT
+ int
+ xmlrpc_struct_has_key(xmlrpc_env * const envP,
+ xmlrpc_value * const strctP,
+@@ -332,6 +462,7 @@ xmlrpc_struct_has_key(xmlrpc_env * const envP,
+ Deprecated. xmlrpc_struct_get_value_v() is more general, and this
+ case is not common enough to warrant a shortcut.
+ */
++XMLRPC_DLLEXPORT
+ int
+ xmlrpc_struct_has_key_n(xmlrpc_env * const envP,
+ xmlrpc_value * const strctP,
+@@ -340,6 +471,7 @@ xmlrpc_struct_has_key_n(xmlrpc_env * const envP,
+
+ #if 0
+ /* Not implemented yet, but needed for completeness. */
++XMLRPC_DLLEXPORT
+ int
+ xmlrpc_struct_has_key_v(xmlrpc_env * env,
+ xmlrpc_value * strct,
+@@ -347,6 +479,7 @@ xmlrpc_struct_has_key_v(xmlrpc_env * env,
+ #endif
+
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_struct_find_value(xmlrpc_env * const envP,
+ xmlrpc_value * const structP,
+@@ -354,18 +487,21 @@ xmlrpc_struct_find_value(xmlrpc_env * const envP,
+ xmlrpc_value ** const valuePP);
+
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_struct_find_value_v(xmlrpc_env * const envP,
+ xmlrpc_value * const structP,
+ xmlrpc_value * const keyP,
+ xmlrpc_value ** const valuePP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_struct_read_value(xmlrpc_env * const envP,
+ xmlrpc_value * const structP,
+ const char * const key,
+ xmlrpc_value ** const valuePP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_struct_read_value_v(xmlrpc_env * const envP,
+ xmlrpc_value * const structP,
+@@ -375,6 +511,7 @@ xmlrpc_struct_read_value_v(xmlrpc_env * const envP,
+ /* The "get_value" functions are deprecated. Use the "find_value"
+ and "read_value" functions instead.
+ */
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_struct_get_value(xmlrpc_env * const envP,
+ xmlrpc_value * const strctP,
+@@ -384,6 +521,7 @@ xmlrpc_struct_get_value(xmlrpc_env * const envP,
+ Deprecated. xmlrpc_struct_get_value_v() is more general, and this
+ case is not common enough to warrant a shortcut.
+ */
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_struct_get_value_n(xmlrpc_env * const envP,
+ xmlrpc_value * const strctP,
+@@ -393,6 +531,7 @@ xmlrpc_struct_get_value_n(xmlrpc_env * const envP,
+ /* Set the value associated with 'key' in 'strct' to 'value'.
+ Sets XMLRPC_TYPE_ERROR if 'strct' is not a struct.
+ */
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_struct_set_value(xmlrpc_env * const env,
+ xmlrpc_value * const strct,
+@@ -403,6 +542,7 @@ xmlrpc_struct_set_value(xmlrpc_env * const env,
+ The general way to set a structure value is xmlrpc_struct_set_value_v(),
+ and this case is not common enough to deserve a shortcut.
+ */
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_struct_set_value_n(xmlrpc_env * const env,
+ xmlrpc_value * const strct,
+@@ -412,6 +552,7 @@ xmlrpc_struct_set_value_n(xmlrpc_env * const env,
+
+ /* The same as above, but the key must be an XML-RPC string.
+ ** Fails with XMLRPC_TYPE_ERROR if 'keyval' is not a string. */
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_struct_set_value_v(xmlrpc_env * const env,
+ xmlrpc_value * const strct,
+@@ -423,6 +564,7 @@ xmlrpc_struct_set_value_v(xmlrpc_env * const env,
+ ** Fails with XMLRPC_TYPE_ERROR if 'struct' is not a struct.
+ ** Fails with XMLRPC_INDEX_ERROR if 'index' is out of bounds. */
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_struct_read_member(xmlrpc_env * const envP,
+ xmlrpc_value * const structP,
+@@ -436,6 +578,7 @@ xmlrpc_struct_read_member(xmlrpc_env * const envP,
+
+ Deprecated. Use xmlrpc_struct_read_member() instead.
+ */
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_struct_get_key_and_value(xmlrpc_env * const env,
+ xmlrpc_value * const strct,
+@@ -443,38 +586,55 @@ xmlrpc_struct_get_key_and_value(xmlrpc_env * const env,
+ xmlrpc_value ** const out_keyval,
+ xmlrpc_value ** const out_value);
+
++/* The "C pointer" type has no relation to XML-RPC. It is here for the
++ convenience of programs that use xmlrpc_value for XML-RPC purposes
++ and can benefit from using it for non-XML-RPC purposes as well.
++
++ Also, some people use libxmlrpc for xmlrpc_value alone, because sometimes
++ you need to work with basic data types in richer ways than the C types
++ (int, time_t, etc) allow.
++*/
++
++XMLRPC_DLLEXPORT
++xmlrpc_value *
++xmlrpc_cptr_new(xmlrpc_env * const envP,
++ void * const value);
++
++typedef void (*xmlrpc_cptr_dtor_fn)(void *, void *);
++
++XMLRPC_DLLEXPORT
++xmlrpc_value *
++xmlrpc_cptr_new_dtor(xmlrpc_env * const envP,
++ void * const value,
++ xmlrpc_cptr_dtor_fn const dtor,
++ void * const dtorContext);
++
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_read_cptr(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ void ** const ptrValueP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_read_nil(xmlrpc_env * const envP,
+ xmlrpc_value * const valueP);
+
+-
+-void
+-xmlrpc_read_i8(xmlrpc_env * const envP,
+- const xmlrpc_value * const valueP,
+- xmlrpc_int64 * const intValueP);
+-
+-
+-xmlrpc_value *
+-xmlrpc_cptr_new(xmlrpc_env * const envP,
+- void * const value);
+-
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_nil_new(xmlrpc_env * const envP);
+
+
+ /* Build an xmlrpc_value from a format string. */
+
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_build_value(xmlrpc_env * const env,
+ const char * const format,
+ ...);
+
+ /* The same as the above, but using a va_list and more general */
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_build_value_va(xmlrpc_env * const env,
+ const char * const format,
+@@ -482,12 +642,14 @@ xmlrpc_build_value_va(xmlrpc_env * const env,
+ xmlrpc_value ** const valPP,
+ const char ** const tailP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_decompose_value(xmlrpc_env * const envP,
+ xmlrpc_value * const value,
+ const char * const format,
+ ...);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_decompose_value_va(xmlrpc_env * const envP,
+ xmlrpc_value * const value,
+@@ -501,6 +663,7 @@ xmlrpc_decompose_value_va(xmlrpc_env * const envP,
+
+ These are deprecated. Use xmlrpc_decompose_value... instead.
+ */
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_parse_value(xmlrpc_env * const envP,
+ xmlrpc_value * const value,
+@@ -508,6 +671,7 @@ xmlrpc_parse_value(xmlrpc_env * const envP,
+ ...);
+
+ /* The same as the above, but using a va_list. */
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_parse_value_va(xmlrpc_env * const envP,
+ xmlrpc_value * const value,
+@@ -523,28 +687,33 @@ typedef enum xmlrpc_dialect {
+ xmlrpc_dialect_apache
+ } xmlrpc_dialect;
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_serialize_value2(xmlrpc_env * const envP,
+ xmlrpc_mem_block * const outputP,
+ xmlrpc_value * const valueP,
+ xmlrpc_dialect const dialect);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_serialize_value(xmlrpc_env * const envP,
+ xmlrpc_mem_block * const outputP,
+ xmlrpc_value * const valueP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_serialize_params2(xmlrpc_env * const envP,
+ xmlrpc_mem_block * const outputP,
+ xmlrpc_value * const paramArrayP,
+ xmlrpc_dialect const dialect);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_serialize_params(xmlrpc_env * const envP,
+ xmlrpc_mem_block * const outputP,
+ xmlrpc_value * const paramArrayP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_serialize_call2(xmlrpc_env * const envP,
+ xmlrpc_mem_block * const outputP,
+@@ -552,23 +721,27 @@ xmlrpc_serialize_call2(xmlrpc_env * const envP,
+ xmlrpc_value * const paramArrayP,
+ xmlrpc_dialect const dialect);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_serialize_call(xmlrpc_env * const envP,
+ xmlrpc_mem_block * const outputP,
+ const char * const methodName,
+ xmlrpc_value * const paramArrayP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_serialize_response2(xmlrpc_env * const envP,
+ xmlrpc_mem_block * const outputP,
+ xmlrpc_value * const valueP,
+ xmlrpc_dialect const dialect);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_serialize_response(xmlrpc_env * const envP,
+ xmlrpc_mem_block * const outputP,
+ xmlrpc_value * const valueP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_serialize_fault(xmlrpc_env * const envP,
+ xmlrpc_mem_block * const outputP,
+@@ -579,17 +752,22 @@ xmlrpc_serialize_fault(xmlrpc_env * const envP,
+ ** Decoding XML
+ **=======================================================================*/
+
+-/* Parse an XML-RPC call. If an error occurs, set a fault and set
+-** the output variables to NULL.
+-** The caller is responsible for calling free(*out_method_name) and
+-** xmlrpc_DECREF(*out_param_array). */
++XMLRPC_DLLEXPORT
++void
++xmlrpc_parse_value_xml(xmlrpc_env * const envP,
++ const char * const xmlData,
++ size_t const xmlDataLen,
++ xmlrpc_value ** const valuePP);
++
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_parse_call(xmlrpc_env * const envP,
+- const char * const xml_data,
+- size_t const xml_len,
+- const char ** const out_method_name,
+- xmlrpc_value ** const out_param_array);
++ const char * const xmlData,
++ size_t const xmlDataLen,
++ const char ** const methodNameP,
++ xmlrpc_value ** const paramArrayP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_parse_response2(xmlrpc_env * const envP,
+ const char * const xmlData,
+@@ -601,6 +779,7 @@ xmlrpc_parse_response2(xmlrpc_env * const envP,
+
+ /* xmlrpc_parse_response() is for backward compatibility */
+
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_parse_response(xmlrpc_env * const envP,
+ const char * const xmlData,
+@@ -616,23 +795,26 @@ xmlrpc_parse_response(xmlrpc_env * const envP,
+
+ /* This routine inserts newlines every 76 characters, as required by the
+ ** Base64 specification. */
++XMLRPC_DLLEXPORT
+ xmlrpc_mem_block *
+-xmlrpc_base64_encode(xmlrpc_env * env,
+- unsigned char * bin_data,
+- size_t bin_len);
++xmlrpc_base64_encode(xmlrpc_env * const envP,
++ const unsigned char * const binData,
++ size_t const binLen);
+
+ /* This routine encodes everything in one line. This is needed for HTTP
+ ** authentication and similar tasks. */
++XMLRPC_DLLEXPORT
+ xmlrpc_mem_block *
+-xmlrpc_base64_encode_without_newlines(xmlrpc_env * env,
+- unsigned char * bin_data,
+- size_t bin_len);
++xmlrpc_base64_encode_without_newlines(xmlrpc_env * const envP,
++ const unsigned char * const binData,
++ size_t const binLen);
+
+ /* This decodes Base64 data with or without newlines. */
++XMLRPC_DLLEXPORT
+ extern xmlrpc_mem_block *
+ xmlrpc_base64_decode(xmlrpc_env * const envP,
+- const char * const ascii_data,
+- size_t const ascii_len);
++ const char * const asciiData,
++ size_t const asciiLen);
+
+
+ /*=========================================================================
+@@ -645,10 +827,12 @@ xmlrpc_base64_decode(xmlrpc_env * const envP,
+ ** a cookie replacement of basic authentication.)
+ **/
+
++XMLRPC_DLLEXPORT
+ extern void xmlrpc_authcookie_set(xmlrpc_env * const env,
+ const char * const username,
+ const char * const password);
+
++XMLRPC_DLLEXPORT
+ char *xmlrpc_authcookie(void);
+
+ /*=========================================================================
+@@ -677,9 +861,11 @@ char *xmlrpc_authcookie(void);
+ #define XMLRPC_XML_SIZE_LIMIT_DEFAULT (512*1024)
+
+ /* Set a specific limit to the specified value. */
++XMLRPC_DLLEXPORT
+ extern void xmlrpc_limit_set (int const limit_id, size_t const value);
+
+ /* Get the value of a specified limit. */
++XMLRPC_DLLEXPORT
+ extern size_t xmlrpc_limit_get (int const limit_id);
+
+
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/base.hpp b/libs/xmlrpc-c/include/xmlrpc-c/base.hpp
+index ab6fe3e..6f93e38 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/base.hpp
++++ b/libs/xmlrpc-c/include/xmlrpc-c/base.hpp
+@@ -1,19 +1,24 @@
+ #ifndef XMLRPC_BASE_HPP_INCLUDED
+ #define XMLRPC_BASE_HPP_INCLUDED
+
++#include <xmlrpc-c/config.h>
++
+ #include <climits>
+ #include <cfloat>
+ #include <ctime>
+ #include <vector>
+ #include <map>
+ #include <string>
++#if XMLRPC_HAVE_TIMEVAL
++#include <sys/time.h>
++#endif
+
++#include <xmlrpc-c/c_util.h>
+ #include <xmlrpc-c/base.h>
+
+ namespace xmlrpc_c {
+
+-
+-class value {
++class XMLRPC_DLLEXPORT value {
+ // This is a handle. You don't want to create a pointer to this;
+ // it is in fact a pointer itself.
+ public:
+@@ -26,6 +31,8 @@ public:
+ ~value();
+
+ enum type_t {
++ // These are designed to be identical to the values for
++ // enum xmlrpc_type in the C library.
+ TYPE_INT = 0,
+ TYPE_BOOLEAN = 1,
+ TYPE_DOUBLE = 2,
+@@ -62,6 +69,8 @@ public:
+
+ xmlrpc_value *
+ cValue() const;
++ // Not to be confused with public 'cvalue' method that all the derived
++ // classes have.
+
+ value(xmlrpc_value * const valueP);
+
+@@ -72,33 +81,42 @@ public:
+
+ xmlrpc_value * cValueP;
+ // NULL means this is merely a placeholder object.
++
++protected:
++ void
++ validateInstantiated() const;
+ };
+
+
++std::ostream& operator<<(std::ostream& out,
++ xmlrpc_c::value::type_t const& type);
++
+
+-class value_int : public value {
++class XMLRPC_DLLEXPORT value_int : public value {
+ public:
+ value_int(int const cvalue);
+
+ value_int(xmlrpc_c::value const baseValue);
+
+ operator int() const;
+-};
+
++ int cvalue() const;
++};
+
+
+-class value_boolean : public value {
++class XMLRPC_DLLEXPORT value_boolean : public value {
+ public:
+ value_boolean(bool const cvalue);
+
+ value_boolean(xmlrpc_c::value const baseValue);
+
+ operator bool() const;
+-};
+
++ bool cvalue() const;
++};
+
+
+-class value_string : public value {
++class XMLRPC_DLLEXPORT value_string : public value {
+ public:
+ enum nlCode {nlCode_all, nlCode_lf};
+
+@@ -113,103 +131,274 @@ public:
+ crlfValue() const;
+
+ operator std::string() const;
+-};
+
++ std::string cvalue() const;
++};
+
+
+-class value_double : public value {
++class XMLRPC_DLLEXPORT value_double : public value {
+ public:
+ value_double(double const cvalue);
+
+ value_double(xmlrpc_c::value const baseValue);
+
+ operator double() const;
+-};
+
++ double cvalue() const;
++};
+
+
+-class value_datetime : public value {
++class XMLRPC_DLLEXPORT value_datetime : public value {
+ public:
+ value_datetime(std::string const cvalue);
+ value_datetime(time_t const cvalue);
+ #if XMLRPC_HAVE_TIMEVAL
+ value_datetime(struct timeval const& cvalue);
++ operator timeval() const;
+ #endif
+ #if XMLRPC_HAVE_TIMESPEC
+ value_datetime(struct timespec const& cvalue);
++ operator timespec() const;
+ #endif
+
+ value_datetime(xmlrpc_c::value const baseValue);
+
+ operator time_t() const;
++
++ time_t cvalue() const;
+ };
+
+
++typedef std::vector<unsigned char> cbytestring;
+
+-class value_bytestring : public value {
++class XMLRPC_DLLEXPORT value_bytestring : public value {
+ public:
+- value_bytestring(std::vector<unsigned char> const& cvalue);
++ value_bytestring(cbytestring const& cvalue);
+
+ value_bytestring(xmlrpc_c::value const baseValue);
+
+ // You can't cast to a vector because the compiler can't tell which
+ // constructor to use (complains about ambiguity). So we have this:
+- std::vector<unsigned char>
++ cbytestring
+ vectorUcharValue() const;
+
++ cbytestring cvalue() const;
++
+ size_t
+ length() const;
+ };
+
+
+
+-class value_struct : public value {
++typedef std::map<std::string, xmlrpc_c::value> cstruct;
++
++class XMLRPC_DLLEXPORT value_struct : public value {
+ public:
+- value_struct(std::map<std::string, xmlrpc_c::value> const& cvalue);
++ value_struct(cstruct const& cvalue);
+
+ value_struct(xmlrpc_c::value const baseValue);
+
+- operator std::map<std::string, xmlrpc_c::value>() const;
++ operator cstruct() const;
++
++ cstruct cvalue() const;
+ };
+
+
+
+-class value_array : public value {
++typedef std::vector<xmlrpc_c::value> carray;
++
++class XMLRPC_DLLEXPORT value_array : public value {
+ public:
+- value_array(std::vector<xmlrpc_c::value> const& cvalue);
++ value_array(carray const& cvalue);
+
+ value_array(xmlrpc_c::value const baseValue);
+
+- std::vector<xmlrpc_c::value>
++ // You can't cast to a vector because the compiler can't tell which
++ // constructor to use (complains about ambiguity). So we have this:
++ carray
+ vectorValueValue() const;
+
++ carray cvalue() const;
++
+ size_t
+ size() const;
+ };
+
+
+
+-class value_nil : public value {
++template<class InputIterator> xmlrpc_c::value_array
++arrayValueSlice(InputIterator begin,
++ InputIterator end) {
++/*----------------------------------------------------------------------------
++ convert C++ iterator pair to XML-RPC array
++-----------------------------------------------------------------------------*/
++ carray ret;
++ for (InputIterator p = begin; p != end; ++p) {
++ ret.push_back(toValue(*p));
++ }
++ return xmlrpc_c::value_array(ret);
++}
++
++template<class MemberClass> inline xmlrpc_c::value_array
++arrayValueArray(const MemberClass * const in,
++ size_t const size) {
++/*----------------------------------------------------------------------------
++ convert C++ array to XML-RPC array
++-----------------------------------------------------------------------------*/
++ return arrayValueSlice(in, in + size);
++}
++
++class XMLRPC_DLLEXPORT value_nil : public value {
+ public:
+ value_nil();
+
+ value_nil(xmlrpc_c::value const baseValue);
+-};
+
++ void * cvalue() const;
++};
+
+
+-class value_i8 : public value {
++class XMLRPC_DLLEXPORT value_i8 : public value {
+ public:
+ value_i8(xmlrpc_int64 const cvalue);
+
+ value_i8(xmlrpc_c::value const baseValue);
+
+ operator xmlrpc_int64() const;
++
++ xmlrpc_int64 cvalue() const;
+ };
+
+
++inline xmlrpc_c::value_string
++toValue(const char * const x) {
++ return xmlrpc_c::value_string(x);
++}
++
++inline xmlrpc_c::value_string
++toValue(std::string const& x) {
++ return xmlrpc_c::value_string(x);
++}
++
++inline xmlrpc_c::value_int
++toValue(int const x) {
++ return xmlrpc_c::value_int(x);
++}
++
++inline xmlrpc_c::value_boolean
++toValue(bool const x) {
++ return xmlrpc_c::value_boolean(x);
++}
++
++inline xmlrpc_c::value_double
++toValue(double const x) {
++ return xmlrpc_c::value_double(x);
++}
++
++inline xmlrpc_c::value_bytestring
++ toValue(cbytestring const& x) {
++ return xmlrpc_c::value_bytestring(x);
++}
++
++inline const xmlrpc_c::value &
++toValue(xmlrpc_c::value const& v) {
++/*----------------------------------------------------------------------------
++ This does a null conversion; you use it to catch all the XML-RPC types that
++ have no usable C++ equivalent, so you can do a toValue() of any XML-RPC
++ type at all. In particular: 'value_datetime', 'value_nil'.
++-----------------------------------------------------------------------------*/
++ return v;
++}
+
+-class fault {
++template<class K, class V> xmlrpc_c::value_struct
++toValue(std::map<K, V> const& in) {
++/*----------------------------------------------------------------------------
++ convert C++ map to XML-RPC structure
++-----------------------------------------------------------------------------*/
++ cstruct ret;
++ for (typename std::map<std::string, V>::const_iterator p = in.begin();
++ p != in.end();
++ ++p) {
++ ret[p->first] = toValue(p->second);
++ }
++ return xmlrpc_c::value_struct(ret);
++}
++
++template<class T> inline xmlrpc_c::value_array
++toValue(std::vector<T> const& in) {
++/*----------------------------------------------------------------------------
++ convert C++ vector to XML-RPC array
++-----------------------------------------------------------------------------*/
++ return arrayValueSlice(in.begin(), in.end());
++}
++
++// fromValue() returns via reference argument instead of by return value
++// so the compiler can tell which version of it to invoke based on the
++// desired output type.
++
++inline void
++fromValue(std::string & y, xmlrpc_c::value const& x) {
++ y = xmlrpc_c::value_string(x);
++}
++
++inline void
++fromValue(int & y, xmlrpc_c::value const& x) {
++ y = xmlrpc_c::value_int(x);
++}
++
++inline void
++fromValue(bool & y, xmlrpc_c::value const& x) {
++ y = xmlrpc_c::value_boolean(x);
++}
++
++inline void
++fromValue(double & y, xmlrpc_c::value const& x) {
++ y = xmlrpc_c::value_double(x);
++}
++
++inline void
++fromValue(cbytestring & y, xmlrpc_c::value const& x) {
++ y = xmlrpc_c::value_bytestring(x).vectorUcharValue();
++}
++
++inline void
++fromValue(xmlrpc_c::value & y, xmlrpc_c::value const& x) {
++/*----------------------------------------------------------------------------
++ This does a null conversion; it's so you can use fromValue() with
++ an XML-RPC value or C++ value without having to know which it is.
++ One reason you would have an XML-RPC value lying around with C++ values
++ is that some XML-RPC values don't have a common C++ equivalent.
++-----------------------------------------------------------------------------*/
++ y = x;
++}
++
++template<class K, class V> inline void
++fromValue(std::map<K, V> & y, xmlrpc_c::value const& x) {
++/*----------------------------------------------------------------------------
++ Convert XML-RPC structure to C++ map.
++-----------------------------------------------------------------------------*/
++ cstruct m = xmlrpc_c::value_struct(x);
++ y.clear();
++ for (std::map<std::string, xmlrpc_c::value>::const_iterator p = m.begin();
++ p != m.end();
++ ++p) {
++ fromValue(y[p->first], p->second);
++ }
++}
++
++template<class T> inline void
++fromValue(std::vector<T> & y, xmlrpc_c::value const& x) {
++/*----------------------------------------------------------------------------
++ Convert XML-RPC array to C++ vector.
++-----------------------------------------------------------------------------*/
++ carray v = xmlrpc_c::value_array(x).vectorValueValue();
++ y.resize(v.size());
++ for (unsigned int i = 0; i < v.size(); ++i) {
++ fromValue(y[i], v[i]);
++ }
++}
++
++class XMLRPC_DLLEXPORT fault {
+ /*----------------------------------------------------------------------------
+ This is an XML-RPC fault.
+
+@@ -253,7 +442,7 @@ private:
+ std::string description;
+ };
+
+-class rpcOutcome {
++class XMLRPC_DLLEXPORT rpcOutcome {
+ /*----------------------------------------------------------------------------
+ The outcome of a validly executed RPC -- either an XML-RPC fault
+ or an XML-RPC value of the result.
+@@ -275,7 +464,7 @@ private:
+ xmlrpc_c::fault fault; // valid if not 'succeeded'
+ };
+
+-class paramList {
++class XMLRPC_DLLEXPORT paramList {
+ /*----------------------------------------------------------------------------
+ A parameter list of an XML-RPC call.
+ -----------------------------------------------------------------------------*/
+@@ -288,6 +477,11 @@ public:
+ paramList&
+ addx(xmlrpc_c::value const param);
+
++ template<class T > paramList& addc(const T & x) {
++ xmlrpc_c::paramList::add(toValue(x));
++ return *this;
++ }
++
+ unsigned int
+ size() const;
+
+@@ -316,15 +510,15 @@ public:
+ std::string
+ getString(unsigned int const paramNumber) const;
+
+- std::vector<unsigned char>
++ cbytestring
+ getBytestring(unsigned int const paramNumber) const;
+
+- std::vector<xmlrpc_c::value>
++ carray
+ getArray(unsigned int const paramNumber,
+ unsigned int const minSize = 0,
+ unsigned int const maxSize = UINT_MAX) const;
+
+- std::map<std::string, xmlrpc_c::value>
++ cstruct
+ getStruct(unsigned int const paramNumber) const;
+
+ void
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/base64.hpp b/libs/xmlrpc-c/include/xmlrpc-c/base64.hpp
+index a884225..4ef06aa 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/base64.hpp
++++ b/libs/xmlrpc-c/include/xmlrpc-c/base64.hpp
+@@ -4,18 +4,21 @@
+ #include <string>
+ #include <vector>
+
++#include <xmlrpc-c/c_util.h>
++
+ namespace xmlrpc_c {
+
+
+ enum newlineCtl {NEWLINE_NO, NEWLINE_YES};
+
++XMLRPC_DLLEXPORT
+ std::string
+ base64FromBytes(
+ std::vector<unsigned char> const& bytes,
+ xmlrpc_c::newlineCtl const newlineCtl = xmlrpc_c::NEWLINE_YES);
+
+
+-
++XMLRPC_DLLEXPORT
+ std::vector<unsigned char>
+ bytesFromBase64(std::string const& base64);
+
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/base_int.h b/libs/xmlrpc-c/include/xmlrpc-c/base_int.h
+index be45cfd..cff8773 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/base_int.h
++++ b/libs/xmlrpc-c/include/xmlrpc-c/base_int.h
+@@ -18,14 +18,14 @@
+ #include "bool.h"
+ #include "int.h"
+
+-#include <xmlrpc-c/base.h>
++#include <xmlrpc-c/c_util.h>
+ #include <xmlrpc-c/util_int.h>
++#include <xmlrpc-c/base.h>
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+-
+ struct _xmlrpc_value {
+ xmlrpc_type _type;
+ int _refcount;
+@@ -36,8 +36,13 @@ struct _xmlrpc_value {
+ xmlrpc_int64 i8;
+ xmlrpc_bool b;
+ double d;
+- /* time_t t */
+- void * c_ptr;
++ xmlrpc_datetime dt;
++ /* NOTE: may be invalid! e.g. February 30 */
++ struct {
++ void * objectP;
++ xmlrpc_cptr_dtor_fn dtor; // NULL if none
++ void * dtorContext;
++ } cptr;
+ } _value;
+
+ /* Other data types use a memory block.
+@@ -77,6 +82,15 @@ struct _xmlrpc_value {
+ This member is always NULL on a system that does not have
+ Unicode wchar functions.
+ */
++ void * _cache;
++ /* This is a hack to support the old style memory management in which
++ one gets a pointer into memory that belongs to the xmlrpc_value
++ object; i.e. the caller of xmlrpc_read_datetime_str_old() doesn't
++ get memory that he is responsible for freeing.
++
++ This is essentially a cached value of the result of a
++ xmlrpc_read_datetime_str_old(). NULL means nothing cached.
++ */
+ };
+
+ #define XMLRPC_ASSERT_VALUE_OK(val) \
+@@ -97,24 +111,34 @@ typedef struct {
+ } _struct_member;
+
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_createXmlrpcValue(xmlrpc_env * const envP,
+ xmlrpc_value ** const valPP);
+
++XMLRPC_DLLEXPORT
+ const char *
+ xmlrpc_typeName(xmlrpc_type const type);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_traceXml(const char * const label,
+ const char * const xml,
+- unsigned int const xmlLength);
++ size_t const xmlLength);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_destroyString(xmlrpc_value * const stringP);
+
++XMLRPC_DLLEXPORT
++void
++xmlrpc_destroyDatetime(xmlrpc_value * const datetimeP);
++
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_destroyStruct(xmlrpc_value * const structP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_destroyArrayContents(xmlrpc_value * const arrayP);
+
+@@ -130,16 +154,19 @@ xmlrpc_destroyArrayContents(xmlrpc_value * const arrayP);
+ new memory for them.
+ -----------------------------------------------------------------------------*/
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_read_datetime_str_old(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ const char ** const stringValueP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_read_string_old(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ const char ** const stringValueP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_read_string_lp_old(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+@@ -147,11 +174,13 @@ xmlrpc_read_string_lp_old(xmlrpc_env * const envP,
+ const char ** const stringValueP);
+
+ #if XMLRPC_HAVE_WCHAR
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_read_string_w_old(xmlrpc_env * const envP,
+ xmlrpc_value * const valueP,
+ const wchar_t ** const stringValueP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_read_string_w_lp_old(xmlrpc_env * const envP,
+ xmlrpc_value * const valueP,
+@@ -159,6 +188,7 @@ xmlrpc_read_string_w_lp_old(xmlrpc_env * const envP,
+ const wchar_t ** const stringValueP);
+ #endif
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_read_base64_old(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/c_util.h b/libs/xmlrpc-c/include/xmlrpc-c/c_util.h
+index 8cc72e9..b8635e6 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/c_util.h
++++ b/libs/xmlrpc-c/include/xmlrpc-c/c_util.h
+@@ -1,14 +1,31 @@
+ #ifndef XMLRPC_C_C_UTIL_H_INCLUDED
+ #define XMLRPC_C_C_UTIL_H_INCLUDED
+
+-/* GNU_PRINTF_ATTR lets the GNU compiler check printf-type
++/* C language stuff. Doesn't involve any libraries that aren't part of
++ the compiler.
++*/
++
++#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
++
++/* XMLRPC_PRINTF_ATTR lets the GNU compiler check printf-type
+ calls to be sure the arguments match the format string, thus preventing
+ runtime segmentation faults and incorrect messages.
+ */
+ #ifdef __GNUC__
+-#define GNU_PRINTF_ATTR(a,b) __attribute__ ((format (printf, a, b)))
++#define XMLRPC_PRINTF_ATTR(a,b) __attribute__ ((format (printf, a, b)))
++#define XMLRPC_NORETURN_ATTR __attribute__((noreturn))
++#else
++#define XMLRPC_PRINTF_ATTR(a,b)
++#define XMLRPC_NORETURN_ATTR
++#endif
++
++/* XMLRPC_DLLEXPORT is an attribute of an external symbols that says it
++ is to be exported from a library that contains it.
++*/
++#if defined(_DLL) && defined(_MSC_VER) && _MSC_VER >= 1500
++#define XMLRPC_DLLEXPORT __declspec(dllexport)
+ #else
+-#define GNU_PRINTF_ATTR(a,b)
++#define XMLRPC_DLLEXPORT
+ #endif
+
+ #endif
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/client.h b/libs/xmlrpc-c/include/xmlrpc-c/client.h
+index c2e2e61..f4166e3 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/client.h
++++ b/libs/xmlrpc-c/include/xmlrpc-c/client.h
+@@ -10,6 +10,8 @@
+ #ifndef XMLRPC_CLIENT_H_INCLUDED
+ #define XMLRPC_CLIENT_H_INCLUDED
+
++#include <stdarg.h>
++#include <xmlrpc-c/c_util.h>
+ #include <xmlrpc-c/base.h>
+
+ #ifdef __cplusplus
+@@ -39,8 +41,11 @@ typedef struct xmlrpc_client_transport_ops xmlrpc_client_transport_ops;
+ so now we just use void * as a base class pointer.
+ */
+
++XMLRPC_DLLEXPORT
+ extern struct xmlrpc_client_transport_ops xmlrpc_libwww_transport_ops;
++XMLRPC_DLLEXPORT
+ extern struct xmlrpc_client_transport_ops xmlrpc_wininet_transport_ops;
++XMLRPC_DLLEXPORT
+ extern struct xmlrpc_client_transport_ops xmlrpc_curl_transport_ops;
+
+ enum xmlrpc_sslversion {
+@@ -50,6 +55,29 @@ enum xmlrpc_sslversion {
+ XMLRPC_SSLVERSION_SSLv3
+ };
+
++
++enum xmlrpc_httpauthtype {
++ /* These are just constants. They can be or'ed as integers to create
++ a set.
++ */
++ XMLRPC_HTTPAUTH_BASIC = (1<<0),
++ XMLRPC_HTTPAUTH_DIGEST = (1<<1),
++ XMLRPC_HTTPAUTH_GSSNEGOTIATE = (1<<2),
++ XMLRPC_HTTPAUTH_NTLM = (1<<3),
++};
++
++/* The following are useful combinations of the HTTP authentication types
++ above.
++*/
++#define XMLRPC_HTTPAUTH_NONE 0
++#define XMLRPC_HTTPAUTH_ANY ~0
++#define XMLRPC_HTTPAUTH_ANYSAFE (~XMLRPC_HTTPAUTH_BASIC)
++
++enum xmlrpc_httpproxytype {
++ XMLRPC_HTTPPROXY_HTTP = 0,
++ XMLRPC_HTTPPROXY_SOCKS5 = 5
++};
++
+ struct xmlrpc_curl_xportparms {
+ /* This is designed so that zero values are always the defaults. */
+ const char * network_interface;
+@@ -71,6 +99,15 @@ struct xmlrpc_curl_xportparms {
+ const char * egdsocket;
+ const char * ssl_cipher_list;
+ unsigned int timeout;
++ xmlrpc_bool dont_advertise;
++ const char * proxy;
++ unsigned int proxy_port;
++ enum xmlrpc_httpproxytype proxy_type;
++ unsigned int proxy_auth;
++ /* A set of authentication schemes -- an OR of
++ enum xmlrpc_httpproxyauth values
++ */
++ const char * proxy_userpwd;
+ };
+
+
+@@ -88,6 +125,19 @@ struct xmlrpc_wininet_xportparms {
+
+ /* XMLRPC_WXPSIZE(xyz) is analogous to XMLRPC_CPSIZE, below */
+
++struct xmlrpc_transfer_progress {
++ double total;
++ double now;
++};
++
++struct xmlrpc_progress_data {
++ struct xmlrpc_transfer_progress call;
++ struct xmlrpc_transfer_progress response;
++};
++
++typedef void xmlrpc_progress_fn(void * const,
++ struct xmlrpc_progress_data const);
++
+ struct xmlrpc_clientparms {
+ /* (transport, transportparmsP, transportparm_size) and
+ (transportOpsP, transportP) are mutually exclusive.
+@@ -100,6 +150,7 @@ struct xmlrpc_clientparms {
+ const struct xmlrpc_client_transport_ops * transportOpsP;
+ xmlrpc_client_transport * transportP;
+ xmlrpc_dialect dialect;
++ xmlrpc_progress_fn * progressFn;
+ };
+
+ #define XMLRPC_CPSIZE(mbrname) \
+@@ -112,23 +163,24 @@ struct xmlrpc_clientparms {
+ not the caller is new enough to have supplied a certain parameter.
+ */
+
++XMLRPC_DLLEXPORT
+ const char *
+ xmlrpc_client_get_default_transport(xmlrpc_env * const env);
+
+ /* A callback function to handle the response to an asynchronous call.
+ ** If 'fault->fault_occurred' is true, then response will be NULL. All
+-** arguments except 'user_data' will be deallocated internally; please do
++** arguments except 'userHandle' will be deallocated internally; please do
+ ** not free any of them yourself.
+-** WARNING: param_array may (or may not) be NULL if fault->fault_occurred
++** WARNING: 'paramArray' may (or may not) be NULL if fault->fault_occurred
+ ** is true, and you set up the call using xmlrpc_client_call_asynch.
+ ** WARNING: If asynchronous calls are still pending when the library is
+ ** shut down, your handler may (or may not) be called with a fault. */
+-typedef void (*xmlrpc_response_handler) (const char *server_url,
+- const char *method_name,
+- xmlrpc_value *param_array,
+- void *user_data,
+- xmlrpc_env *fault,
+- xmlrpc_value *result);
++typedef void xmlrpc_response_handler(const char * serverUrl,
++ const char * methodName,
++ xmlrpc_value * paramArray,
++ void * userHandle,
++ xmlrpc_env * fault,
++ xmlrpc_value * result);
+
+
+ /*=========================================================================
+@@ -147,73 +199,98 @@ typedef void (*xmlrpc_response_handler) (const char *server_url,
+ typedef struct _xmlrpc_server_info xmlrpc_server_info;
+
+ /* Create a new server info record, pointing to the specified server. */
++XMLRPC_DLLEXPORT
+ xmlrpc_server_info *
+ xmlrpc_server_info_new(xmlrpc_env * const envP,
+ const char * const serverUrl);
+
+ /* Create a new server info record, with a copy of the old server. */
++XMLRPC_DLLEXPORT
+ extern xmlrpc_server_info *
+ xmlrpc_server_info_copy(xmlrpc_env * const envP,
+ xmlrpc_server_info * const srcP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_info_free(xmlrpc_server_info * const serverP);
+
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_info_set_user(xmlrpc_env * const envP,
+ xmlrpc_server_info * const serverInfoP,
+ const char * const username,
+ const char * const password);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_info_set_basic_auth(xmlrpc_env * const envP,
+ xmlrpc_server_info * const serverP,
+ const char * const username,
+ const char * const password);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_info_allow_auth_basic(xmlrpc_env * const envP,
+ xmlrpc_server_info * const sP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_info_disallow_auth_basic(xmlrpc_env * const envP,
+ xmlrpc_server_info * const sP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_info_allow_auth_digest(xmlrpc_env * const envP,
+ xmlrpc_server_info * const sP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_info_disallow_auth_digest(xmlrpc_env * const envP,
+ xmlrpc_server_info * const sP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_info_allow_auth_negotiate(xmlrpc_env * const envP,
+ xmlrpc_server_info * const sP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_info_disallow_auth_negotiate(xmlrpc_env * const envP,
+ xmlrpc_server_info * const sP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_info_allow_auth_ntlm(xmlrpc_env * const envP,
+ xmlrpc_server_info * const sP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_info_disallow_auth_ntlm(xmlrpc_env * const envP,
+ xmlrpc_server_info * const sP);
+
++/* These are for backward compatibility -- they can't be exported from a
++ Windows DLL. xmlrpc_server_version() is preferred.
++*/
+ extern unsigned int const xmlrpc_client_version_major;
+ extern unsigned int const xmlrpc_client_version_minor;
+ extern unsigned int const xmlrpc_client_version_point;
+
++XMLRPC_DLLEXPORT
++void
++xmlrpc_client_version(unsigned int * const majorP,
++ unsigned int * const minorP,
++ unsigned int * const pointP);
++
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_client_setup_global_const(xmlrpc_env * const envP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_client_teardown_global_const(void);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_client_create(xmlrpc_env * const envP,
+ int const flags,
+@@ -223,9 +300,11 @@ xmlrpc_client_create(xmlrpc_env * const envP,
+ unsigned int const parmSize,
+ xmlrpc_client ** const clientPP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_client_destroy(xmlrpc_client * const clientP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_client_transport_call2(
+ xmlrpc_env * const envP,
+@@ -234,6 +313,7 @@ xmlrpc_client_transport_call2(
+ xmlrpc_mem_block * const callXmlP,
+ xmlrpc_mem_block ** const respXmlPP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_client_call2(xmlrpc_env * const envP,
+ struct xmlrpc_client * const clientP,
+@@ -242,6 +322,7 @@ xmlrpc_client_call2(xmlrpc_env * const envP,
+ xmlrpc_value * const paramArrayP,
+ xmlrpc_value ** const resultPP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_client_call2f(xmlrpc_env * const envP,
+ xmlrpc_client * const clientP,
+@@ -251,32 +332,58 @@ xmlrpc_client_call2f(xmlrpc_env * const envP,
+ const char * const format,
+ ...);
+
++XMLRPC_DLLEXPORT
++void
++xmlrpc_client_call2f_va(xmlrpc_env * const envP,
++ xmlrpc_client * const clientP,
++ const char * const serverUrl,
++ const char * const methodName,
++ const char * const format,
++ xmlrpc_value ** const resultPP,
++ va_list args);
++
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_client_event_loop_finish(xmlrpc_client * const clientP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_client_event_loop_finish_timeout(xmlrpc_client * const clientP,
+ unsigned long const milliseconds);
+
++XMLRPC_DLLEXPORT
+ void
+-xmlrpc_client_start_rpc(xmlrpc_env * const envP,
+- struct xmlrpc_client * const clientP,
+- xmlrpc_server_info * const serverInfoP,
+- const char * const methodName,
+- xmlrpc_value * const argP,
+- xmlrpc_response_handler responseHandler,
+- void * const userData);
+-
++xmlrpc_client_start_rpc(xmlrpc_env * const envP,
++ struct xmlrpc_client * const clientP,
++ const xmlrpc_server_info * const serverInfoP,
++ const char * const methodName,
++ xmlrpc_value * const paramArrayP,
++ xmlrpc_response_handler responseHandler,
++ void * const userData);
++
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_client_start_rpcf(xmlrpc_env * const envP,
+ xmlrpc_client * const clientP,
+ const char * const serverUrl,
+ const char * const methodName,
+- xmlrpc_response_handler callback,
++ xmlrpc_response_handler responseHandler,
+ void * const userData,
+ const char * const format,
+ ...);
+
++XMLRPC_DLLEXPORT
++void
++xmlrpc_client_start_rpcf_va(xmlrpc_env * const envP,
++ xmlrpc_client * const clientP,
++ const char * const serverUrl,
++ const char * const methodName,
++ xmlrpc_response_handler responseHandler,
++ void * const userData,
++ const char * const format,
++ va_list args);
++
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_client_set_interrupt(xmlrpc_client * const clientP,
+ int * const interruptP);
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/client.hpp b/libs/xmlrpc-c/include/xmlrpc-c/client.hpp
+index de6d073..f757b6a 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/client.hpp
++++ b/libs/xmlrpc-c/include/xmlrpc-c/client.hpp
+@@ -5,6 +5,7 @@
+ #include <vector>
+ #include <memory>
+
++#include <xmlrpc-c/c_util.h>
+ #include <xmlrpc-c/girerr.hpp>
+ #include <xmlrpc-c/girmem.hpp>
+ #include <xmlrpc-c/base.hpp>
+@@ -13,9 +14,9 @@
+
+ namespace xmlrpc_c {
+
+-class clientTransactionPtr;
++class XMLRPC_DLLEXPORT clientTransactionPtr;
+
+-class clientTransaction : public girmem::autoObject {
++class XMLRPC_DLLEXPORT clientTransaction : public girmem::autoObject {
+
+ friend class clientTransactionPtr;
+
+@@ -26,11 +27,14 @@ public:
+ virtual void
+ finishErr(girerr::error const& error) = 0;
+
++ virtual void
++ progress(struct xmlrpc_progress_data const& progressData) const = 0;
++
+ protected:
+ clientTransaction();
+ };
+
+-class clientTransactionPtr : public girmem::autoObjectPtr {
++class XMLRPC_DLLEXPORT clientTransactionPtr : public girmem::autoObjectPtr {
+
+ public:
+ clientTransactionPtr();
+@@ -43,9 +47,9 @@ public:
+ operator->() const;
+ };
+
+-class clientPtr;
++class XMLRPC_DLLEXPORT clientPtr;
+
+-class client : public girmem::autoObject {
++class XMLRPC_DLLEXPORT client : public girmem::autoObject {
+ /*----------------------------------------------------------------------------
+ A generic client -- a means of performing an RPC. This is so generic
+ that it can be used for clients that are not XML-RPC.
+@@ -77,7 +81,7 @@ public:
+ setInterrupt(int *);
+ };
+
+-class clientPtr : public girmem::autoObjectPtr {
++class XMLRPC_DLLEXPORT clientPtr : public girmem::autoObjectPtr {
+ public:
+ clientPtr();
+
+@@ -90,7 +94,7 @@ public:
+ get() const;
+ };
+
+-class serverAccessor : public girmem::autoObject {
++class XMLRPC_DLLEXPORT serverAccessor : public girmem::autoObject {
+
+ public:
+ serverAccessor(xmlrpc_c::clientPtr const clientP,
+@@ -106,7 +110,7 @@ private:
+ xmlrpc_c::carriageParmPtr const carriageParmP;
+ };
+
+-class serverAccessorPtr : public girmem::autoObjectPtr {
++class XMLRPC_DLLEXPORT serverAccessorPtr : public girmem::autoObjectPtr {
+ public:
+ serverAccessorPtr();
+
+@@ -120,7 +124,7 @@ public:
+ get() const;
+ };
+
+-class connection {
++class XMLRPC_DLLEXPORT connection {
+ /*----------------------------------------------------------------------------
+ A nexus of a particular client and a particular server, along with
+ carriage parameters for performing RPCs between the two.
+@@ -140,7 +144,7 @@ public:
+ xmlrpc_c::carriageParm * carriageParmP;
+ };
+
+-class client_xml : public xmlrpc_c::client {
++class XMLRPC_DLLEXPORT client_xml : public xmlrpc_c::client {
+ /*----------------------------------------------------------------------------
+ A client that uses XML-RPC XML in the RPC. This class does not define
+ how the XML gets transported, though (i.e. does not require HTTP).
+@@ -180,7 +184,7 @@ private:
+ struct client_xml_impl * implP;
+ };
+
+-class xmlTransaction_client : public xmlrpc_c::xmlTransaction {
++class XMLRPC_DLLEXPORT xmlTransaction_client : public xmlrpc_c::xmlTransaction {
+
+ public:
+ xmlTransaction_client(xmlrpc_c::clientTransactionPtr const& tranP);
+@@ -190,11 +194,15 @@ public:
+
+ void
+ finishErr(girerr::error const& error) const;
++
++ void
++ progress(xmlrpc_progress_data const& progressData) const;
++
+ private:
+ xmlrpc_c::clientTransactionPtr const tranP;
+ };
+
+-class xmlTransaction_clientPtr : public xmlTransactionPtr {
++class XMLRPC_DLLEXPORT xmlTransaction_clientPtr : public xmlTransactionPtr {
+ public:
+ xmlTransaction_clientPtr();
+
+@@ -206,21 +214,23 @@ public:
+
+ class rpcPtr;
+
+-class rpc : public clientTransaction {
++class XMLRPC_DLLEXPORT rpc : public clientTransaction {
+ /*----------------------------------------------------------------------------
+ An RPC. An RPC consists of method name, parameters, and result. It
+ does not specify in any way how the method name and parameters get
+ turned into a result. It does not presume XML or HTTP.
+-
+- You don't create an object of this class directly. All references to
+- an rpc object should be by an rpcPtr object. Create a new RPC by
+- creating a new rpcPtr. Accordingly, our constructors and destructors
+- are protected, but available to our friend class rpcPtr.
+-
++
++ You don't normally create or reference an object of this class directly,
++ but rather via an 'rpcPtr' object. That takes care of deleting the object
++ when you are done with it (but not before). This is critical if you plan
++ to use the 'start' method, because without an rpcPtr reference, the system
++ will destroy the object under the covers when the RPC finishes, and there
++ is no way for you to guarantee you won't still access it after it finishes
++ (because of accesses within Xmlrpc-c calls such as the call that finishes
++ the RPC or just rpc::start).
++
+ In order to do asynchronous RPCs, you normally have to create a derived
+- class that defines a useful notifyComplete(). If you do that, you'll
+- want to make sure the derived class objects get accessed only via rpcPtrs
+- as well.
++ class that defines a useful notifyComplete().
+ -----------------------------------------------------------------------------*/
+ friend class xmlrpc_c::rpcPtr;
+
+@@ -248,6 +258,9 @@ public:
+ virtual void
+ notifyComplete();
+
++ virtual void
++ progress(struct xmlrpc_progress_data const& progressData) const;
++
+ bool
+ isFinished() const;
+
+@@ -269,7 +282,7 @@ private:
+ struct rpc_impl * implP;
+ };
+
+-class rpcPtr : public clientTransactionPtr {
++class XMLRPC_DLLEXPORT rpcPtr : public clientTransactionPtr {
+ public:
+ rpcPtr();
+
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/client_global.h b/libs/xmlrpc-c/include/xmlrpc-c/client_global.h
+index 4f388fc..7d7a11b 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/client_global.h
++++ b/libs/xmlrpc-c/include/xmlrpc-c/client_global.h
+@@ -1,6 +1,9 @@
+ #ifndef CLIENT_GLOBAL_H_INCLUDED
+ #define CLIENT_GLOBAL_H_INCLUDED
+
++#include <xmlrpc-c/c_util.h>
++#include <xmlrpc-c/client.h>
++
+ /*=========================================================================
+ ** Initialization and Shutdown
+ **=========================================================================
+@@ -12,11 +15,13 @@
+ #define XMLRPC_CLIENT_NO_FLAGS (0)
+ #define XMLRPC_CLIENT_SKIP_LIBWWW_INIT (1)
+
++XMLRPC_DLLEXPORT
+ extern void
+ xmlrpc_client_init(int const flags,
+ const char * const appname,
+ const char * const appversion);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_client_init2(xmlrpc_env * const env,
+ int const flags,
+@@ -25,6 +30,7 @@ xmlrpc_client_init2(xmlrpc_env * const env,
+ const struct xmlrpc_clientparms * const clientparms,
+ unsigned int const parm_size);
+
++XMLRPC_DLLEXPORT
+ extern void
+ xmlrpc_client_cleanup(void);
+
+@@ -35,6 +41,7 @@ xmlrpc_client_cleanup(void);
+ ** functions from inside an asynchronous callback!
+ */
+
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_client_call(xmlrpc_env * const envP,
+ const char * const server_url,
+@@ -42,12 +49,14 @@ xmlrpc_client_call(xmlrpc_env * const envP,
+ const char * const format,
+ ...);
+
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_client_call_params(xmlrpc_env * const envP,
+ const char * const serverUrl,
+ const char * const methodName,
+ xmlrpc_value * const paramArrayP);
+
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_client_call_server(xmlrpc_env * const envP,
+ const xmlrpc_server_info * const server,
+@@ -55,6 +64,7 @@ xmlrpc_client_call_server(xmlrpc_env * const envP,
+ const char * const format,
+ ...);
+
++XMLRPC_DLLEXPORT
+ xmlrpc_value *
+ xmlrpc_client_call_server_params(
+ xmlrpc_env * const envP,
+@@ -62,6 +72,7 @@ xmlrpc_client_call_server_params(
+ const char * const method_name,
+ xmlrpc_value * const paramArrayP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_client_transport_call(
+ xmlrpc_env * const envP,
+@@ -83,6 +94,7 @@ xmlrpc_client_transport_call(
+ ** to run the event loop somehow; see below.
+ ** WARNING: If an error occurs while building the argument, the
+ ** response handler will be called with a NULL param_array. */
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_client_call_asynch(const char * const server_url,
+ const char * const method_name,
+@@ -93,6 +105,7 @@ xmlrpc_client_call_asynch(const char * const server_url,
+
+ /* As above, but use an xmlrpc_server_info object. The server object can be
+ ** safely destroyed as soon as this function returns. */
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_client_call_server_asynch(xmlrpc_server_info * const server,
+ const char * const method_name,
+@@ -104,6 +117,7 @@ xmlrpc_client_call_server_asynch(xmlrpc_server_info * const server,
+ /* As above, but the parameter list is supplied as an xmlrpc_value
+ ** containing an array.
+ */
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_client_call_asynch_params(const char * const server_url,
+ const char * const method_name,
+@@ -113,6 +127,7 @@ xmlrpc_client_call_asynch_params(const char * const server_url,
+
+ /* As above, but use an xmlrpc_server_info object. The server object can be
+ ** safely destroyed as soon as this function returns. */
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_client_call_server_asynch_params(
+ xmlrpc_server_info * const server,
+@@ -130,11 +145,13 @@ xmlrpc_client_call_server_asynch_params(
+
+ /* Finish all outstanding asynchronous calls. Alternatively, the loop
+ ** will exit if someone calls xmlrpc_client_event_loop_end. */
++XMLRPC_DLLEXPORT
+ extern void
+ xmlrpc_client_event_loop_finish_asynch(void);
+
+
+ /* Finish all outstanding asynchronous calls. */
++XMLRPC_DLLEXPORT
+ extern void
+ xmlrpc_client_event_loop_finish_asynch_timeout(unsigned long const milliseconds);
+
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/client_int.h b/libs/xmlrpc-c/include/xmlrpc-c/client_int.h
+index dabdcaf..79f7ade 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/client_int.h
++++ b/libs/xmlrpc-c/include/xmlrpc-c/client_int.h
+@@ -86,6 +86,35 @@ xmlrpc_client_event_loop_end (void);
+ extern int
+ xmlrpc_client_asynch_calls_are_unfinished (void);
+
++
++
++/*=========================================================================
++** Interface between global client and general client functions.
++** (These are necessary because there are some global client functions
++** that don't have exported private client versions because we don't like
++** them and have them for global functions only for backward compatibility.
++** The global client functions existed before any private client ones did).
++**========================================================================= */
++void
++xmlrpc_client_call_server2_va(xmlrpc_env * const envP,
++ struct xmlrpc_client * const clientP,
++ const xmlrpc_server_info * const serverInfoP,
++ const char * const methodName,
++ const char * const format,
++ va_list args,
++ xmlrpc_value ** const resultPP);
++
++void
++xmlrpc_client_start_rpcf_server_va(
++ xmlrpc_env * const envP,
++ struct xmlrpc_client * const clientP,
++ const xmlrpc_server_info * const serverInfoP,
++ const char * const methodName,
++ xmlrpc_response_handler responseHandler,
++ void * const userData,
++ const char * const format,
++ va_list args);
++
+ /* Copyright (C) 2001 by First Peer, Inc. All rights reserved.
+ **
+ ** Redistribution and use in source and binary forms, with or without
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/client_simple.hpp b/libs/xmlrpc-c/include/xmlrpc-c/client_simple.hpp
+index 52e6c2b..5252363 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/client_simple.hpp
++++ b/libs/xmlrpc-c/include/xmlrpc-c/client_simple.hpp
+@@ -3,13 +3,13 @@
+
+ #include <string>
+
++#include <xmlrpc-c/c_util.h>
+ #include <xmlrpc-c/base.hpp>
+ #include <xmlrpc-c/client.hpp>
+
+ namespace xmlrpc_c {
+
+-
+-class clientSimple {
++class XMLRPC_DLLEXPORT clientSimple {
+
+ public:
+ clientSimple();
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/client_transport.hpp b/libs/xmlrpc-c/include/xmlrpc-c/client_transport.hpp
+index 8d6053d..ddeabf5 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/client_transport.hpp
++++ b/libs/xmlrpc-c/include/xmlrpc-c/client_transport.hpp
+@@ -3,6 +3,8 @@
+
+ #include <string>
+ #include <vector>
++
++#include <xmlrpc-c/c_util.h>
+ #include <xmlrpc-c/util.h>
+ #include <xmlrpc-c/client.h>
+ #include <xmlrpc-c/girerr.hpp>
+@@ -11,9 +13,9 @@
+
+ namespace xmlrpc_c {
+
+-class carriageParmPtr;
++class XMLRPC_DLLEXPORT carriageParmPtr;
+
+-class carriageParm : public girmem::autoObject {
++class XMLRPC_DLLEXPORT carriageParm : public girmem::autoObject {
+ /*----------------------------------------------------------------------------
+ The parameter to a client for an individual RPC. It tells specifics
+ of how to carry the call to the server and the response back. For
+@@ -30,7 +32,7 @@ protected:
+ carriageParm();
+ };
+
+-class carriageParmPtr : public girmem::autoObjectPtr {
++class XMLRPC_DLLEXPORT carriageParmPtr : public girmem::autoObjectPtr {
+
+ public:
+ carriageParmPtr();
+@@ -46,9 +48,9 @@ public:
+
+ //----------------------------------------------------------------------------
+
+-class xmlTransactionPtr;
++class XMLRPC_DLLEXPORT xmlTransactionPtr;
+
+-class xmlTransaction : public girmem::autoObject {
++class XMLRPC_DLLEXPORT xmlTransaction : public girmem::autoObject {
+
+ friend class xmlTransactionPtr;
+
+@@ -59,11 +61,14 @@ public:
+ virtual void
+ finishErr(girerr::error const& error) const;
+
++ virtual void
++ progress(struct xmlrpc_progress_data const& progressData) const;
++
+ protected:
+ xmlTransaction();
+ };
+
+-class xmlTransactionPtr : public girmem::autoObjectPtr {
++class XMLRPC_DLLEXPORT xmlTransactionPtr : public girmem::autoObjectPtr {
+ public:
+ xmlTransactionPtr();
+
+@@ -75,7 +80,7 @@ public:
+
+ //----------------------------------------------------------------------------
+
+-class clientXmlTransport : public girmem::autoObject {
++class XMLRPC_DLLEXPORT clientXmlTransport : public girmem::autoObject {
+ /*----------------------------------------------------------------------------
+ An object which transports XML to and from an XML-RPC server for an
+ XML-RPC client.
+@@ -105,11 +110,16 @@ public:
+ xmlrpc_mem_block * const responseXmlMP,
+ xmlrpc_env const transportEnv);
+
++ static void
++ progress(
++ struct xmlrpc_call_info * const callInfoP,
++ struct xmlrpc_progress_data const progressData);
++
+ virtual void
+ setInterrupt(int * const interruptP);
+ };
+
+-class clientXmlTransportPtr : public girmem::autoObjectPtr {
++class XMLRPC_DLLEXPORT clientXmlTransportPtr : public girmem::autoObjectPtr {
+
+ public:
+ clientXmlTransportPtr();
+@@ -127,7 +137,7 @@ public:
+ HTTP
+ ===========================================================================*/
+
+-class carriageParm_http0 : public xmlrpc_c::carriageParm {
++class XMLRPC_DLLEXPORT carriageParm_http0 : public xmlrpc_c::carriageParm {
+
+ public:
+ carriageParm_http0(std::string const serverUrl);
+@@ -179,7 +189,7 @@ protected:
+ instantiate(std::string const serverUrl);
+ };
+
+-class carriageParm_http0Ptr : public xmlrpc_c::carriageParmPtr {
++class XMLRPC_DLLEXPORT carriageParm_http0Ptr : public xmlrpc_c::carriageParmPtr {
+
+ public:
+ carriageParm_http0Ptr();
+@@ -189,7 +199,7 @@ public:
+ operator->() const;
+ };
+
+-class clientXmlTransport_http : public xmlrpc_c::clientXmlTransport {
++class XMLRPC_DLLEXPORT clientXmlTransport_http : public xmlrpc_c::clientXmlTransport {
+ /*----------------------------------------------------------------------------
+ A base class for client XML transports that use the simple, classic
+ C HTTP transports.
+@@ -230,13 +240,13 @@ protected:
+ curl
+ ===========================================================================*/
+
+-class carriageParm_curl0 : public xmlrpc_c::carriageParm_http0 {
++class XMLRPC_DLLEXPORT carriageParm_curl0 : public xmlrpc_c::carriageParm_http0 {
+
+ public:
+ carriageParm_curl0(std::string const serverUrl);
+ };
+
+-class carriageParm_curl0Ptr : public xmlrpc_c::carriageParm_http0Ptr {
++class XMLRPC_DLLEXPORT carriageParm_curl0Ptr : public xmlrpc_c::carriageParm_http0Ptr {
+
+ public:
+ carriageParm_curl0Ptr();
+@@ -246,16 +256,21 @@ public:
+ operator->() const;
+ };
+
+-class clientXmlTransport_curl : public xmlrpc_c::clientXmlTransport_http {
++class XMLRPC_DLLEXPORT clientXmlTransport_curl : public xmlrpc_c::clientXmlTransport_http {
+
+ public:
++ struct constrOpt_impl;
++
+ class constrOpt {
+ public:
+ constrOpt();
++ ~constrOpt();
++ constrOpt(constrOpt&);
+
+ constrOpt & network_interface (std::string const& arg);
+ constrOpt & no_ssl_verifypeer (bool const& arg);
+ constrOpt & no_ssl_verifyhost (bool const& arg);
++ constrOpt & dont_advertise (bool const& arg);
+ constrOpt & user_agent (std::string const& arg);
+ constrOpt & ssl_cert (std::string const& arg);
+ constrOpt & sslcerttype (std::string const& arg);
+@@ -272,49 +287,15 @@ public:
+ constrOpt & egdsocket (std::string const& arg);
+ constrOpt & ssl_cipher_list (std::string const& arg);
+ constrOpt & timeout (unsigned int const& arg);
+-
+- struct {
+- std::string network_interface;
+- bool no_ssl_verifypeer;
+- bool no_ssl_verifyhost;
+- std::string user_agent;
+- std::string ssl_cert;
+- std::string sslcerttype;
+- std::string sslcertpasswd;
+- std::string sslkey;
+- std::string sslkeytype;
+- std::string sslkeypasswd;
+- std::string sslengine;
+- bool sslengine_default;
+- xmlrpc_sslversion sslversion;
+- std::string cainfo;
+- std::string capath;
+- std::string randomfile;
+- std::string egdsocket;
+- std::string ssl_cipher_list;
+- unsigned int timeout;
+- } value;
+- struct {
+- bool network_interface;
+- bool no_ssl_verifypeer;
+- bool no_ssl_verifyhost;
+- bool user_agent;
+- bool ssl_cert;
+- bool sslcerttype;
+- bool sslcertpasswd;
+- bool sslkey;
+- bool sslkeytype;
+- bool sslkeypasswd;
+- bool sslengine;
+- bool sslengine_default;
+- bool sslversion;
+- bool cainfo;
+- bool capath;
+- bool randomfile;
+- bool egdsocket;
+- bool ssl_cipher_list;
+- bool timeout;
+- } present;
++ constrOpt & proxy (std::string const& arg);
++ constrOpt & proxy_port (unsigned int const& arg);
++ constrOpt & proxy_auth (unsigned int const& arg);
++ constrOpt & proxy_userpwd (std::string const& arg);
++ constrOpt & proxy_type (xmlrpc_httpproxytype const& arg);
++
++ private:
++ struct constrOpt_impl * implP;
++ friend class clientXmlTransport_curl;
+ };
+
+ clientXmlTransport_curl(constrOpt const& opt);
+@@ -335,14 +316,14 @@ private:
+ libwww
+ ===========================================================================*/
+
+-class carriageParm_libwww0 : public xmlrpc_c::carriageParm_http0 {
++class XMLRPC_DLLEXPORT carriageParm_libwww0 : public xmlrpc_c::carriageParm_http0 {
+
+ public:
+ carriageParm_libwww0(std::string const serverUrl);
+
+ };
+
+-class carriageParm_libwww0Ptr : public xmlrpc_c::carriageParm_http0Ptr {
++class XMLRPC_DLLEXPORT carriageParm_libwww0Ptr : public xmlrpc_c::carriageParm_http0Ptr {
+
+ public:
+ carriageParm_libwww0Ptr();
+@@ -352,7 +333,7 @@ public:
+ operator->() const;
+ };
+
+-class clientXmlTransport_libwww : public xmlrpc_c::clientXmlTransport_http {
++class XMLRPC_DLLEXPORT clientXmlTransport_libwww : public xmlrpc_c::clientXmlTransport_http {
+
+ public:
+ clientXmlTransport_libwww(std::string const appname = "",
+@@ -365,14 +346,14 @@ public:
+ wininet
+ ===========================================================================*/
+
+-class carriageParm_wininet0 : public xmlrpc_c::carriageParm_http0 {
++class XMLRPC_DLLEXPORT carriageParm_wininet0 : public xmlrpc_c::carriageParm_http0 {
+
+ public:
+ carriageParm_wininet0(std::string const serverUrl);
+
+ };
+
+-class carriageParm_wininet0Ptr : public xmlrpc_c::carriageParm_http0Ptr {
++class XMLRPC_DLLEXPORT carriageParm_wininet0Ptr : public xmlrpc_c::carriageParm_http0Ptr {
+
+ public:
+ carriageParm_wininet0Ptr();
+@@ -382,7 +363,7 @@ public:
+ operator->() const;
+ };
+
+-class clientXmlTransport_wininet : public xmlrpc_c::clientXmlTransport_http {
++class XMLRPC_DLLEXPORT clientXmlTransport_wininet : public xmlrpc_c::clientXmlTransport_http {
+
+ public:
+ clientXmlTransport_wininet(bool const allowInvalidSslCerts = false);
+@@ -394,15 +375,15 @@ public:
+ pstream
+ ===========================================================================*/
+
+-class packetSocket;
++class XMLRPC_DLLEXPORT packetSocket;
+
+-class carriageParm_pstream : public xmlrpc_c::carriageParm {
++class XMLRPC_DLLEXPORT carriageParm_pstream : public xmlrpc_c::carriageParm {
+
+ // There are no parameters for carrying an RPC on a packet stream.
+ // There's only one way to carry it.
+ };
+
+-class carriageParm_pstreamPtr : public xmlrpc_c::carriageParmPtr {
++class XMLRPC_DLLEXPORT carriageParm_pstreamPtr : public xmlrpc_c::carriageParmPtr {
+
+ public:
+ carriageParm_pstreamPtr();
+@@ -413,21 +394,22 @@ public:
+ operator->() const;
+ };
+
+-class clientXmlTransport_pstream : public xmlrpc_c::clientXmlTransport {
++class XMLRPC_DLLEXPORT clientXmlTransport_pstream : public xmlrpc_c::clientXmlTransport {
+
+ public:
++ struct constrOpt_impl;
++
+ class constrOpt {
+ public:
+ constrOpt();
++ ~constrOpt();
++ constrOpt(constrOpt&);
+
+ constrOpt & fd (int const& arg);
+
+- struct {
+- int fd;
+- } value;
+- struct {
+- bool fd;
+- } present;
++ private:
++ struct constrOpt_impl * implP;
++ friend class clientXmlTransport_pstream;
+ };
+
+ clientXmlTransport_pstream(constrOpt const& opt);
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/config.h.in b/libs/xmlrpc-c/include/xmlrpc-c/config.h.in
+deleted file mode 100644
+index 2575010..0000000
+--- a/libs/xmlrpc-c/include/xmlrpc-c/config.h.in
++++ /dev/null
+@@ -1,37 +0,0 @@
+-#ifndef XMLRPC_C_CONFIG_H_INCLUDED
+-#define XMLRPC_C_CONFIG_H_INCLUDED
+-
+-/* This file, part of XML-RPC For C/C++, is meant to
+- define characteristics of this particular installation
+- that the other <xmlrpc-c/...> header files need in
+- order to compile correctly when #included in Xmlrpc-c
+- user code.
+-
+- Those header files #include this one.
+-
+- This file was created by a make rule.
+-*/
+-#define XMLRPC_HAVE_WCHAR @HAVE_WCHAR_H_DEFINE@
+-#ifdef WIN32
+- /* SOCKET is a type defined by <winsock.h>. Anyone who
+- uses XMLRPC_SOCKET on a WIN32 system must #include
+- <winsock.h>
+- */
+- #define XMLRPC_SOCKET SOCKET
+- #define XMLRPC_HAVE_TIMEVAL 0
+- #define XMLRPC_HAVE_TIMESPEC 0
+-#else
+- #define XMLRPC_SOCKET int
+- #define XMLRPC_HAVE_TIMEVAL 1
+- #define XMLRPC_HAVE_TIMESPEC 1
+-#endif
+-
+-#if defined(_MSC_VER)
+- /* Newer MSVC has long long, but MSVC 6 does not */
+- #define XMLRPC_INT64 __int64
+- #define XMLRPC_INT32 __int32
+-#else
+- #define XMLRPC_INT64 long long
+- #define XMLRPC_INT32 int
+-#endif
+-#endif
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/girerr.hpp b/libs/xmlrpc-c/include/xmlrpc-c/girerr.hpp
+index 1008722..62fd677 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/girerr.hpp
++++ b/libs/xmlrpc-c/include/xmlrpc-c/girerr.hpp
+@@ -4,11 +4,13 @@
+ #include <string>
+ #include <exception>
+
++#include <xmlrpc-c/c_util.h>
++
+ #define HAVE_GIRERR_ERROR
+
+ namespace girerr {
+
+-class error : public std::exception {
++class XMLRPC_DLLEXPORT error : public std::exception {
+ public:
+ error(std::string const& what_arg) : _what(what_arg) {}
+
+@@ -23,8 +25,11 @@ private:
+
+ // throwf() always throws a girerr::error .
+
++XMLRPC_DLLEXPORT
+ void
+-throwf(const char * const format, ...);
++throwf(const char * const format, ...)
++ XMLRPC_PRINTF_ATTR(1,2)
++ XMLRPC_NORETURN_ATTR;
+
+ } // namespace
+
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/girmem.hpp b/libs/xmlrpc-c/include/xmlrpc-c/girmem.hpp
+index 2eed408..80ef8fc 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/girmem.hpp
++++ b/libs/xmlrpc-c/include/xmlrpc-c/girmem.hpp
+@@ -1,6 +1,8 @@
+ #ifndef GIRMEM_HPP_INCLUDED
+ #define GIRMEM_HPP_INCLUDED
+
++#include <xmlrpc-c/config.h>
++#include <xmlrpc-c/c_util.h>
+
+ /* The following pthread crap mirrors what is in pthreadx.h, which is
+ what girmem.cpp uses to declare the lock interface. We can't simply
+@@ -15,7 +17,7 @@
+ a pthread_mutex_t member, and on Windows, there's no such type.
+ */
+
+-#ifndef WIN32
++#if XMLRPC_HAVE_PTHREAD
+ # include <pthread.h>
+ typedef pthread_mutex_t girmem_lock;
+ #else
+@@ -25,9 +27,9 @@
+
+ namespace girmem {
+
+-class autoObjectPtr;
++class XMLRPC_DLLEXPORT autoObjectPtr;
+
+-class autoObject {
++class XMLRPC_DLLEXPORT autoObject {
+ friend class autoObjectPtr;
+
+ public:
+@@ -43,7 +45,7 @@ private:
+ unsigned int refcount;
+ };
+
+-class autoObjectPtr {
++class XMLRPC_DLLEXPORT autoObjectPtr {
+ public:
+ autoObjectPtr();
+ autoObjectPtr(girmem::autoObject * objectP);
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/inttypes.h b/libs/xmlrpc-c/include/xmlrpc-c/inttypes.h
+index fe1feb5..1e470e5 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/inttypes.h
++++ b/libs/xmlrpc-c/include/xmlrpc-c/inttypes.h
+@@ -9,6 +9,9 @@ typedef unsigned __int64 xmlrpc_uint64_t;
+
+ #else
+ #include <inttypes.h>
++#ifdef __INTERIX
++# include <stdint.h>
++#endif
+
+ typedef uint16_t xmlrpc_uint16_t;
+ typedef uint32_t xmlrpc_uint32_t;
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/oldcppwrapper.hpp b/libs/xmlrpc-c/include/xmlrpc-c/oldcppwrapper.hpp
+index 78a9c51..858fdd3 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/oldcppwrapper.hpp
++++ b/libs/xmlrpc-c/include/xmlrpc-c/oldcppwrapper.hpp
+@@ -27,17 +27,18 @@
+
+ #include <cstdlib>
+ #include <string>
++
++#include <xmlrpc-c/c_util.h>
+ #include <xmlrpc-c/base.h>
+ #include <xmlrpc-c/client.h>
+ #include <xmlrpc-c/server.h>
+
+-
+ //=========================================================================
+ // XmlRpcFault
+ //=========================================================================
+ // A C++ exception class representing an XML-RPC fault.
+
+-class XmlRpcFault {
++class XMLRPC_DLLEXPORT XmlRpcFault {
+
+ private:
+ xmlrpc_env mFault;
+@@ -51,9 +52,9 @@ public:
+ XmlRpcFault (const xmlrpc_env *env);
+ ~XmlRpcFault (void);
+
+- int getFaultCode (void) const;
+- std::string getFaultString (void) const;
+- xmlrpc_env *getFaultEnv (void);
++ inline int getFaultCode (void) const;
++ std::string getFaultString (void) const;
++ inline xmlrpc_env * getFaultEnv (void);
+ };
+
+ inline int XmlRpcFault::getFaultCode (void) const {
+@@ -74,7 +75,7 @@ inline xmlrpc_env *XmlRpcFault::getFaultEnv (void) {
+ // xmlrpc_parse_value(env, v, "(i)", &i);
+ // env.throwIfFaultOccurred();
+
+-class XmlRpcEnv {
++class XMLRPC_DLLEXPORT XmlRpcEnv {
+
+ private:
+ xmlrpc_env mEnv;
+@@ -128,7 +129,7 @@ inline void XmlRpcEnv::throwIfFaultOccurred (void) const {
+ //
+ // So reference counting for the xmlrpc_value is quite a nightmare.
+
+-class XmlRpcValue {
++class XMLRPC_DLLEXPORT XmlRpcValue {
+
+ private:
+ xmlrpc_value *mValue;
+@@ -257,7 +258,7 @@ inline xmlrpc_value *XmlRpcValue::borrowReference (void) const {
+ // XmlRpcClient
+ //=========================================================================
+
+-class XmlRpcClient {
++class XMLRPC_DLLEXPORT XmlRpcClient {
+
+ private:
+ std::string mServerUrl;
+@@ -344,7 +345,7 @@ inline XmlRpcValue XmlRpcClient::call (std::string method_name,
+ // XmlRpcGenSrv
+ //=========================================================================
+
+-class XmlRpcGenSrv {
++class XMLRPC_DLLEXPORT XmlRpcGenSrv {
+
+ private:
+
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/packetsocket.hpp b/libs/xmlrpc-c/include/xmlrpc-c/packetsocket.hpp
+index 64b7221..2ad7a46 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/packetsocket.hpp
++++ b/libs/xmlrpc-c/include/xmlrpc-c/packetsocket.hpp
+@@ -15,20 +15,21 @@
+ #include <string>
+ #include <queue>
+
++#include <xmlrpc-c/c_util.h>
+ #include <xmlrpc-c/girmem.hpp>
+
+ namespace xmlrpc_c {
+
+-class packet : public girmem::autoObject {
++class XMLRPC_DLLEXPORT packet : public girmem::autoObject {
+
+ public:
+ packet();
+
+ packet(const unsigned char * const data,
+- size_t const dataLength);
++ size_t const dataLength);
+
+ packet(const char * const data,
+- size_t const dataLength);
++ size_t const dataLength);
+
+ ~packet();
+
+@@ -54,7 +55,7 @@ private:
+
+
+
+-class packetPtr: public girmem::autoObjectPtr {
++class XMLRPC_DLLEXPORT packetPtr: public girmem::autoObjectPtr {
+
+ public:
+ packetPtr();
+@@ -67,7 +68,9 @@ public:
+
+
+
+-class packetSocket {
++class XMLRPC_DLLEXPORT packetSocket_impl;
++
++class XMLRPC_DLLEXPORT packetSocket {
+ /*----------------------------------------------------------------------------
+ This is an Internet communication vehicle that transmits individual
+ variable-length packets of text.
+@@ -106,56 +109,7 @@ public:
+ packetPtr * const packetPP);
+
+ private:
+- int sockFd;
+- // The kernel stream socket we use.
+- bool eof;
+- // The packet socket is at end-of-file for reads.
+- // 'readBuffer' is empty and there won't be any more data to fill
+- // it because the underlying stream socket is closed.
+- std::queue<packetPtr> readBuffer;
+- packetPtr packetAccumP;
+- // The receive packet we're currently accumulating; it will join
+- // 'readBuffer' when we've received the whole packet (and we've
+- // seen the END escape sequence so we know we've received it all).
+- // If we're not currently accumulating a packet (haven't seen a
+- // PKT escape sequence), this points to nothing.
+- bool inEscapeSeq;
+- // In our trek through the data read from the underlying stream
+- // socket, we are after an ESC character and before the end of the
+- // escape sequence. 'escAccum' shows what of the escape sequence
+- // we've seen so far.
+- bool inPacket;
+- // We're now receiving packet data from the underlying stream
+- // socket. We've seen a complete PKT escape sequence, but have not
+- // seen a complete END escape sequence since.
+- struct {
+- unsigned char bytes[3];
+- size_t len;
+- } escAccum;
+-
+- void
+- bufferFinishedPacket();
+-
+- void
+- takeSomeEscapeSeq(const unsigned char * const buffer,
+- size_t const length,
+- size_t * const bytesTakenP);
+-
+- void
+- takeSomePacket(const unsigned char * const buffer,
+- size_t const length,
+- size_t * const bytesTakenP);
+-
+- void
+- verifyNothingAccumulated();
+-
+- void
+- processBytesRead(const unsigned char * const buffer,
+- size_t const bytesRead);
+-
+- void
+- readFromFile();
+-
++ packetSocket_impl * implP;
+ };
+
+
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/registry.hpp b/libs/xmlrpc-c/include/xmlrpc-c/registry.hpp
+index 1182b86..81db5b0 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/registry.hpp
++++ b/libs/xmlrpc-c/include/xmlrpc-c/registry.hpp
+@@ -1,10 +1,12 @@
+ #ifndef REGISTRY_HPP_INCLUDED
+ #define REGISTRY_HPP_INCLUDED
+
++#include <sys/types.h>
+ #include <string>
+ #include <vector>
+ #include <list>
+
++#include <xmlrpc-c/c_util.h>
+ #include <xmlrpc-c/server.h>
+ #include <xmlrpc-c/girmem.hpp>
+ #include <xmlrpc-c/base.hpp>
+@@ -12,7 +14,20 @@
+ namespace xmlrpc_c {
+
+
+-class method : public girmem::autoObject {
++class XMLRPC_DLLEXPORT callInfo {
++/*----------------------------------------------------------------------------
++ Information about how an XML-RPC call arrived.
++
++ This base class carries no information; Servers that don't have any
++ call information to provide might use this. Servers that do have call
++ information to provide define a derived class of this that contains
++ information pertinent to that kind of server.
++-----------------------------------------------------------------------------*/
++public:
++ virtual ~callInfo() {}; // This makes it polymorphic
++};
++
++class XMLRPC_DLLEXPORT method : public girmem::autoObject {
+ /*----------------------------------------------------------------------------
+ An XML-RPC method.
+
+@@ -68,7 +83,34 @@ protected:
+ */
+
+
+-class methodPtr : public girmem::autoObjectPtr {
++class XMLRPC_DLLEXPORT method2 : public method {
++/*----------------------------------------------------------------------------
++ An XML-RPC method.
++
++ This base class is abstract. You can't create an object in it.
++ Define a useful method with this as a base class, with an
++ execute() method.
++
++ This differs from class 'method' in that the execute() method gets
++ call information ('callInfo').
++-----------------------------------------------------------------------------*/
++public:
++ method2();
++
++ virtual ~method2();
++
++ virtual void
++ execute(xmlrpc_c::paramList const& paramList,
++ const xmlrpc_c::callInfo * const callInfoP,
++ xmlrpc_c::value * const resultP) = 0;
++
++ void
++ execute(xmlrpc_c::paramList const& paramList,
++ xmlrpc_c::value * const resultP);
++
++};
++
++class XMLRPC_DLLEXPORT methodPtr : public girmem::autoObjectPtr {
+
+ public:
+ methodPtr(xmlrpc_c::method * const methodP);
+@@ -77,7 +119,7 @@ public:
+ operator->() const;
+ };
+
+-class defaultMethod : public girmem::autoObject {
++class XMLRPC_DLLEXPORT defaultMethod : public girmem::autoObject {
+
+ public:
+ virtual ~defaultMethod();
+@@ -88,7 +130,7 @@ public:
+ xmlrpc_c::value * const resultP) = 0;
+ };
+
+-class defaultMethodPtr : public girmem::autoObjectPtr {
++class XMLRPC_DLLEXPORT defaultMethodPtr : public girmem::autoObjectPtr {
+
+ public:
+ defaultMethodPtr();
+@@ -102,9 +144,9 @@ public:
+ get() const;
+ };
+
++struct registry_impl;
+
+-
+-class registry : public girmem::autoObject {
++class XMLRPC_DLLEXPORT registry : public girmem::autoObject {
+ /*----------------------------------------------------------------------------
+ An Xmlrpc-c server method registry. An Xmlrpc-c server transport
+ (e.g. an HTTP server) uses this object to process an incoming
+@@ -126,7 +168,7 @@ public:
+ void
+ disableIntrospection();
+
+- class shutdown {
++ class XMLRPC_DLLEXPORT shutdown {
+ public:
+ virtual ~shutdown() = 0;
+ virtual void
+@@ -141,36 +183,24 @@ public:
+ setDialect(xmlrpc_dialect const dialect);
+
+ void
+- processCall(std::string const& body,
+- std::string * const responseP) const;
++ processCall(std::string const& callXml,
++ std::string * const responseXmlP) const;
+
+- xmlrpc_registry *
+- c_registry() const;
+- /* This is meant to be private except to other objects in the
+- Xmlrpc-c library.
+- */
++ void
++ processCall(std::string const& callXml,
++ const xmlrpc_c::callInfo * const callInfoP,
++ std::string * const responseXmlP) const;
++
++ size_t
++ maxStackSize() const;
+
+ private:
+
+- xmlrpc_registry * c_registryP;
+- // Pointer to the C registry object we use to implement this
+- // object.
+-
+- std::list<xmlrpc_c::methodPtr> methodList;
+- // This is a list of all the method objects (actually, pointers
+- // to them). But since the real registry is the C registry object,
+- // all this list is for is to maintain references to the objects
+- // to which the C registry points so that they continue to exist.
+-
+- xmlrpc_c::defaultMethodPtr defaultMethodP;
+- // The real identifier of the default method is the C registry
+- // object; this member exists only to maintain a reference to the
+- // object to which the C registry points so that it will continue
+- // to exist.
++ registry_impl * implP;
+ };
+
+
+-class registryPtr : public girmem::autoObjectPtr {
++class XMLRPC_DLLEXPORT registryPtr : public girmem::autoObjectPtr {
+
+ public:
+ registryPtr();
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/select_int.h b/libs/xmlrpc-c/include/xmlrpc-c/select_int.h
+index 3b42a1d..7a43ec3 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/select_int.h
++++ b/libs/xmlrpc-c/include/xmlrpc-c/select_int.h
+@@ -1,11 +1,12 @@
+ #ifndef SELECT_INT_H_INCLUDED
+ #define SELECT_INT_H_INCLUDED
+
+-#ifndef WIN32
++#if HAVE_SYS_SELECT_H
+ #include <sys/select.h>
+ #endif
+ #include <signal.h>
+
++#include "xmlrpc-c/c_util.h"
+ #include "xmlrpc-c/time_int.h"
+ #ifdef WIN32
+ #ifndef sigset_t
+@@ -13,6 +14,7 @@ typedef int sigset_t;
+ #endif
+ #endif
+
++XMLRPC_DLLEXPORT
+ int
+ xmlrpc_pselect(int const n,
+ fd_set * const readfdsP,
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/server.h b/libs/xmlrpc-c/include/xmlrpc-c/server.h
+index 70d4896..11256fe 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/server.h
++++ b/libs/xmlrpc-c/include/xmlrpc-c/server.h
+@@ -3,6 +3,7 @@
+ #ifndef XMLRPC_SERVER_H_INCLUDED
+ #define XMLRPC_SERVER_H_INCLUDED
+
++#include <xmlrpc-c/c_util.h>
+ #include <xmlrpc-c/base.h>
+
+ #ifdef __cplusplus
+@@ -37,19 +38,32 @@ typedef xmlrpc_value *
+ xmlrpc_value * const paramArrayP,
+ void * const serverInfo);
+
++/* These are for backward compatibility -- they can't be exported from a
++ Windows DLL. xmlrpc_server_version() is preferred.
++*/
+ extern unsigned int const xmlrpc_server_version_major;
+ extern unsigned int const xmlrpc_server_version_minor;
+ extern unsigned int const xmlrpc_server_version_point;
+
++XMLRPC_DLLEXPORT
++void
++xmlrpc_server_version(unsigned int * const majorP,
++ unsigned int * const minorP,
++ unsigned int * const pointP);
++
++XMLRPC_DLLEXPORT
+ xmlrpc_registry *
+ xmlrpc_registry_new(xmlrpc_env * const envP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_registry_free(xmlrpc_registry * const registryP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_registry_disable_introspection(xmlrpc_registry * const registryP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_registry_add_method(xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+@@ -58,6 +72,7 @@ xmlrpc_registry_add_method(xmlrpc_env * const envP,
+ xmlrpc_method const method,
+ void * const serverInfo);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_registry_add_method_w_doc(xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+@@ -68,6 +83,7 @@ xmlrpc_registry_add_method_w_doc(xmlrpc_env * const envP,
+ const char * const signatureString,
+ const char * const help);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_registry_add_method2(xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+@@ -77,12 +93,30 @@ xmlrpc_registry_add_method2(xmlrpc_env * const envP,
+ const char * const help,
+ void * const serverInfo);
+
++struct xmlrpc_method_info3 {
++ const char * methodName;
++ xmlrpc_method2 methodFunction;
++ void * serverInfo;
++ size_t stackSize;
++ const char * signatureString;
++ const char * help;
++};
++
++XMLRPC_DLLEXPORT
++void
++xmlrpc_registry_add_method3(
++ xmlrpc_env * const envP,
++ xmlrpc_registry * const registryP,
++ const struct xmlrpc_method_info3 * const infoP);
++
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_registry_set_default_method(xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+ xmlrpc_default_method const handler,
+ void * const userData);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_registry_set_preinvoke_method(xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+@@ -95,11 +129,13 @@ typedef void xmlrpc_server_shutdown_fn(xmlrpc_env * const envP,
+ const char * const comment,
+ void * const callInfo);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_registry_set_shutdown(xmlrpc_registry * const registryP,
+ xmlrpc_server_shutdown_fn * const shutdownFn,
+ void * const context);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_registry_set_dialect(xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+@@ -109,6 +145,7 @@ xmlrpc_registry_set_dialect(xmlrpc_env * const envP,
+ Lower interface -- services to be used by an HTTP request handler
+ -----------------------------------------------------------------------------*/
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_registry_process_call2(xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+@@ -117,6 +154,7 @@ xmlrpc_registry_process_call2(xmlrpc_env * const envP,
+ void * const callInfo,
+ xmlrpc_mem_block ** const outputPP);
+
++XMLRPC_DLLEXPORT
+ xmlrpc_mem_block *
+ xmlrpc_registry_process_call(xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+@@ -124,6 +162,10 @@ xmlrpc_registry_process_call(xmlrpc_env * const envP,
+ const char * const xmlData,
+ size_t const xmlLen);
+
++XMLRPC_DLLEXPORT
++size_t
++xmlrpc_registry_max_stackSize(xmlrpc_registry * const registryP);
++
+ #ifdef __cplusplus
+ }
+ #endif
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/server_abyss.h b/libs/xmlrpc-c/include/xmlrpc-c/server_abyss.h
+index 975fa0e..36bcb11 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/server_abyss.h
++++ b/libs/xmlrpc-c/include/xmlrpc-c/server_abyss.h
+@@ -16,6 +16,7 @@
+ #endif
+
+ #include <xmlrpc-c/config.h> /* For XMLRPC_SOCKET */
++#include <xmlrpc-c/c_util.h>
+ #include <xmlrpc-c/abyss.h>
+ #include <xmlrpc-c/server.h>
+
+@@ -33,9 +34,11 @@ extern "C" {
+ ** of your program, when it is only one thread.
+ **=======================================================================*/
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_abyss_global_init(xmlrpc_env * const envP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_abyss_global_term(void);
+
+@@ -68,6 +71,9 @@ typedef struct {
+ const char * uri_path;
+ xmlrpc_bool chunk_response;
+ xmlrpc_bool enable_shutdown;
++ const char * allow_origin;
++ xmlrpc_bool access_ctl_expires;
++ unsigned int access_ctl_max_age;
+ } xmlrpc_server_abyss_parms;
+
+
+@@ -85,10 +91,11 @@ typedef struct {
+ ** Simple server with Abyss under the covers
+ **=======================================================================*/
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_abyss(xmlrpc_env * const envP,
+ const xmlrpc_server_abyss_parms * const parms,
+- unsigned int const parm_size);
++ unsigned int const parmSize);
+
+ /*=========================================================================
+ ** Object-oriented XML-RPC server with Abyss under the covers
+@@ -96,39 +103,47 @@ xmlrpc_server_abyss(xmlrpc_env * const envP,
+
+ typedef struct xmlrpc_server_abyss xmlrpc_server_abyss_t;
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_abyss_create(xmlrpc_env * const envP,
+ const xmlrpc_server_abyss_parms * const parmsP,
+ unsigned int const parmSize,
+ xmlrpc_server_abyss_t ** const serverPP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_abyss_destroy(xmlrpc_server_abyss_t * const serverP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_abyss_run_server(xmlrpc_env * const envP,
+ xmlrpc_server_abyss_t * const serverP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_abyss_terminate(xmlrpc_env * const envP,
+ xmlrpc_server_abyss_t * const serverP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_abyss_reset_terminate(xmlrpc_env * const envP,
+ xmlrpc_server_abyss_t * const serverP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_abyss_use_sigchld(xmlrpc_server_abyss_t * const serverP);
+
+
+ typedef struct xmlrpc_server_abyss_sig xmlrpc_server_abyss_sig;
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_abyss_setup_sig(
+ xmlrpc_env * const envP,
+ xmlrpc_server_abyss_t * const serverP,
+ xmlrpc_server_abyss_sig ** const oldHandlersPP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_abyss_restore_sig(
+ const xmlrpc_server_abyss_sig * const oldHandlersP);
+@@ -139,21 +154,78 @@ xmlrpc_server_abyss_restore_sig(
+ ** Functions to make an XML-RPC server out of your own Abyss server
+ **=======================================================================*/
+
++typedef void
++xmlrpc_call_processor(xmlrpc_env * const envP,
++ void * const processorArg,
++ const char * const callXml,
++ size_t const callXmlLen,
++ TSession * const abyssSessionP,
++ xmlrpc_mem_block ** const responseXmlPP);
++
++typedef struct {
++ xmlrpc_call_processor * xml_processor;
++ void * xml_processor_arg;
++ size_t xml_processor_max_stack;
++ const char * uri_path;
++ xmlrpc_bool chunk_response;
++ const char * allow_origin;
++ /* NULL means don't answer HTTP access control query */
++ xmlrpc_bool access_ctl_expires;
++ unsigned int access_ctl_max_age;
++} xmlrpc_server_abyss_handler_parms;
++
++#define XMLRPC_AHPSIZE(MBRNAME) \
++ XMLRPC_STRUCTSIZE(xmlrpc_server_abyss_handler_parms, MBRNAME)
++
++/* XMLRPC_AHPSIZE(xyz) is the minimum size a struct
++ xmlrpc_server_abyss_handler_parms must be to include the 'xyz' member.
++ This is essential to forward and backward compatibility, as new members
++ will be added to the end of the struct in future releases. This is how the
++ callee knows whether or not the caller is new enough to have supplied a
++ certain parameter.
++*/
++
++
++XMLRPC_DLLEXPORT
++void
++xmlrpc_server_abyss_set_handler3(
++ xmlrpc_env * const envP,
++ TServer * const srvP,
++ const xmlrpc_server_abyss_handler_parms * const parms,
++ unsigned int const parmSize);
++
++XMLRPC_DLLEXPORT
++void
++xmlrpc_server_abyss_set_handler2(
++ TServer * const srvP,
++ const char * const uriPath,
++ xmlrpc_call_processor xmlProcessor,
++ void * const xmlProcessorArg,
++ size_t const xmlProcessorMaxStackSize,
++ xmlrpc_bool const chunkResponse);
++
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_abyss_set_handlers2(TServer * const srvP,
+ const char * const filename,
+ xmlrpc_registry * const registryP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_abyss_set_handlers(TServer * const serverP,
+ xmlrpc_registry * const registryP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_abyss_set_handler(xmlrpc_env * const envP,
+ TServer * const serverP,
+ const char * const filename,
+ xmlrpc_registry * const registryP);
+
++XMLRPC_DLLEXPORT
++void
++xmlrpc_server_abyss_set_default_handler(TServer * const serverP);
++
+ /*=========================================================================
+ ** Handy Abyss Extensions
+ **=======================================================================*/
+@@ -171,6 +243,7 @@ xmlrpc_server_abyss_set_handler(xmlrpc_env * const envP,
+ ** Once you call this routine, it is illegal to modify the server any
+ ** more, including changing any method registry.
+ */
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_abyss_run(void);
+
+@@ -180,6 +253,7 @@ xmlrpc_server_abyss_run(void);
+ ** function. 'runfirstArg' is the argument the server passes to the runfirst
+ ** function.
+ **/
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_abyss_run_first(runfirstFn const runfirst,
+ void * const runfirstArg);
+@@ -200,29 +274,34 @@ xmlrpc_server_abyss_run_first(runfirstFn const runfirst,
+ ** Or use a regular method registry and call
+ ** xmlrpc_server_abyss_set_handlers().
+ **/
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_abyss_init(int const flags,
+ const char * const config_file);
+
+ /* This is called automatically by xmlrpc_server_abyss_init. */
++XMLRPC_DLLEXPORT
+ void xmlrpc_server_abyss_init_registry (void);
+
+ /* Fetch the internal registry, if you happen to need it.
+ If you're using this, you really shouldn't be using the built-in
+ registry at all. It exists today only for backward compatibilty.
+ */
++XMLRPC_DLLEXPORT
+ extern xmlrpc_registry *
+ xmlrpc_server_abyss_registry (void);
+
+ /* A quick & easy shorthand for adding a method. Depending on
+ ** how you've configured your copy of Abyss, it's probably not safe to
+ ** call this method after calling xmlrpc_server_abyss_run. */
++XMLRPC_DLLEXPORT
+ void xmlrpc_server_abyss_add_method (char * const method_name,
+ xmlrpc_method const method,
+ void * const user_data);
+
+ /* As above, but provide documentation (see xmlrpc_registry_add_method_w_doc
+ ** for more information). You should really use this one. */
++XMLRPC_DLLEXPORT
+ extern void
+ xmlrpc_server_abyss_add_method_w_doc (char * const method_name,
+ xmlrpc_method const method,
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/server_abyss.hpp b/libs/xmlrpc-c/include/xmlrpc-c/server_abyss.hpp
+index 1ff9043..44636f9 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/server_abyss.hpp
++++ b/libs/xmlrpc-c/include/xmlrpc-c/server_abyss.hpp
+@@ -5,18 +5,25 @@
+ #include <winsock.h> // For XMLRPC_SOCKET (= SOCKET)
+ #endif
+
+-#include "xmlrpc-c/config.h" // For XMLRPC_SOCKET
+-#include "xmlrpc-c/base.hpp"
+-#include "abyss.h"
++#include <xmlrpc-c/config.h> // For XMLRPC_SOCKET
++#include <xmlrpc-c/c_util.h>
++#include <xmlrpc-c/base.hpp>
++#include <xmlrpc-c/registry.hpp>
++#include <xmlrpc-c/abyss.h>
+
+ namespace xmlrpc_c {
+
+-class serverAbyss {
++struct serverAbyss_impl;
++
++class XMLRPC_DLLEXPORT serverAbyss {
+
+ public:
+- class constrOpt {
++ struct constrOpt_impl;
++
++ class XMLRPC_DLLEXPORT constrOpt {
+ public:
+ constrOpt();
++ ~constrOpt();
+
+ constrOpt & registryPtr (xmlrpc_c::registryPtr const& arg);
+ constrOpt & registryP (const xmlrpc_c::registry * const& arg);
+@@ -29,33 +36,14 @@ public:
+ constrOpt & dontAdvertise (bool const& arg);
+ constrOpt & uriPath (std::string const& arg);
+ constrOpt & chunkResponse (bool const& arg);
++ constrOpt & allowOrigin (std::string const& arg);
++ constrOpt & accessCtlMaxAge (unsigned int const& arg);
++ constrOpt & serverOwnsSignals (bool const& arg);
++ constrOpt & expectSigchld (bool const& arg);
+
+- struct value {
+- xmlrpc_c::registryPtr registryPtr;
+- const xmlrpc_c::registry * registryP;
+- XMLRPC_SOCKET socketFd;
+- unsigned int portNumber;
+- std::string logFileName;
+- unsigned int keepaliveTimeout;
+- unsigned int keepaliveMaxConn;
+- unsigned int timeout;
+- bool dontAdvertise;
+- std::string uriPath;
+- bool chunkResponse;
+- } value;
+- struct {
+- bool registryPtr;
+- bool registryP;
+- bool socketFd;
+- bool portNumber;
+- bool logFileName;
+- bool keepaliveTimeout;
+- bool keepaliveMaxConn;
+- bool timeout;
+- bool dontAdvertise;
+- bool uriPath;
+- bool chunkResponse;
+- } present;
++ private:
++ struct constrOpt_impl * implP;
++ friend class serverAbyss;
+ };
+
+ serverAbyss(constrOpt const& opt);
+@@ -82,10 +70,15 @@ public:
+ void
+ runConn(int const socketFd);
+
++#ifndef WIN32
++ void
++ sigchld(pid_t pid);
++#endif
++
+ void
+ terminate();
+
+- class shutdown : public xmlrpc_c::registry::shutdown {
++ class XMLRPC_DLLEXPORT shutdown : public xmlrpc_c::registry::shutdown {
+ public:
+ shutdown(xmlrpc_c::serverAbyss * const severAbyssP);
+ virtual ~shutdown();
+@@ -95,35 +88,64 @@ public:
+ };
+
+ private:
+- // The user has the choice of supplying the registry by plain pointer
+- // (and managing the object's existence himself) or by autoObjectPtr
+- // (with automatic management). 'registryPtr' exists here only to
+- // maintain a reference count in the case that the user supplied an
+- // autoObjectPtr. The object doesn't reference the C++ registry
+- // object except during construction, because the C registry is the
+- // real registry.
+- xmlrpc_c::registryPtr registryPtr;
+
+- TServer cServer;
+-
+- void
+- setAdditionalServerParms(constrOpt const& opt);
++ serverAbyss_impl * implP;
+
+ void
+ initialize(constrOpt const& opt);
+ };
+
++class XMLRPC_DLLEXPORT callInfo_serverAbyss : public xmlrpc_c::callInfo {
++/*----------------------------------------------------------------------------
++ This is information about how an XML-RPC call arrived via an Abyss server.
++ It is available to the user's XML-RPC method execute() method, so for
++ example an XML-RPC method might execute differently depending upon the
++ IP address of the client.
++
++ This is for a user of a xmlrpc_c::serverAbyss server.
++-----------------------------------------------------------------------------*/
++public:
++ callInfo_serverAbyss(xmlrpc_c::serverAbyss * const abyssServerP,
++ TSession * const abyssSessionP);
++
++ xmlrpc_c::serverAbyss * const serverAbyssP;
++ // The server that is processing the RPC.
++ TSession * const abyssSessionP;
++ // The HTTP transaction that embodies the RPC. You can ask this
++ // object things like what the IP address of the client is.
++};
++
++class XMLRPC_DLLEXPORT callInfo_abyss : public xmlrpc_c::callInfo {
++/*----------------------------------------------------------------------------
++ This is information about how an XML-RPC call arrived via an Abyss server.
++ It is available to the user's XML-RPC method execute() method, so for
++ example an XML-RPC method might execute differently depending upon the
++ IP address of the client.
++
++ This is for a user with his own Abyss server, using
++ the "set_handlers" routines to make it into an XML-RPC server.
++-----------------------------------------------------------------------------*/
++public:
++ callInfo_abyss(TSession * const abyssSessionP);
++
++ TSession * abyssSessionP;
++ // The HTTP transaction that embodies the RPC. You can ask this
++ // object things like what the IP address of the client is.
++};
+
++XMLRPC_DLLEXPORT
+ void
+ server_abyss_set_handlers(TServer * const srvP,
+ xmlrpc_c::registry const& registry,
+ std::string const& uriPath = "/RPC2");
+
++XMLRPC_DLLEXPORT
+ void
+ server_abyss_set_handlers(TServer * const srvP,
+ const xmlrpc_c::registry * const registryP,
+ std::string const& uriPath = "/RPC2");
+
++XMLRPC_DLLEXPORT
+ void
+ server_abyss_set_handlers(TServer * const srvP,
+ xmlrpc_c::registryPtr const registryPtr,
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/server_cgi.h b/libs/xmlrpc-c/include/xmlrpc-c/server_cgi.h
+index ad926aa..e43b9e7 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/server_cgi.h
++++ b/libs/xmlrpc-c/include/xmlrpc-c/server_cgi.h
+@@ -6,38 +6,45 @@
+ #ifndef XMLRPC_CGI_H_INCLUDED
+ #define XMLRPC_CGI_H_INCLUDED
+
++#include <xmlrpc-c/c_util.h>
+ #include <xmlrpc-c/server.h>
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif /* __cplusplus */
+
+-
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_cgi_process_call(xmlrpc_registry * const registryP);
+
+ #define XMLRPC_CGI_NO_FLAGS (0)
+
++XMLRPC_DLLEXPORT
+ extern void
+-xmlrpc_cgi_init (int flags);
++xmlrpc_cgi_init(int const flags);
+
++XMLRPC_DLLEXPORT
+ extern xmlrpc_registry *
+ xmlrpc_cgi_registry (void);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_cgi_add_method(const char * const method_name,
+ xmlrpc_method const method,
+ void * const user_data);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_cgi_add_method_w_doc(const char * const method_name,
+ xmlrpc_method const method,
+ void * const user_data,
+ const char * const signature,
+ const char * const help);
++XMLRPC_DLLEXPORT
+ extern void
+ xmlrpc_cgi_process_call (void);
+
++XMLRPC_DLLEXPORT
+ extern void
+ xmlrpc_cgi_cleanup (void);
+
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/server_pstream.hpp b/libs/xmlrpc-c/include/xmlrpc-c/server_pstream.hpp
+index b542532..c365f9a 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/server_pstream.hpp
++++ b/libs/xmlrpc-c/include/xmlrpc-c/server_pstream.hpp
+@@ -3,36 +3,36 @@
+
+ #ifdef WIN32
+ #include <winsock.h> /* For XMLRPC_SOCKET (= SOCKET) */
++typedef int socklen_t;
++#else
++#include <sys/socket.h>
+ #endif
+
+ #include <xmlrpc-c/config.h> /* For XMLRPC_SOCKET */
++#include <xmlrpc-c/c_util.h>
+ #include <xmlrpc-c/registry.hpp>
+ #include <xmlrpc-c/packetsocket.hpp>
+
+ namespace xmlrpc_c {
+
+-class serverPstreamConn {
++class XMLRPC_DLLEXPORT serverPstreamConn {
+
+ public:
+
+- class constrOpt {
++ struct constrOpt_impl;
++
++ class XMLRPC_DLLEXPORT constrOpt {
+ public:
+ constrOpt();
++ ~constrOpt();
+
+ constrOpt & registryPtr (xmlrpc_c::registryPtr const& arg);
+ constrOpt & registryP (const xmlrpc_c::registry * const& arg);
+ constrOpt & socketFd (XMLRPC_SOCKET const& arg);
+
+- struct value {
+- xmlrpc_c::registryPtr registryPtr;
+- const xmlrpc_c::registry * registryP;
+- XMLRPC_SOCKET socketFd;
+- } value;
+- struct {
+- bool registryPtr;
+- bool registryP;
+- bool socketFd;
+- } present;
++ private:
++ struct constrOpt_impl * implP;
++ friend class serverPstreamConn;
+ };
+
+ serverPstreamConn(constrOpt const& opt);
+@@ -40,33 +40,122 @@ public:
+ ~serverPstreamConn();
+
+ void
++ runOnce(xmlrpc_c::callInfo * const callInfoP,
++ volatile const int * const interruptP,
++ bool * const eofP);
++
++ void
+ runOnce(volatile const int * const interruptP,
+ bool * const eofP);
+
+ void
+ runOnce(bool * const eofP);
+
++ void
++ runOnceNoWait(callInfo * const callInfoP,
++ bool * const eofP,
++ bool * const didOneP);
++
++ void
++ runOnceNoWait(bool * const eofP,
++ bool * const didOneP);
++
++ void
++ runOnceNoWait(bool * const eofP);
++
++ void
++ run(xmlrpc_c::callInfo * const callInfoP,
++ volatile const int * const interruptP);
++
++ void
++ run(volatile const int * const interruptP);
++
++ void
++ run();
++
+ private:
++ struct serverPstreamConn_impl * implP;
++};
+
+- // 'registryP' is what we actually use; 'registryHolder' just holds a
+- // reference to 'registryP' so the registry doesn't disappear while
+- // this server exists. But note that if the creator doesn't supply
+- // a registryPtr, 'registryHolder' is just a placeholder variable and
+- // the creator is responsible for making sure the registry doesn't
+- // go anywhere while the server exists.
+
+- registryPtr registryHolder;
+- const registry * registryP;
++class XMLRPC_DLLEXPORT serverPstream {
+
+- packetSocket * packetSocketP;
+- // The packet socket over which we received RPCs.
+- // This is permanently connected to our fixed client.
++public:
++
++ struct constrOpt_impl;
++
++ class XMLRPC_DLLEXPORT constrOpt {
++ public:
++ constrOpt();
++ ~constrOpt();
++
++ constrOpt & registryPtr (xmlrpc_c::registryPtr const& arg);
++ constrOpt & registryP (const xmlrpc_c::registry * const& arg);
++ constrOpt & socketFd (XMLRPC_SOCKET const& arg);
++
++ private:
++ struct constrOpt_impl * implP;
++ friend class serverPstream;
++ };
++
++ serverPstream(constrOpt const& opt);
++
++ virtual ~serverPstream(); // This makes it polymorphic
+
+ void
+- establishRegistry(constrOpt const& opt);
++ runSerial(volatile const int * const interruptP);
+
+ void
+- establishPacketSocket(constrOpt const& opt);
++ runSerial();
++
++ void
++ terminate();
++
++ class shutdown : public xmlrpc_c::registry::shutdown {
++ public:
++ shutdown(xmlrpc_c::serverPstream * const severAbyssP);
++ virtual ~shutdown();
++ void doit(std::string const& comment, void * const callInfo) const;
++ private:
++ xmlrpc_c::serverPstream * const serverPstreamP;
++ };
++
++private:
++ struct serverPstream_impl * implP;
++};
++
++// Note: there is no xmlrpc_c::callInfo_serverPstreamConn . That's
++// because the serverPstreamConn server is so low-level that the user
++// defines his own derived class of xmlrpc_c::callInfo. He creates an
++// object of that class and passes it to the 'runOnce' method. The
++// server then passes it on through to the user's XML-RPC method
++// execute() method.
++
++class XMLRPC_DLLEXPORT callInfo_serverPstream : public xmlrpc_c::callInfo {
++/*----------------------------------------------------------------------------
++ This is information about how an XML-RPC call arrived to the server. It is
++ available to the user's XML-RPC method execute() method, so for example an
++ XML-RPC method might execute differently depending upon the IP address of
++ the client.
++
++ This is for a user of a xmlrpc_c::serverPstream server.
++-----------------------------------------------------------------------------*/
++public:
++ callInfo_serverPstream(
++ xmlrpc_c::serverPstream * const serverP,
++ struct sockaddr const clientAddr,
++ socklen_t const clientAddrSize);
++
++ xmlrpc_c::serverPstream * const serverP;
++ // The server that is processing the RPC.
++ struct sockaddr const clientAddr;
++ // The address (typically, IP address and TCP port) of the XML-RPC
++ // client. This is a Unix OS type.
++ socklen_t const clientAddrSize;
++ // Size in bytes of the valid part of 'clientAddr'. (Usually implied
++ // by type of socket, as well as the address type member of
++ // 'clientAddr', but here because it's technically part of the POSIX
++ // socket interface).
+ };
+
+
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/server_w32httpsys.h b/libs/xmlrpc-c/include/xmlrpc-c/server_w32httpsys.h
+index 085f6e3..4c054c0 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/server_w32httpsys.h
++++ b/libs/xmlrpc-c/include/xmlrpc-c/server_w32httpsys.h
+@@ -38,6 +38,7 @@
+ #ifndef _XMLRPC_SERVER_HTTPSYS_H_
+ #define _XMLRPC_SERVER_HTTPSYS_H_ 1
+
++#include "c_util.h"
+ #include "transport_config.h"
+
+ #ifdef __cplusplus
+@@ -81,6 +82,7 @@ typedef struct {
+ not the caller is new enough to have supplied a certain parameter.
+ */
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_server_httpsys(
+ xmlrpc_env * const envP,
+@@ -92,4 +94,4 @@ xmlrpc_server_httpsys(
+ }
+ #endif /* __cplusplus */
+
+-#endif
+\ No newline at end of file
++#endif
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/sleep_int.h b/libs/xmlrpc-c/include/xmlrpc-c/sleep_int.h
+index be18e8f..369fd24 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/sleep_int.h
++++ b/libs/xmlrpc-c/include/xmlrpc-c/sleep_int.h
+@@ -1,7 +1,18 @@
+ #ifndef SLEEP_INT_H_INCLUDED
+ #define SLEEP_INT_H_INCLUDED
+
++#include "xmlrpc-c/c_util.h"
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_millisecond_sleep(unsigned int const milliseconds);
+
++#ifdef __cplusplus
++}
++#endif
++
+ #endif
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/string_int.h b/libs/xmlrpc-c/include/xmlrpc-c/string_int.h
+index fa787cb..04ac8c7 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/string_int.h
++++ b/libs/xmlrpc-c/include/xmlrpc-c/string_int.h
+@@ -13,22 +13,37 @@
+ extern "C" {
+ #endif
+
+-extern const char * const xmlrpc_strsol;
++XMLRPC_DLLEXPORT
++bool
++xmlrpc_strnomem(const char * const string);
+
++XMLRPC_DLLEXPORT
++const char *
++xmlrpc_strnomemval(void);
++
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_vasprintf(const char ** const retvalP,
+ const char * const fmt,
+ va_list varargs);
+
+-void GNU_PRINTF_ATTR(2,3)
++XMLRPC_DLLEXPORT
++void XMLRPC_PRINTF_ATTR(2,3)
+ xmlrpc_asprintf(const char ** const retvalP, const char * const fmt, ...);
+
++XMLRPC_DLLEXPORT
+ const char *
+-xmlrpc_strdupnull(const char * const string);
++xmlrpc_strdupsol(const char * const string);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_strfree(const char * const string);
+
++XMLRPC_DLLEXPORT
++const char *
++xmlrpc_strdupnull(const char * const string);
++
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_strfreenull(const char * const string);
+
+@@ -46,6 +61,11 @@ xmlrpc_memeq(const void * const a,
+ return (memcmp(a, b, size) == 0);
+ }
+
++/* strcasecmp doesn't exist on some systems without _BSD_SOURCE, so
++ xmlrpc_strcaseeq() can't either.
++*/
++#ifdef _BSD_SOURCE
++
+ static __inline__ bool
+ xmlrpc_strcaseeq(const char * const a,
+ const char * const b) {
+@@ -59,6 +79,7 @@ xmlrpc_strcaseeq(const char * const a,
+ #error "This platform has no known case-independent string compare fn"
+ #endif
+ }
++#endif
+
+ static __inline__ bool
+ xmlrpc_strneq(const char * const a,
+@@ -67,16 +88,42 @@ xmlrpc_strneq(const char * const a,
+ return (strncmp(a, b, len) == 0);
+ }
+
++XMLRPC_DLLEXPORT
+ const char *
+ xmlrpc_makePrintable(const char * const input);
+
++XMLRPC_DLLEXPORT
+ const char *
+ xmlrpc_makePrintable_lp(const char * const input,
+ size_t const inputLength);
+
++XMLRPC_DLLEXPORT
+ const char *
+ xmlrpc_makePrintableChar(char const input);
+
++/*----------------------------------------------------------------*/
++/* Standard string functions with destination array size checking */
++/*----------------------------------------------------------------*/
++#define STRSCPY(A,B) \
++ (strncpy((A), (B), sizeof(A)), *((A)+sizeof(A)-1) = '\0')
++#define STRSCMP(A,B) \
++ (strncmp((A), (B), sizeof(A)))
++#define STRSCAT(A,B) \
++ (strncat((A), (B), sizeof(A)-strlen(A)), *((A)+sizeof(A)-1) = '\0')
++
++/* We could do this, but it works only in GNU C
++#define SSPRINTF(TARGET, REST...) \
++ (snprintf(TARGET, sizeof(TARGET) , ## REST))
++
++Or this, but it works only in C99 compilers, which leaves out MSVC
++before 2005 and can't handle the zero variable argument case except
++by an MSVC extension:
++
++#define SSPRINTF(TARGET, ...) \
++ (snprintf(TARGET, sizeof(TARGET) , __VA_ARGS__))
++
++*/
++
+ #ifdef __cplusplus
+ }
+ #endif
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/time_int.h b/libs/xmlrpc-c/include/xmlrpc-c/time_int.h
+index 4db4537..705f2c8 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/time_int.h
++++ b/libs/xmlrpc-c/include/xmlrpc-c/time_int.h
+@@ -16,18 +16,22 @@
+ } xmlrpc_timespec;
+ #endif
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_gettimeofday(xmlrpc_timespec * const todP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_timegm(const struct tm * const brokenTime,
+ time_t * const timeValueP,
+ const char ** const errorP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_localtime(time_t const datetime,
+ struct tm * const tmP);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_gmtime(time_t const datetime,
+ struct tm * const resultP);
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/timeout.hpp b/libs/xmlrpc-c/include/xmlrpc-c/timeout.hpp
+index ef347e5..1da4a2f 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/timeout.hpp
++++ b/libs/xmlrpc-c/include/xmlrpc-c/timeout.hpp
+@@ -1,13 +1,16 @@
+ #ifndef XMLRPC_TIMEOUT_H_INCLUDED
+ #define XMLRPC_TIMEOUT_H_INCLUDED
+
++#include <xmlrpc-c/c_util.h>
++
+ namespace xmlrpc_c {
+
+-struct timeout {
++struct XMLRPC_DLLEXPORT timeout {
+
+ timeout() : finite(false) {}
+
+- timeout(unsigned int const duration) : duration(duration) {}
++ timeout(unsigned int const duration) :
++ finite(true), duration(duration) {}
+ // 'duration' is the timeout time in milliseconds
+
+ bool finite;
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/transport.h b/libs/xmlrpc-c/include/xmlrpc-c/transport.h
+index 13d901f..be53e18 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/transport.h
++++ b/libs/xmlrpc-c/include/xmlrpc-c/transport.h
+@@ -38,12 +38,17 @@ typedef void (*xmlrpc_transport_asynch_complete)(
+ xmlrpc_mem_block * const responseXmlP,
+ xmlrpc_env const env);
+
++typedef void (*xmlrpc_transport_progress)(
++ struct xmlrpc_call_info * const callInfoP,
++ struct xmlrpc_progress_data const data);
++
+ typedef void (*xmlrpc_transport_send_request)(
+ xmlrpc_env * const envP,
+ struct xmlrpc_client_transport * const clientTransportP,
+ const xmlrpc_server_info * const serverP,
+ xmlrpc_mem_block * const xmlP,
+ xmlrpc_transport_asynch_complete complete,
++ xmlrpc_transport_progress progress,
+ struct xmlrpc_call_info * const callInfoP);
+
+ typedef void (*xmlrpc_transport_call)(
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/transport_int.h b/libs/xmlrpc-c/include/xmlrpc-c/transport_int.h
+deleted file mode 100644
+index 80b92ca..0000000
+--- a/libs/xmlrpc-c/include/xmlrpc-c/transport_int.h
++++ /dev/null
+@@ -1,42 +0,0 @@
+-/* Copyright information is at the end of the file */
+-#ifndef XMLRPC_TRANSPORT_INT_H_INCLUDED
+-#define XMLRPC_TRANSPORT_INT_H_INCLUDED
+-
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+-#include "pthreadx.h" /* For threading helpers. */
+-
+-/*=========================================================================
+-** Transport Helper Functions and declarations.
+-**=========================================================================
+-*/
+-typedef struct _running_thread_info
+-{
+- struct _running_thread_info * Next;
+- struct _running_thread_info * Last;
+-
+- pthread_t _thread;
+-} running_thread_info;
+-
+-
+-/* list of running Async callback functions. */
+-typedef struct _running_thread_list
+-{
+- running_thread_info * AsyncThreadHead;
+- running_thread_info * AsyncThreadTail;
+-} running_thread_list;
+-
+-/* MRB-WARNING: Only call when you have successfully
+-** acquired the Lock/Unlock mutex! */
+-void register_asynch_thread (running_thread_list *list, pthread_t *thread);
+-
+-/* MRB-WARNING: Only call when you have successfully
+-** acquired the Lock/Unlock mutex! */
+-void unregister_asynch_thread (running_thread_list *list, pthread_t *thread);
+-
+-
+-#ifdef __cplusplus
+-}
+-#endif
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/util.h b/libs/xmlrpc-c/include/xmlrpc-c/util.h
+index 2cad286..3a6404d 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/util.h
++++ b/libs/xmlrpc-c/include/xmlrpc-c/util.h
+@@ -4,7 +4,10 @@
+
+ This is the interface to the libxmlrpc_util library, which contains
+ utility routines that have nothing to do with XML-RPC. The library
+- exists because other Xmlrpc-c libraries use the utilities.
++ exists primarily because other Xmlrpc-c libraries use the utilities,
++ but the utilities are also documented for use by Xmlrpc-c users.
++ For use by Xmlrpc-c users, they are considered to be part of the
++ libxmlrpc library. libxmlrpc_util is a prerequisite of libxmlrpc.
+
+ By Bryan Henderson, San Jose, CA 05.09.21.
+
+@@ -18,7 +21,7 @@
+ #include <stdarg.h>
+
+ #include <xmlrpc-c/config.h> /* Defines XMLRPC_HAVE_WCHAR */
+-#include <xmlrpc-c/c_util.h> /* for GNU_PRINTF_ATTR */
++#include <xmlrpc-c/c_util.h> /* for XMLRPC_PRINTF_ATTR */
+
+ #if XMLRPC_HAVE_WCHAR
+ #include <wchar.h>
+@@ -28,7 +31,6 @@
+ extern "C" {
+ #endif
+
+-
+ /*=========================================================================
+ ** C struct size computations
+ **=======================================================================*/
+@@ -40,7 +42,7 @@ extern "C" {
+ */
+
+ #define _XMLRPC_STRUCT_MEMBER_OFFSET(TYPE, MBRNAME) \
+- ((unsigned long)(char*)&((TYPE *)0)->MBRNAME)
++ ((size_t)(char*)&((TYPE *)0)->MBRNAME)
+ #define _XMLRPC_STRUCT_MEMBER_SIZE(TYPE, MBRNAME) \
+ sizeof(((TYPE *)0)->MBRNAME)
+ #define XMLRPC_STRUCTSIZE(TYPE, MBRNAME) \
+@@ -71,6 +73,7 @@ extern "C" {
+ #define XMLRPC_ASSERT(cond) while (0) {}
+ #endif
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_assertion_failed(const char * const fileName,
+ int const lineNumber);
+@@ -124,38 +127,44 @@ typedef struct _xmlrpc_env {
+
+ /* Initialize and destroy the contents of the provided xmlrpc_env object.
+ ** These functions will never fail. */
++XMLRPC_DLLEXPORT
+ void xmlrpc_env_init (xmlrpc_env* env);
++XMLRPC_DLLEXPORT
+ void xmlrpc_env_clean (xmlrpc_env* const env);
+
+ /* Fill out an xmlrpc_fault with the specified values, and set the
+ ** fault_occurred flag. This function will make a private copy of 'string',
+ ** so you retain responsibility for your copy. */
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_env_set_fault(xmlrpc_env * const env,
+ int const faultCode,
+ const char * const faultDescription);
+
+ /* The same as the above, but using varargs */
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_set_fault_formatted_v(xmlrpc_env * const envP,
+ int const code,
+ const char * const format,
+- va_list const args);
++ va_list args);
+
+ /* The same as the above, but using a printf-style format string. */
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_env_set_fault_formatted(xmlrpc_env * const envP,
+ int const code,
+ const char * const format,
+- ...) GNU_PRINTF_ATTR(3,4);
++ ...) XMLRPC_PRINTF_ATTR(3,4);
+
+ /* This one infers XMLRPC_INTERNAL_ERROR and has a shorter name.
+ So a call takes up less source code space.
+ */
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_faultf(xmlrpc_env * const envP,
+ const char * const format,
+- ...) GNU_PRINTF_ATTR(2,3);
++ ...) XMLRPC_PRINTF_ATTR(2,3);
+
+ /* A simple debugging assertion. */
+ #define XMLRPC_ASSERT_ENV_OK(envP) \
+@@ -223,32 +232,40 @@ typedef struct _xmlrpc_mem_block {
+ } xmlrpc_mem_block;
+
+ /* Allocate a new xmlrpc_mem_block. */
++XMLRPC_DLLEXPORT
+ xmlrpc_mem_block* xmlrpc_mem_block_new (xmlrpc_env* const env, size_t const size);
+
+ /* Destroy an existing xmlrpc_mem_block, and everything it contains. */
++XMLRPC_DLLEXPORT
+ void xmlrpc_mem_block_free (xmlrpc_mem_block* const block);
+
+ /* Initialize the contents of the provided xmlrpc_mem_block. */
++XMLRPC_DLLEXPORT
+ void xmlrpc_mem_block_init
+ (xmlrpc_env* const env, xmlrpc_mem_block* const block, size_t const size);
+
+ /* Deallocate the contents of the provided xmlrpc_mem_block, but not the
+ ** block itself. */
++XMLRPC_DLLEXPORT
+ void xmlrpc_mem_block_clean (xmlrpc_mem_block* const block);
+
+ /* Get the size and contents of the xmlrpc_mem_block. */
++XMLRPC_DLLEXPORT
+ size_t
+ xmlrpc_mem_block_size(const xmlrpc_mem_block * const block);
+
++XMLRPC_DLLEXPORT
+ void *
+ xmlrpc_mem_block_contents(const xmlrpc_mem_block * const block);
+
+ /* Resize an xmlrpc_mem_block, preserving as much of the contents as
+ ** possible. */
++XMLRPC_DLLEXPORT
+ void xmlrpc_mem_block_resize
+ (xmlrpc_env* const env, xmlrpc_mem_block* const block, size_t const size);
+
+ /* Append data to an existing xmlrpc_mem_block. */
++XMLRPC_DLLEXPORT
+ void xmlrpc_mem_block_append
+ (xmlrpc_env* const env, xmlrpc_mem_block* const block, const void * const data, size_t const len);
+
+@@ -295,12 +312,14 @@ void xmlrpc_mem_block_append
+ ** UTF-8 Encoding and Decoding
+ **=======================================================================*/
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_validate_utf8(xmlrpc_env * const envP,
+ const char * const utf8Data,
+ size_t const utf8Len);
+
+ /* Decode a UTF-8 string. */
++XMLRPC_DLLEXPORT
+ xmlrpc_mem_block *
+ xmlrpc_utf8_to_wcs(xmlrpc_env * const envP,
+ const char * const utf8_data,
+@@ -309,15 +328,18 @@ xmlrpc_utf8_to_wcs(xmlrpc_env * const envP,
+ /* Encode a UTF-8 string. */
+
+ #if XMLRPC_HAVE_WCHAR
++XMLRPC_DLLEXPORT
+ xmlrpc_mem_block *
+ xmlrpc_wcs_to_utf8(xmlrpc_env * const envP,
+ const wchar_t * const wcsData,
+ size_t const wcsLen);
+ #endif
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_force_to_utf8(char * const buffer);
+
++XMLRPC_DLLEXPORT
+ void
+ xmlrpc_force_to_xml_chars(char * const buffer);
+
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/util_int.h b/libs/xmlrpc-c/include/xmlrpc-c/util_int.h
+index 8dbc11c..db5c5e9 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/util_int.h
++++ b/libs/xmlrpc-c/include/xmlrpc-c/util_int.h
+@@ -1,14 +1,19 @@
+ #ifndef XMLRPC_C_UTIL_INT_H_INCLUDED
+ #define XMLRPC_C_UTIL_INT_H_INCLUDED
+
++/* This file contains facilities for use by Xmlrpc-c code, but not intended
++ to be included in a user compilation.
++
++ Names in here might conflict with other names in a user's compilation
++ if included in a user compilation.
++
++ The facilities may change in future releases.
++*/
++
+ #include "util.h"
+
+-#ifndef MIN
+ #define MIN(a,b) ((a) < (b) ? (a) : (b))
+-#endif
+-#ifndef MAX
+ #define MAX(a,b) ((a) > (b) ? (a) : (b))
+-#endif
+
+ /* When we deallocate a pointer in a struct, we often replace it with
+ ** this and throw in a few assertions here and there. */
+diff --git a/libs/xmlrpc-c/include/xmlrpc-c/xml.hpp b/libs/xmlrpc-c/include/xmlrpc-c/xml.hpp
+index a77731f..9e6ca90 100644
+--- a/libs/xmlrpc-c/include/xmlrpc-c/xml.hpp
++++ b/libs/xmlrpc-c/include/xmlrpc-c/xml.hpp
+@@ -2,31 +2,53 @@
+ #define XML_HPP_INCLUDED
+
+ #include <string>
++#include <xmlrpc-c/c_util.h>
+ #include <xmlrpc-c/base.hpp>
+
+ namespace xmlrpc_c {
+ namespace xml {
+
++XMLRPC_DLLEXPORT
+ void
+ generateCall(std::string const& methodName,
+ xmlrpc_c::paramList const& paramList,
+ std::string * const callXmlP);
+
++XMLRPC_DLLEXPORT
+ void
+ generateCall(std::string const& methodName,
+ xmlrpc_c::paramList const& paramList,
+ xmlrpc_dialect const dialect,
+ std::string * const callXmlP);
+
++XMLRPC_DLLEXPORT
++void
++parseCall(std::string const& callXml,
++ std::string * const methodNameP,
++ xmlrpc_c::paramList * const paramListP);
++
++XMLRPC_DLLEXPORT
++void
++generateResponse(xmlrpc_c::rpcOutcome const& outcome,
++ xmlrpc_dialect const dialect,
++ std::string * const respXmlP);
++
++XMLRPC_DLLEXPORT
++void
++generateResponse(xmlrpc_c::rpcOutcome const& outcome,
++ std::string * const respXmlP);
++
++XMLRPC_DLLEXPORT
+ void
+ parseSuccessfulResponse(std::string const& responseXml,
+ xmlrpc_c::value * const resultP);
+
++XMLRPC_DLLEXPORT
+ void
+ parseResponse(std::string const& responseXml,
+ xmlrpc_c::rpcOutcome * const outcomeP);
+
+-
++XMLRPC_DLLEXPORT
+ void
+ trace(std::string const& label,
+ std::string const& xml);
+diff --git a/libs/xmlrpc-c/irix-common.make b/libs/xmlrpc-c/irix-common.make
+deleted file mode 100644
+index 9f4ac62..0000000
+--- a/libs/xmlrpc-c/irix-common.make
++++ /dev/null
+@@ -1,31 +0,0 @@
+-# -*-makefile-*- <-- an Emacs control
+-
+-# See unix-common.make for an explanation of this file. This file is
+-# analogous to unix-common.make, but is for an Irix system.
+-
+-SONAME = $(@:%.$(MAJ):%)
+-
+-SHLIB_CMD = $(CCLD) $(LDFLAGS_SHLIB) -o $@ $^ $(LADD)
+-
+-SHLIB_LE_TARGETS = $(call shliblefn, $(SHARED_LIBS_TO_BUILD))
+-
+-$(SHLIB_LE_TARGETS):%:%.$(MAJ)
+- rm -f $@
+- $(LN_S) $< $@
+-
+-
+-.PHONY: $(SHLIB_INSTALL_TARGETS)
+-.PHONY: install-shared-libraries
+-
+-SHLIB_INSTALL_TARGETS = $(SHARED_LIBS_TO_INSTALL:%=%/install)
+-
+-#SHLIB_INSTALL_TARGETS is like "libfoo/install libbar/install"
+-
+-install-shared-libraries: $(SHLIB_INSTALL_TARGETS)
+-
+-$(SHLIB_INSTALL_TARGETS):%/install:%.$(SHLIB_SUFFIX).$(MAJ)
+-# $< is a library file name, e.g. libfoo.so.3.1 .
+- $(INSTALL_SHLIB) $< $(DESTDIR)$(LIBINST_DIR)/$<
+- cd $(DESTDIR)$(LIBINST_DIR); \
+- rm -f $< $(<:%.$(MAJ)=%); \
+- $(LN_S) $< $(<:%.$(MAJ)=%)
+diff --git a/libs/xmlrpc-c/lib/abyss/change.log b/libs/xmlrpc-c/lib/abyss/change.log
+deleted file mode 100644
+index 2d32d1a..0000000
+--- a/libs/xmlrpc-c/lib/abyss/change.log
++++ /dev/null
+@@ -1,34 +0,0 @@
+- Change log for the ABYSS Web Server
+- -----------------------------------
+-
+-Version 0.3 (March 23,2000):
+-----------------------------
+-* Handles conditional GET requests (by date)
+-* Conforms to all the MUSTs of the RFC2616 (newer version of the HTTP/1.1 protocol draft)
+-* New configuration options (such as pidfile for UNIX systems...)
+-* Handles HEAD and OPTIONS methods
+-* Many bug fixes
+-* Tested on Sun-OS 5.7
+-* Second public release
+-
+-Version 0.2 beta (February 7,2000):
+------------------------------------
+-* Handles GET on static files
+-* Handles correctly range requests
+-* Conforms to 80% of the MUSTs of the RFC2068 (HTTP/1.1 protocol draft)
+-* Improved code portability (Win32 and UNIX platforms)
+-* Tested on Linux 2.2 and Win95/98
+-* First public release
+-
+-Version 0.1 (January 2000):
+----------------------------
+-* Completely rewritten in C
+-* Speed improvement
+-* New memory allocation scheme (using pools)
+-* Never released
+-
+-Version 0.0 (January 2000):
+----------------------------
+-* Initial version
+-* Written in C++
+-* Never released
+\ No newline at end of file
+diff --git a/libs/xmlrpc-c/lib/abyss/htdocs/index.htm b/libs/xmlrpc-c/lib/abyss/htdocs/index.htm
+deleted file mode 100644
+index f0369a5..0000000
+--- a/libs/xmlrpc-c/lib/abyss/htdocs/index.htm
++++ /dev/null
+@@ -1,21 +0,0 @@
+-<HTML>
+-<HEAD>
+-<TITLE>ABYSS is working !!!</TITLE>
+-</HEAD>
+-<BODY bgColor=#80a0f0 text=#000000>
+-<H1 align=center>Congratulations, ABYSS is working !!!</H1>
+-<BR>
+-<P>
+-<B>ABYSS</B> Web Server is working correctly on your system. You should now change this
+-page with yours.
+-<BR>
+-Please include in your web pages (at least the first), the <b><i>'Powered by ABYSS'</i></b>
+-banner to promote the use of <B>ABYSS</B>.
+-</P>
+-<hr>
+-<P>
+-<CENTER><FONT size=-1>
+-Copyright © 2000 <A href="mailto:mmoez@bigfoot.com">Moez Mahfoudh</A>. All rights reserved.
+-</FONT>
+-<BR><BR><A href="http://abyss.linuxave.net/"><IMG border=0 src="pwrabyss.gif"></A></center></P>
+-</BODY></HTML>
+diff --git a/libs/xmlrpc-c/lib/abyss/patch_notes.txt b/libs/xmlrpc-c/lib/abyss/patch_notes.txt
+deleted file mode 100644
+index 8ca4f77..0000000
+--- a/libs/xmlrpc-c/lib/abyss/patch_notes.txt
++++ /dev/null
+@@ -1,114 +0,0 @@
+-Notes about the Abyss Patch -- By: Rosimildo da Silva, Jan 31, 2001.
+--------------------------------------------------------------------
+-
+-This file contains some notes about the changes made to the
+-Abyss source tree. The changes were required to fix a few
+-bugs, and port the base code to compile under CygWin,
+-and Borland C++ free compiler. The free compiler for
+-Win32 from Borland can be downloaded from here:
+-
+- http://www.borland.com/bcppbuilder/freecompiler/
+-
+-
+-What is new:
+-
+- + Package should compile out of the box under CygWin
+-
+- + Added makefiles and changes to use Borland C++ compiler
+-under WIN32 as well as VC++ 6.0
+-
+- + Fix Abyss.dsp to use the proper thread safe libraries,
+-and updated to VC++ 6.0
+-
+- + Fixed thread leaks ( handles )
+-
+-
+-
+-Applying the patch to Abyss-0.3.tar.gz
+---------------------------------------
+-
+- + get archive from here:
+- http://abyss.linuxave.net/abyss-0.3.tar.gz
+-WARNING: this site seems to be dead for the last two months.
+-
+- + cd /work ( any dir )
+- tar xzvf abyss-0.3.tar.gz
+- cd abyss
+- patch -p1 <abyss-0.3-20010131.patch
+-
+-
+-What to do next:
+-
+-
+- a) Cygwin
+-
+- cd abyss/src
+- make
+-
+-
+- b) Borland C++
+-
+- cd abyss\src
+- set BCC_PATH=<location where your compiler is located>
+- ( BCC_PATH=d:\bcb5 )
+-
+- make -f makefile.bcc32
+-
+- c) VC++ 6.0
+- cd abyss\src
+- msdev Abyss.dsp
+- ( Or just open the workspace with Visual Studio, and you know
+- the drill ).
+-NOTE: Under Cygwin, after I apply the patch, Visual Studio was unable to
+-recognize the workspace. ???
+-
+-
+-List of changes done to the ABYSS http server: ( ChangesLog )
+-----------------------------------------------
+-
+- + changed _WIN32 to ABYSS_WIN32. THis solve the problem that the
+-macro _WIN32 is defined under CygWin. CygWin has a unix like
+-api ( _UNIX ), so the macro _UNIX should be defined then.
+-Under CygWin we would have _UNIX and _WIN32 defined at the same
+-time.
+-
+-
+- + Theead API -- Added two extra functions: ThreadExit() and
+-ThreadClose(). These allows the resources of the threads to be
+-released when the thread has complete its duty serving the
+-request.
+-
+- + Added extra flag to TConn structure to make possible the
+-management of the worker threads by the server.
+-
+-
+- + Changed allocation of TConn array from stack to heap. This
+-would cause problems on certain system ( specially embedded systems ),
+-where the stack sizes arr not that large.
+-
+- + Changed ServerRun to free thread resources when the connection
+-for the thread is closed.
+-
+- + Changed main.c to make the sginal registration conforming with
+-the usage of the _FORK option.
+-
+- + Change ThreadCreate to be able to specify the "stack size" of the
+-worker's threads ( pthread ). Defined lable for it.
+-
+-
+- + Added flag _NO_USERS to disable check for users and groups.
+-This is useful for embedded systems where no users are available.
+-
+- + Updated VC++ workspace to version 6.0
+-
+-
+- + Changed the creation of the thread under WIN32 to use a RTL
+-function ( _beginthreadex ), as recommend by MS, instead of using
+-the naked WIN32 API.
+-
+---
+-Rosimildo da Silva rdasilva@connectel.com
+-ConnectTel, Inc. Austin, TX -- USA
+-Phone : 512-338-1111 Fax : 512-918-0449
+-Company Page: http://www.connecttel.com
+-Home Page: http://members.nbci.com/rosimildo/
+diff --git a/libs/xmlrpc-c/lib/abyss/readme.txt b/libs/xmlrpc-c/lib/abyss/readme.txt
+deleted file mode 100644
+index c42ca1f..0000000
+--- a/libs/xmlrpc-c/lib/abyss/readme.txt
++++ /dev/null
+@@ -1,160 +0,0 @@
+-
+-
+- ABYSS Web Server
+- ------------------
+-
+-
+-About:
+-------
+-
+-ABYSS aims to be a fully HTTP/1.1 compliant web server. Its main design
+-goals are speed, low resource usage and portability. ABYSS works on most
+-UNIX based systems and on Win32 systems (Win95/98/2000/NT).
+-
+-Copyright:
+-----------
+-
+-Copyright (C) 2000 Moez Mahfoudh. All rights reserved.
+-
+-Status:
+--------
+-
+-ABYSS is still in development stage. Actual version is 0.3. Many features
+-are not implemented yet but the server core works well and seems to be
+-stable. It is fully reliable for serving static files on medium load sites.
+-In fact, primary benchmarks show that ABYSS is 70% as fast as Apache when
+-using the fork system. This rate jumps to 130% when using threads.
+-On UNIX platforms, some problems occurred because of the use of the Pthreads
+-library. This will be corrected in the future versions. That's why only the
+-fork system is usable under UNIX. This lowers performances but guarantees
+-stability.
+-CGI/1.1 support is still absent from the current version but will be
+-included in the near future.
+-
+-Change Log:
+------------
+-
+- * Version 0.3 (March 23,2000):
+- o Handles conditional GET requests (by date)
+- o Conforms to all the MUSTs of the RFC2616 (newer version of the
+- HTTP/1.1 protocol draft)
+- o New configuration options (such as pidfile for UNIX systems...)
+- o Handles HEAD and OPTIONS methods
+- o Many bug fixes
+- o Tested on Sun-OS 5.7
+- o Second public release
+-
+- * Version 0.2 beta (February 7,2000):
+- o Handles GET on static files
+- o Handles correctly range requests
+- o Conforms to 80% of the MUSTs of the RFC2068 (HTTP/1.1 protocol
+- draft)
+- o Improved code portability (Win32 and UNIX platforms)
+- o Tested on Linux 2.2 and Win95/98
+- o First public release
+-
+- * Version 0.1 (January 2000):
+- o Completely rewritten in C
+- o Speed improvement
+- o New memory allocation scheme (using pools)
+- o Never released
+-
+- * Version 0.0 (January 2000):
+- o Initial version
+- o Written in C++
+- o Never released
+-
+-Downloading:
+-------------
+-
+- * Version 0.3 (current version):
+- o UNIX package (source) abyss-0.3.tar.gz.
+- o Win32 package is not available but you can extract source files
+- from the UNIX package and compile them on Windows without any
+- modification. (Sorry for this inconvenience: I have no Windows
+- machine now to compile the program and to test it. If someone can
+- do that, please email me the zipped package and I'll add it here).
+-
+- * Version 0.2 beta:
+- o UNIX package (source) abyss-0.2b.tar.gz.
+- o Win32 package (source+binary) abyss-0.2b.zip.
+-
+-Installation:
+--------------
+-
+- * For UNIX systems:
+- o Untar/Ungzip the distribution package with a command like tar xvfz
+- abyss-x.y.tar.gz
+- o Edit the Makefile src/Makefile to meet your system requirements.
+- o Go to directory src and execute make.
+- o The server binary is generated and stored in the bin directory.
+- o Edit the conf/abyss.conf to reflect your system configuration (At
+- least change the paths).
+- o Goto to the bin directory and start the server by typing ./abyss
+- -c ../conf/abyss.conf
+-
+- * For Win32 systems:
+- o Unzip the distribution package.
+- o An executable file is already present in the bin directory.
+- o If you wish to recompile the server, open the src/abyss.dsw file
+- with Microsoft Visual C++ 5.0 or higher and rebuild the project.
+- o Edit the conf/abyss.conf to reflect your system configuration (At
+- least change the paths).
+- o Goto to the bin directory and start the server by typing ./abyss
+- -c ../conf/abyss.conf
+-
+-Configuration:
+---------------
+-
+-Edit the conf/abyss.conf file and change the values of the available
+-options.
+-
+-Bugs:
+------
+-
+-Please email bug reports to mmoez@bigfoot.com
+-
+-To do:
+-------
+-
+- * CGI/1.1 support
+- * Web based configuration/administration
+- * Speed improvement
+- * File caching system
+- * Throttling
+- * PUT method handling
+- * ...
+-
+-License:
+---------
+-
+-ABYSS Web Server is licensed under a modified BSD type license:
+-
+- Copyright (C) 2000 Moez Mahfoudh. All rights reserved.
+-
+- Redistribution and use in source and binary forms, with or without
+- modification, are permitted provided that the following conditions
+- are met:
+-
+- * Redistributions of source code must retain the above
+- copyright notice, this list of conditions and the following
+- disclaimer.
+- * Redistributions in binary form must reproduce the above
+- copyright notice, this list of conditions and the following
+- disclaimer in the documentation and/or other materials
+- provided with the distribution.
+- * The name of the author may not be used to endorse or promote
+- products derived from this software without specific prior
+- written permission.
+-
+- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+- OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+- GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+diff --git a/libs/xmlrpc-c/lib/abyss/src/Abyss.dsp b/libs/xmlrpc-c/lib/abyss/src/Abyss.dsp
+deleted file mode 100644
+index c989392..0000000
+--- a/libs/xmlrpc-c/lib/abyss/src/Abyss.dsp
++++ /dev/null
+@@ -1,136 +0,0 @@
+-# Microsoft Developer Studio Project File - Name="Abyss" - Package Owner=<4>\r
+-# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+-# ** DO NOT EDIT **\r
+-\r
+-# TARGTYPE "Win32 (x86) Console Application" 0x0103\r
+-\r
+-CFG=Abyss - Win32 Debug\r
+-!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+-!MESSAGE use the Export Makefile command and run\r
+-!MESSAGE \r
+-!MESSAGE NMAKE /f "Abyss.mak".\r
+-!MESSAGE \r
+-!MESSAGE You can specify a configuration when running NMAKE\r
+-!MESSAGE by defining the macro CFG on the command line. For example:\r
+-!MESSAGE \r
+-!MESSAGE NMAKE /f "Abyss.mak" CFG="Abyss - Win32 Debug"\r
+-!MESSAGE \r
+-!MESSAGE Possible choices for configuration are:\r
+-!MESSAGE \r
+-!MESSAGE "Abyss - Win32 Release" (based on "Win32 (x86) Console Application")\r
+-!MESSAGE "Abyss - Win32 Debug" (based on "Win32 (x86) Console Application")\r
+-!MESSAGE \r
+-\r
+-# Begin Project\r
+-# PROP AllowPerConfigDependencies 0\r
+-CPP=cl.exe\r
+-RSC=rc.exe\r
+-\r
+-!IF "$(CFG)" == "Abyss - Win32 Release"\r
+-\r
+-# PROP BASE Use_MFC 0\r
+-# PROP BASE Use_Debug_Libraries 0\r
+-# PROP BASE Output_Dir "Release"\r
+-# PROP BASE Intermediate_Dir "Release"\r
+-# PROP BASE Target_Dir ""\r
+-# PROP Use_MFC 0\r
+-# PROP Use_Debug_Libraries 0\r
+-# PROP Output_Dir "../bin"\r
+-# PROP Intermediate_Dir "objs"\r
+-# PROP Ignore_Export_Lib 0\r
+-# PROP Target_Dir ""\r
+-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c\r
+-# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../../" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "ABYSS_WIN32" /YX /FD /c\r
+-# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+-# ADD RSC /l 0x40c /d "NDEBUG"\r
+-BSC32=bscmake.exe\r
+-# ADD BASE BSC32 /nologo\r
+-# ADD BSC32 /nologo\r
+-LINK32=link.exe\r
+-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386\r
+-# ADD LINK32 kernel32.lib user32.lib wsock32.lib /nologo /subsystem:console /machine:I386\r
+-\r
+-!ELSEIF "$(CFG)" == "Abyss - Win32 Debug"\r
+-\r
+-# PROP BASE Use_MFC 0\r
+-# PROP BASE Use_Debug_Libraries 1\r
+-# PROP BASE Output_Dir "Debug"\r
+-# PROP BASE Intermediate_Dir "Debug"\r
+-# PROP BASE Target_Dir ""\r
+-# PROP Use_MFC 0\r
+-# PROP Use_Debug_Libraries 1\r
+-# PROP Output_Dir "../bin"\r
+-# PROP Intermediate_Dir "objs"\r
+-# PROP Ignore_Export_Lib 0\r
+-# PROP Target_Dir ""\r
+-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c\r
+-# ADD CPP /nologo /MT /W3 /Gm /GX /ZI /Od /I "../../../" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "ABYSS_WIN32" /YX /FD /c\r
+-# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+-# ADD RSC /l 0x40c /d "_DEBUG"\r
+-BSC32=bscmake.exe\r
+-# ADD BASE BSC32 /nologo\r
+-# ADD BSC32 /nologo\r
+-LINK32=link.exe\r
+-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept\r
+-# ADD LINK32 kernel32.lib user32.lib wsock32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept\r
+-\r
+-!ENDIF \r
+-\r
+-# Begin Target\r
+-\r
+-# Name "Abyss - Win32 Release"\r
+-# Name "Abyss - Win32 Debug"\r
+-# Begin Group "Source Files"\r
+-\r
+-# PROP Default_Filter "c"\r
+-# Begin Source File\r
+-\r
+-SOURCE=.\conf.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=.\conn.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=.\data.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=.\file.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=.\http.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=.\main.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=.\server.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=.\socket.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=.\thread.c\r
+-# End Source File\r
+-# Begin Source File\r
+-\r
+-SOURCE=.\trace.c\r
+-# End Source File\r
+-# End Group\r
+-# Begin Group "Header Files"\r
+-\r
+-# PROP Default_Filter "h"\r
+-# Begin Source File\r
+-\r
+-SOURCE=.\abyss.h\r
+-# End Source File\r
+-# End Group\r
+-# End Target\r
+-# End Project\r
+diff --git a/libs/xmlrpc-c/lib/abyss/src/Abyss.dsw b/libs/xmlrpc-c/lib/abyss/src/Abyss.dsw
+deleted file mode 100644
+index 4e27c99..0000000
+--- a/libs/xmlrpc-c/lib/abyss/src/Abyss.dsw
++++ /dev/null
+@@ -1,29 +0,0 @@
+-Microsoft Developer Studio Workspace File, Format Version 6.00
+-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+-
+-###############################################################################
+-
+-Project: "Abyss"=.\Abyss.dsp - Package Owner=<4>
+-
+-Package=<5>
+-{{{
+-}}}
+-
+-Package=<4>
+-{{{
+-}}}
+-
+-###############################################################################
+-
+-Global:
+-
+-Package=<5>
+-{{{
+-}}}
+-
+-Package=<3>
+-{{{
+-}}}
+-
+-###############################################################################
+-
+diff --git a/libs/xmlrpc-c/lib/abyss/src/Makefile b/libs/xmlrpc-c/lib/abyss/src/Makefile
+index fc57122..b3f39ef 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/Makefile
++++ b/libs/xmlrpc-c/lib/abyss/src/Makefile
+@@ -50,7 +50,7 @@ MAJ=3
+
+ include $(SRCDIR)/common.mk
+
+-CFLAGS = $(CFLAGS_COMMON) -D_UNIX $(CFLAGS_PERSONAL) $(CADD)
++CFLAGS_LOCAL = -D_UNIX
+
+ INCLUDES = -Iblddir -Isrcdir -Isrcdir/include -Isrcdir/lib/util/include
+
+@@ -59,27 +59,23 @@ ABYSS_SHLIB = $(call shlibfn,libxmlrpc_abyss)
+ ABYSS_SHLIBLE = $(call shliblefn,libxmlrpc_abyss)
+ #ABYSS_SHLIBLE is e.g. libxmlrpc_abyss.so
+
+-# LIBDEP is the shared libraries on which libxmlrpc_abyss depends.
+-# The runtime loader should load these libraries when it loads libxmlrpc_abyss.
+-
+-LIBDEP = $(LIBXMLRPC_UTIL)
+-
+-ifneq ($(SHARED_LIB_TYPE),NONE)
+- TARGET_SHARED_LIBS := $(ABYSS_SHLIB) $(ABYSS_SHLIBLE)
+- endif
+-
+ # This 'common.mk' dependency makes sure the symlinks get built before
+ # this make file is used for anything.
+
+ $(SRCDIR)/common.mk: srcdir blddir
+
+ .PHONY: all
+-all: libxmlrpc_abyss.a $(TARGET_SHARED_LIBS) $(TARGET_SHARED_LE_LIBS)
++all: libxmlrpc_abyss.a $(TARGET_SHARED_LIBRARIES) $(TARGET_SHARED_LE_LIBS)
+
+
+-# Rule for this is in common.mk, courtesy of TARGET_SHARED_LIBRARIES:
+-$(ABYSS_SHLIB): $(TARGET_MODS:%=%.osh) $(LIBDEP)
+-$(ABYSS_SHLIB): LIBOBJECTS = $(TARGET_MODS:%=%.osh) $(LIBDEP)
++# Rule for this is in common.mk, courtesy of TARGET_LIBRARY_NAMES
++$(ABYSS_SHLIB): $(TARGET_MODS:%=%.osh) \
++ $(LIBXMLRPC_UTIL)
++$(ABYSS_SHLIB): LIBOBJECTS = $(TARGET_MODS:%=%.osh)
++$(ABYSS_SHLIB): LIBDEP = -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
++ifeq ($(ENABLE_ABYSS_THREADS),yes)
++ $(ABYSS_SHLIB): LIBDEP += -lpthread
++endif
+
+ # Rule for this is in common.mk, courtesy of TARGET_STATIC_LIBRARIES:
+
+@@ -94,7 +90,7 @@ libxmlrpc_abyss.a: LIBOBJECTS = $(TARGET_MODS:%=%.o)
+ # Abyss library are in common.mk, courtesy of TARGET_MODS.
+
+
+-# Need this dependency for those who don't use Makefile.depend.
++# Need this dependency for those who don't use depend.mk.
+ # Without it, version.h doesn't get created.
+ response.o response.osh handler.o handler.osh: version.h
+
+@@ -116,4 +112,4 @@ install: install-common
+ .PHONY: dep
+ dep: dep-common
+
+-include Makefile.depend
++include depend.mk
+diff --git a/libs/xmlrpc-c/lib/abyss/src/channel.c b/libs/xmlrpc-c/lib/abyss/src/channel.c
+index af81c62..5044e23 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/channel.c
++++ b/libs/xmlrpc-c/lib/abyss/src/channel.c
+@@ -13,6 +13,7 @@
+ #include <stdlib.h>
+
+ #include "bool.h"
++#include "int.h"
+ #include "mallocvar.h"
+ #include "xmlrpc-c/util_int.h"
+ #include "xmlrpc-c/abyss.h"
+@@ -83,7 +84,7 @@ ChannelTerm(void) {
+ functions that are particular to an implementation.
+ */
+
+-static uint const channelSignature = 0x06060B;
++static unsigned int const channelSignature = 0x06060B;
+
+ void
+ ChannelCreate(const struct TChannelVtbl * const vtblP,
+diff --git a/libs/xmlrpc-c/lib/abyss/src/channel.h b/libs/xmlrpc-c/lib/abyss/src/channel.h
+index c5924bc..6e5ae7e 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/channel.h
++++ b/libs/xmlrpc-c/lib/abyss/src/channel.h
+@@ -60,7 +60,7 @@ struct TChannelVtbl {
+ };
+
+ struct _TChannel {
+- uint signature;
++ unsigned int signature;
+ /* With both background and foreground use of sockets, and
+ background being both fork and pthread, it is very easy to
+ screw up socket lifetime and try to destroy twice. We use
+diff --git a/libs/xmlrpc-c/lib/abyss/src/chanswitch.c b/libs/xmlrpc-c/lib/abyss/src/chanswitch.c
+index b89e6de..c39e4c0 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/chanswitch.c
++++ b/libs/xmlrpc-c/lib/abyss/src/chanswitch.c
+@@ -11,6 +11,7 @@
+ #include <stdlib.h>
+
+ #include "bool.h"
++#include "int.h"
+ #include "mallocvar.h"
+ #include "xmlrpc-c/util_int.h"
+ #include "xmlrpc-c/abyss.h"
+@@ -81,7 +82,7 @@ ChanSwitchTerm(void) {
+ functions that are particular to an implementation.
+ */
+
+-static uint const switchSignature = 0x06060A;
++static unsigned int const switchSignature = 0x06060A;
+
+ void
+ ChanSwitchCreate(const struct TChanSwitchVtbl * const vtblP,
+diff --git a/libs/xmlrpc-c/lib/abyss/src/chanswitch.h b/libs/xmlrpc-c/lib/abyss/src/chanswitch.h
+index 4ff7949..c216f95 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/chanswitch.h
++++ b/libs/xmlrpc-c/lib/abyss/src/chanswitch.h
+@@ -36,7 +36,7 @@ struct TChanSwitchVtbl {
+ };
+
+ struct _TChanSwitch {
+- uint signature;
++ unsigned int signature;
+ /* With both background and foreground use of switches, and
+ background being both fork and pthread, it is very easy to
+ screw up switch lifetime and try to destroy twice. We use
+diff --git a/libs/xmlrpc-c/lib/abyss/src/conf.c b/libs/xmlrpc-c/lib/abyss/src/conf.c
+index 982615f..e0feff9 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/conf.c
++++ b/libs/xmlrpc-c/lib/abyss/src/conf.c
+@@ -32,6 +32,9 @@
+ **
+ ******************************************************************************/
+
++#define _XOPEN_SOURCE 600 /* For strdup() */
++#define _BSD_SOURCE /* For xmlrpc_strcaseeq */
++
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <string.h>
+@@ -96,10 +99,10 @@ ConfReadLine(TFile * const fileP,
+ if (c == CR || c == LF)
+ break;
+
+- *buffer = '\0';
++ *z = '\0';
+
+ /* Discard comments */
+- p = strchr(z, '#');
++ p = strchr(buffer, '#');
+ if (p)
+ *p = '\0';
+
+diff --git a/libs/xmlrpc-c/lib/abyss/src/conn.c b/libs/xmlrpc-c/lib/abyss/src/conn.c
+index f76cc22..e6cd0b3 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/conn.c
++++ b/libs/xmlrpc-c/lib/abyss/src/conn.c
+@@ -31,6 +31,8 @@ connJob(void * const userHandle) {
+ /*----------------------------------------------------------------------------
+ This is the root function for a thread that processes a connection
+ (performs HTTP transactions).
++
++ We never return. We ultimately exit the thread.
+ -----------------------------------------------------------------------------*/
+ TConn * const connectionP = userHandle;
+
+@@ -44,11 +46,21 @@ connJob(void * const userHandle) {
+ after we exit.
+ */
+
+- //ThreadExit(0);
++
++ /* Note that ThreadExit() runs a cleanup function, which in our
++ case is connDone().
++ */
++ ThreadExit(connectionP->threadP, 0);
+ }
+
+
+
++/* This is the maximum amount of stack that 'connJob' itself uses --
++ does not count what user's connection job function uses.
++*/
++#define CONNJOB_STACK 1024
++
++
+ static void
+ connDone(TConn * const connectionP) {
+
+@@ -79,6 +91,7 @@ static void
+ makeThread(TConn * const connectionP,
+ enum abyss_foreback const foregroundBackground,
+ bool const useSigchld,
++ size_t const jobStackSize,
+ const char ** const errorP) {
+
+ switch (foregroundBackground) {
+@@ -91,6 +104,7 @@ makeThread(TConn * const connectionP,
+ connectionP->hasOwnThread = TRUE;
+ ThreadCreate(&connectionP->threadP, connectionP,
+ &connJob, &threadDone, useSigchld,
++ CONNJOB_STACK + jobStackSize,
+ &error);
+ if (error) {
+ xmlrpc_asprintf(errorP, "Unable to create thread to "
+@@ -110,6 +124,7 @@ ConnCreate(TConn ** const connectionPP,
+ TChannel * const channelP,
+ void * const channelInfoP,
+ TThreadProc * const job,
++ size_t const jobStackSize,
+ TThreadDoneFn * const done,
+ enum abyss_foreback const foregroundBackground,
+ bool const useSigchld,
+@@ -150,7 +165,7 @@ ConnCreate(TConn ** const connectionPP,
+ connectionP->server = serverP;
+ connectionP->channelP = channelP;
+ connectionP->channelInfoP = channelInfoP;
+- connectionP->buffer[0] = '\0';
++ connectionP->buffer.b[0] = '\0';
+ connectionP->buffersize = 0;
+ connectionP->bufferpos = 0;
+ connectionP->finished = FALSE;
+@@ -160,7 +175,8 @@ ConnCreate(TConn ** const connectionPP,
+ connectionP->outbytes = 0;
+ connectionP->trace = getenv("ABYSS_TRACE_CONN");
+
+- makeThread(connectionP, foregroundBackground, useSigchld, errorP);
++ makeThread(connectionP, foregroundBackground, useSigchld,
++ jobStackSize, errorP);
+ }
+ *connectionPP = connectionP;
+ }
+@@ -185,6 +201,7 @@ ConnProcess(TConn * const connectionP) {
+ /* There's a background thread to handle this connection. Set
+ it running.
+ */
++ assert(connectionP->threadP);
+ retval = ThreadRun(connectionP->threadP);
+ } else {
+ /* No background thread. We just handle it here while Caller waits. */
+@@ -199,9 +216,11 @@ ConnProcess(TConn * const connectionP) {
+
+ void
+ ConnWaitAndRelease(TConn * const connectionP) {
+- if (connectionP->hasOwnThread)
++
++ if (connectionP->hasOwnThread) {
++ assert(connectionP->threadP);
+ ThreadWaitAndRelease(connectionP->threadP);
+-
++ }
+ free(connectionP);
+ }
+
+@@ -220,20 +239,31 @@ ConnReadInit(TConn * const connectionP) {
+
+ if (connectionP->buffersize > connectionP->bufferpos) {
+ connectionP->buffersize -= connectionP->bufferpos;
+- memmove(connectionP->buffer,
+- connectionP->buffer + connectionP->bufferpos,
++ memmove(connectionP->buffer.b,
++ connectionP->buffer.b + connectionP->bufferpos,
+ connectionP->buffersize);
+ connectionP->bufferpos = 0;
+ } else
+ connectionP->buffersize = connectionP->bufferpos = 0;
+
+- connectionP->buffer[connectionP->buffersize] = '\0';
++ connectionP->buffer.b[connectionP->buffersize] = '\0';
+
+ connectionP->inbytes = connectionP->outbytes = 0;
+ }
+
+
+
++static void
++traceReadTimeout(TConn * const connectionP,
++ uint32_t const timeout) {
++
++ if (connectionP->trace)
++ fprintf(stderr, "TIMED OUT waiting over %u seconds "
++ "for data from client.\n", timeout);
++}
++
++
++
+ static size_t
+ nextLineSize(const char * const string,
+ size_t const startPos,
+@@ -261,9 +291,11 @@ nextLineSize(const char * const string,
+
+
+ static void
+-traceBuffer(const char * const label,
+- const char * const buffer,
+- unsigned int const size) {
++traceBuffer(const char * const label,
++ const unsigned char * const buffer,
++ unsigned int const size) {
++
++ const char * const buffer_t = (const char *)buffer;
+
+ size_t cursor; /* Index into buffer[] */
+
+@@ -272,9 +304,9 @@ traceBuffer(const char * const label,
+ for (cursor = 0; cursor < size; ) {
+ /* Print one line of buffer */
+
+- size_t const lineSize = nextLineSize(buffer, cursor, size);
++ size_t const lineSize = nextLineSize(buffer_t, cursor, size);
+ const char * const printableLine =
+- xmlrpc_makePrintable_lp(&buffer[cursor], lineSize);
++ xmlrpc_makePrintable_lp(&buffer_t[cursor], lineSize);
+
+ fprintf(stderr, "%s\n", printableLine);
+
+@@ -288,12 +320,22 @@ traceBuffer(const char * const label,
+
+
+ static void
++traceBufferText(const char * const label,
++ const char * const buffer,
++ unsigned int const size) {
++
++ traceBuffer(label, (const unsigned char *)buffer, size);
++}
++
++
++
++static void
+ traceChannelRead(TConn * const connectionP,
+ unsigned int const size) {
+
+ if (connectionP->trace)
+ traceBuffer("READ FROM CHANNEL",
+- connectionP->buffer + connectionP->buffersize, size);
++ connectionP->buffer.b + connectionP->buffersize, size);
+ }
+
+
+@@ -307,7 +349,7 @@ traceChannelWrite(TConn * const connectionP,
+ if (connectionP->trace) {
+ const char * const label =
+ failed ? "FAILED TO WRITE TO CHANNEL" : "WROTE TO CHANNEL";
+- traceBuffer(label, buffer, size);
++ traceBufferText(label, buffer, size);
+ }
+ }
+
+@@ -321,71 +363,136 @@ bufferSpace(TConn * const connectionP) {
+
+
+
+-bool
+-ConnRead(TConn * const connectionP,
+- uint32_t const timeout) {
++static void
++readFromChannel(TConn * const connectionP,
++ bool * const eofP,
++ const char ** const errorP) {
+ /*----------------------------------------------------------------------------
+- Read some stuff on connection *connectionP from the channel.
+-
+- Don't wait more than 'timeout' seconds for data to arrive. Fail if
+- nothing arrives within that time.
++ Read some data from the channel of Connection *connectionP.
+
+- 'timeout' must be before the end of time.
++ Iff there is none available to read, return *eofP == true.
+ -----------------------------------------------------------------------------*/
+- time_t const deadline = time(NULL) + timeout;
++ uint32_t bytesRead;
++ bool readError;
+
+- bool cantGetData;
+- bool gotData;
++ ChannelRead(connectionP->channelP,
++ connectionP->buffer.b + connectionP->buffersize,
++ bufferSpace(connectionP) - 1,
++ &bytesRead, &readError);
+
+- cantGetData = FALSE;
+- gotData = FALSE;
+-
+- while (!gotData && !cantGetData) {
+- int const timeLeft = (int)(deadline - time(NULL));
++ if (readError)
++ xmlrpc_asprintf(errorP, "Error reading from channel");
++ else {
++ *errorP = NULL;
++ if (bytesRead > 0) {
++ *eofP = FALSE;
++ traceChannelRead(connectionP, bytesRead);
++ connectionP->inbytes += bytesRead;
++ connectionP->buffersize += bytesRead;
++ connectionP->buffer.t[connectionP->buffersize] = '\0';
++ } else
++ *eofP = TRUE;
++ }
++}
+
+- if (timeLeft <= 0)
+- cantGetData = TRUE;
+- else {
+- bool const waitForRead = TRUE;
+- bool const waitForWrite = FALSE;
+-
+- bool readyForRead;
+- bool failed;
++
++
++static void
++dealWithReadTimeout(bool * const timedOutP,
++ bool const timedOut,
++ uint32_t const timeout,
++ const char ** const errorP) {
++
++ if (timedOutP)
++ *timedOutP = timedOut;
++ else {
++ if (timedOut)
++ xmlrpc_asprintf(errorP, "Read from Abyss client "
++ "connection timed out after %u seconds "
++ "or was interrupted",
++ timeout);
++ }
++}
++
++
++
++static void
++dealWithReadEof(bool * const eofP,
++ bool const eof,
++ const char ** const errorP) {
++
++ if (eofP)
++ *eofP = eof;
++ else {
++ if (eof)
++ xmlrpc_asprintf(errorP, "Read from Abyss client "
++ "connection failed because client closed the "
++ "connection");
++ }
++}
++
++
++
++void
++ConnRead(TConn * const connectionP,
++ uint32_t const timeout,
++ bool * const eofP,
++ bool * const timedOutP,
++ const char ** const errorP) {
++/*----------------------------------------------------------------------------
++ Read some stuff on connection *connectionP from the channel. Read it into
++ the connection's buffer.
++
++ Don't wait more than 'timeout' seconds for data to arrive. If no data has
++ arrived by then and 'timedOutP' is null, fail. If 'timedOut' is non-null,
++ return as *timedOutP whether 'timeout' seconds passed without any data
++ arriving.
++
++ Also, stop waiting upon any interruption and treat it the same as a
++ timeout. An interruption is either a signal received (and caught) at
++ an appropriate time or a ChannelInterrupt() call before or during the
++ wait.
++
++ If 'eofP' is non-null, return *eofP == true, without reading anything, iff
++ there will no more data forthcoming on the connection because client has
++ closed the connection. If 'eofP' is null, fail in that case.
++-----------------------------------------------------------------------------*/
++ uint32_t const timeoutMs = timeout * 1000;
++
++ if (timeoutMs < timeout)
++ /* Arithmetic overflow */
++ xmlrpc_asprintf(errorP, "Timeout value is too large");
++ else {
++ bool const waitForRead = TRUE;
++ bool const waitForWrite = FALSE;
++
++ bool readyForRead;
++ bool failed;
+
+- ChannelWait(connectionP->channelP, waitForRead, waitForWrite,
+- timeLeft * 1000, &readyForRead, NULL, &failed);
++ ChannelWait(connectionP->channelP, waitForRead, waitForWrite,
++ timeoutMs, &readyForRead, NULL, &failed);
+
+- if (failed)
+- cantGetData = TRUE;
+- else {
+- uint32_t bytesRead;
+- bool readFailed;
+-
+- ChannelRead(connectionP->channelP,
+- connectionP->buffer + connectionP->buffersize,
+- bufferSpace(connectionP) - 1,
+- &bytesRead, &readFailed);
+-
+- if (readFailed)
+- cantGetData = TRUE;
+- else {
+- if (bytesRead > 0) {
+- traceChannelRead(connectionP, bytesRead);
+- connectionP->inbytes += bytesRead;
+- connectionP->buffersize += bytesRead;
+- connectionP->buffer[connectionP->buffersize] = '\0';
+- gotData = TRUE;
+- } else
+- /* Other end has disconnected */
+- cantGetData = TRUE;
+- }
++ if (failed)
++ xmlrpc_asprintf(errorP,
++ "Wait for stuff to arrive from client failed.");
++ else {
++ bool eof;
++ if (readyForRead) {
++ readFromChannel(connectionP, &eof, errorP);
++ } else {
++ /* Wait was interrupted, either by our requested timeout,
++ a (caught) signal, or a ChannelInterrupt().
++ */
++ traceReadTimeout(connectionP, timeout);
++ *errorP = NULL;
++ eof = FALSE;
+ }
++ if (!*errorP)
++ dealWithReadTimeout(timedOutP, !readyForRead, timeout, errorP);
++ if (!*errorP)
++ dealWithReadEof(eofP, eof, errorP);
+ }
+ }
+- if (gotData)
+- return TRUE;
+- else
+- return FALSE;
+ }
+
+
+@@ -429,12 +536,13 @@ ConnWriteFromFile(TConn * const connectionP,
+ uint32_t waittime;
+ bool success;
+ uint32_t readChunkSize;
++ uint32_t ChunkSize = 4096 * 2; /* read buffer size */
+
+ if (rate > 0) {
+ readChunkSize = MIN(buffersize, rate); /* One second's worth */
+ waittime = (1000 * buffersize) / rate;
+ } else {
+- readChunkSize = buffersize;
++ readChunkSize = ChunkSize;
+ waittime = 0;
+ }
+
+@@ -443,30 +551,42 @@ ConnWriteFromFile(TConn * const connectionP,
+ retval = FALSE;
+ else {
+ uint64_t const totalBytesToRead = last - start + 1;
+- uint64_t bytesread;
+-
+- bytesread = 0; /* initial value */
+-
+- while (bytesread < totalBytesToRead) {
+- uint64_t const bytesLeft = totalBytesToRead - bytesread;
+- uint64_t const bytesToRead64 = MIN(readChunkSize, bytesLeft);
+- uint32_t const bytesToRead = (uint32_t)bytesToRead64;
+-
+- uint32_t bytesReadThisTime;
++ uint64_t bytesread = 0;
++
++ int32_t bytesReadThisTime = 0;
++ char * chunk = (char *) buffer; /* the beginning */
++ do {
++
++ if ((bytesReadThisTime = FileRead(fileP, chunk, readChunkSize)) <= 0 )
++ break;
++
++ bytesread += bytesReadThisTime;
++ chunk += bytesReadThisTime;
++
++ /* fix bug in ms ie as it doesn't render text/plain properly */
++ /* if CRLFs are split between reassembled tcp packets, */
++ /* ie "might" undeterministically render extra empty lines */
++ /* if it ends in CR or LF, read an extra chunk until the buffer is full */
++ /* or end of file is reached. You may still have bad luck, complaints go to MS) */
++
++/* if (bytesReadThisTime == readChunkSize && chunk - (char *) buffer + readChunkSize < buffersize) {
++ * char * end = chunk - 1;
++ * if (*end == CR || *end == LF) {
++ * continue;
++ * }
++ * }
++ */
++ if (!bytesReadThisTime || !ConnWrite(connectionP, buffer, chunk - (char *) buffer)) {
++ break;
++ }
+
+- assert(bytesToRead == bytesToRead64); /* readChunkSize is uint32 */
++ chunk = (char *) buffer; /* a new beginning */
+
+- bytesReadThisTime = FileRead(fileP, buffer, bytesToRead);
+- bytesread += bytesReadThisTime;
+-
+- if (bytesReadThisTime > 0)
+- ConnWrite(connectionP, buffer, bytesReadThisTime);
+- else
+- break;
+-
+- if (waittime > 0)
++ if (waittime > 0)
+ xmlrpc_millisecond_sleep(waittime);
+- }
++
++ } while (bytesReadThisTime == readChunkSize);
++
+ retval = (bytesread >= totalBytesToRead);
+ }
+ return retval;
+diff --git a/libs/xmlrpc-c/lib/abyss/src/conn.h b/libs/xmlrpc-c/lib/abyss/src/conn.h
+index 51eb169..d48103d 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/conn.h
++++ b/libs/xmlrpc-c/lib/abyss/src/conn.h
+@@ -47,8 +47,15 @@ struct _TConn {
+ */
+ const char * trace;
+ TThreadProc * job;
++ /* The function to run, in a connection thread, to conduct business
++ on the connection. It reads stuff and writes stuff and, when it
++ is done with the connection, exits.
++ */
+ TThreadDoneFn * done;
+- char buffer[BUFFER_SIZE];
++ union {
++ unsigned char b[BUFFER_SIZE]; /* Just bytes */
++ char t[BUFFER_SIZE]; /* Taken as text */
++ } buffer;
+ };
+
+ typedef struct _TConn TConn;
+@@ -63,6 +70,7 @@ ConnCreate(TConn ** const connectionPP,
+ TChannel * const channelP,
+ void * const channelInfoP,
+ TThreadProc * const job,
++ size_t const jobStackSize,
+ TThreadDoneFn * const done,
+ enum abyss_foreback const foregroundBackground,
+ bool const useSigchld,
+@@ -82,9 +90,12 @@ ConnWrite(TConn * const connectionP,
+ const void * const buffer,
+ uint32_t const size);
+
+-bool
+-ConnRead(TConn * const c,
+- uint32_t const timems);
++void
++ConnRead(TConn * const connectionP,
++ uint32_t const timeout,
++ bool * const eofP,
++ bool * const timedOutP,
++ const char ** const errorP);
+
+ void
+ ConnReadInit(TConn * const connectionP);
+diff --git a/libs/xmlrpc-c/lib/abyss/src/data.c b/libs/xmlrpc-c/lib/abyss/src/data.c
+index c698505..f81f834 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/data.c
++++ b/libs/xmlrpc-c/lib/abyss/src/data.c
+@@ -32,6 +32,8 @@
+ **
+ *******************************************************************************/
+
++#define _XOPEN_SOURCE 600 /* Make sure strdup() is in <string.h> */
++
+ #include <assert.h>
+ #include <stdlib.h>
+ #include <string.h>
+@@ -198,20 +200,20 @@ ListAddFromString(TList * const list,
+
+
+ bool
+-ListFindString(TList * const sl,
++ListFindString(TList * const listP,
+ const char * const str,
+ uint16_t * const indexP)
+ {
+- uint16_t i;
++ if (listP->item && str) {
++ unsigned int i;
+
+- if (sl->item && str)
+- for (i=0;i<sl->size;i++)
+- if (strcmp(str,(char *)(sl->item[i]))==0)
+- {
+- *indexP=i;
++ for (i = 0; i < listP->size; ++i) {
++ if (xmlrpc_streq(str, (char *)(listP->item[i]))) {
++ *indexP = i;
+ return TRUE;
+- };
+-
++ }
++ }
++ }
+ return FALSE;
+ }
+
+@@ -435,7 +437,7 @@ TableFindIndex(TTable * const t,
+ {
+ for (i=*index;i<t->size;i++)
+ if (hash==t->item[i].hash)
+- if (strcmp(t->item[i].name,name)==0)
++ if (xmlrpc_streq(t->item[i].name,name))
+ {
+ *index=i;
+ return TRUE;
+diff --git a/libs/xmlrpc-c/lib/abyss/src/file.c b/libs/xmlrpc-c/lib/abyss/src/file.c
+index b428c0c..4417f05 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/file.c
++++ b/libs/xmlrpc-c/lib/abyss/src/file.c
+@@ -111,6 +111,7 @@ createFileImage(TFile ** const filePP,
+ int rc;
+
+ if (createFile)
++ /* Unix prefers S_IWUSR, but some Windows knows only S_IWRITE */
+ rc = open(name, attrib | O_CREAT, S_IWRITE | S_IREAD);
+ else
+ rc = open(name, attrib);
+diff --git a/libs/xmlrpc-c/lib/abyss/src/handler.c b/libs/xmlrpc-c/lib/abyss/src/handler.c
+index 9f5a7e6..01a2550 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/handler.c
++++ b/libs/xmlrpc-c/lib/abyss/src/handler.c
+@@ -5,6 +5,9 @@
+
+ Copyright information is at end of file
+ =============================================================================*/
++
++#define _XOPEN_SOURCE 600 /* Make sure strdup() is in <string.h> */
++
+ #include <assert.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+@@ -458,15 +461,15 @@ handleDirectory(TSession * const sessionP,
+ addLastModifiedHeader(sessionP, fileModTime);
+
+ ResponseChunked(sessionP);
+- ResponseWriteStart(sessionP);
+-
+- if (sessionP->requestInfo.method!=m_head)
+- sendDirectoryDocument(&list, ascending, sort, text,
+- sessionP->requestInfo.uri, mimeTypeP,
+- sessionP);
+-
+- HTTPWriteEndChunk(sessionP);
++ if (ResponseWriteStart(sessionP)) {
++
++ if (sessionP->requestInfo.method!=m_head)
++ sendDirectoryDocument(&list, ascending, sort, text,
++ sessionP->requestInfo.uri, mimeTypeP,
++ sessionP);
+
++ HTTPWriteEndChunk(sessionP);
++ }
+ ListFree(&list);
+ }
+ PoolFree(&pool);
+@@ -504,20 +507,20 @@ sendBody(TSession * const sessionP,
+ /*----------------------------------------------------------------------------
+ 'start0' and 'end0' are meaningful only if the session has ranges.
+ -----------------------------------------------------------------------------*/
+- char buffer[4096];
++ char buffer[4096*8];
+
+ if (sessionP->ranges.size == 0)
+- ConnWriteFromFile(sessionP->conn, fileP, 0, filesize - 1,
++ ConnWriteFromFile(sessionP->connP, fileP, 0, filesize - 1,
+ buffer, sizeof(buffer), 0);
+ else if (sessionP->ranges.size == 1)
+- ConnWriteFromFile(sessionP->conn, fileP, start0, end0,
++ ConnWriteFromFile(sessionP->connP, fileP, start0, end0,
+ buffer, sizeof(buffer), 0);
+ else {
+ uint64_t i;
+ for (i = 0; i <= sessionP->ranges.size; ++i) {
+- ConnWrite(sessionP->conn, "--", 2);
+- ConnWrite(sessionP->conn, BOUNDARY, strlen(BOUNDARY));
+- ConnWrite(sessionP->conn, CRLF, 2);
++ ConnWrite(sessionP->connP, "--", 2);
++ ConnWrite(sessionP->connP, BOUNDARY, strlen(BOUNDARY));
++ ConnWrite(sessionP->connP, CRLF, 2);
+
+ if (i < sessionP->ranges.size) {
+ uint64_t start;
+@@ -534,12 +537,12 @@ sendBody(TSession * const sessionP,
+ composeEntityHeader(&entityHeader, mediatype,
+ start, end, filesize);
+
+- ConnWrite(sessionP->conn,
++ ConnWrite(sessionP->connP,
+ entityHeader, strlen(entityHeader));
+
+ xmlrpc_strfree(entityHeader);
+
+- ConnWriteFromFile(sessionP->conn, fileP, start, end,
++ ConnWriteFromFile(sessionP->connP, fileP, start, end,
+ buffer, sizeof(buffer), 0);
+ }
+ }
+@@ -559,8 +562,8 @@ sendFileAsResponse(TSession * const sessionP,
+ uint64_t const filesize = FileSize(fileP);
+ const char * const mediatype = MIMETypeGuessFromFile2(mimeTypeP, fileName);
+
+- uint64_t start; /* Defined only if session has one range */
+- uint64_t end; /* Defined only if session has one range */
++ uint64_t start = 0; /* Defined only if session has one range */
++ uint64_t end = 0; /* Defined only if session has one range */
+
+ switch (sessionP->ranges.size) {
+ case 0:
+@@ -601,10 +604,9 @@ sendFileAsResponse(TSession * const sessionP,
+
+ addLastModifiedHeader(sessionP, fileModTime);
+
+- ResponseWriteStart(sessionP);
+-
+- if (sessionP->requestInfo.method != m_head)
+- sendBody(sessionP, fileP, filesize, mediatype, start, end);
++ if (ResponseWriteStart(sessionP))
++ if (sessionP->requestInfo.method != m_head)
++ sendBody(sessionP, fileP, filesize, mediatype, start, end);
+ }
+
+
+@@ -749,6 +751,9 @@ HandlerDefaultBuiltin(TSession * const sessionP) {
+
+
+
++size_t const HandlerDefaultBuiltinStack = 1024;
++
++
+ /******************************************************************************
+ **
+ ** server.c
+diff --git a/libs/xmlrpc-c/lib/abyss/src/handler.h b/libs/xmlrpc-c/lib/abyss/src/handler.h
+index 4f9dc95..a8f2f3e 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/handler.h
++++ b/libs/xmlrpc-c/lib/abyss/src/handler.h
+@@ -28,4 +28,6 @@ HandlerAddDefaultFN(BIHandler * const handlerP,
+ abyss_bool
+ HandlerDefaultBuiltin(TSession * const sessionP);
+
++extern size_t const HandlerDefaultBuiltinStack;
++
+ #endif
+diff --git a/libs/xmlrpc-c/lib/abyss/src/http.c b/libs/xmlrpc-c/lib/abyss/src/http.c
+index 1e55bc8..4f9ef10 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/http.c
++++ b/libs/xmlrpc-c/lib/abyss/src/http.c
+@@ -1,5 +1,8 @@
+ /* Copyright information is at the end of the file */
+
++#define _XOPEN_SOURCE 600 /* For strdup() */
++#define _BSD_SOURCE /* For xmlrpc_strcaseeq() */
++
+ #include <ctype.h>
+ #include <assert.h>
+ #include <stdlib.h>
+@@ -13,6 +16,7 @@
+ #include "mallocvar.h"
+ #include "xmlrpc-c/util.h"
+ #include "xmlrpc-c/string_int.h"
++#include "xmlrpc-c/base64_int.h"
+ #include "xmlrpc-c/abyss.h"
+
+ #include "server.h"
+@@ -43,8 +47,8 @@ initRequestInfo(TRequestInfo * const requestInfoP,
+ const char * const query) {
+ /*----------------------------------------------------------------------------
+ Set up the request info structure. For information that is
+- controlled by headers, use the defaults -- I.e. the value that
+- applies if the request contains no applicable header.
++ controlled by the header, use the defaults -- I.e. the value that
++ applies if the request contains no applicable header field.
+ -----------------------------------------------------------------------------*/
+ XMLRPC_ASSERT_PTR_OK(requestLine);
+ XMLRPC_ASSERT_PTR_OK(path);
+@@ -79,6 +83,9 @@ freeRequestInfo(TRequestInfo * const requestInfoP) {
+ xmlrpc_strfree(requestInfoP->uri);
+
+ xmlrpc_strfree(requestInfoP->requestline);
++
++ xmlrpc_strfree(requestInfoP->query);
++
+ }
+
+
+@@ -91,7 +98,7 @@ RequestInit(TSession * const sessionP,
+
+ time(&sessionP->date);
+
+- sessionP->conn = connectionP;
++ sessionP->connP = connectionP;
+
+ sessionP->responseStarted = FALSE;
+
+@@ -102,8 +109,8 @@ RequestInit(TSession * const sessionP,
+
+ ListInit(&sessionP->cookies);
+ ListInit(&sessionP->ranges);
+- TableInit(&sessionP->request_headers);
+- TableInit(&sessionP->response_headers);
++ TableInit(&sessionP->requestHeaderFields);
++ TableInit(&sessionP->responseHeaderFields);
+
+ sessionP->status = 0; /* No status from handler yet */
+
+@@ -120,8 +127,8 @@ RequestFree(TSession * const sessionP) {
+
+ ListFree(&sessionP->cookies);
+ ListFree(&sessionP->ranges);
+- TableFree(&sessionP->request_headers);
+- TableFree(&sessionP->response_headers);
++ TableFree(&sessionP->requestHeaderFields);
++ TableFree(&sessionP->responseHeaderFields);
+ StringFree(&(sessionP->header));
+ }
+
+@@ -137,7 +144,7 @@ firstLfPos(TConn * const connectionP,
+ If there is no LF in the buffer at or after 'lineStart', return NULL.
+ -----------------------------------------------------------------------------*/
+ const char * const bufferEnd =
+- connectionP->buffer + connectionP->buffersize;
++ connectionP->buffer.t + connectionP->buffersize;
+
+ char * p;
+
+@@ -168,20 +175,25 @@ getLineInBuffer(TConn * const connectionP,
+ bool error;
+ char * lfPos;
+
+- assert(lineStart <= connectionP->buffer + connectionP->buffersize);
++ assert(lineStart <= connectionP->buffer.t + connectionP->buffersize);
+
+ error = FALSE; /* initial value */
+ lfPos = NULL; /* initial value */
+
+ while (!error && !lfPos) {
+ int const timeLeft = (int)(deadline - time(NULL));
+-
+ if (timeLeft <= 0)
+ error = TRUE;
+ else {
+ lfPos = firstLfPos(connectionP, lineStart);
+- if (!lfPos)
+- error = !ConnRead(connectionP, timeLeft);
++ if (!lfPos) {
++ const char * readError;
++ ConnRead(connectionP, timeLeft, NULL, NULL, &readError);
++ if (readError) {
++ error = TRUE;
++ xmlrpc_strfree(readError);
++ }
++ }
+ }
+ }
+ *errorP = error;
+@@ -228,36 +240,36 @@ convertLineEnd(char * const lineStart,
+
+
+ static void
+-getRestOfHeader(TConn * const connectionP,
+- char * const lineEnd,
+- time_t const deadline,
+- const char ** const headerEndP,
+- bool * const errorP) {
++getRestOfField(TConn * const connectionP,
++ char * const lineEnd,
++ time_t const deadline,
++ const char ** const fieldEndP,
++ bool * const errorP) {
+ /*----------------------------------------------------------------------------
+ Given that the read buffer for connection *connectionP contains (at
+- its current read position) the first line of an HTTP header, which
++ its current read position) the first line of an HTTP header field, which
+ ends at position 'lineEnd', find the rest of it.
+
+- Some or all of the rest of the header may be in the buffer already;
++ Some or all of the rest of the field may be in the buffer already;
+ we read more from the connection as necessary, but not if it takes past
+ 'deadline'. In the latter case, we fail.
+
+- We return the location of the end of the whole header as *headerEndP.
+- We do not remove the header from the buffer, but we do modify the
+- buffer so as to join the multiple lines of the header into a single
+- line, and to NUL-terminate the header.
++ We return the location of the end of the whole field as *headerEndP.
++ We do not remove the field from the buffer, but we do modify the
++ buffer so as to join the multiple lines of the field into a single
++ line, and to NUL-terminate the field.
+ -----------------------------------------------------------------------------*/
+- char * const headerStart = connectionP->buffer + connectionP->bufferpos;
++ char * const fieldStart = connectionP->buffer.t + connectionP->bufferpos;
+
+- char * headerEnd;
+- /* End of the header lines we've seen at so far */
+- bool gotWholeHeader;
++ char * fieldEnd;
++ /* End of the field lines we've seen at so far */
++ bool gotWholeField;
+ bool error;
+
+- headerEnd = lineEnd; /* initial value - end of 1st line */
++ fieldEnd = lineEnd; /* initial value - end of 1st line */
+
+- for (gotWholeHeader = FALSE, error = FALSE;
+- !gotWholeHeader && !error;) {
++ for (gotWholeField = FALSE, error = FALSE;
++ !gotWholeField && !error;) {
+
+ char * nextLineEnd;
+
+@@ -265,51 +277,51 @@ getRestOfHeader(TConn * const connectionP,
+ valid, that there is at least one more line in it. Worst
+ case, it's the empty line that marks the end of the headers.
+ */
+- getLineInBuffer(connectionP, headerEnd, deadline,
++ getLineInBuffer(connectionP, fieldEnd, deadline,
+ &nextLineEnd, &error);
+ if (!error) {
+- if (isContinuationLine(headerEnd)) {
++ if (isContinuationLine(fieldEnd)) {
+ /* Join previous line to this one */
+- convertLineEnd(headerEnd, headerStart, ' ');
++ convertLineEnd(fieldEnd, fieldStart, ' ');
+ /* Add this line to the header */
+- headerEnd = nextLineEnd;
++ fieldEnd = nextLineEnd;
+ } else {
+- gotWholeHeader = TRUE;
+- *headerEndP = headerEnd;
++ gotWholeField = TRUE;
+
+- /* NUL-terminate the whole header */
+- convertLineEnd(headerEnd, headerStart, '\0');
++ /* NUL-terminate the whole field */
++ convertLineEnd(fieldEnd, fieldStart, '\0');
+ }
+ }
+ }
+- *errorP = error;
++ *fieldEndP = fieldEnd;
++ *errorP = error;
+ }
+
+
+
+ static void
+-readHeader(TConn * const connectionP,
+- time_t const deadline,
+- bool * const endOfHeadersP,
+- char ** const headerP,
+- bool * const errorP) {
++readField(TConn * const connectionP,
++ time_t const deadline,
++ bool * const endOfHeaderP,
++ char ** const fieldP,
++ bool * const errorP) {
+ /*----------------------------------------------------------------------------
+- Read an HTTP header, or the end of headers empty line, on connection
++ Read an HTTP header field, or the end of header empty line, on connection
+ *connectionP.
+
+- An HTTP header is basically a line, except that if a line starts
++ An HTTP header field is basically a line, except that if a line starts
+ with white space, it's a continuation of the previous line. A line
+ is delimited by either LF or CRLF.
+
+- The first line of an HTTP header is never empty; an empty line signals
+- the end of the HTTP headers and beginning of the HTTP body. We call
+- that empty line the EOH mark.
++ The first line of an HTTP header field is never empty; an empty line
++ signals the end of the HTTP header and beginning of the HTTP body. We
++ call that empty line the EOH mark.
+
+ We assume the connection is positioned to a header or EOH mark.
+
+ In the course of reading, we read at least one character past the
+- line delimiter at the end of the header or EOH mark; we may read
+- much more. But we leave everything after the header or EOH (and
++ line delimiter at the end of the field or EOH mark; we may read
++ much more. But we leave everything after the field or EOH (and
+ its line delimiter) in the internal buffer, with the buffer pointer
+ pointing to it.
+
+@@ -317,12 +329,12 @@ readHeader(TConn * const connectionP,
+ previous call to this subroutine) before reading any more from from
+ the channel.
+
+- We return as *headerP the next header as an ASCIIZ string, with no
++ We return as *fieldP the next field as an ASCIIZ string, with no
+ line delimiter. That string is stored in the "unused" portion of
+- the connection's internal buffer. Iff there is no next header, we
+- return *endOfHeadersP == true and nothing meaningful as *headerP.
++ the connection's internal buffer. Iff there is no next field, we
++ return *endOfHeaderP == true and nothing meaningful as *fieldP.
+ -----------------------------------------------------------------------------*/
+- char * const bufferStart = connectionP->buffer + connectionP->bufferpos;
++ char * const bufferStart = connectionP->buffer.t + connectionP->bufferpos;
+
+ bool error;
+ char * lineEnd;
+@@ -334,26 +346,26 @@ readHeader(TConn * const connectionP,
+ error = TRUE;
+ else if (isEmptyLine(bufferStart)) {
+ /* Consume the EOH mark from the buffer */
+- connectionP->bufferpos = lineEnd - connectionP->buffer;
+- *endOfHeadersP = TRUE;
++ connectionP->bufferpos = lineEnd - connectionP->buffer.t;
++ *endOfHeaderP = TRUE;
+ } else {
+- /* We have the first line of a header; there may be more. */
++ /* We have the first line of a field; there may be more. */
+
+- const char * headerEnd;
++ const char * fieldEnd;
+
+- *endOfHeadersP = FALSE;
++ *endOfHeaderP = FALSE;
+
+- getRestOfHeader(connectionP, lineEnd, deadline,
+- &headerEnd, &error);
++ getRestOfField(connectionP, lineEnd, deadline,
++ &fieldEnd, &error);
+
+ if (!error) {
+- *headerP = bufferStart;
++ *fieldP = bufferStart;
+
+ /* Consume the header from the buffer (but be careful --
+ you can't reuse that part of the buffer because the
+ string we will return is in it!
+ */
+- connectionP->bufferpos = headerEnd - connectionP->buffer;
++ connectionP->bufferpos = fieldEnd - connectionP->buffer.t;
+ }
+ }
+ }
+@@ -367,7 +379,7 @@ skipToNonemptyLine(TConn * const connectionP,
+ time_t const deadline,
+ bool * const errorP) {
+
+- char * const bufferStart = connectionP->buffer + connectionP->bufferpos;
++ char * const bufferStart = connectionP->buffer.t + connectionP->bufferpos;
+
+ bool gotNonEmptyLine;
+ bool error;
+@@ -393,7 +405,7 @@ skipToNonemptyLine(TConn * const connectionP,
+ /* Consume all the empty lines; advance buffer pointer to first
+ non-empty line.
+ */
+- connectionP->bufferpos = lineStart - connectionP->buffer;
++ connectionP->bufferpos = lineStart - connectionP->buffer.t;
+ }
+ *errorP = error;
+ }
+@@ -401,40 +413,45 @@ skipToNonemptyLine(TConn * const connectionP,
+
+
+ static void
+-readRequestHeader(TSession * const sessionP,
+- time_t const deadline,
+- char ** const requestLineP,
+- uint16_t * const httpErrorCodeP) {
++readRequestField(TSession * const sessionP,
++ time_t const deadline,
++ char ** const requestLineP,
++ uint16_t * const httpErrorCodeP) {
+ /*----------------------------------------------------------------------------
+- Read the HTTP request header (aka request header field) from
+- session 'sessionP'. We read through the session's internal buffer;
+- i.e. we may get data that was previously read from the network, or
+- we may read more from the network.
++ Read the HTTP request header field from session 'sessionP'. We read
++ through the session's internal buffer; i.e. we may get data that was
++ previously read from the network, or we may read more from the network.
+
+ We assume the connection is presently positioned to the beginning of
+- the HTTP document. We leave it positioned after the request header.
++ the HTTP document. We leave it positioned after the request field.
+
+ We ignore any empty lines at the beginning of the stream, per
+ RFC2616 Section 4.1.
+
+- Fail if we can't get the header before 'deadline'.
++ Fail if we can't get the field before 'deadline'.
+
+- Return as *requestLineP the request header read. This ASCIIZ string is
++ Return as *requestLineP the request field read. This ASCIIZ string is
+ in the session's internal buffer.
+
+ Return as *httpErrorCodeP the HTTP error code that describes how we
+- are not able to read the request header, or 0 if we can.
++ are not able to read the request field, or 0 if we can.
+ If we can't, *requestLineP is meaningless.
+ -----------------------------------------------------------------------------*/
+- char * line = NULL;
+- bool error = FALSE;
+- bool endOfHeaders = FALSE;
++ char * line;
++ bool error;
++ bool endOfHeader;
+
+- skipToNonemptyLine(sessionP->conn, deadline, &error);
++ skipToNonemptyLine(sessionP->connP, deadline, &error);
+
+- if (!error)
+- readHeader(sessionP->conn, deadline, &endOfHeaders, &line, &error);
++ if (!error) {
++ readField(sessionP->connP, deadline, &endOfHeader, &line, &error);
+
++ /* End of header is delimited by an empty line, and we skipped all
++ the empty lines above, so readField() could not have encountered
++ EOH:
++ */
++ assert(!endOfHeader);
++ }
+ if (error)
+ *httpErrorCodeP = 408; /* Request Timeout */
+ else {
+@@ -484,6 +501,7 @@ unescapeUri(char * const uri,
+ }
+ } break;
+
++
+ default:
+ *y++ = *x++;
+ break;
+@@ -498,6 +516,7 @@ static void
+ parseHostPort(const char * const hostport,
+ const char ** const hostP,
+ unsigned short * const portP,
++ const char ** const errorP,
+ uint16_t * const httpErrorCodeP) {
+ /*----------------------------------------------------------------------------
+ Parse a 'hostport', a string in the form www.acme.com:8080 .
+@@ -512,28 +531,32 @@ parseHostPort(const char * const hostport,
+
+ buffer = strdup(hostport);
+
+- colonPos = strchr(buffer, ':');
++ colonPos = strrchr(buffer, ':');
+ if (colonPos) {
+ const char * p;
+ uint32_t port;
+
+ *colonPos = '\0'; /* Split hostport at the colon */
+
++
+ for (p = colonPos + 1, port = 0;
+ isdigit(*p) && port < 65535;
+ (port = port * 10 + (*p - '0')), ++p);
+
+- if (*p || port == 0)
++ if (*p || port == 0) {
++ xmlrpc_asprintf(errorP, "There is nothing, or something "
++ "non-numeric for the port number after the "
++ "colon in '%s'", hostport);
+ *httpErrorCodeP = 400; /* Bad Request */
+- else {
++ } else {
+ *hostP = strdup(buffer);
+ *portP = port;
+- *httpErrorCodeP = 0;
++ *errorP = NULL;
+ }
+ } else {
+ *hostP = strdup(buffer);
+ *portP = 80;
+- *httpErrorCodeP = 0;
++ *errorP = NULL;
+ }
+ free(buffer);
+ }
+@@ -596,6 +619,7 @@ parseRequestUri(char * const requestUri,
+ requestUriNoQuery = requestUri;
+ }
+
++
+ if (requestUriNoQuery[0] == '/') {
+ *hostP = NULL;
+ *pathP = strdup(requestUriNoQuery);
+@@ -634,8 +658,15 @@ parseRequestUri(char * const requestUri,
+ hostport = hostportpath;
+ *httpErrorCodeP = 0;
+ }
+- if (!*httpErrorCodeP)
+- parseHostPort(hostport, &host, &port, httpErrorCodeP);
++ if (!*httpErrorCodeP) {
++ const char * error;
++ parseHostPort(hostport, &host, &port,
++ &error, httpErrorCodeP);
++ if (error)
++ xmlrpc_strfree(error);
++ else
++ *httpErrorCodeP = 0;
++ }
+ if (*httpErrorCodeP)
+ xmlrpc_strfree(path);
+
+@@ -764,9 +795,10 @@ strtolower(char * const s) {
+
+
+ static void
+-getFieldNameToken(char ** const pP,
+- char ** const fieldNameP,
+- uint16_t * const httpErrorCodeP) {
++getFieldNameToken(char ** const pP,
++ char ** const fieldNameP,
++ const char ** const errorP,
++ uint16_t * const httpErrorCodeP) {
+ /*----------------------------------------------------------------------------
+ Assuming that *pP points to the place in an HTTP header where the field
+ name belongs, return the field name and advance *pP past that token.
+@@ -779,30 +811,34 @@ getFieldNameToken(char ** const pP,
+ NextToken((const char **)pP);
+
+ fieldName = GetToken(pP);
+- if (!fieldName)
++ if (!fieldName) {
++ xmlrpc_asprintf(errorP, "The header has no field name token");
+ *httpErrorCodeP = 400; /* Bad Request */
+- else {
+- if (fieldName[strlen(fieldName)-1] != ':')
++ } else {
++ if (fieldName[strlen(fieldName)-1] != ':') {
+ /* Not a valid field name */
++ xmlrpc_asprintf(errorP, "The field name token '%s' "
++ "does not end with a colon (:)", fieldName);
+ *httpErrorCodeP = 400; /* Bad Request */
+- else {
++ } else {
+ fieldName[strlen(fieldName)-1] = '\0'; /* remove trailing colon */
+
+ strtolower(fieldName);
+
+- *httpErrorCodeP = 0; /* no error */
+- *fieldNameP = fieldName;
++ *errorP = NULL;
+ }
+ }
++ *fieldNameP = fieldName;
+ }
+
+
+
+ static void
+-processHeader(const char * const fieldName,
+- char * const fieldValue,
+- TSession * const sessionP,
+- uint16_t * const httpErrorCodeP) {
++processField(const char * const fieldName,
++ char * const fieldValue,
++ TSession * const sessionP,
++ const char ** const errorP,
++ uint16_t * const httpErrorCodeP) {
+ /*----------------------------------------------------------------------------
+ We may modify *fieldValue, and we put pointers to *fieldValue and
+ *fieldName into *sessionP.
+@@ -810,7 +846,7 @@ processHeader(const char * const fieldName,
+ We must fix this some day. *sessionP should point to individual
+ malloc'ed strings.
+ -----------------------------------------------------------------------------*/
+- *httpErrorCodeP = 0; /* initial assumption */
++ *errorP = NULL; /* initial assumption */
+
+ if (xmlrpc_streq(fieldName, "connection")) {
+ if (xmlrpc_strcaseeq(fieldValue, "keep-alive"))
+@@ -823,7 +859,7 @@ processHeader(const char * const fieldName,
+ sessionP->requestInfo.host = NULL;
+ }
+ parseHostPort(fieldValue, &sessionP->requestInfo.host,
+- &sessionP->requestInfo.port, httpErrorCodeP);
++ &sessionP->requestInfo.port, errorP, httpErrorCodeP);
+ } else if (xmlrpc_streq(fieldName, "from"))
+ sessionP->requestInfo.from = fieldValue;
+ else if (xmlrpc_streq(fieldName, "user-agent"))
+@@ -834,12 +870,21 @@ processHeader(const char * const fieldName,
+ if (xmlrpc_strneq(fieldValue, "bytes=", 6)) {
+ bool succeeded;
+ succeeded = ListAddFromString(&sessionP->ranges, &fieldValue[6]);
+- *httpErrorCodeP = succeeded ? 0 : 400;
++ if (!succeeded) {
++ xmlrpc_asprintf(errorP, "ListAddFromString() failed for "
++ "\"range: bytes=...\" header value '%s'",
++ &fieldValue[6]);
++ *httpErrorCodeP = 400;
++ }
+ }
+ } else if (xmlrpc_streq(fieldName, "cookies")) {
+ bool succeeded;
+ succeeded = ListAddFromString(&sessionP->cookies, fieldValue);
+- *httpErrorCodeP = succeeded ? 0 : 400;
++ if (!succeeded) {
++ xmlrpc_asprintf(errorP, "ListAddFromString() failed for "
++ "cookies: header value '%s'", fieldValue);
++ *httpErrorCodeP = 400;
++ }
+ } else if (xmlrpc_streq(fieldName, "expect")) {
+ if (xmlrpc_strcaseeq(fieldValue, "100-continue"))
+ sessionP->continueRequired = TRUE;
+@@ -849,53 +894,55 @@ processHeader(const char * const fieldName,
+
+
+ static void
+-readAndProcessHeaders(TSession * const sessionP,
+- time_t const deadline,
+- uint16_t * const httpErrorCodeP) {
++readAndProcessHeaderFields(TSession * const sessionP,
++ time_t const deadline,
++ const char ** const errorP,
++ uint16_t * const httpErrorCodeP) {
+ /*----------------------------------------------------------------------------
+- Read all the HTTP headers from the session *sessionP, which has at
+- least one header coming. Update *sessionP to reflect the
+- information in the headers.
+-
+- If we find an error in the headers or while trying to read them, we
+- return an appropriate HTTP error code as *httpErrorCodeP. Otherwise,
+- we return *httpErrorCodeP = 0.
++ Read all the HTTP header fields from the session *sessionP, which has at
++ least one field coming. Update *sessionP to reflect the information in the
++ fields.
++
++ If we find an error in the fields or while trying to read them, we return
++ a text explanation of the problem as *errorP and an appropriate HTTP error
++ code as *httpErrorCodeP. Otherwise, we return *errorP = NULL and nothing
++ as *httpErrorCodeP.
+ -----------------------------------------------------------------------------*/
+- bool endOfHeaders;
++ bool endOfHeader;
+
+- /* Calling us doesn't make sense if there is already a valid request */
+- if (sessionP->validRequest) {
+- return;
+- }
+-
+- *httpErrorCodeP = 0; /* initial assumption */
+- endOfHeaders = false; /* Caller assures us there is at least one header */
++ assert(!sessionP->validRequest);
++ /* Calling us doesn't make sense if there is already a valid request */
++
++ *errorP = NULL; /* initial assumption */
++ endOfHeader = false; /* Caller assures us there is at least one header */
+
+- while (!endOfHeaders && !*httpErrorCodeP) {
+- char * header;
++ while (!endOfHeader && !*errorP) {
++ char * field;
+ bool error;
+- readHeader(sessionP->conn, deadline, &endOfHeaders, &header, &error);
+- if (error)
++ readField(sessionP->connP, deadline, &endOfHeader, &field, &error);
++ if (error) {
++ xmlrpc_asprintf(errorP, "Failed to read header from "
++ "client connection.");
+ *httpErrorCodeP = 408; /* Request Timeout */
+- else {
+- if (!endOfHeaders) {
++ } else {
++ if (!endOfHeader) {
+ char * p;
+ char * fieldName;
+
+- p = &header[0];
+- getFieldNameToken(&p, &fieldName, httpErrorCodeP);
+- if (!*httpErrorCodeP) {
++ p = &field[0];
++ getFieldNameToken(&p, &fieldName, errorP, httpErrorCodeP);
++ if (!*errorP) {
+ char * fieldValue;
+
+ NextToken((const char **)&p);
+
+ fieldValue = p;
+
+- TableAdd(&sessionP->request_headers,
++ TableAdd(&sessionP->requestHeaderFields,
+ fieldName, fieldValue);
+
+- processHeader(fieldName, fieldValue, sessionP,
+- httpErrorCodeP);
++ processField(fieldName, fieldValue, sessionP, errorP,
++ httpErrorCodeP);
+ }
+ }
+ }
+@@ -905,8 +952,10 @@ readAndProcessHeaders(TSession * const sessionP,
+
+
+ void
+-RequestRead(TSession * const sessionP,
+- uint32_t const timeout) {
++RequestRead(TSession * const sessionP,
++ uint32_t const timeout,
++ const char ** const errorP,
++ uint16_t * const httpErrorCodeP) {
+ /*----------------------------------------------------------------------------
+ Read the headers of a new HTTP request (assuming nothing has yet been
+ read on the session).
+@@ -922,28 +971,38 @@ RequestRead(TSession * const sessionP,
+ uint16_t httpErrorCode; /* zero for no error */
+ char * requestLine; /* In connection;s internal buffer */
+
+- readRequestHeader(sessionP, deadline, &requestLine, &httpErrorCode);
+- if (!httpErrorCode) {
++ readRequestField(sessionP, deadline, &requestLine, &httpErrorCode);
++ if (httpErrorCode) {
++ xmlrpc_asprintf(errorP, "Problem getting the request header");
++ *httpErrorCodeP = httpErrorCode;
++ } else {
+ TMethod httpMethod;
+ const char * host;
+ const char * path;
+ const char * query;
+ unsigned short port;
+- bool moreHeaders;
++ bool moreFields;
+
+ parseRequestLine(requestLine, &httpMethod, &sessionP->version,
+ &host, &port, &path, &query,
+- &moreHeaders, &httpErrorCode);
++ &moreFields, &httpErrorCode);
+
+- if (!httpErrorCode) {
++ if (httpErrorCode) {
++ xmlrpc_asprintf(errorP, "Unable to parse the request header "
++ "'%s'", requestLine);
++ *httpErrorCodeP = httpErrorCode;
++ } else {
+ initRequestInfo(&sessionP->requestInfo, sessionP->version,
+ requestLine,
+ httpMethod, host, port, path, query);
+
+- if (moreHeaders)
+- readAndProcessHeaders(sessionP, deadline, &httpErrorCode);
++ if (moreFields) {
++ readAndProcessHeaderFields(sessionP, deadline,
++ errorP, httpErrorCodeP);
++ } else
++ *errorP = NULL;
+
+- if (httpErrorCode == 0)
++ if (!*errorP)
+ sessionP->validRequest = true;
+
+ xmlrpc_strfreenull(host);
+@@ -951,8 +1010,6 @@ RequestRead(TSession * const sessionP,
+ xmlrpc_strfreenull(query);
+ }
+ }
+- if (httpErrorCode)
+- ResponseStatus(sessionP, httpErrorCode);
+ }
+
+
+@@ -961,7 +1018,7 @@ char *
+ RequestHeaderValue(TSession * const sessionP,
+ const char * const name) {
+
+- return (TableFind(&sessionP->request_headers, name));
++ return (TableFind(&sessionP->requestHeaderFields, name));
+ }
+
+
+@@ -999,10 +1056,10 @@ RequestValidURIPath(TSession * const sessionP) {
+ if (*(p++) == '/') {
+ if (*p == '/')
+ break;
+- else if ((strncmp(p,"./",2) == 0) || (strcmp(p, ".") == 0))
++ else if ((xmlrpc_strneq(p,"./", 2)) || (xmlrpc_streq(p, ".")))
+ ++p;
+- else if ((strncmp(p, "../", 2) == 0) ||
+- (strcmp(p, "..") == 0)) {
++ else if ((xmlrpc_strneq(p, "../", 2)) ||
++ (xmlrpc_streq(p, ".."))) {
+ p += 2;
+ --i;
+ if (i == 0)
+@@ -1029,14 +1086,14 @@ RequestAuth(TSession * const sessionP,
+ /*----------------------------------------------------------------------------
+ Authenticate requester, in a very simplistic fashion.
+
+- If the request specifies basic authentication (via Authorization
+- header) with username 'user', password 'pass', then return TRUE.
+- Else, return FALSE and set up an authorization failure response
+- (HTTP response status 401) that says user must supply an identity
+- in the 'credential' domain.
++ If the request executing on session *sessionP specifies basic
++ authentication (via Authorization header) with username 'user', password
++ 'pass', then return TRUE. Else, return FALSE and set up an authorization
++ failure response (HTTP response status 401) that says user must supply an
++ identity in the 'credential' domain.
+
+- When we return TRUE, we also set the username in the request info
+- to 'user' so that a future SessionGetRequestInfo can get it.
++ When we return TRUE, we also set the username in the request info for the
++ session to 'user' so that a future SessionGetRequestInfo can get it.
+ -----------------------------------------------------------------------------*/
+ bool authorized;
+ char * authHdrPtr;
+@@ -1055,7 +1112,7 @@ RequestAuth(TSession * const sessionP,
+ NextToken((const char **)&authHdrPtr);
+
+ xmlrpc_asprintf(&userPass, "%s:%s", user, pass);
+- Base64Encode(userPass, userPassEncoded);
++ xmlrpc_base64Encode(userPass, userPassEncoded);
+ xmlrpc_strfree(userPass);
+
+ if (xmlrpc_streq(authHdrPtr, userPassEncoded)) {
+@@ -1208,24 +1265,19 @@ HTTPWriteBodyChunk(TSession * const sessionP,
+ const char * const buffer,
+ uint32_t const len) {
+
+- bool succeeded;
+-
+ if (sessionP->chunkedwrite && sessionP->chunkedwritemode) {
+ char chunkHeader[16];
+
+ sprintf(chunkHeader, "%x\r\n", len);
+
+- succeeded =
+- ConnWrite(sessionP->conn, chunkHeader, strlen(chunkHeader));
+- if (succeeded) {
+- succeeded = ConnWrite(sessionP->conn, buffer, len);
+- if (succeeded)
+- succeeded = ConnWrite(sessionP->conn, "\r\n", 2);
+- }
++ if (ConnWrite(sessionP->connP, chunkHeader, strlen(chunkHeader)))
++ if (ConnWrite(sessionP->connP, buffer, len))
++ return ConnWrite(sessionP->connP, "\r\n", 2);
++
++ return FALSE;
+ } else
+- succeeded = ConnWrite(sessionP->conn, buffer, len);
++ return ConnWrite(sessionP->connP, buffer, len);
+
+- return succeeded;
+ }
+
+
+@@ -1233,14 +1285,13 @@ HTTPWriteBodyChunk(TSession * const sessionP,
+ bool
+ HTTPWriteEndChunk(TSession * const sessionP) {
+
+- bool retval;
++ bool retval = TRUE;
+
+ if (sessionP->chunkedwritemode && sessionP->chunkedwrite) {
+ /* May be one day trailer dumping will be added */
+ sessionP->chunkedwritemode = FALSE;
+- retval = ConnWrite(sessionP->conn, "0\r\n\r\n", 5);
+- } else
+- retval = TRUE;
++ retval = ConnWrite(sessionP->connP, "0\r\n\r\n", 5);
++ }
+
+ return retval;
+ }
+@@ -1266,7 +1317,7 @@ HTTPWriteContinue(TSession * const sessionP) {
+ char const continueStatus[] = "HTTP/1.1 100 continue\r\n\r\n";
+ /* This is a status line plus an end-of-headers empty line */
+
+- return ConnWrite(sessionP->conn, continueStatus, strlen(continueStatus));
++ return ConnWrite(sessionP->connP, continueStatus, strlen(continueStatus));
+ }
+
+
+diff --git a/libs/xmlrpc-c/lib/abyss/src/http.h b/libs/xmlrpc-c/lib/abyss/src/http.h
+index acf491e..14a3168 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/http.h
++++ b/libs/xmlrpc-c/lib/abyss/src/http.h
+@@ -1,6 +1,8 @@
+ #ifndef HTTP_H_INCLUDED
+ #define HTTP_H_INCLUDED
+
++#include <sys/types.h>
++
+ #include "bool.h"
+ #include "conn.h"
+
+@@ -13,8 +15,10 @@ bool RequestValidURIPath(TSession * const r);
+ bool RequestUnescapeURI(TSession *r);
+
+ void
+-RequestRead(TSession * const sessionP,
+- uint32_t const timeout);
++RequestRead(TSession * const sessionP,
++ uint32_t const timeout,
++ const char ** const errorP,
++ uint16_t * const httpErrorCodeP);
+
+ void RequestInit(TSession * const r,TConn * const c);
+ void RequestFree(TSession * const r);
+diff --git a/libs/xmlrpc-c/lib/abyss/src/main.c b/libs/xmlrpc-c/lib/abyss/src/main.c
+index e5741f3..875a260 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/main.c
++++ b/libs/xmlrpc-c/lib/abyss/src/main.c
+@@ -42,7 +42,7 @@
+ #endif /* WIN32 */
+
+ #ifdef _UNIX
+-#include <sys/signal.h>
++#include <signal.h>
+ #include <sys/wait.h>
+ #endif
+
+@@ -75,7 +75,7 @@ abyss_bool HandleTime(TSession *r)
+ const char * dateString;
+ const char * answer;
+
+- if (strcmp(r->uri,"/time")!=0)
++ if (!xmlrpc_streq(r->uri,"/time"))
+ return FALSE;
+
+ if (!RequestAuth(r,"Mot de passe","moez","hello"))
+@@ -100,7 +100,7 @@ abyss_bool HandleDump(TSession *r)
+ {
+ char z[50];
+
+- if (strcmp(r->uri,"/name")!=0)
++ if (!xmlrpc_streq(r->uri,"/name"))
+ return FALSE;
+
+ sprintf(z,"Server name is %s", (r->server)->name );
+@@ -125,7 +125,7 @@ abyss_bool HandleMIMEType(TSession *r)
+ {
+ char *m;
+
+- if (strncmp(r->uri,"/mime/",6)!=0)
++ if (!xmlrpc_strneq(r->uri, "/mime/", 6))
+ return FALSE;
+
+ m=MIMETypeFromExt(r->uri+6);
+diff --git a/libs/xmlrpc-c/lib/abyss/src/response.c b/libs/xmlrpc-c/lib/abyss/src/response.c
+index 75421d4..235d787 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/response.c
++++ b/libs/xmlrpc-c/lib/abyss/src/response.c
+@@ -6,6 +6,8 @@
+ Copyright information is at the end of the file
+ =============================================================================*/
+
++#define _XOPEN_SOURCE 600 /* Make sure strdup() is in <string.h> */
++
+ #include <ctype.h>
+ #include <assert.h>
+ #include <stdlib.h>
+@@ -16,11 +18,13 @@
+
+ #include "xmlrpc_config.h"
+ #include "bool.h"
++#include "int.h"
+ #include "version.h"
+ #include "mallocvar.h"
+ #include "xmlrpc-c/string_int.h"
+ #include "xmlrpc-c/abyss.h"
+
++#include "trace.h"
+ #include "server.h"
+ #include "session.h"
+ #include "file.h"
+@@ -39,10 +43,6 @@ ResponseError2(TSession * const sessionP,
+
+ const char * errorDocument;
+
+- ResponseAddField(sessionP, "Content-type", "text/html");
+-
+- ResponseWriteStart(sessionP);
+-
+ xmlrpc_asprintf(&errorDocument,
+ "<HTML><HEAD><TITLE>Error %d</TITLE></HEAD>"
+ "<BODY>"
+@@ -51,8 +51,12 @@ ResponseError2(TSession * const sessionP,
+ "</BODY>"
+ "</HTML>",
+ sessionP->status, sessionP->status, explanation);
+-
+- ConnWrite(sessionP->conn, errorDocument, strlen(errorDocument));
++
++ ResponseAddField(sessionP, "Content-type", "text/html");
++ ResponseContentLength(sessionP, strlen(errorDocument));
++
++ if (ResponseWriteStart(sessionP))
++ ConnWrite(sessionP->connP, errorDocument, strlen(errorDocument));
+
+ xmlrpc_strfree(errorDocument);
+ }
+@@ -123,20 +127,63 @@ ResponseStatusErrno(TSession * const sessionP) {
+
+
+
++static bool
++isValidHttpToken(const char * const token) {
++
++ char const separators[] = "()<>@,;:\\\"/[]?={} \t";
++ const char * p;
++ bool valid;
++
++ for (p = &token[0], valid = true; *p; ++p) {
++ if (!isprint(*p) || strchr(separators, *p))
++ valid = false;
++ }
++ return valid;
++}
++
++
++
++
++static bool
++isValidHttpText(const char * const text) {
++
++ const char * p;
++ bool valid;
++
++ for (p = &text[0], valid = true; *p; ++p) {
++ if (!isprint(*p))
++ valid = false;
++ }
++ return valid;
++}
++
++
++
+ abyss_bool
+ ResponseAddField(TSession * const sessionP,
+ const char * const name,
+ const char * const value) {
+
+- return TableAdd(&sessionP->response_headers, name, value);
++ abyss_bool succeeded;
++
++ if (!isValidHttpToken(name)) {
++ TraceMsg("Supplied HTTP header field name is not a valid HTTP token");
++ succeeded = false;
++ } else if (!isValidHttpText(value)) {
++ TraceMsg("Supplied HTTP header field value is not valid HTTP text");
++ succeeded = false;
++ } else {
++ succeeded = TableAdd(&sessionP->responseHeaderFields, name, value);
++ }
++ return succeeded;
+ }
+
+
+
+ static void
+-addConnectionHeader(TSession * const sessionP) {
++addConnectionHeaderFld(TSession * const sessionP) {
+
+- struct _TServer * const srvP = ConnServer(sessionP->conn)->srvP;
++ struct _TServer * const srvP = ConnServer(sessionP->connP)->srvP;
+
+ if (HTTPKeepalive(sessionP)) {
+ const char * keepaliveValue;
+@@ -156,7 +203,7 @@ addConnectionHeader(TSession * const sessionP) {
+
+
+ static void
+-addDateHeader(TSession * const sessionP) {
++addDateHeaderFld(TSession * const sessionP) {
+
+ if (sessionP->status >= 200) {
+ const char * dateValue;
+@@ -173,11 +220,11 @@ addDateHeader(TSession * const sessionP) {
+
+
+ static void
+-addServerHeader(TSession * const sessionP) {
++addServerHeaderFld(TSession * const sessionP) {
+
+ const char * serverValue;
+
+- xmlrpc_asprintf(&serverValue, "XMLRPC_ABYSS/%s", XMLRPC_C_VERSION);
++ xmlrpc_asprintf(&serverValue, "Freeswitch xmlrpc-c_abyss /%s", XMLRPC_C_VERSION);
+
+ ResponseAddField(sessionP, "Server", serverValue);
+
+@@ -186,17 +233,107 @@ addServerHeader(TSession * const sessionP) {
+
+
+
+-void
+-ResponseWriteStart(TSession * const sessionP) {
++static unsigned int
++leadingWsCt(const char * const arg) {
++
++ unsigned int i;
++
++ for (i = 0; arg[i] && isspace(arg[i]); ++i);
++
++ return i;
++}
++
+
+- struct _TServer * const srvP = ConnServer(sessionP->conn)->srvP;
++
++static unsigned int
++trailingWsPos(const char * const arg) {
+
+ unsigned int i;
+
++ for (i = strlen(arg); i > 0 && isspace(arg[i-1]); --i);
++
++ return i;
++}
++
++
++
++static const char *
++formatFieldValue(const char * const unformatted) {
++/*----------------------------------------------------------------------------
++ Return the string of characters that goes after the colon on the
++ HTTP header field line, given that 'unformatted' is its basic value.
++-----------------------------------------------------------------------------*/
++ const char * retval;
++
++ /* An HTTP header field value may not have leading or trailing white
++ space.
++ */
++ char * buffer;
++
++ buffer = malloc(strlen(unformatted) + 1);
++
++ if (buffer == NULL)
++ retval = xmlrpc_strnomemval();
++ else {
++ unsigned int const lead = leadingWsCt(unformatted);
++ unsigned int const trail = trailingWsPos(unformatted);
++ assert(trail >= lead);
++ strncpy(buffer, &unformatted[lead], trail - lead);
++ buffer[trail - lead] = '\0';
++ retval = buffer;
++ }
++ return retval;
++}
++
++
++
++static abyss_bool
++sendHeader(TConn * const connP,
++ TTable const fields) {
++/*----------------------------------------------------------------------------
++ Send the HTTP response header whose fields are fields[].
++
++ Don't include the blank line that separates the header from the body.
++
++ fields[] contains syntactically valid HTTP header field names and values.
++ But to the extent that int contains undefined field names or semantically
++ invalid values, the header we send is invalid.
++-----------------------------------------------------------------------------*/
++ unsigned int i;
++ abyss_bool ret = TRUE;
++ for (i = 0; i < fields.size && ret; ++i) {
++ TTableItem * const fieldP = &fields.item[i];
++ const char * const fieldValue = formatFieldValue(fieldP->value);
++
++ const char * line;
++
++ xmlrpc_asprintf(&line, "%s: %s\r\n", fieldP->name, fieldValue);
++ if (!ConnWrite(connP, line, strlen(line)))
++ ret = FALSE;
++ xmlrpc_strfree(line);
++ xmlrpc_strfree(fieldValue);
++ }
++ return ret;
++}
++
++
++abyss_bool
++ResponseWriteStart(TSession * const sessionP) {
++/*----------------------------------------------------------------------------
++ Begin the process of sending the response for an HTTP transaction
++ (i.e. Abyss session).
++
++ As part of this, send the entire HTTP header for the response.
++-----------------------------------------------------------------------------*/
++ struct _TServer * const srvP = ConnServer(sessionP->connP)->srvP;
++
+ assert(!sessionP->responseStarted);
+
+ if (sessionP->status == 0) {
+ /* Handler hasn't set status. That's an error */
++ TraceMsg("Abyss client called ResponseWriteStart() on "
++ "a session for which he has not set the request status "
++ "('status' member of TSession). Using status 500\n");
+ sessionP->status = 500;
+ }
+
+@@ -205,31 +342,33 @@ ResponseWriteStart(TSession * const sessionP) {
+ {
+ const char * const reason = HTTPReasonByStatus(sessionP->status);
+ const char * line;
++ abyss_bool ret = TRUE;
+ xmlrpc_asprintf(&line,"HTTP/1.1 %u %s\r\n", sessionP->status, reason);
+- ConnWrite(sessionP->conn, line, strlen(line));
++ ret = ConnWrite(sessionP->connP, line, strlen(line));
+ xmlrpc_strfree(line);
++ if (!ret) return FALSE;
+ }
+
+- addConnectionHeader(sessionP);
++
++ addConnectionHeaderFld(sessionP);
+
+ if (sessionP->chunkedwrite && sessionP->chunkedwritemode)
+ ResponseAddField(sessionP, "Transfer-Encoding", "chunked");
+
+- addDateHeader(sessionP);
++ addDateHeaderFld(sessionP);
+
+ if (srvP->advertise)
+- addServerHeader(sessionP);
++ addServerHeaderFld(sessionP);
+
+- /* send all the fields */
+- for (i = 0; i < sessionP->response_headers.size; ++i) {
+- TTableItem * const ti = &sessionP->response_headers.item[i];
+- const char * line;
+- xmlrpc_asprintf(&line, "%s: %s\r\n", ti->name, ti->value);
+- ConnWrite(sessionP->conn, line, strlen(line));
+- xmlrpc_strfree(line);
+- }
++ /* Note that sessionP->responseHeaderFields is defined to contain
++ syntactically but not necessarily semantically valid header
++ field names and values.
++ */
++ if (sendHeader(sessionP->connP, sessionP->responseHeaderFields))
++ if (ConnWrite(sessionP->connP, "\r\n", 2))
++ return TRUE;
+
+- ConnWrite(sessionP->conn, "\r\n", 2);
++ return FALSE;
+ }
+
+
+@@ -273,6 +412,26 @@ ResponseContentLength(TSession * const sessionP,
+ }
+
+
++
++void
++ResponseAccessControl(TSession * const abyssSessionP,
++ ResponseAccessCtl const accessControl) {
++
++ if (accessControl.allowOrigin) {
++ ResponseAddField(abyssSessionP, "Access-Control-Allow-Origin",
++ accessControl.allowOrigin);
++ ResponseAddField(abyssSessionP, "Access-Control-Allow-Methods",
++ "POST");
++ if (accessControl.expires) {
++ char buffer[64];
++ sprintf(buffer, "%u", accessControl.maxAge);
++ ResponseAddField(abyssSessionP, "Access-Control-Max-Age", buffer);
++ }
++ }
++}
++
++
++
+ /*********************************************************************
+ ** MIMEType
+ *********************************************************************/
+@@ -309,6 +468,8 @@ void
+ MIMETypeDestroy(MIMEType * const MIMETypeP) {
+
+ PoolFree(&MIMETypeP->pool);
++
++ free(MIMETypeP);
+ }
+
+
+@@ -330,6 +491,9 @@ MIMETypeTerm(void) {
+ if (globalMimeTypeP == NULL)
+ abort();
+
++ ListFree(&globalMimeTypeP->extList);
++ ListFree(&globalMimeTypeP->typeList);
++
+ MIMETypeDestroy(globalMimeTypeP);
+
+ globalMimeTypeP = NULL;
+@@ -595,13 +759,17 @@ mimeTypeGuessFromFile(MIMEType * const MIMETypeP,
+
+ if (ext && MIMETypeP)
+ retval = MIMETypeFromExt2(MIMETypeP, ext);
+-
++
++
+ if (!retval) {
+ if (fileContainsText(fileName))
+ retval = "text/plain";
+ else
+ retval = "application/octet-stream";
+ }
++
++ if (!strcmp(retval, "text/plain"))
++ retval = "text/plain; charset=utf-8";
+ return retval;
+ }
+
+@@ -625,55 +793,6 @@ MIMETypeGuessFromFile(const char * const fileName) {
+
+
+
+-/*********************************************************************
+-** Base64
+-*********************************************************************/
+-
+-void
+-Base64Encode(const char * const chars,
+- char * const base64) {
+-
+- /* Conversion table. */
+- static char tbl[64] = {
+- 'A','B','C','D','E','F','G','H',
+- 'I','J','K','L','M','N','O','P',
+- 'Q','R','S','T','U','V','W','X',
+- 'Y','Z','a','b','c','d','e','f',
+- 'g','h','i','j','k','l','m','n',
+- 'o','p','q','r','s','t','u','v',
+- 'w','x','y','z','0','1','2','3',
+- '4','5','6','7','8','9','+','/'
+- };
+-
+- uint i;
+- uint32_t length;
+- char * p;
+- const char * s;
+-
+- length = strlen(chars); /* initial value */
+- s = &chars[0]; /* initial value */
+- p = &base64[0]; /* initial value */
+- /* Transform the 3x8 bits to 4x6 bits, as required by base64. */
+- for (i = 0; i < length; i += 3) {
+- *p++ = tbl[s[0] >> 2];
+- *p++ = tbl[((s[0] & 3) << 4) + (s[1] >> 4)];
+- *p++ = tbl[((s[1] & 0xf) << 2) + (s[2] >> 6)];
+- *p++ = tbl[s[2] & 0x3f];
+- s += 3;
+- }
+-
+- /* Pad the result if necessary... */
+- if (i == length + 1)
+- *(p - 1) = '=';
+- else if (i == length + 2)
+- *(p - 1) = *(p - 2) = '=';
+-
+- /* ...and zero-terminate it. */
+- *p = '\0';
+-}
+-
+-
+-
+ /******************************************************************************
+ **
+ ** http.c
+diff --git a/libs/xmlrpc-c/lib/abyss/src/server.c b/libs/xmlrpc-c/lib/abyss/src/server.c
+index a52c823..392f368 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/server.c
++++ b/libs/xmlrpc-c/lib/abyss/src/server.c
+@@ -1,4 +1,8 @@
+ /* Copyright information is at end of file */
++
++#define _XOPEN_SOURCE 600 /* Make sure strdup() is in <string.h> */
++#define _BSD_SOURCE /* Make sure setgroups()is in <grp.h> */
++
+ #include <assert.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+@@ -35,6 +39,17 @@
+ #include "server.h"
+
+
++struct uriHandler {
++ initHandlerFn init;
++ termHandlerFn term;
++ handleReq3Fn handleReq3;
++ handleReq2Fn handleReq2;
++ URIHandler handleReq1;
++ void * userdata;
++};
++
++
++
+ void
+ ServerTerminate(TServer * const serverP) {
+
+@@ -44,10 +59,11 @@ ServerTerminate(TServer * const serverP) {
+
+ if (srvP->chanSwitchP) {
+ ChanSwitchInterrupt(srvP->chanSwitchP);
+- ChanSwitchDestroy(srvP->chanSwitchP);
+ }
+ }
+
++
++
+ void
+ ServerResetTerminate(TServer * const serverP) {
+
+@@ -108,25 +124,29 @@ logClose(struct _TServer * const srvP) {
+ static void
+ initChanSwitchStuff(struct _TServer * const srvP,
+ bool const noAccept,
+- TChanSwitch * const userSwitchP,
++ TChanSwitch * const chanSwitchP,
++ bool const userChanSwitch,
+ unsigned short const port,
+ const char ** const errorP) {
+
+- if (userSwitchP) {
++
++ if (chanSwitchP) {
+ *errorP = NULL;
+ srvP->serverAcceptsConnections = TRUE;
+- srvP->chanSwitchP = userSwitchP;
++ srvP->chanSwitchP = chanSwitchP;
++ srvP->weCreatedChanSwitch = !userChanSwitch;
+ } else if (noAccept) {
+ *errorP = NULL;
+ srvP->serverAcceptsConnections = FALSE;
+ srvP->chanSwitchP = NULL;
++ srvP->weCreatedChanSwitch = FALSE;
+ } else {
+ *errorP = NULL;
+ srvP->serverAcceptsConnections = TRUE;
+ srvP->chanSwitchP = NULL;
++ srvP->weCreatedChanSwitch = FALSE;
+ srvP->port = port;
+ }
+- srvP->weCreatedChanSwitch = FALSE;
+ }
+
+
+@@ -134,7 +154,8 @@ initChanSwitchStuff(struct _TServer * const srvP,
+ static void
+ createServer(struct _TServer ** const srvPP,
+ bool const noAccept,
+- TChanSwitch * const userChanSwitchP,
++ TChanSwitch * const chanSwitchP,
++ bool const userChanSwitch,
+ unsigned short const portNumber,
+ const char ** const errorP) {
+
+@@ -148,8 +169,8 @@ createServer(struct _TServer ** const srvPP,
+ } else {
+ srvP->terminationRequested = false;
+
+- initChanSwitchStuff(srvP, noAccept, userChanSwitchP, portNumber,
+- errorP);
++ initChanSwitchStuff(srvP, noAccept, chanSwitchP, userChanSwitch,
++ portNumber, errorP);
+
+ if (!*errorP) {
+ srvP->builtinHandlerP = HandlerCreate();
+@@ -167,6 +188,7 @@ createServer(struct _TServer ** const srvPP,
+ srvP->timeout = 15;
+ srvP->advertise = TRUE;
+ srvP->useSigchld = FALSE;
++ srvP->uriHandlerStackSize = 0;
+
+ initUnixStuff(srvP);
+
+@@ -218,11 +240,14 @@ ServerCreate(TServer * const serverP,
+ const char * const logFileName) {
+
+ bool const noAcceptFalse = FALSE;
++ bool const userChanSwitchFalse = FALSE;
+
+ bool success;
+ const char * error;
+
+- createServer(&serverP->srvP, noAcceptFalse, NULL, portNumber, &error);
++ createServer(&serverP->srvP, noAcceptFalse,
++ NULL, userChanSwitchFalse,
++ portNumber, &error);
+
+ if (error) {
+ TraceMsg(error);
+@@ -291,10 +316,13 @@ ServerCreateSocket(TServer * const serverP,
+ xmlrpc_strfree(error);
+ } else {
+ bool const noAcceptFalse = FALSE;
++ bool const userChanSwitchFalse = FALSE;
+
+ const char * error;
+
+- createServer(&serverP->srvP, noAcceptFalse, chanSwitchP, 0, &error);
++ createServer(&serverP->srvP, noAcceptFalse,
++ chanSwitchP, userChanSwitchFalse,
++ 0, &error);
+
+ if (error) {
+ TraceMsg(error);
+@@ -305,6 +333,8 @@ ServerCreateSocket(TServer * const serverP,
+
+ setNamePathLog(serverP, name, filesPath, logFileName);
+ }
++ if (!success)
++ ChanSwitchDestroy(chanSwitchP);
+ }
+
+ return success;
+@@ -319,11 +349,14 @@ ServerCreateNoAccept(TServer * const serverP,
+ const char * const logFileName) {
+
+ bool const noAcceptTrue = TRUE;
++ bool const userChanSwitchFalse = FALSE;
+
+ bool success;
+ const char * error;
+
+- createServer(&serverP->srvP, noAcceptTrue, NULL, 0, &error);
++ createServer(&serverP->srvP, noAcceptTrue,
++ NULL, userChanSwitchFalse,
++ 0, &error);
+
+ if (error) {
+ TraceMsg(error);
+@@ -345,11 +378,14 @@ ServerCreateSwitch(TServer * const serverP,
+ const char ** const errorP) {
+
+ bool const noAcceptFalse = FALSE;
++ bool const userChanSwitchTrue = TRUE;
+
+ assert(serverP);
+ assert(chanSwitchP);
+
+- createServer(&serverP->srvP, noAcceptFalse, chanSwitchP, 0, errorP);
++ createServer(&serverP->srvP, noAcceptFalse,
++ chanSwitchP, userChanSwitchTrue,
++ 0, errorP);
+ }
+
+
+@@ -383,7 +419,7 @@ terminateHandlers(TList * const handlersP) {
+ if (handlersP->item) {
+ unsigned int i;
+ for (i = handlersP->size; i > 0; --i) {
+- URIHandler2 * const handlerP = handlersP->item[i-1];
++ struct uriHandler * const handlerP = handlersP->item[i-1];
+ if (handlerP->term)
+ handlerP->term(handlerP->userdata);
+ }
+@@ -397,7 +433,7 @@ ServerFree(TServer * const serverP) {
+
+ struct _TServer * const srvP = serverP->srvP;
+
+- if (srvP->weCreatedChanSwitch)
++ if (srvP->weCreatedChanSwitch && srvP->chanSwitchP)
+ ChanSwitchDestroy(srvP->chanSwitchP);
+
+ xmlrpc_strfree(srvP->name);
+@@ -456,7 +492,7 @@ void
+ ServerSetKeepaliveTimeout(TServer * const serverP,
+ xmlrpc_uint32_t const keepaliveTimeout) {
+
+- serverP->srvP->keepalivetimeout = keepaliveTimeout;
++ serverP->srvP->keepalivetimeout = MAX(keepaliveTimeout, 1);
+ }
+
+
+@@ -465,7 +501,7 @@ void
+ ServerSetKeepaliveMaxConn(TServer * const serverP,
+ xmlrpc_uint32_t const keepaliveMaxConn) {
+
+- serverP->srvP->keepalivemaxconn = keepaliveMaxConn;
++ serverP->srvP->keepalivemaxconn = MAX(keepaliveMaxConn, 1);
+ }
+
+
+@@ -497,6 +533,22 @@ ServerSetMimeType(TServer * const serverP,
+
+
+
++static URIHandler2
++makeUriHandler2(const struct uriHandler * const handlerP) {
++
++ URIHandler2 retval;
++
++ retval.init = handlerP->init;
++ retval.term = handlerP->term;
++ retval.handleReq2 = handlerP->handleReq2;
++ retval.handleReq1 = handlerP->handleReq1;
++ retval.userdata = handlerP->userdata;
++
++ return retval;
++}
++
++
++
+ static void
+ runUserHandler(TSession * const sessionP,
+ struct _TServer * const srvP) {
+@@ -507,11 +559,14 @@ runUserHandler(TSession * const sessionP,
+ for (i = srvP->handlers.size-1, handled = FALSE;
+ i >= 0 && !handled;
+ --i) {
+- URIHandler2 * const handlerP = srvP->handlers.item[i];
++ const struct uriHandler * const handlerP = srvP->handlers.item[i];
+
+- if (handlerP->handleReq2)
+- handlerP->handleReq2(handlerP, sessionP, &handled);
+- else if (handlerP->handleReq1)
++ if (handlerP->handleReq3)
++ handlerP->handleReq3(handlerP->userdata, sessionP, &handled);
++ if (handlerP->handleReq2) {
++ URIHandler2 handler2 = makeUriHandler2(handlerP);
++ handlerP->handleReq2(&handler2, sessionP, &handled);
++ } else if (handlerP->handleReq1)
+ handled = handlerP->handleReq1(sessionP);
+ }
+
+@@ -524,24 +579,81 @@ runUserHandler(TSession * const sessionP,
+
+
+ static void
+-processDataFromClient(TConn * const connectionP,
+- bool const lastReqOnConn,
+- uint32_t const timeout,
+- bool * const keepAliveP) {
++handleReqTooNewHttpVersion(TSession * const sessionP) {
++
++ const char * msg;
++
++ ResponseStatus(sessionP, 505);
++
++ xmlrpc_asprintf(&msg, "Request is in HTTP Version %u"
++ "We understand only HTTP 1",
++ sessionP->version.major);
++
++ ResponseError2(sessionP, msg);
++
++ xmlrpc_strfree(msg);
++}
+
+- TSession session = {0}; /* initilization, an afforadble alternative to random memory being misinterpreted! */
++
++
++static void
++handleReqInvalidURI(TSession * const sessionP) {
++
++ ResponseStatus(sessionP, 400);
++
++ ResponseError2(sessionP, "Invalid URI");
++}
++
++
++
++static void
++processRequestFromClient(TConn * const connectionP,
++ bool const lastReqOnConn,
++ uint32_t const timeout,
++ bool * const keepAliveP) {
++/*----------------------------------------------------------------------------
++ Get and execute one HTTP request from client connection *connectionP,
++ through the connection buffer. I.e. Some of the request may already be in
++ the connection buffer, and we may leave some of later requests in the
++ connection buffer.
++
++ In fact, due to timing considerations, we assume the client has begun
++ sending the request, which as a practical matter means Caller has already
++ deposited some of it in the connection buffer.
++
++ If there isn't one full request in the buffer now, we wait for one full
++ request to come through the buffer, up to 'timeout'.
++
++ We return as *keepAliveP whether Caller should keep the connection
++ alive for a while for possible future requests from the client, based
++ on 'lastReqOnConn' and the content of the HTTP request.
++
++ Executing the request consists primarily of calling the URI handlers that
++ are associated with the connection (*connectionP), passing each the request
++ information we read. Each handler can respond according to the HTTP method
++ (GET, POST, etc) and URL etc, and that response may be either to
++ execute the request and send the response or refuse the request and let
++ us call the next one in the list.
++-----------------------------------------------------------------------------*/
++ TSession session;
++ const char * error;
++ uint16_t httpErrorCode;
+
+ RequestInit(&session, connectionP);
+
+ session.serverDeniesKeepalive = lastReqOnConn;
+
+- RequestRead(&session, timeout);
++ RequestRead(&session, timeout, &error, &httpErrorCode);
+
+- if (session.status == 0) {
++ if (error) {
++ ResponseStatus(&session, httpErrorCode);
++ ResponseError2(&session, error);
++ xmlrpc_strfree(error);
++ } else {
+ if (session.version.major >= 2)
+- ResponseStatus(&session, 505);
++ handleReqTooNewHttpVersion(&session);
+ else if (!RequestValidURI(&session))
+- ResponseStatus(&session, 400);
++ handleReqInvalidURI(&session);
+ else
+ runUserHandler(&session, connectionP->server->srvP);
+ }
+@@ -582,21 +694,35 @@ serverFunc(void * const userHandle) {
+ connectionDone = FALSE;
+
+ while (!connectionDone) {
+- bool success;
++ bool timedOut, eof;
++ const char * readError;
+
+- /* Wait to read until timeout */
+- success = ConnRead(connectionP, srvP->keepalivetimeout);
+-
+- if (!success)
++ /* Wait for and get beginning (at least ) of next request. We do
++ this separately from getting the rest of the request because we
++ treat dead time between requests differently from dead time in
++ the middle of a request.
++ */
++ ConnRead(connectionP, srvP->keepalivetimeout,
++ &timedOut, &eof, &readError);
++
++ if (readError) {
++ TraceMsg("Failed to read from Abyss connection. %s", readError);
++ xmlrpc_strfree(readError);
+ connectionDone = TRUE;
+- else {
++ } else if (timedOut) {
++ connectionDone = TRUE;
++ } else if (eof) {
++ connectionDone = TRUE;
++ } else if (srvP->terminationRequested) {
++ connectionDone = TRUE;
++ } else {
+ bool const lastReqOnConn =
+ requestCount + 1 >= srvP->keepalivemaxconn;
+
+ bool keepalive;
+
+- processDataFromClient(connectionP, lastReqOnConn, srvP->timeout,
+- &keepalive);
++ processRequestFromClient(connectionP, lastReqOnConn, srvP->timeout,
++ &keepalive);
+
+ ++requestCount;
+
+@@ -611,6 +737,14 @@ serverFunc(void * const userHandle) {
+
+
+
++/* This is the maximum amount of stack space, in bytes, serverFunc()
++ itself requires -- not counting what the user's request handler
++ (which serverFunc() calls) requires.
++*/
++#define SERVER_FUNC_STACK 1024
++
++
++
+ static void
+ createSwitchFromPortNum(unsigned short const portNumber,
+ TChanSwitch ** const chanSwitchPP,
+@@ -700,8 +834,8 @@ ServerInit(TServer * const serverP) {
+ }
+ if (retError) {
+ TraceMsg("ServerInit() failed. %s", retError);
+- return 0;
+ xmlrpc_strfree(retError);
++ return 0;
+ }
+
+ return 1;
+@@ -920,7 +1054,9 @@ acceptAndProcessNextConnection(
+ waitForConnectionCapacity(outstandingConnListP);
+
+ ConnCreate(&connectionP, serverP, channelP, channelInfoP,
+- &serverFunc, &destroyChannel, ABYSS_BACKGROUND,
++ &serverFunc,
++ SERVER_FUNC_STACK + srvP->uriHandlerStackSize,
++ &destroyChannel, ABYSS_BACKGROUND,
+ srvP->useSigchld,
+ &error);
+ if (!error) {
+@@ -932,6 +1068,8 @@ acceptAndProcessNextConnection(
+ destroy *channelP.
+ */
+ } else {
++ TraceMsg("Failed to create an Abyss connection "
++ "out of new channel %lx. %s", channelP, error);
+ xmlrpc_strfree(error);
+ ChannelDestroy(channelP);
+ free(channelInfoP);
+@@ -998,7 +1136,8 @@ serverRunChannel(TServer * const serverP,
+
+ ConnCreate(&connectionP,
+ serverP, channelP, channelInfoP,
+- &serverFunc, NULL, ABYSS_FOREGROUND, srvP->useSigchld,
++ &serverFunc, SERVER_FUNC_STACK + srvP->uriHandlerStackSize,
++ NULL, ABYSS_FOREGROUND, srvP->useSigchld,
+ &error);
+ if (error) {
+ xmlrpc_asprintf(errorP, "Couldn't create HTTP connection out of "
+@@ -1230,24 +1369,43 @@ ServerDaemonize(TServer * const serverP) {
+
+
+
+-void
+-ServerAddHandler2(TServer * const serverP,
+- URIHandler2 * const handlerArgP,
+- abyss_bool * const successP) {
++static void
++serverAddHandler(TServer * const serverP,
++ initHandlerFn init,
++ termHandlerFn term,
++ URIHandler handleReq1,
++ handleReq2Fn handleReq2,
++ handleReq3Fn handleReq3,
++ void * const userdata,
++ size_t const handleReqStackSizeReq,
++ abyss_bool * const successP) {
+
+- URIHandler2 * handlerP;
++ struct _TServer * const srvP = serverP->srvP;
++ size_t handleReqStackSize =
++ handleReqStackSizeReq ? handleReqStackSizeReq : 128*1024;
++
++ struct uriHandler * handlerP;
+
+ MALLOCVAR(handlerP);
+ if (handlerP == NULL)
+ *successP = FALSE;
+ else {
+- *handlerP = *handlerArgP;
+-
++ handlerP->init = init;
++ handlerP->term = term;
++ handlerP->handleReq1 = handleReq1;
++ handlerP->handleReq2 = handleReq2;
++ handlerP->handleReq3 = handleReq3;
++ handlerP->userdata = userdata;
++
++ srvP->uriHandlerStackSize =
++ MAX(srvP->uriHandlerStackSize, handleReqStackSize);
++
+ if (handlerP->init == NULL)
+ *successP = TRUE;
+- else
+- handlerP->init(handlerP, successP);
+-
++ else {
++ URIHandler2 handler2 = makeUriHandler2(handlerP);
++ handlerP->init(&handler2, successP);
++ }
+ if (*successP)
+ *successP = ListAdd(&serverP->srvP->handlers, handlerP);
+
+@@ -1258,20 +1416,42 @@ ServerAddHandler2(TServer * const serverP,
+
+
+
+-static URIHandler2 *
+-createHandler(URIHandler const function) {
++void
++ServerAddHandler3(TServer * const serverP,
++ const struct ServerReqHandler3 * const handlerP,
++ abyss_bool * const successP) {
+
+- URIHandler2 * handlerP;
++ serverAddHandler(serverP, NULL, handlerP->term, NULL, NULL,
++ handlerP->handleReq, handlerP->userdata,
++ handlerP->handleReqStackSize, successP);
++}
+
+- MALLOCVAR(handlerP);
+- if (handlerP != NULL) {
+- handlerP->init = NULL;
+- handlerP->term = NULL;
+- handlerP->userdata = NULL;
+- handlerP->handleReq2 = NULL;
+- handlerP->handleReq1 = function;
+- }
+- return handlerP;
++
++
++void
++ServerAddHandler2(TServer * const serverP,
++ URIHandler2 * const handlerArgP,
++ abyss_bool * const successP) {
++
++ /* This generation of the URI handler interface is strange because
++ it went through an unfortunate evolution. So it halfway looks like
++ the use supplies a handler object and Abyss calls its methods, and
++ halfway looks like the user simply describes his handler.
++
++ Abyss calls handleReq2 with a pointer to a URIHandler2 like the
++ one which is our argument, but it isn't the same one. User can
++ discard *handlerArgP as soon as we return.
++ */
++
++ serverAddHandler(serverP,
++ handlerArgP->init,
++ handlerArgP->term,
++ handlerArgP->handleReq1,
++ handlerArgP->handleReq2,
++ NULL,
++ handlerArgP->userdata,
++ 0,
++ successP);
+ }
+
+
+@@ -1280,35 +1460,45 @@ abyss_bool
+ ServerAddHandler(TServer * const serverP,
+ URIHandler const function) {
+
+- URIHandler2 * handlerP;
+- bool success;
++ URIHandler2 handler;
++ abyss_bool success;
+
+- handlerP = createHandler(function);
++ handler.init = NULL;
++ handler.term = NULL;
++ handler.userdata = NULL;
++ handler.handleReq2 = NULL;
++ handler.handleReq1 = function;
+
+- if (handlerP == NULL)
+- success = FALSE;
+- else {
+- success = ListAdd(&serverP->srvP->handlers, handlerP);
++ ServerAddHandler2(serverP, &handler, &success);
+
+- if (!success)
+- free(handlerP);
+- }
+ return success;
+ }
+
+
+
++/* This is the maximum amount of stack we allow a user's default URI
++ handler to use. (If he exceeds this, results are undefined).
++
++ We really ought to provide user a way to set this, as he can for
++ his non-default URI handlers.
++*/
++#define USER_DEFAULT_HANDLER_STACK 128*1024
++
+ void
+ ServerDefaultHandler(TServer * const serverP,
+ URIHandler const handler) {
+
+ struct _TServer * const srvP = serverP->srvP;
+
+- if (handler)
++ if (handler) {
+ srvP->defaultHandler = handler;
+- else {
++ srvP->uriHandlerStackSize =
++ MAX(srvP->uriHandlerStackSize, USER_DEFAULT_HANDLER_STACK);
++ } else {
+ srvP->defaultHandler = HandlerDefaultBuiltin;
+ srvP->defaultHandlerContext = srvP->builtinHandlerP;
++ srvP->uriHandlerStackSize =
++ MAX(srvP->uriHandlerStackSize, HandlerDefaultBuiltinStack);
+ }
+ }
+
+diff --git a/libs/xmlrpc-c/lib/abyss/src/server.h b/libs/xmlrpc-c/lib/abyss/src/server.h
+index 39aa63e..ed414b8 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/server.h
++++ b/libs/xmlrpc-c/lib/abyss/src/server.h
+@@ -54,7 +54,7 @@ struct _TServer {
+ Server calls each one in order until one reports that it handled
+ it.
+
+- Each item in the list of of type 'URIHandler2'.
++ Each item in the list of of type 'uriHandler'.
+ */
+ URIHandler defaultHandler;
+ /* The handler for HTTP requests that aren't claimed by any handler
+@@ -75,6 +75,12 @@ struct _TServer {
+ be aware of SIGCHLD and will instead poll for existence of PIDs
+ to determine if a child has died.
+ */
++ size_t uriHandlerStackSize;
++ /* The maximum amount of stack any URI handler request handler
++ function will use. Note that this is just the requirement
++ of the function itself, not the stack size for the thread
++ that runs it.
++ */
+ #ifndef WIN32
+ uid_t uid;
+ gid_t gid;
+diff --git a/libs/xmlrpc-c/lib/abyss/src/session.c b/libs/xmlrpc-c/lib/abyss/src/session.c
+index ae3a078..f0488e4 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/session.c
++++ b/libs/xmlrpc-c/lib/abyss/src/session.c
+@@ -23,28 +23,34 @@ SessionRefillBuffer(TSession * const sessionP) {
+
+ I.e. read data from the socket.
+ -----------------------------------------------------------------------------*/
+- struct _TServer * const srvP = sessionP->conn->server->srvP;
++ struct _TServer * const srvP = sessionP->connP->server->srvP;
+ bool failed;
+
+ failed = FALSE; /* initial value */
+
+ /* Reset our read buffer & flush data from previous reads. */
+- ConnReadInit(sessionP->conn);
++ ConnReadInit(sessionP->connP);
+
+ if (sessionP->continueRequired)
+ failed = !HTTPWriteContinue(sessionP);
+
+ if (!failed) {
++ const char * readError;
++
+ sessionP->continueRequired = FALSE;
+
+- /* Read more network data into our buffer. If we encounter a
+- timeout, exit immediately. We're very forgiving about the
+- timeout here. We allow a full timeout per network read, which
+- would allow somebody to keep a connection alive nearly
+- indefinitely. But it's hard to do anything intelligent here
+- without very complicated code.
++ /* Read more network data into our buffer. Fail if we time out before
++ client sends any data or client closes the connection or there's
++ some network error. We're very forgiving about the timeout here.
++ We allow a full timeout per network read, which would allow
++ somebody to keep a connection alive nearly indefinitely. But it's
++ hard to do anything intelligent here without very complicated code.
+ */
+- failed = !ConnRead(sessionP->conn, srvP->timeout);
++ ConnRead(sessionP->connP, srvP->timeout, NULL, NULL, &readError);
++ if (readError) {
++ failed = TRUE;
++ xmlrpc_strfree(readError);
++ }
+ }
+ return !failed;
+ }
+@@ -54,7 +60,7 @@ SessionRefillBuffer(TSession * const sessionP) {
+ size_t
+ SessionReadDataAvail(TSession * const sessionP) {
+
+- return sessionP->conn->buffersize - sessionP->conn->bufferpos;
++ return sessionP->connP->buffersize - sessionP->connP->bufferpos;
+
+ }
+
+@@ -73,18 +79,18 @@ SessionGetReadData(TSession * const sessionP,
+ We return a pointer to the first byte as *outStartP, and the length in
+ bytes as *outLenP. The memory pointed to belongs to the session.
+ -----------------------------------------------------------------------------*/
+- uint32_t const bufferPos = sessionP->conn->bufferpos;
++ uint32_t const bufferPos = sessionP->connP->bufferpos;
+
+- *outStartP = &sessionP->conn->buffer[bufferPos];
++ *outStartP = &sessionP->connP->buffer.t[bufferPos];
+
+- assert(bufferPos <= sessionP->conn->buffersize);
++ assert(bufferPos <= sessionP->connP->buffersize);
+
+- *outLenP = MIN(max, sessionP->conn->buffersize - bufferPos);
++ *outLenP = MIN(max, sessionP->connP->buffersize - bufferPos);
+
+ /* move pointer past the bytes we are returning */
+- sessionP->conn->bufferpos += *outLenP;
++ sessionP->connP->bufferpos += *outLenP;
+
+- assert(sessionP->conn->bufferpos <= sessionP->conn->buffersize);
++ assert(sessionP->connP->bufferpos <= sessionP->connP->buffersize);
+ }
+
+
+@@ -102,7 +108,7 @@ void
+ SessionGetChannelInfo(TSession * const sessionP,
+ void ** const channelInfoPP) {
+
+- *channelInfoPP = sessionP->conn->channelInfoP;
++ *channelInfoPP = sessionP->connP->channelInfoP;
+ }
+
+
+@@ -125,25 +131,24 @@ SessionLog(TSession * const sessionP) {
+
+ DateToLogString(sessionP->date, &date);
+
+- ConnFormatClientAddr(sessionP->conn, &peerInfo);
++ ConnFormatClientAddr(sessionP->connP, &peerInfo);
+
+- xmlrpc_asprintf(&logline, "%s - %s - [%s] \"%s\" %d %d",
++ xmlrpc_asprintf(&logline, "%s - %s - [%s] \"%s\" %d %u",
+ peerInfo,
+ user,
+ date,
+ sessionP->validRequest ?
+ sessionP->requestInfo.requestline : "???",
+ sessionP->status,
+- sessionP->conn->outbytes
++ sessionP->connP->outbytes
+ );
+ xmlrpc_strfree(peerInfo);
+ xmlrpc_strfree(date);
+
+- if (logline) {
+- LogWrite(sessionP->conn->server, logline);
++ LogWrite(sessionP->connP->server, logline);
++
++ xmlrpc_strfree(logline);
+
+- xmlrpc_strfree(logline);
+- }
+ return true;
+ }
+
+@@ -152,7 +157,7 @@ SessionLog(TSession * const sessionP) {
+ void *
+ SessionGetDefaultHandlerCtx(TSession * const sessionP) {
+
+- struct _TServer * const srvP = sessionP->conn->server->srvP;
++ struct _TServer * const srvP = sessionP->connP->server->srvP;
+
+ return srvP->defaultHandlerContext;
+ }
+diff --git a/libs/xmlrpc-c/lib/abyss/src/session.h b/libs/xmlrpc-c/lib/abyss/src/session.h
+index 058d543..07700e9 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/session.h
++++ b/libs/xmlrpc-c/lib/abyss/src/session.h
+@@ -47,17 +47,29 @@ struct _TSession {
+ ResponseWriteStart())
+ */
+
+- struct _TConn * conn;
++ struct _TConn * connP;
+
+ httpVersion version;
+
+- TTable request_headers;
+- /* All the headers in the HTTP request. The key is the header
+- name in lower case. The value is the verbatim value from
+- the header.
++ TTable requestHeaderFields;
++ /* All the fields of the header of the HTTP request. The key is the
++ field name in lower case. The value is the verbatim value from
++ the field.
+ */
+
+- TTable response_headers;
++ TTable responseHeaderFields;
++ /* All the fields of the header of the HTTP response.
++ This gets successively computed; at any moment, it is the list of
++ fields the user has requested so far. It also includes fields
++ Abyss itself has decided to include. (Blechh. This needs to be
++ cleaned up).
++
++ Each table item is an HTTP header field. The Name component of the
++ table item is the header field name (it is syntactically valid but
++ not necessarily a defined field name) and the Value comonent is the
++ header field value (it is syntactically valid but not necessarily
++ semantically valid).
++ */
+
+ time_t date;
+
+diff --git a/libs/xmlrpc-c/lib/abyss/src/socket.c b/libs/xmlrpc-c/lib/abyss/src/socket.c
+index d76c611..4724e6d 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/socket.c
++++ b/libs/xmlrpc-c/lib/abyss/src/socket.c
+@@ -9,6 +9,7 @@
+ #include <assert.h>
+ #include <stdlib.h>
+
++#include "int.h"
+ #include "mallocvar.h"
+ #include "xmlrpc-c/abyss.h"
+ #include "channel.h"
+@@ -26,7 +27,7 @@
+ functions that are particular to an implementation.
+ */
+
+-static uint const socketSignature = 0x060609;
++static unsigned int const socketSignature = 0x060609;
+
+
+ static void
+diff --git a/libs/xmlrpc-c/lib/abyss/src/socket.h b/libs/xmlrpc-c/lib/abyss/src/socket.h
+index 20e8e09..50e67ba 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/socket.h
++++ b/libs/xmlrpc-c/lib/abyss/src/socket.h
+@@ -17,10 +17,12 @@
+ so there may be few or no users of TSocket.
+ ============================================================================*/
+
++#include "int.h"
++
+ #include "xmlrpc-c/abyss.h"
+
+ struct _TSocket {
+- uint signature;
++ unsigned int signature;
+ /* With both background and foreground use of sockets, and
+ background being both fork and pthread, it is very easy to
+ screw up socket lifetime and try to destroy twice. We use
+diff --git a/libs/xmlrpc-c/lib/abyss/src/socket_openssl.c b/libs/xmlrpc-c/lib/abyss/src/socket_openssl.c
+index e90be0d..3082851 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/socket_openssl.c
++++ b/libs/xmlrpc-c/lib/abyss/src/socket_openssl.c
+@@ -126,6 +126,8 @@ channelDestroy(TChannel * const channelP) {
+ SSL_shutdown(channelOpensslP->sslP);
+
+ free(channelOpensslP);
++ channelP->implP = 0;
++
+ }
+
+
+diff --git a/libs/xmlrpc-c/lib/abyss/src/socket_unix.c b/libs/xmlrpc-c/lib/abyss/src/socket_unix.c
+index 6231852..9d5dc25 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/socket_unix.c
++++ b/libs/xmlrpc-c/lib/abyss/src/socket_unix.c
+@@ -42,6 +42,7 @@
+
+ #define sane_close(_it) do {if (_it > -1) { close(_it) ; _it = -1; }} while (_it > -1)
+
++
+ typedef struct {
+ int interruptorFd;
+ int interrupteeFd;
+@@ -164,6 +165,7 @@ channelDestroy(TChannel * const channelP) {
+ sane_close(socketUnixP->fd);
+
+ free(socketUnixP);
++ channelP->implP = 0;
+ }
+
+
+@@ -180,37 +182,44 @@ channelWrite(TChannel * const channelP,
+
+ size_t bytesLeft;
+ bool error;
++ int to_count = 0;
+
+ assert(sizeof(size_t) >= sizeof(len));
+
+- for (bytesLeft = len, error = FALSE;
+- bytesLeft > 0 && !error;
+- ) {
+- size_t const maxSend = (size_t)(-1) >> 1;
++ for (bytesLeft = len, error = FALSE; bytesLeft > 0 && !error; ) {
++ size_t const maxSend = 4096 * 2; /* with respect to resource allocation this might be a better value than 2^31 */
++ ssize_t rc = 0;
++
++ rc = send(socketUnixP->fd, buffer + len - bytesLeft, MIN(maxSend, bytesLeft), 0);
++ if (rc > 0) { /* 0 means connection closed; < 0 means severe error ; > 0 means bytes transferred */
++ to_count = 0;
++ bytesLeft -= rc;
++ if (ChannelTraceIsActive)
++ fprintf(stderr, "Abyss: sent %d bytes: '%.*s'\n", rc, MIN(rc, 4096), buffer + len - bytesLeft);
++ }
++ else if (!rc) {
++ error = TRUE;
++ if (ChannelTraceIsActive)
++ fprintf(stderr, "\nAbyss: send() failed: socket closed");
++ }
++ else {
++ error = TRUE;
++ if (errno == EWOULDBLOCK) {
++ usleep(20 * 1000); /* give socket another chance after xx millisec) */
++ if (++to_count < 300) {
++ error = FALSE;
++ }
++ if (ChannelTraceIsActive)
++ fprintf(stderr, "\nAbyss: send() failed with errno %d (%s) cnt %d, will retry\n", errno, strerror(errno), to_count);
++ }
++ if (ChannelTraceIsActive)
++ fprintf(stderr, "Abyss: send() failed with errno=%d (%s)", errno, strerror(errno));
++ }
++ }
++
++ *failedP = error;
+
+- ssize_t rc;
+-
+- rc = send(socketUnixP->fd, &buffer[len-bytesLeft],
+- MIN(maxSend, bytesLeft), 0);
+
+- if (ChannelTraceIsActive) {
+- if (rc < 0)
+- fprintf(stderr, "Abyss channel: send() failed. errno=%d (%s)",
+- errno, strerror(errno));
+- else if (rc == 0)
+- fprintf(stderr, "Abyss channel: send() failed. "
+- "Socket closed.\n");
+- else
+- fprintf(stderr, "Abyss channel: sent %u bytes: '%.*s'\n",
+- rc, rc, &buffer[len-bytesLeft]);
+- }
+- if (rc <= 0)
+- /* 0 means connection closed; < 0 means severe error */
+- error = TRUE;
+- else
+- bytesLeft -= rc;
+- }
+- *failedP = error;
+ }
+
+
+@@ -225,25 +234,29 @@ channelRead(TChannel * const channelP,
+ bool * const failedP) {
+
+ struct socketUnix * const socketUnixP = channelP->implP;
+-
+- int rc;
+- rc = recv(socketUnixP->fd, buffer, bufferSize, 0);
+-
+- if (rc < 0) {
+- *failedP = TRUE;
+- if (ChannelTraceIsActive)
+- fprintf(stderr, "Abyss channel: "
+- "Failed to receive data from socket. "
+- "recv() failed with errno %d (%s)\n",
+- errno, strerror(errno));
+- } else {
+- *failedP = FALSE;
+- *bytesReceivedP = rc;
+-
+- if (ChannelTraceIsActive)
+- fprintf(stderr, "Abyss channel: read %u bytes: '%.*s'\n",
+- *bytesReceivedP, (int)(*bytesReceivedP), buffer);
+- }
++ int retries = 300;
++
++ for (*failedP = TRUE; *failedP && retries; retries--) {
++ int rc = recv(socketUnixP->fd, buffer, bufferSize, 0);
++ if (rc < 0) {
++ if (errno == EWOULDBLOCK) {
++ if (ChannelTraceIsActive)
++ fprintf(stderr, "\nAbyss: recv() failed with errno %d (%s) cnt %d, will retry\n", errno, strerror(errno), retries);
++ usleep(20 * 1000); /* give socket another chance after xx millisec)*/
++ *failedP = FALSE;
++ } else {
++ if (ChannelTraceIsActive)
++ fprintf(stderr, "\nAbyss: recv() failed with errno %d (%s)\n", errno, strerror(errno));
++ break;
++ }
++ } else {
++ *failedP = FALSE;
++ *bytesReceivedP = rc;
++
++ if (ChannelTraceIsActive)
++ fprintf(stderr, "Abyss channel: read %u bytes: '%.*s'\n", bytesReceivedP, (int)(*bytesReceivedP), buffer);
++ }
++ }
+ }
+
+
+@@ -270,7 +283,7 @@ channelWait(TChannel * const channelP,
+ one.
+
+ We return before the requested condition holds if 'timeoutMs'
+- milliseconds pass. timoutMs == TIME_INFINITE means infinity.
++ milliseconds pass. timeoutMs == TIME_INFINITE means infinity.
+
+ We return before the requested condition holds if the process receives
+ (and catches) a signal, but only if it receives that signal a certain
+@@ -312,8 +325,7 @@ channelWait(TChannel * const channelP,
+ pollfds[1].events = POLLIN;
+
+ rc = poll(pollfds, ARRAY_SIZE(pollfds),
+- timeoutMs == TIME_INFINITE ? -1 : timeoutMs);
+-
++ timeoutMs == TIME_INFINITE ? -1 : (int)timeoutMs);
+
+ if (rc < 0) {
+ if (errno == EINTR) {
+@@ -477,10 +489,9 @@ makeChannelInfo(struct abyss_unix_chaninfo ** const channelInfoPP,
+ channelInfoP->peerAddrLen = peerAddrLen;
+ channelInfoP->peerAddr = peerAddr;
+
+- *channelInfoPP = channelInfoP;
+-
+ *errorP = NULL;
+ }
++ *channelInfoPP = channelInfoP;
+ }
+
+
+@@ -493,13 +504,13 @@ makeChannelFromFd(int const fd,
+ struct socketUnix * socketUnixP;
+
+ MALLOCVAR(socketUnixP);
+-
++
+ if (socketUnixP == NULL)
+ xmlrpc_asprintf(errorP, "Unable to allocate memory for Unix "
+ "channel descriptor");
+ else {
+ TChannel * channelP;
+-
++
+ socketUnixP->fd = fd;
+ socketUnixP->userSuppliedFd = TRUE;
+
+@@ -507,6 +518,7 @@ makeChannelFromFd(int const fd,
+
+ if (!*errorP) {
+ ChannelCreate(&channelVtbl, socketUnixP, &channelP);
++
+ if (channelP == NULL)
+ xmlrpc_asprintf(errorP, "Unable to allocate memory for "
+ "channel descriptor.");
+@@ -617,9 +629,13 @@ waitForConnection(struct socketUnix * const listenSocketP,
+
+ We return before the requested condition holds if the process receives
+ (and catches) a signal, but only if it receives that signal a certain
+- time after we start running. (That means this function isn't useful
++ time after we start running. (That means this behavior isn't useful
+ for most purposes).
+
++ We furthermore return before the requested condition holds if someone sends
++ a byte through the listening socket's interrupt pipe (or has sent one
++ previously since the most recent time the pipe was drained).
++
+ Return *interruptedP == true if we return before there is a connection
+ ready to accept.
+ -----------------------------------------------------------------------------*/
+@@ -665,35 +681,42 @@ createChannelForAccept(int const acceptedFd,
+
+ 'peerAddr' is the address of the client, from accept().
+ -----------------------------------------------------------------------------*/
+- struct socketUnix * acceptedSocketP;
++ struct abyss_unix_chaninfo * channelInfoP;
+
+- MALLOCVAR(acceptedSocketP);
+-
+- if (!acceptedSocketP)
+- xmlrpc_asprintf(errorP, "Unable to allocate memory");
+- else {
+- struct abyss_unix_chaninfo * channelInfoP;
+- acceptedSocketP->fd = acceptedFd;
+- acceptedSocketP->userSuppliedFd = FALSE;
+-
+- makeChannelInfo(&channelInfoP, peerAddr, sizeof(peerAddr), errorP);
+- if (!*errorP) {
+- TChannel * channelP;
++ makeChannelInfo(&channelInfoP, peerAddr, sizeof(peerAddr), errorP);
++ if (!*errorP) {
++ struct socketUnix * acceptedSocketP;
+
+- ChannelCreate(&channelVtbl, acceptedSocketP, &channelP);
+- if (!channelP)
+- xmlrpc_asprintf(errorP,
+- "Failed to create TChannel object.");
+- else {
+- *errorP = NULL;
+- *channelPP = channelP;
+- *channelInfoPP = channelInfoP;
++ MALLOCVAR(acceptedSocketP);
++
++ if (!acceptedSocketP)
++ xmlrpc_asprintf(errorP, "Unable to allocate memory");
++ else {
++ acceptedSocketP->fd = acceptedFd;
++ acceptedSocketP->userSuppliedFd = FALSE;
++
++ initInterruptPipe(&acceptedSocketP->interruptPipe, errorP);
++
++ if (!*errorP) {
++ TChannel * channelP;
++
++ ChannelCreate(&channelVtbl, acceptedSocketP, &channelP);
++ if (!channelP)
++ xmlrpc_asprintf(errorP,
++ "Failed to create TChannel object.");
++ else {
++ *errorP = NULL;
++ *channelPP = channelP;
++ *channelInfoPP = channelInfoP;
++ }
++ if (*errorP)
++ termInterruptPipe(&acceptedSocketP->interruptPipe);
+ }
+ if (*errorP)
+- free(channelInfoP);
++ free(acceptedSocketP);
+ }
+ if (*errorP)
+- free(acceptedSocketP);
++ free(channelInfoP);
+ }
+ }
+
+diff --git a/libs/xmlrpc-c/lib/abyss/src/socket_win.c b/libs/xmlrpc-c/lib/abyss/src/socket_win.c
+index d3f683a..187c307 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/socket_win.c
++++ b/libs/xmlrpc-c/lib/abyss/src/socket_win.c
+@@ -36,192 +36,62 @@ typedef struct tagSOCKERRS {
+ char * desc; // description of error
+ } SOCKERR;
+
+-/* could/should perhaps be by the actual call,
+- but for now, just one big list, with some repeats
+-*/
++/* list shamelessly copied from apache apr errorcodes.c - Grmt 2011-06-16 */
+
+ SOCKERR sSockErr[] = {
+- { WSANOTINITIALISED,
+- "WSANOTINITIALISED - "
+- "WSAStartup must be called before using this function." },
+- { WSAENETDOWN,
+- "WSAENETDOWN - "
+- "The network subsystem has failed." },
+- { WSAEACCES,
+- "WSAEACCES - "
+- "Attempt to connect datagram socket to broadcast address failed "
+- "because setsockopt option SO_BROADCAST is not enabled." },
+- { WSAEADDRINUSE,
+- "WSAEADDRINUSE - "
+- "A process on the computer is already bound to the same fully-qualified "
+- "address and the socket has not been marked to allow address reuse with "
+- "SO_REUSEADDR. For example, the IP address and port are bound in the "
+- "af_inet case). (See the SO_REUSEADDR socket option under setsockopt.)" },
+- { WSAEADDRNOTAVAIL,
+- "WSAEADDRNOTAVAIL - "
+- "The specified address is not a valid address for this computer." },
+- { WSAEFAULT,
+- "WSAEFAULT - "
+- "The name or namelen parameter is not a valid part of the user "
+- "address space, the namelen parameter is too small, the name parameter "
+- "contains an incorrect address format for the associated "
+- "address family, or the first two bytes of the memory block "
+- "specified by name does not match the address family associated with "
+- "the socket descriptor s." },
+- { WSAEINPROGRESS,
+- "WSAEINPROGRESS - "
+- "A blocking Windows Sockets 1.1 call is in progress, or the "
+- "service provider is still processing a callback function." },
+- { WSAEINVAL,
+- "WSAEINVAL - "
+- "The socket is already bound to an address." },
+- { WSAENOBUFS,
+- "WSAENOBUFS - "
+- "Not enough buffers available, too many connections." },
+- { WSAENOTSOCK,
+- "WSAENOTSOCK - "
+- "The descriptor is not a socket." },
+-
+- // setsocketopt
+- { WSAENETRESET,
+- "WSAENETRESET - "
+- "Connection has timed out when SO_KEEPALIVE is set." },
+- { WSAENOPROTOOPT,
+- "WSAENOPROTOOPT - "
+- "The option is unknown or the specified provider "
+- "or socket is not capable of implementing it "
+- "(see SO_GROUP_PRIORITY limitations)." },
+- { WSAENOTCONN,
+- "WSAENOTCONN - "
+- "Connection has been reset when SO_KEEPALIVE is set." },
+-
+- // WSAStartup
+- { WSASYSNOTREADY,
+- "WSASYSNOTREADY - "
+- "The underlying network subsystem is not ready for "
+- "network communication." },
+- { WSAVERNOTSUPPORTED,
+- "WSAVERNOTSUPPORTED - "
+- "The version of Windows Sockets function requested is not provided "
+- "by this particular Windows Sockets implementation." },
+- { WSAEINPROGRESS,
+- "WSAEINPROGRESS - "
+- "A blocking Windows Sockets 1.1 operation is in progress." },
+- { WSAEPROCLIM,
+- "WSAEPROCLIM - "
+- "Limit on the number of tasks allowed by the Windows Sockets "
+- "implementation has been reached." },
+- { WSAEFAULT,
+- "WSAEFAULT - "
+- "The lpWSAData is not a valid pointer." },
+- // listen
+- { WSANOTINITIALISED,
+- "WSANOTINITIALISED - "
+- "A successful WSAStartup call must occur before using this function." },
+- { WSAENETDOWN,
+- "WSAENETDOWN - "
+- "The network subsystem has failed." },
+- { WSAEADDRINUSE,
+- "WSAEADDRINUSE - "
+- "The socket's local address is already in use and the socket "
+- "was not marked to allow address reuse with SO_REUSEADDR. "
+- "This error usually occurs during execution of the bind function, "
+- "but could be delayed until this function if the bind was to "
+- "a partially wildcard address (involving ADDR_ANY) "
+- "and if a specific address needs to be committed at the time "
+- "of this function call." },
+- { WSAEINPROGRESS,
+- "WSAEINPROGRESS - "
+- "A blocking Windows Sockets 1.1 call is in progress, "
+- "or the service provider is still processing a callback function." },
+- { WSAEINVAL,
+- "WSAEINVAL - "
+- "The socket has not been bound with bind." },
+- { WSAEISCONN,
+- "WSAEISCONN - "
+- "The socket is already connected." },
+- { WSAEMFILE,
+- "WSAEMFILE - "
+- "No more socket descriptors are available." },
+- { WSAENOBUFS,
+- "WSAENOBUFS - "
+- "No buffer space is available." },
+- { WSAENOTSOCK,
+- "WSAENOTSOCK - "
+- "The descriptor is not a socket." },
+- { WSAEOPNOTSUPP,
+- "WSAEOPNOTSUPP - "
+- "The referenced socket is not of a type that has a listen operation." },
+-
+- // getpeername
+- { WSANOTINITIALISED,
+- "WSANOTINITIALISED - "
+- "A successful WSAStartup call must occur before using this function." },
+- { WSAENETDOWN,
+- "WSAENETDOWN - "
+- "The network subsystem has failed." },
+- { WSAEFAULT,
+- "WSAEFAULT - "
+- "The name or the namelen parameter is not a valid part of the "
+- "user address space, or the namelen parameter is too small." },
+- { WSAEINPROGRESS,
+- "WSAEINPROGRESS - "
+- "A blocking Windows Sockets 1.1 call is in progress, "
+- "or the service provider is still processing a callback function." },
+- { WSAENOTCONN,
+- "WSAENOTCONN - "
+- "The socket is not connected." },
+- { WSAENOTSOCK,
+- "WSAENOTSOCK - "
+- "The descriptor is not a socket." },
+-
+- // accept
+- { WSANOTINITIALISED,
+- "WSANOTINITIALISED - "
+- "A successful WSAStartup call must occur before using this function." },
+- { WSAENETDOWN,
+- "WSAENETDOWN - "
+- "The network subsystem has failed." },
+- { WSAEFAULT,
+- "WSAEFAULT - "
+- "The addrlen parameter is too small or addr is not a valid part "
+- "of the user address space." },
+- { WSAEINTR,
+- "WSAEINTR - "
+- "A blocking Windows Sockets 1.1 call was canceled through "
+- "WSACancelBlockingCall." },
+- { WSAEINPROGRESS,
+- "WSAEINPROGRESS - "
+- "A blocking Windows Sockets 1.1 call is in progress, "
+- "or the service provider is still processing a callback function." },
+- { WSAEINVAL,
+- "WSAEINVAL - "
+- "The listen function was not invoked prior to accept." },
+- { WSAEMFILE,
+- "WSAEMFILE - "
+- "The queue is nonempty upon entry to accept and "
+- "there are no descriptors available." },
+- { WSAENOBUFS,
+- "WSAENOBUFS - "
+- "No buffer space is available." },
+- { WSAENOTSOCK,
+- "WSAENOTSOCK - "
+- "The descriptor is not a socket." },
+- { WSAEOPNOTSUPP,
+- "WSAEOPNOTSUPP - "
+- "The referenced socket is not a type that offers connection-oriented "
+- "service." },
+- { WSAEWOULDBLOCK,
+- "WSAEWOULDBLOCK - "
+- "The socket is marked as nonblocking and no connections are present "
+- "to be accepted." },
+-
+- /* must be last entry */
+- { 0, 0 }
++ WSAEINTR, "Interrupted system call",
++ WSAEBADF, "Bad file number",
++ WSAEACCES, "Permission denied",
++ WSAEFAULT, "Bad address",
++ WSAEINVAL, "Invalid argument",
++ WSAEMFILE, "Too many open sockets",
++ WSAEWOULDBLOCK, "Operation would block",
++ WSAEINPROGRESS, "Operation now in progress",
++ WSAEALREADY, "Operation already in progress",
++ WSAENOTSOCK, "Socket operation on non-socket",
++ WSAEDESTADDRREQ, "Destination address required",
++ WSAEMSGSIZE, "Message too long",
++ WSAEPROTOTYPE, "Protocol wrong type for socket",
++ WSAENOPROTOOPT, "Bad protocol option",
++ WSAEPROTONOSUPPORT, "Protocol not supported",
++ WSAESOCKTNOSUPPORT, "Socket type not supported",
++ WSAEOPNOTSUPP, "Operation not supported on socket",
++ WSAEPFNOSUPPORT, "Protocol family not supported",
++ WSAEAFNOSUPPORT, "Address family not supported",
++ WSAEADDRINUSE, "Address already in use",
++ WSAEADDRNOTAVAIL, "Can't assign requested address",
++ WSAENETDOWN, "Network is down",
++ WSAENETUNREACH, "Network is unreachable",
++ WSAENETRESET, "Net connection reset",
++ WSAECONNABORTED, "Software caused connection abort",
++ WSAECONNRESET, "Connection reset by peer",
++ WSAENOBUFS, "No buffer space available",
++ WSAEISCONN, "Socket is already connected",
++ WSAENOTCONN, "Socket is not connected",
++ WSAESHUTDOWN, "Can't send after socket shutdown",
++ WSAETOOMANYREFS, "Too many references, can't splice",
++ WSAETIMEDOUT, "Connection timed out",
++ WSAECONNREFUSED, "Connection refused",
++ WSAELOOP, "Too many levels of symbolic links",
++ WSAENAMETOOLONG, "File name too long",
++ WSAEHOSTDOWN, "Host is down",
++ WSAEHOSTUNREACH, "No route to host",
++ WSAENOTEMPTY, "Directory not empty",
++ WSAEPROCLIM, "Too many processes",
++ WSAEUSERS, "Too many users",
++ WSAEDQUOT, "Disc quota exceeded",
++ WSAESTALE, "Stale NFS file handle",
++ WSAEREMOTE, "Too many levels of remote in path",
++ WSASYSNOTREADY, "Network system is unavailable",
++ WSAVERNOTSUPPORTED, "Winsock version out of range",
++ WSANOTINITIALISED, "WSAStartup not yet called",
++ WSAEDISCON, "Graceful shutdown in progress",
++ WSAHOST_NOT_FOUND, "Host not found",
++ WSANO_DATA, "No host data of that type was found",
++ 0, NULL
+ };
+
+
+-
+ static const char *
+ getWSAError(int const wsaErrno) {
+
+@@ -236,7 +106,7 @@ getWSAError(int const wsaErrno) {
+ ++pseP;
+ }
+
+- return "(no description available)";
++ return "No description available";
+ }
+
+
+@@ -325,6 +195,8 @@ channelDestroy(TChannel * const channelP) {
+ CloseHandle(socketWinP->interruptEvent);
+
+ free(socketWinP);
++ channelP->implP = 0;
++
+ }
+
+
+@@ -335,32 +207,42 @@ static void
+ channelWrite(TChannel * const channelP,
+ const unsigned char * const buffer,
+ uint32_t const len,
+- bool * const failedP) {
++ bool * const failedP) {
+
+ struct socketWin * const socketWinP = channelP->implP;
+
+ size_t bytesLeft;
+ bool error;
+-
+- assert(sizeof(size_t) >= sizeof(len));
+-
+- for (bytesLeft = len, error = FALSE;
+- bytesLeft > 0 && !error;
+- ) {
+- size_t const maxSend = (size_t)(-1) >> 1;
+-
+- int rc;
+-
+- rc = send(socketWinP->winsock, &buffer[len-bytesLeft],
+- MIN(maxSend, bytesLeft), 0);
+-
+- if (rc <= 0)
+- /* 0 means connection closed; < 0 means severe error */
+- error = TRUE;
+- else
+- bytesLeft -= rc;
++ int to_count = 0;
++ int lastError = 0;
++
++ for (bytesLeft = len, error = FALSE; bytesLeft > 0 && !error;) {
++ size_t const maxSend = 4096 * 2; /* with respect to resource allocation this might be a better value than 2^31 */
++
++ int rc = send(socketWinP->winsock, buffer + len - bytesLeft, MIN(maxSend, bytesLeft), 0);
++ if (rc > 0) { /* 0 means connection closed; < 0 means severe error */
++ to_count = 0;
++ bytesLeft -= rc;
++ }
++ else if (!rc) {
++ error = TRUE;
++ fprintf(stderr, "Abyss: send() failed: connection closed");
++ }
++ else {
++ error = TRUE;
++ lastError = WSAGetLastError();
++ if (lastError == WSAEWOULDBLOCK || lastError == ERROR_IO_PENDING) {
++ SleepEx(20, TRUE); /* give socket another chance after xx millisec) */
++ if (++to_count < 300) {
++ error = FALSE;
++ }
++ // fprintf(stderr, "Abyss: send() failed with errno %d (%s) cnt %d, will retry\n", lastError, getWSAError(lastError), to_count);
++ }
++ if (error) fprintf(stderr, "Abyss: send() failed with errno %d (%s)\n", lastError, getWSAError(lastError));
++ }
+ }
+- *failedP = error;
++
++ *failedP = error;
+ }
+
+
+@@ -375,16 +257,29 @@ channelRead(TChannel * const channelP,
+ bool * const failedP) {
+
+ struct socketWin * const socketWinP = channelP->implP;
+-
+- int rc;
+- rc = recv(socketWinP->winsock, buffer, bufferSize, 0);
+-
+- if (rc < 0) {
+- *failedP = TRUE;
+- } else {
+- *failedP = FALSE;
+- *bytesReceivedP = rc;
+- }
++ int retries = 300;
++
++ for (*failedP = TRUE; *failedP && retries; retries--) {
++ int rc = recv(socketWinP->winsock, buffer, bufferSize, 0);
++ int lastError = WSAGetLastError();
++
++ if (rc < 0) {
++ if (lastError == WSAEWOULDBLOCK || lastError == ERROR_IO_PENDING) {
++ fprintf(stderr, "Abyss: recv() failed with errno %d (%s) cnt %d, will retry\n", lastError, getWSAError(lastError), retries);
++ SleepEx(30, TRUE); /* give socket another chance after xx millisec)*/
++ *failedP = FALSE;
++ } else {
++ fprintf(stderr, "Abyss: recv() failed with errno %d (%s)\n", lastError, getWSAError(lastError));
++ break;
++ }
++ } else {
++ *failedP = FALSE;
++ *bytesReceivedP = rc;
++
++ if (ChannelTraceIsActive)
++ fprintf(stderr, "Abyss channel: read %u bytes: '%.*s'\n", bytesReceivedP, (int)(*bytesReceivedP), buffer);
++ }
++ }
+ }
+
+
+diff --git a/libs/xmlrpc-c/lib/abyss/src/thread.c b/libs/xmlrpc-c/lib/abyss/src/thread.c
+deleted file mode 100644
+index b3d49c7..0000000
+--- a/libs/xmlrpc-c/lib/abyss/src/thread.c
++++ /dev/null
+@@ -1,228 +0,0 @@
+-/*******************************************************************************
+-**
+-** thread.c
+-**
+-** This file is part of the ABYSS Web server project.
+-**
+-** Copyright (C) 2000 by Moez Mahfoudh <mmoez@bigfoot.com>.
+-** All rights reserved.
+-**
+-** Redistribution and use in source and binary forms, with or without
+-** modification, are permitted provided that the following conditions
+-** are met:
+-** 1. Redistributions of source code must retain the above copyright
+-** notice, this list of conditions and the following disclaimer.
+-** 2. Redistributions in binary form must reproduce the above copyright
+-** notice, this list of conditions and the following disclaimer in the
+-** documentation and/or other materials provided with the distribution.
+-** 3. The name of the author may not be used to endorse or promote products
+-** derived from this software without specific prior written permission.
+-**
+-** THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+-** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+-** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+-** ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+-** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+-** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+-** OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+-** HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+-** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+-** OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+-** SUCH DAMAGE.
+-**
+-*******************************************************************************/
+-
+-#ifdef ABYSS_WIN32
+-#include <process.h>
+-#endif
+-
+-#include "xmlrpc-c/abyss.h"
+-
+-#include "xmlrpc_config.h"
+-
+-/* 16K is the minimum size of stack on Win32 */
+-#define THREAD_STACK_SIZE (240*1024)
+-
+-/*********************************************************************
+-** Thread
+-*********************************************************************/
+-
+-abyss_bool ThreadCreate(TThread * const t ATTR_UNUSED,
+- TThreadProc const func,
+- void * const arg )
+-{
+-#ifdef ABYSS_WIN32
+- DWORD z;
+- *t =(TThread)_beginthreadex( NULL, THREAD_STACK_SIZE, func,
+- arg, CREATE_SUSPENDED, &z );
+- return (*t!=NULL);
+-#else
+-# ifdef _UNIX
+-# ifdef _THREAD
+- {
+- pthread_attr_t attr;
+- pthread_attr_init( &attr );
+- pthread_attr_setstacksize( &attr, THREAD_STACK_SIZE );
+- if( pthread_create( t,&attr,(PTHREAD_START_ROUTINE)func,arg)==0)
+- {
+- pthread_attr_destroy( &attr );
+- return (pthread_detach(*t)==0);
+- }
+- pthread_attr_destroy( &attr );
+- return FALSE;
+- }
+-# else
+- switch (fork())
+- {
+- case 0:
+- (*func)(arg);
+- exit(0);
+- case (-1):
+- return FALSE;
+- };
+-
+- return TRUE;
+-# endif /* _THREAD */
+-# else
+- (*func)(arg);
+- return TRUE;
+-# endif /*_UNIX */
+-#endif /* ABYSS_WIN32 */
+-}
+-
+-abyss_bool
+-ThreadRun(TThread * const t ATTR_UNUSED) {
+-#ifdef ABYSS_WIN32
+- return (ResumeThread(*t)!=0xFFFFFFFF);
+-#else
+- return TRUE;
+-#endif /* ABYSS_WIN32 */
+-}
+-
+-
+-
+-abyss_bool
+-ThreadStop(TThread * const t ATTR_UNUSED) {
+-#ifdef ABYSS_WIN32
+- return (SuspendThread(*t)!=0xFFFFFFFF);
+-#else
+- return TRUE;
+-#endif /* ABYSS_WIN32 */
+-}
+-
+-
+-
+-abyss_bool
+-ThreadKill(TThread * const t ATTR_UNUSED) {
+-#ifdef ABYSS_WIN32
+- return (TerminateThread(*t,0)!=0);
+-#else
+- /*return (pthread_kill(*t)==0);*/
+- return TRUE;
+-#endif /* ABYSS_WIN32 */
+-}
+-
+-
+-
+-void ThreadWait(uint32_t ms)
+-{
+-#ifdef ABYSS_WIN32
+- Sleep(ms);
+-#else
+- usleep(ms*1000);
+-#endif /* ABYSS_WIN32 */
+-}
+-
+-
+-
+-void
+-ThreadExit(TThread * const t ATTR_UNUSED,
+- int const ret_value ATTR_UNUSED) {
+-#ifdef ABYSS_WIN32
+- _endthreadex(ret_value);
+-#elif defined(_THREAD)
+- pthread_exit(&ret_value);
+-#else
+- ;
+-#endif /* ABYSS_WIN32 */
+-}
+-
+-
+-
+-void
+-ThreadClose(TThread * const t ATTR_UNUSED) {
+-#ifdef ABYSS_WIN32
+- CloseHandle(*t);
+-#endif /* ABYSS_WIN32 */
+-}
+-
+-
+-
+-/*********************************************************************
+-** Mutex
+-*********************************************************************/
+-
+-
+-
+-abyss_bool
+-MutexCreate(TMutex * const m ATTR_UNUSED) {
+-#if defined(ABYSS_WIN32)
+- return ((*m=CreateMutex(NULL,FALSE,NULL))!=NULL);
+-#elif defined(_THREAD)
+- return (pthread_mutex_init(m, NULL)==0);
+-#else
+- return TRUE;
+-#endif
+-}
+-
+-
+-
+-abyss_bool
+-MutexLock(TMutex * const m ATTR_UNUSED) {
+-#if defined(ABYSS_WIN32)
+- return (WaitForSingleObject(*m,INFINITE)!=WAIT_TIMEOUT);
+-#elif defined(_THREAD)
+- return (pthread_mutex_lock(m)==0);
+-#else
+- return TRUE;
+-#endif
+-}
+-
+-
+-
+-abyss_bool
+-MutexUnlock(TMutex * const m ATTR_UNUSED) {
+-#if defined(ABYSS_WIN32)
+- return ReleaseMutex(*m);
+-#elif defined(_THREAD)
+- return (pthread_mutex_unlock(m)==0);
+-#else
+- return TRUE;
+-#endif
+-}
+-
+-
+-
+-abyss_bool
+-MutexTryLock(TMutex * const m ATTR_UNUSED) {
+-#if defined(ABYSS_WIN32)
+- return (WaitForSingleObject(*m,0)!=WAIT_TIMEOUT);
+-#elif defined(_THREAD)
+- return (pthread_mutex_trylock(m)==0);
+-#else
+- return TRUE;
+-#endif
+-}
+-
+-
+-
+-void
+-MutexFree(TMutex * const m ATTR_UNUSED) {
+-#if defined(ABYSS_WIN32)
+- CloseHandle(*m);
+-#elif defined(_THREAD)
+- pthread_mutex_destroy(m);
+-#else
+- ;
+-#endif
+-}
+diff --git a/libs/xmlrpc-c/lib/abyss/src/thread.h b/libs/xmlrpc-c/lib/abyss/src/thread.h
+index c214f4b..c9f2b9e 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/thread.h
++++ b/libs/xmlrpc-c/lib/abyss/src/thread.h
+@@ -21,6 +21,7 @@ ThreadCreate(TThread ** const threadPP,
+ TThreadProc * const func,
+ TThreadDoneFn * const threadDone,
+ bool const useSigchld,
++ size_t const stackSize,
+ const char ** const errorP);
+
+ bool
+@@ -36,7 +37,8 @@ void
+ ThreadWaitAndRelease(TThread * const threadP);
+
+ void
+-ThreadExit(int const retValue);
++ThreadExit(TThread * const threadP,
++ int const retValue);
+
+ void
+ ThreadRelease(TThread * const threadP);
+diff --git a/libs/xmlrpc-c/lib/abyss/src/thread_fork.c b/libs/xmlrpc-c/lib/abyss/src/thread_fork.c
+index 973e153..d96bf59 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/thread_fork.c
++++ b/libs/xmlrpc-c/lib/abyss/src/thread_fork.c
+@@ -157,6 +157,7 @@ ThreadCreate(TThread ** const threadPP,
+ TThreadProc * const func,
+ TThreadDoneFn * const threadDone,
+ bool const useSigchld,
++ size_t const stackSize,
+ const char ** const errorP) {
+
+ TThread * threadP;
+@@ -189,6 +190,9 @@ ThreadCreate(TThread ** const threadPP,
+ else if (rc == 0) {
+ /* This is the child */
+ (*func)(userHandle);
++ /* Note that thread cleanup (threadDone) is done by the _parent_,
++ upon seeing our exit.
++ */
+ exit(0);
+ } else {
+ /* This is the parent */
+@@ -249,7 +253,8 @@ ThreadWaitAndRelease(TThread * const threadP) {
+
+
+ void
+-ThreadExit(int const retValue) {
++ThreadExit(TThread * const threadP ATTR_UNUSED,
++ int const retValue) {
+
+ /* Note that the OS will automatically send a SIGCHLD signal to
+ the parent process after we exit. The handler for that signal
+@@ -259,6 +264,10 @@ ThreadExit(int const retValue) {
+ sees we've gone.
+ */
+
++ /* Note that thread cleanup (threadDone) is done by the _parent_,
++ upon seeing our exit.
++ */
++
+ exit(retValue);
+ }
+
+diff --git a/libs/xmlrpc-c/lib/abyss/src/thread_pthread.c b/libs/xmlrpc-c/lib/abyss/src/thread_pthread.c
+index 5cca825..7c6b2a7 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/thread_pthread.c
++++ b/libs/xmlrpc-c/lib/abyss/src/thread_pthread.c
+@@ -7,6 +7,7 @@
+
+ #include "bool.h"
+ #include "mallocvar.h"
++#include "xmlrpc-c/util_int.h"
+ #include "xmlrpc-c/string_int.h"
+ #include "pthreadx.h"
+
+@@ -23,12 +24,12 @@ struct abyss_thread {
+ TThreadDoneFn * threadDone;
+ };
+
+-/* We used to have THREAD_STACK_SIZE = 16K, which was said to be the
++/* We used to have MIN_STACK_SIZE = 16K, which was said to be the
+ minimum stack size on Win32. Scott Kolodzeski found in November
+ 2005 that this was insufficient for 64 bit Solaris -- we fail
+ when creating the first thread. So we changed to 128K.
+ */
+-#define THREAD_STACK_SIZE (128*1024L)
++#define MIN_STACK_SIZE (128*1024L)
+
+
+ typedef void * (pthreadStartRoutine)(void *);
+@@ -49,51 +50,63 @@ pthreadStart(void * const arg) {
+
+ pthread_cleanup_pop(executeTrue);
+
++ /* Note that func() may not return; it may just exit the thread,
++ by calling ThreadExit(), in which case code here doesn't run.
++ */
++ threadP->threadDone(threadP->userHandle);
++
+ return NULL;
+ }
+
+
+
++
+ void
+ ThreadCreate(TThread ** const threadPP,
+ void * const userHandle,
+ TThreadProc * const func,
+ TThreadDoneFn * const threadDone,
+ bool const useSigchld ATTR_UNUSED,
++ size_t const stackSize,
+ const char ** const errorP) {
+
+- TThread * threadP;
+-
+- MALLOCVAR(threadP);
+- if (threadP == NULL)
+- xmlrpc_asprintf(errorP,
+- "Can't allocate memory for thread descriptor.");
++ if ((size_t)(int)stackSize != stackSize)
++ xmlrpc_asprintf(errorP, "Stack size %lu is too big",
++ (unsigned long)stackSize);
+ else {
+- pthread_attr_t attr;
+- int rc;
++ TThread * threadP;
++
++ MALLOCVAR(threadP);
++ if (threadP == NULL)
++ xmlrpc_asprintf(errorP,
++ "Can't allocate memory for thread descriptor.");
++ else {
++ pthread_attr_t attr;
++ int rc;
+
+- pthread_attr_init(&attr);
++ pthread_attr_init(&attr);
+
+- pthread_attr_setstacksize(&attr, THREAD_STACK_SIZE);
++ pthread_attr_setstacksize(&attr, MAX(MIN_STACK_SIZE, stackSize));
+
+- threadP->userHandle = userHandle;
+- threadP->func = func;
+- threadP->threadDone = threadDone;
+-
+- rc = pthread_create(&threadP->thread, &attr,
+- pthreadStart, threadP);
+- if (rc == 0) {
+- *errorP = NULL;
+- *threadPP = threadP;
+- } else
+- xmlrpc_asprintf(
+- errorP, "pthread_create() failed, errno = %d (%s)",
+- errno, strerror(errno));
++ threadP->userHandle = userHandle;
++ threadP->func = func;
++ threadP->threadDone = threadDone;
++
++ rc = pthread_create(&threadP->thread, &attr,
++ pthreadStart, threadP);
++ if (rc == 0) {
++ *errorP = NULL;
++ *threadPP = threadP;
++ } else
++ xmlrpc_asprintf(
++ errorP, "pthread_create() failed, errno = %d (%s)",
++ errno, strerror(errno));
+
+- pthread_attr_destroy(&attr);
++ pthread_attr_destroy(&attr);
+
+- if (*errorP)
+- free(threadP);
++ if (*errorP)
++ free(threadP);
++ }
+ }
+ }
+
+@@ -134,7 +147,8 @@ ThreadWaitAndRelease(TThread * const threadP) {
+
+
+ void
+-ThreadExit(int const retValue) {
++ThreadExit(TThread * const threadP ATTR_UNUSED,
++ int const retValue) {
+
+ pthread_exit((void*)&retValue);
+
+diff --git a/libs/xmlrpc-c/lib/abyss/src/thread_windows.c b/libs/xmlrpc-c/lib/abyss/src/thread_windows.c
+index dae5bb5..f173f1b 100644
+--- a/libs/xmlrpc-c/lib/abyss/src/thread_windows.c
++++ b/libs/xmlrpc-c/lib/abyss/src/thread_windows.c
+@@ -15,6 +15,7 @@
+
+ #include "bool.h"
+ #include "int.h"
++#include "xmlrpc-c/util_int.h"
+ #include "mallocvar.h"
+ #include "xmlrpc-c/string_int.h"
+
+@@ -24,7 +25,6 @@
+ #include "thread.h"
+
+
+-
+ struct abyss_thread {
+ HANDLE handle;
+ void * userHandle;
+@@ -32,7 +32,7 @@ struct abyss_thread {
+ TThreadDoneFn * threadDone;
+ };
+
+-#define THREAD_STACK_SIZE (16*1024L)
++#define MIN_THREAD_STACK_SIZE (16*1024L)
+
+
+ typedef uint32_t (WINAPI WinThreadProc)(void *);
+@@ -60,6 +60,7 @@ ThreadCreate(TThread ** const threadPP,
+ TThreadProc * const func,
+ TThreadDoneFn * const threadDone,
+ bool const useSigchld,
++ size_t const stackSize,
+ const char ** const errorP) {
+
+ TThread * threadP;
+@@ -76,12 +77,13 @@ ThreadCreate(TThread ** const threadPP,
+ threadP->func = func;
+ threadP->threadDone = threadDone;
+
+- threadP->handle = (HANDLE)_beginthreadex(NULL,
+- THREAD_STACK_SIZE,
+- threadRun,
+- threadP,
+- CREATE_SUSPENDED,
+- &z);
++ threadP->handle = (HANDLE)
++ _beginthreadex(NULL,
++ MAX(stackSize, MIN_THREAD_STACK_SIZE),
++ threadRun,
++ threadP,
++ CREATE_SUSPENDED,
++ &z);
+
+ if (threadP->handle == NULL)
+ xmlrpc_asprintf(errorP, "_beginthreadex() failed.");
+@@ -121,13 +123,17 @@ ThreadKill(TThread * const threadP) {
+ void
+ ThreadWaitAndRelease(TThread * const threadP) {
+
++ WaitForSingleObject(threadP->handle, INFINITE);
+ ThreadRelease(threadP);
+ }
+
+
+
+ void
+-ThreadExit(int const retValue) {
++ThreadExit(TThread * const threadP,
++ int const retValue) {
++
++ threadP->threadDone(threadP->userHandle);
+
+ _endthreadex(retValue);
+ }
+@@ -138,6 +144,7 @@ void
+ ThreadRelease(TThread * const threadP) {
+
+ CloseHandle(threadP->handle);
++ free(threadP);
+ }
+
+
+@@ -190,8 +197,6 @@ MutexCreate(TMutex ** const mutexPP) {
+
+ *mutexPP = mutexP;
+
+- TraceMsg( "Created Mutex %s\n", (succeeded ? "ok" : "FAILED") );
+-
+ return succeeded;
+ }
+
+diff --git a/libs/xmlrpc-c/lib/abyss/version.txt b/libs/xmlrpc-c/lib/abyss/version.txt
+deleted file mode 100644
+index 13874ba..0000000
+--- a/libs/xmlrpc-c/lib/abyss/version.txt
++++ /dev/null
+@@ -1 +0,0 @@
+-0.3 (03/23/2000)
+\ No newline at end of file
+diff --git a/libs/xmlrpc-c/lib/curl_transport/Makefile b/libs/xmlrpc-c/lib/curl_transport/Makefile
+index c9e144f..a257749 100644
+--- a/libs/xmlrpc-c/lib/curl_transport/Makefile
++++ b/libs/xmlrpc-c/lib/curl_transport/Makefile
+@@ -10,30 +10,34 @@ include $(BLDDIR)/config.mk
+
+ default: all
+
++MODS := xmlrpc_curl_transport curltransaction curlmulti lock_pthread
++
+ .PHONY: all
+-all: xmlrpc_curl_transport.o xmlrpc_curl_transport.osh
++all: $(MODS:%=%.o) $(MODS:%=%.osh)
+
+ # Rules for the above dependencies are in common.mk,
+ # courtesy of TARGET_MODS.
+
+-TARGET_MODS = xmlrpc_curl_transport
++TARGET_MODS = $(MODS)
+
+ OMIT_CURL_TRANSPORT_RULE=Y
+
+ include $(SRCDIR)/common.mk
+
++# This 'common.mk' dependency makes sure the symlinks get built before
++# this make file is used for anything.
++
++$(SRCDIR)/common.mk: srcdir blddir
+ CURL_INCLUDES := $(shell curl-config --cflags)
+ # We expect that curl-config --cflags just gives us -I options, because
+ # we need just the -I options for 'make dep'. Plus, it's scary to think
+ # of what any other compiler flag would do to our compile.
+
+-CFLAGS = $(CFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
+-
+ INCLUDES = \
+ -I$(BLDDIR) \
+ -I$(BLDDIR)/include \
+- -I$(SRCDIR)/include \
+- -I$(SRCDIR)/lib/util/include \
++ -Isrcdir/include \
++ -Isrcdir/lib/util/include \
+ $(CURL_INCLUDES)
+
+ .PHONY: clean
+@@ -54,8 +58,8 @@ install:
+ .PHONY: dep
+ dep: dep-common
+
+-include Makefile.depend
++include depend.mk
+
+-# Need this dependency for those who don't use Makefile.depend.
++# Need this dependency for those who don't use depend.mk.
+ # Without it, version.h doesn't get created.
+ xmlrpc_curl_transport.o xmlrpc_curl_transport.osh: version.h
+diff --git a/libs/xmlrpc-c/lib/curl_transport/xmlrpc_curl_transport.c b/libs/xmlrpc-c/lib/curl_transport/xmlrpc_curl_transport.c
+index 29104b9..fe705b9 100644
+--- a/libs/xmlrpc-c/lib/curl_transport/xmlrpc_curl_transport.c
++++ b/libs/xmlrpc-c/lib/curl_transport/xmlrpc_curl_transport.c
+@@ -52,6 +52,8 @@
+ such subordinate libraries as OpenSSL and Winsock.
+ -----------------------------------------------------------------------------*/
+
++#define _XOPEN_SOURCE 600 /* Make sure strdup() is in <string.h> */
++
+ #include "xmlrpc_config.h"
+
+ #include <string.h>
+@@ -59,7 +61,7 @@
+ #include <errno.h>
+ #include <assert.h>
+ #include <limits.h>
+-#if !MSVCRT
++#if HAVE_SYS_SELECT_H
+ #include <sys/select.h>
+ #endif
+ #include <signal.h>
+@@ -75,18 +77,24 @@
+ #include "girstring.h"
+ #include "pthreadx.h"
+
++#include "xmlrpc-c/util.h"
+ #include "xmlrpc-c/string_int.h"
+ #include "xmlrpc-c/select_int.h"
+ #include "xmlrpc-c/client_int.h"
+ #include "xmlrpc-c/transport.h"
+ #include "xmlrpc-c/time_int.h"
+-#include "version.h"
+
+ #include <curl/curl.h>
+ #include <curl/types.h>
+ #include <curl/easy.h>
+ #include <curl/multi.h>
+
++#include "lock.h"
++#include "lock_pthread.h"
++#include "curltransaction.h"
++#include "curlmulti.h"
++#include "curlversion.h"
++
+ #if MSVCRT
+ #if defined(_DEBUG)
+ # include <crtdbg.h>
+@@ -98,92 +106,8 @@
+ #endif
+
+
+-#define CMAJOR LIBCURL_VERSION_MAJOR
+-#define CMINOR LIBCURL_VERSION_MINOR
+-#if CMAJOR > 7 || (CMAJOR == 7 && CMINOR >= 10)
+- #define HAVE_CURL_NOSIGNAL 1
+-#else
+- #define HAVE_CURL_NOSIGNAL 0
+-#endif
+-#if CMAJOR > 7 || (CMAJOR == 7 && CMINOR >= 12)
+- #define HAVE_CURL_STRERROR 1
+-#else
+- #define HAVE_CURL_STRERROR 0
+-#endif
+-
+-#undef CMAJOR
+-#undef CMINOR
+-
+-
+-
+ typedef struct rpc rpc;
+
+-typedef struct curlTransaction curlTransaction;
+-
+-
+-
+-struct curlSetup {
+-
+- /* This is all client transport properties that are implemented as
+- simple Curl session properties (i.e. the transport basically just
+- passes them through to Curl without looking at them).
+-
+- People occasionally want to replace all this with something where
+- the Xmlrpc-c user simply does the curl_easy_setopt() call and this
+- code need not know about all these options. Unfortunately, that's
+- a significant modularity violation. Either the Xmlrpc-c user
+- controls the Curl object or he doesn't. If he does, then he
+- shouldn't use libxmlrpc_client -- he should just copy some of this
+- code into his own program. If he doesn't, then he should never see
+- the Curl library.
+-
+- Speaking of modularity: the only reason this is a separate struct
+- is to make the code easier to manage. Ideally, the fact that these
+- particular properties of the transport are implemented by simple
+- Curl session setup would be known only at the lowest level code
+- that does that setup.
+- */
+-
+- const char * networkInterface;
+- /* This identifies the network interface on the local side to
+- use for the session. It is an ASCIIZ string in the form
+- that the Curl recognizes for setting its CURLOPT_INTERFACE
+- option (also the --interface option of the Curl program).
+- E.g. "9.1.72.189" or "giraffe-data.com" or "eth0".
+-
+- It isn't necessarily valid, but it does have a terminating NUL.
+-
+- NULL means we have no preference.
+- */
+- xmlrpc_bool sslVerifyPeer;
+- /* In an SSL connection, we should authenticate the server's SSL
+- certificate -- refuse to talk to him if it isn't authentic.
+- This is equivalent to Curl's CURLOPT_SSL_VERIFY_PEER option.
+- */
+- xmlrpc_bool sslVerifyHost;
+- /* In an SSL connection, we should verify that the server's
+- certificate (independently of whether the certificate is
+- authentic) indicates the host name that is in the URL we
+- are using for the server.
+- */
+-
+- const char * sslCert;
+- const char * sslCertType;
+- const char * sslCertPasswd;
+- const char * sslKey;
+- const char * sslKeyType;
+- const char * sslKeyPasswd;
+- const char * sslEngine;
+- bool sslEngineDefault;
+- unsigned int sslVersion;
+- const char * caInfo;
+- const char * caPath;
+- const char * randomFile;
+- const char * egdSocket;
+- const char * sslCipherList;
+- unsigned int timeout;
+- /* 0 = no Curl timeout. This is in milliseconds. */
+-};
+
+
+ static int
+@@ -239,939 +163,248 @@ addMilliseconds(xmlrpc_timespec const addend,
+
+
+
+-/*============================================================================
+- locks
+-==============================================================================
+- This is the beginnings of a lock abstraction that will allow this
+- transport to be used with locks other than pthread locks
+-============================================================================*/
+-
+-struct lock {
+- pthread_mutex_t theLock;
+- void (*lock)(struct lock *);
+- void (*unlock)(struct lock *);
+- void (*destroy)(struct lock *);
+-};
+-
+-typedef struct lock lock;
++struct xmlrpc_client_transport {
++ CURL * syncCurlSessionP;
++ /* Handle for a Curl library session object that we use for
++ all synchronous RPCs. An async RPC has one of its own,
++ and consequently does not share things such as persistent
++ connections and cookies with any other RPC.
++ */
++ lock * syncCurlSessionLockP;
++ /* Hold this lock while accessing or using *syncCurlSessionP.
++ You're using the session from the time you set any
++ attributes in it or start a transaction with it until any
++ transaction has finished and you've lost interest in any
++ attributes of the session.
++ */
++ curlMulti * syncCurlMultiP;
++ /* The Curl multi manager that this transport uses to execute
++ Curl transactions for RPCs requested via the synchronous
++ interface. The fact that there is never more than one such
++ transaction going at a time might make you wonder why a
++ "multi" manager is needed. The reason is that it is the only
++ interface in libcurl that gives us the flexibility to execute
++ the transaction with proper interruptibility. The only Curl
++ transaction ever attached to this multi manager is
++ 'syncCurlSessionP'.
++
++ This is constant (the handle, not the object).
++ */
++ curlMulti * asyncCurlMultiP;
++ /* The Curl multi manager that this transport uses to execute
++ Curl transactions for RPCs requested via the asynchronous
++ interface. Note that there may be multiple such Curl transactions
++ simultaneously and one can't wait for a particular one to finish;
++ the collection of asynchronous RPCs are an indivisible mass.
++
++ This is constant (the handle, not the object).
++ */
++ bool dontAdvertise;
++ /* Don't identify to the server the XML-RPC engine we are using. If
++ false, include a User-Agent HTTP header in all requests that
++ identifies the Xmlrpc-c and Curl libraries.
+
+-static void
+-lock_pthread(struct lock * const lockP) {
+- pthread_mutex_lock(&lockP->theLock);
+-}
++ See also 'userAgent'.
+
+-static void
+-unlock_pthread(struct lock * const lockP) {
+- pthread_mutex_unlock(&lockP->theLock);
+-}
++ This is constant.
++ */
++ const char * userAgent;
++ /* Information to include in a User-Agent HTTP header, reflecting
++ facilities outside of Xmlrpc-c.
+
+-static void
+-destroyLock_pthread(struct lock * const lockP) {
+- pthread_mutex_destroy(&lockP->theLock);
+- free(lockP);
+-}
++ Null means none.
+
++ The full User-Agent header value is this information (if
++ 'userAgent' is non-null) followed by identification of Xmlrpc-c
++ and Curl (if 'dontAdvertise' is false). If 'userAgent' is null
++ and 'dontAdvertise' is true, we put no User-Agent header at all
++ in the request.
+
+-static struct lock *
+-createLock_pthread(void) {
+- struct lock * lockP;
+- MALLOCVAR(lockP);
+- if (lockP) {
+- pthread_mutex_init(&lockP->theLock, NULL);
+- lockP->lock = &lock_pthread;
+- lockP->unlock = &unlock_pthread;
+- lockP->destroy = &destroyLock_pthread;
+- }
+- return lockP;
+-}
++ This is constant.
++ */
++ struct curlSetup curlSetupStuff;
++ /* This is constant */
++ int * interruptP;
++ /* Pointer to a value that user sets to nonzero to indicate he wants
++ the transport to give up on whatever it is doing and return ASAP.
+
++ NULL means none -- transport never gives up.
+
++ This is constant.
++ */
++};
+
+-/*=============================================================================
+- curlTransaction
+-=============================================================================*/
+
+-typedef void finishCurlTransactionFn(xmlrpc_env * const, curlTransaction * const);
+
+-struct curlTransaction {
+- /* This is all stuff that really ought to be in a Curl object, but
+- the Curl library is a little too simple for that. So we build
+- a layer on top of Curl, and define this "transaction," as an
+- object subordinate to a Curl "session." A Curl session has
+- zero or one transactions in progress. The Curl session
+- "private data" is a pointer to the CurlTransaction object for
+- the current transaction.
+- */
++struct rpc {
++ struct xmlrpc_client_transport * transportP;
++ /* The client XML transport that transports this RPC */
++ curlTransaction * curlTransactionP;
++ /* The object which does the HTTP transaction, with no knowledge
++ of XML-RPC or Xmlrpc-c.
++ */
+ CURL * curlSessionP;
+- /* Handle for the Curl session that hosts this transaction.
+- Note that only one transaction at a time can use a particular
+- Curl session, so this had better not be a session that some other
+- transaction is using simultaneously.
++ /* The Curl session to use for the Curl transaction to perform
++ the RPC.
+ */
+- finishCurlTransactionFn * finish;
+- rpc * rpcP;
+- /* The RPC which this transaction serves. (If this structure
+- were a true extension of the Curl library as described above,
+- this would be a void *, since the Curl library doesn't know what
+- an RPC is, but since we use it only for that, we might as well
+- use the specific type here).
++ xmlrpc_mem_block * responseXmlP;
++ /* Where the response XML for this RPC should go or has gone. */
++ xmlrpc_transport_asynch_complete complete;
++ /* Routine to call to complete the RPC after it is complete HTTP-wise.
++ NULL if none.
+ */
+- CURLcode result;
+- /* Result of the transaction (succeeded, TCP connect failed, etc.).
+- A properly executed HTTP transaction (request & response) counts
+- as a successful transaction. When 'result' show success,
+- curl_easy_get_info() tells you whether the transaction succeeded
+- at the HTTP level.
++ xmlrpc_transport_progress progress;
++ /* Routine to call periodically to report the progress of transporting
++ the call and response. NULL if none.
+ */
+- char curlError[CURL_ERROR_SIZE];
+- /* Error message from Curl */
+- struct curl_slist * headerList;
+- /* The HTTP headers for the transaction */
+- const char * serverUrl; /* malloc'ed - belongs to this object */
++ struct xmlrpc_call_info * callInfoP;
++ /* User's identifier for this RPC */
+ };
+
+
+-
+ static void
+-interpretCurlEasyError(const char ** const descriptionP,
+- CURLcode const code) {
+-
+-#if HAVE_CURL_STRERROR
+- *descriptionP = strdup(curl_easy_strerror(code));
+-#else
+- xmlrpc_asprintf(descriptionP, "Curl error code (CURLcode) %d", code);
+-#endif
++lockSyncCurlSession(struct xmlrpc_client_transport * const transportP) {
++ transportP->syncCurlSessionLockP->acquire(
++ transportP->syncCurlSessionLockP);
+ }
+
+
+
+ static void
+-interpretCurlMultiError(const char ** const descriptionP,
+- CURLMcode const code) {
+-
+-#if HAVE_CURL_STRERROR
+- *descriptionP = strdup(curl_multi_strerror(code));
+-#else
+- xmlrpc_asprintf(descriptionP, "Curl error code (CURLMcode) %d", code);
+-#endif
++unlockSyncCurlSession(struct xmlrpc_client_transport * const transportP) {
++ transportP->syncCurlSessionLockP->release(
++ transportP->syncCurlSessionLockP);
+ }
+
+
+
+ static void
+-addHeader(xmlrpc_env * const envP,
+- struct curl_slist ** const headerListP,
+- const char * const headerText) {
+-
+- struct curl_slist * newHeaderList;
+- newHeaderList = curl_slist_append(*headerListP, headerText);
+- if (newHeaderList == NULL)
+- xmlrpc_faultf(envP,
+- "Could not add header '%s'. "
+- "curl_slist_append() failed.", headerText);
+- else
+- *headerListP = newHeaderList;
+-}
+-
+-
++initWindowsStuff(xmlrpc_env * const envP ATTR_UNUSED) {
+
+-static void
+-addContentTypeHeader(xmlrpc_env * const envP,
+- struct curl_slist ** const headerListP) {
++#if defined (WIN32)
++ /* This is CRITICAL so that cURL-Win32 works properly! */
+
+- addHeader(envP, headerListP, "Content-Type: text/xml");
+-}
+-
+-
+-
+-static void
+-addUserAgentHeader(xmlrpc_env * const envP,
+- struct curl_slist ** const headerListP,
+- const char * const userAgent) {
+-
+- if (userAgent) {
+- /* Note: Curl has a CURLOPT_USERAGENT option that does some of this
+- work. We prefer to be totally in control, though, so we build
+- the header explicitly.
+- */
++ /* So this commenter says, but I wonder why. libcurl should do the
++ required WSAStartup() itself, and it looks to me like it does.
++ -Bryan 06.01.01
++ */
++ WORD wVersionRequested;
++ WSADATA wsaData;
++ int err;
++ wVersionRequested = MAKEWORD(1, 1);
+
+- curl_version_info_data * const curlInfoP =
+- curl_version_info(CURLVERSION_NOW);
+- char curlVersion[32];
+- const char * userAgentHeader;
+-
+- snprintf(curlVersion, sizeof(curlVersion), "%u.%u.%u",
+- (curlInfoP->version_num >> 16) && 0xff,
+- (curlInfoP->version_num >> 8) && 0xff,
+- (curlInfoP->version_num >> 0) && 0xff
+- );
+-
+- xmlrpc_asprintf(&userAgentHeader,
+- "User-Agent: %s Xmlrpc-c/%s Curl/%s",
+- userAgent, XMLRPC_C_VERSION, curlVersion);
+-
+- if (userAgentHeader == xmlrpc_strsol)
+- xmlrpc_faultf(envP, "Couldn't allocate memory for "
+- "User-Agent header");
+- else {
+- addHeader(envP, headerListP, userAgentHeader);
+-
+- xmlrpc_strfree(userAgentHeader);
++ err = WSAStartup(wVersionRequested, &wsaData);
++ if (err)
++ xmlrpc_env_set_fault_formatted(
++ envP, XMLRPC_INTERNAL_ERROR,
++ "Winsock startup failed. WSAStartup returned rc %d", err);
++ else {
++ if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1) {
++ /* Tell the user that we couldn't find a useable */
++ /* winsock.dll. */
++ xmlrpc_env_set_fault_formatted(
++ envP, XMLRPC_INTERNAL_ERROR, "Winsock reported that "
++ "it does not implement the requested version 1.1.");
+ }
++ if (envP->fault_occurred)
++ WSACleanup();
+ }
++#endif
+ }
+
+
+
+ static void
+-addAuthorizationHeader(xmlrpc_env * const envP,
+- struct curl_slist ** const headerListP,
+- const char * const hdrValue) {
++termWindowsStuff(void) {
+
+- const char * authorizationHeader;
+-
+- xmlrpc_asprintf(&authorizationHeader, "Authorization: %s", hdrValue);
+-
+- if (authorizationHeader == xmlrpc_strsol)
+- xmlrpc_faultf(envP, "Couldn't allocate memory for "
+- "Authorization header");
+- else {
+- addHeader(envP, headerListP, authorizationHeader);
+-
+- xmlrpc_strfree(authorizationHeader);
+- }
++#if defined (WIN32)
++ WSACleanup();
++#endif
+ }
+
+
+
+-static void
+-createCurlHeaderList(xmlrpc_env * const envP,
+- const char * const authHdrValue,
+- const char * const userAgent,
+- struct curl_slist ** const headerListP) {
++static bool
++curlHasNosignal(void) {
+
+- struct curl_slist * headerList;
++ bool retval;
+
+- headerList = NULL; /* initial value - empty list */
++#if HAVE_CURL_NOSIGNAL
++ curl_version_info_data * const curlInfoP =
++ curl_version_info(CURLVERSION_NOW);
+
+- addContentTypeHeader(envP, &headerList);
+- if (!envP->fault_occurred) {
+- addUserAgentHeader(envP, &headerList, userAgent);
+- if (!envP->fault_occurred) {
+- if (authHdrValue)
+- addAuthorizationHeader(envP, &headerList, authHdrValue);
+- }
+- }
+- if (envP->fault_occurred)
+- curl_slist_free_all(headerList);
+- else
+- *headerListP = headerList;
++ retval = (curlInfoP->version_num >= 0x070A00); /* 7.10.0 */
++#else
++ retval = false;
++#endif
++ return retval;
+ }
+
+
+
+-static void
+-assertConstantsMatch(void) {
++static xmlrpc_timespec
++pselectTimeout(xmlrpc_timeoutType const timeoutType,
++ xmlrpc_timespec const timeoutDt) {
+ /*----------------------------------------------------------------------------
+- There are some constants that we define as part of the Xmlrpc-c
+- interface that are identical to constants in the Curl interface to
+- make curl option setting work. This function asserts such
+- formally.
++ Return the value that should be used in the select() call to wait for
++ there to be work for the Curl multi manager to do, given that the user
++ wants to timeout according to 'timeoutType' and 'timeoutDt'.
+ -----------------------------------------------------------------------------*/
+- assert(XMLRPC_SSLVERSION_DEFAULT == CURL_SSLVERSION_DEFAULT);
+- assert(XMLRPC_SSLVERSION_TLSv1 == CURL_SSLVERSION_TLSv1);
+- assert(XMLRPC_SSLVERSION_SSLv2 == CURL_SSLVERSION_SSLv2);
+- assert(XMLRPC_SSLVERSION_SSLv3 == CURL_SSLVERSION_SSLv3);
+-}
+-
++ unsigned int const million = 1000000;
++ unsigned int selectTimeoutMillisec;
++ xmlrpc_timespec retval;
+
++ /* We assume there is work to do at least every 3 seconds, because
++ the Curl multi manager often has retries and other scheduled work
++ that doesn't involve file handles on which we can select().
++ */
++ switch (timeoutType) {
++ case timeout_no:
++ selectTimeoutMillisec = 3000;
++ break;
++ case timeout_yes: {
++ xmlrpc_timespec nowTime;
++ int timeLeft;
+
+-static size_t
+-collect(void * const ptr,
+- size_t const size,
+- size_t const nmemb,
+- FILE * const stream) {
+-/*----------------------------------------------------------------------------
+- This is a Curl output function. Curl calls this to deliver the
+- HTTP response body to the Curl client. Curl thinks it's writing to
+- a POSIX stream.
+------------------------------------------------------------------------------*/
+- xmlrpc_mem_block * const responseXmlP = (xmlrpc_mem_block *) stream;
+- char * const buffer = ptr;
+- size_t const length = nmemb * size;
++ xmlrpc_gettimeofday(&nowTime);
++ timeLeft = timeDiffMillisec(timeoutDt, nowTime);
+
+- size_t retval;
+- xmlrpc_env env;
++ selectTimeoutMillisec = MIN(3000, MAX(0, timeLeft));
++ } break;
++ }
++ retval.tv_sec = selectTimeoutMillisec / 1000;
++ retval.tv_nsec = (uint32_t)((selectTimeoutMillisec % 1000) * million);
+
+- xmlrpc_env_init(&env);
+- xmlrpc_mem_block_append(&env, responseXmlP, buffer, length);
+- if (env.fault_occurred)
+- retval = (size_t)-1;
+- else
+- /* Really? Shouldn't it be like fread() and return 'nmemb'? */
+- retval = length;
+-
+ return retval;
+-}
+-
+-
+-
+-static int
+-curlProgress(void * const contextP,
+- double const dltotal ATTR_UNUSED,
+- double const dlnow ATTR_UNUSED,
+- double const ultotal ATTR_UNUSED,
+- double const ulnow ATTR_UNUSED) {
+-/*----------------------------------------------------------------------------
+- This is a Curl "progress function." It's something various Curl
+- functions call every so often, including whenever something gets
+- interrupted by the process receiving, and catching, a signal.
+- There are two purposes of a Curl progress function: 1) lets us log
+- the progress of a long-running transaction such as a big download,
+- e.g. by displaying a progress bar somewhere. In Xmlrpc-c, we don't
+- implement this purpose. 2) allows us to tell the Curl function,
+- via our return code, that calls it that we don't want to wait
+- anymore for the operation to complete.
+-
+- In Curl versions before March 2007, we get called once per second
+- and signals have no effect. In current Curl, we usually get called
+- immediately after a signal gets caught while Curl is waiting to
+- receive a response from the server. But Curl doesn't properly
+- synchronize with signals, so it may miss one and then we don't get
+- called until the next scheduled one-per-second call.
+-
+- All we do is tell Caller it's time to give up if the transport's
+- client says it is via his "interrupt" flag.
+-
+- This function is not as important as it once was. This module used
+- to use curl_easy_perform(), which can be interrupted only via this
+- progress function. But because of the above-mentioned failure of
+- Curl to properly synchronize signals (and Bryan's failure to get
+- Curl developers to accept code to fix it), we now use the Curl
+- "multi" facility instead and do our own pselect(). But
+- This function still normally gets called by curl_multi_perform(),
+- which the transport tries to call even when the user has requested
+- interruption, because we don't trust our ability to abort a running
+- Curl transaction. curl_multi_perform() reliably winds up a Curl
+- transaction when this function tells it to.
+------------------------------------------------------------------------------*/
+- unsigned int * const interruptP = contextP;
+-
+- /* We require anyone setting us up as the Curl progress function to
+- supply an interrupt flag:
+- */
+- assert(contextP);
+-
+- return *interruptP != 0 ? 1 : 0;
+-}
++}
+
+
+
+ static void
+-setupAuth(xmlrpc_env * const envP ATTR_UNUSED,
+- CURL * const curlSessionP,
+- const xmlrpc_server_info * const serverInfoP,
+- const char ** const authHdrValueP) {
+-/*----------------------------------------------------------------------------
+- Set the options in the Curl session 'curlSessionP' to set up the HTTP
+- authentication described by *serverInfoP.
+-
+- But we have an odd special function for backward compatibility, because
+- this code dates to a time when libcurl did not have the ability to
+- handle authentication, but we provided such function nonetheless by
+- building our own Authorization: header. But we did this only for
+- HTTP basic authentication.
+-
+- So the special function is this: if libcurl is too old to have
+- authorization options and *serverInfoP allows basic authentication,
+- return as *basicAuthHdrParamP an appropriate parameter for the
+- Authorization: Basic: HTTP header. Otherwise, return
+- *basicAuthHdrParamP == NULL.
+------------------------------------------------------------------------------*/
+- if (serverInfoP->allowedAuth.basic) {
+- CURLcode rc;
+- rc = curl_easy_setopt(curlSessionP, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
++processCurlMessages(xmlrpc_env * const envP,
++ curlMulti * const curlMultiP) {
++
++ bool endOfMessages;
+
+- if (rc == CURLE_OK)
+- *authHdrValueP = NULL;
+- else {
+- *authHdrValueP = strdup(serverInfoP->basicAuthHdrValue);
+- if (*authHdrValueP == NULL)
+- xmlrpc_faultf(envP, "Unable to allocate memory for basic "
+- "authentication header");
+- }
+- } else
+- *authHdrValueP = NULL;
+-
+- /* We don't worry if libcurl is too old for these other kinds of
+- authentication; they're only defined as _allowed_
+- authentication methods, for when client and server are capable
+- of using it, and unlike with basic authentication, we have no
+- historical commitment to consider an old libcurl as capable of
+- doing these.
+- */
+-
+- if (serverInfoP->userNamePw)
+- curl_easy_setopt(curlSessionP, CURLOPT_USERPWD,
+- serverInfoP->userNamePw);
+-
+- if (serverInfoP->allowedAuth.digest)
+- curl_easy_setopt(
+- curlSessionP, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
+- if (serverInfoP->allowedAuth.gssnegotiate)
+- curl_easy_setopt(
+- curlSessionP, CURLOPT_HTTPAUTH, CURLAUTH_GSSNEGOTIATE);
+- if (serverInfoP->allowedAuth.ntlm)
+- curl_easy_setopt(
+- curlSessionP, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
+-}
++ endOfMessages = false; /* initial assumption */
+
++ while (!endOfMessages && !envP->fault_occurred) {
++ CURLMsg curlMsg;
+
+-static void
+-setCurlTimeout(CURL * const curlSessionP ATTR_UNUSED,
+- unsigned int const timeout ATTR_UNUSED) {
++ curlMulti_getMessage(curlMultiP, &endOfMessages, &curlMsg);
+
+-#if HAVE_CURL_NOSIGNAL
+- unsigned int const timeoutMs = (timeout + 999)/1000;
++ if (!endOfMessages) {
++ if (curlMsg.msg == CURLMSG_DONE) {
++ curlTransaction * curlTransactionP;
+
+- curl_easy_setopt(curlSessionP, CURLOPT_NOSIGNAL, 1);
++ curl_easy_getinfo(curlMsg.easy_handle, CURLINFO_PRIVATE,
++ (void *)&curlTransactionP);
+
+- assert((long)timeoutMs == (int)timeoutMs);
+- /* Calling requirement */
+- curl_easy_setopt(curlSessionP, CURLOPT_TIMEOUT, (long)timeoutMs);
+-#else
+- abort();
+-#endif
+-}
+-
+-
+-
+-static void
+-setupCurlSession(xmlrpc_env * const envP,
+- curlTransaction * const curlTransactionP,
+- xmlrpc_mem_block * const callXmlP,
+- xmlrpc_mem_block * const responseXmlP,
+- const xmlrpc_server_info * const serverInfoP,
+- const char * const userAgent,
+- int * const interruptP,
+- const struct curlSetup * const curlSetupP) {
+-/*----------------------------------------------------------------------------
+- Set up the Curl session for the transaction *curlTransactionP so that
+- a subsequent curl_easy_perform() would perform said transaction.
+-
+- The data curl_easy_perform() would send for that transaction would
+- be the contents of *callXmlP; the data curl_easy_perform() gets back
+- would go into *responseXmlP.
+-
+- 'interruptP' is a pointer to an interrupt flag -- a flag that becomes
+- nonzero when the user wants to abandon this Curl session. NULL means
+- there is no interrupt flag; user will never want to abandon the session.
+------------------------------------------------------------------------------*/
+- CURL * const curlSessionP = curlTransactionP->curlSessionP;
+-
+- assertConstantsMatch();
+-
+- curl_easy_setopt(curlSessionP, CURLOPT_POST, 1);
+- curl_easy_setopt(curlSessionP, CURLOPT_URL, curlTransactionP->serverUrl);
+-
+- XMLRPC_MEMBLOCK_APPEND(char, envP, callXmlP, "\0", 1);
+- if (!envP->fault_occurred) {
+- curl_easy_setopt(curlSessionP, CURLOPT_POSTFIELDS,
+- XMLRPC_MEMBLOCK_CONTENTS(char, callXmlP));
+- curl_easy_setopt(curlSessionP, CURLOPT_WRITEFUNCTION, collect);
+- curl_easy_setopt(curlSessionP, CURLOPT_FILE, responseXmlP);
+- curl_easy_setopt(curlSessionP, CURLOPT_HEADER, 0);
+- curl_easy_setopt(curlSessionP, CURLOPT_ERRORBUFFER,
+- curlTransactionP->curlError);
+- if (interruptP) {
+- curl_easy_setopt(curlSessionP, CURLOPT_NOPROGRESS, 0);
+- curl_easy_setopt(curlSessionP, CURLOPT_PROGRESSFUNCTION,
+- curlProgress);
+- curl_easy_setopt(curlSessionP, CURLOPT_PROGRESSDATA, interruptP);
+- } else
+- curl_easy_setopt(curlSessionP, CURLOPT_NOPROGRESS, 1);
+-
+- curl_easy_setopt(curlSessionP, CURLOPT_SSL_VERIFYPEER,
+- curlSetupP->sslVerifyPeer);
+- curl_easy_setopt(curlSessionP, CURLOPT_SSL_VERIFYHOST,
+- curlSetupP->sslVerifyHost ? 2 : 0);
+-
+- if (curlSetupP->networkInterface)
+- curl_easy_setopt(curlSessionP, CURLOPT_INTERFACE,
+- curlSetupP->networkInterface);
+- if (curlSetupP->sslCert)
+- curl_easy_setopt(curlSessionP, CURLOPT_SSLCERT,
+- curlSetupP->sslCert);
+- if (curlSetupP->sslCertType)
+- curl_easy_setopt(curlSessionP, CURLOPT_SSLCERTTYPE,
+- curlSetupP->sslCertType);
+- if (curlSetupP->sslCertPasswd)
+- curl_easy_setopt(curlSessionP, CURLOPT_SSLCERTPASSWD,
+- curlSetupP->sslCertPasswd);
+- if (curlSetupP->sslKey)
+- curl_easy_setopt(curlSessionP, CURLOPT_SSLKEY,
+- curlSetupP->sslKey);
+- if (curlSetupP->sslKeyType)
+- curl_easy_setopt(curlSessionP, CURLOPT_SSLKEYTYPE,
+- curlSetupP->sslKeyType);
+- if (curlSetupP->sslKeyPasswd)
+- curl_easy_setopt(curlSessionP, CURLOPT_SSLKEYPASSWD,
+- curlSetupP->sslKeyPasswd);
+- if (curlSetupP->sslEngine)
+- curl_easy_setopt(curlSessionP, CURLOPT_SSLENGINE,
+- curlSetupP->sslEngine);
+- if (curlSetupP->sslEngineDefault)
+- /* 3rd argument seems to be required by some Curl */
+- curl_easy_setopt(curlSessionP, CURLOPT_SSLENGINE_DEFAULT, 1l);
+- if (curlSetupP->sslVersion != XMLRPC_SSLVERSION_DEFAULT)
+- curl_easy_setopt(curlSessionP, CURLOPT_SSLVERSION,
+- curlSetupP->sslVersion);
+- if (curlSetupP->caInfo)
+- curl_easy_setopt(curlSessionP, CURLOPT_CAINFO,
+- curlSetupP->caInfo);
+- if (curlSetupP->caPath)
+- curl_easy_setopt(curlSessionP, CURLOPT_CAPATH,
+- curlSetupP->caPath);
+- if (curlSetupP->randomFile)
+- curl_easy_setopt(curlSessionP, CURLOPT_RANDOM_FILE,
+- curlSetupP->randomFile);
+- if (curlSetupP->egdSocket)
+- curl_easy_setopt(curlSessionP, CURLOPT_EGDSOCKET,
+- curlSetupP->egdSocket);
+- if (curlSetupP->sslCipherList)
+- curl_easy_setopt(curlSessionP, CURLOPT_SSL_CIPHER_LIST,
+- curlSetupP->sslCipherList);
+-
+- if (curlSetupP->timeout)
+- setCurlTimeout(curlSessionP, curlSetupP->timeout);
+-
+- {
+- const char * authHdrValue;
+- /* NULL means we don't have to construct an explicit
+- Authorization: header. non-null means we have to
+- construct one with this as its value.
+- */
+-
+- setupAuth(envP, curlSessionP, serverInfoP, &authHdrValue);
+- if (!envP->fault_occurred) {
+- struct curl_slist * headerList;
+- createCurlHeaderList(envP, authHdrValue, userAgent,
+- &headerList);
+- if (!envP->fault_occurred) {
+- curl_easy_setopt(
+- curlSessionP, CURLOPT_HTTPHEADER, headerList);
+- curlTransactionP->headerList = headerList;
+- }
+- if (authHdrValue)
+- xmlrpc_strfree(authHdrValue);
+- }
+- }
+- }
+-}
+-
+-
+-
+-static void
+-curlTransaction_create(xmlrpc_env * const envP,
+- CURL * const curlSessionP,
+- const xmlrpc_server_info * const serverP,
+- xmlrpc_mem_block * const callXmlP,
+- xmlrpc_mem_block * const responseXmlP,
+- const char * const userAgent,
+- const struct curlSetup * const curlSetupStuffP,
+- rpc * const rpcP,
+- int * const interruptP,
+- curlTransaction ** const curlTransactionPP) {
+-
+- curlTransaction * curlTransactionP;
+-
+- MALLOCVAR(curlTransactionP);
+- if (curlTransactionP == NULL)
+- xmlrpc_faultf(envP, "No memory to create Curl transaction.");
+- else {
+- curlTransactionP->finish = NULL;
+- curlTransactionP->curlSessionP = curlSessionP;
+- curlTransactionP->rpcP = rpcP;
+-
+- curlTransactionP->serverUrl = strdup(serverP->serverUrl);
+- if (curlTransactionP->serverUrl == NULL)
+- xmlrpc_faultf(envP, "Out of memory to store server URL.");
+- else {
+- setupCurlSession(envP, curlTransactionP,
+- callXmlP, responseXmlP,
+- serverP, userAgent, interruptP,
+- curlSetupStuffP);
+-
+- if (envP->fault_occurred)
+- xmlrpc_strfree(curlTransactionP->serverUrl);
+- }
+- if (envP->fault_occurred)
+- free(curlTransactionP);
+- }
+- *curlTransactionPP = curlTransactionP;
+-}
+-
+-
+-
+-static void
+-curlTransaction_destroy(curlTransaction * const curlTransactionP) {
+-
+- curl_slist_free_all(curlTransactionP->headerList);
+- xmlrpc_strfree(curlTransactionP->serverUrl);
+-
+- free(curlTransactionP);
+-}
+-
+-
+-
+-/*=============================================================================
+- curlMulti
+-=============================================================================*/
+-
+-typedef struct {
+-/*----------------------------------------------------------------------------
+- This is an extension to Curl's CURLM object. The extensions are:
+-
+- 1) It has a lock so multiple threads can use it simultaneously.
+-
+- 2) Its "select" file descriptor vectors are self-contained. CURLM
+- requires the user to maintain them separately.
+-
+- Plus, it manages Curl transactions (curlTransaction) instead of Curl
+- sessions (CURL).
+------------------------------------------------------------------------------*/
+- CURLM * curlMultiP;
+- lock * lockP;
+- /* Hold this lock while accessing or using *curlMultiP. You're
+- using the multi manager whenever you're calling a Curl
+- library multi manager function.
+- */
+- /* The following file descriptor sets are an integral part of the
+- CURLM object; Our curlMulti_fdset() routine binds them to the
+- CURLM object, and said object expects us to use them in a very
+- specific way, including doing a select() on them. It is very,
+- very messy.
+- */
+- fd_set readFdSet;
+- fd_set writeFdSet;
+- fd_set exceptFdSet;
+-} curlMulti;
+-
+-
+-
+-static curlMulti *
+-curlMulti_create(void) {
+-
+- curlMulti * retval;
+- curlMulti * curlMultiP;
+-
+- MALLOCVAR(curlMultiP);
+-
+- if (curlMultiP == NULL)
+- retval = NULL;
+- else {
+- curlMultiP->lockP = createLock_pthread();
+-
+- if (curlMultiP->lockP == NULL)
+- retval = NULL;
+- else {
+- curlMultiP->curlMultiP = curl_multi_init();
+- if (curlMultiP->curlMultiP == NULL)
+- retval = NULL;
+- else
+- retval = curlMultiP;
+-
+- if (retval == NULL)
+- curlMultiP->lockP->destroy(curlMultiP->lockP);
+- }
+- if (retval == NULL)
+- free(curlMultiP);
+- }
+- return retval;
+-}
+-
+-
+-
+-static void
+-curlMulti_destroy(curlMulti * const curlMultiP) {
+-
+- curl_multi_cleanup(curlMultiP->curlMultiP);
+-
+- curlMultiP->lockP->destroy(curlMultiP->lockP);
+-
+- free(curlMultiP);
+-}
+-
+-
+-
+-static void
+-curlMulti_perform(xmlrpc_env * const envP,
+- curlMulti * const curlMultiP,
+- bool * const immediateWorkToDoP,
+- int * const runningHandlesP) {
+-/*----------------------------------------------------------------------------
+- Do whatever work is ready to be done under the control of multi
+- manager 'curlMultiP'. E.g. if HTTP response data has recently arrived
+- from the network, process it as an HTTP response.
+-
+- Iff this results in some work being finished from our point of view,
+- return *immediateWorkToDoP. (Caller can query the multi manager for
+- messages and find out what it is).
+-
+- Return as *runningHandlesP the number of Curl easy handles under the
+- multi manager's control that are still running -- yet to finish.
+------------------------------------------------------------------------------*/
+- CURLMcode rc;
+-
+- curlMultiP->lockP->lock(curlMultiP->lockP);
+-
+- rc = curl_multi_perform(curlMultiP->curlMultiP, runningHandlesP);
+-
+- curlMultiP->lockP->unlock(curlMultiP->lockP);
+-
+- if (rc == CURLM_CALL_MULTI_PERFORM) {
+- *immediateWorkToDoP = true;
+- } else {
+- *immediateWorkToDoP = false;
+-
+- if (rc != CURLM_OK) {
+- const char * reason;
+- interpretCurlMultiError(&reason, rc);
+- xmlrpc_faultf(envP, "Impossible failure of curl_multi_perform(): "
+- "%s", reason);
+- xmlrpc_strfree(reason);
+- }
+- }
+-}
+-
+-
+-
+-static void
+-curlMulti_addHandle(xmlrpc_env * const envP,
+- curlMulti * const curlMultiP,
+- curlTransaction * const curlTransactionP) {
+-
+- CURLMcode rc;
+-
+- curlMultiP->lockP->lock(curlMultiP->lockP);
+-
+- rc = curl_multi_add_handle(curlMultiP->curlMultiP,
+- curlTransactionP->curlSessionP);
+-
+- curlMultiP->lockP->unlock(curlMultiP->lockP);
+-
+- if (rc != CURLM_OK) {
+- const char * reason;
+- interpretCurlMultiError(&reason, rc);
+- xmlrpc_faultf(envP, "Could not add Curl session to the "
+- "curl multi manager. curl_multi_add_handle() "
+- "failed: %s", reason);
+- xmlrpc_strfree(reason);
+- }
+-}
+-
+-
+-static void
+-curlMulti_removeHandle(curlMulti * const curlMultiP,
+- curlTransaction * const curlTransactionP) {
+-
+- curlMultiP->lockP->lock(curlMultiP->lockP);
+-
+- curl_multi_remove_handle(curlMultiP->curlMultiP,
+- curlTransactionP->curlSessionP);
+-
+- curlMultiP->lockP->unlock(curlMultiP->lockP);
+-}
+-
+-
+-
+-static void
+-curlMulti_getMessage(curlMulti * const curlMultiP,
+- bool * const endOfMessagesP,
+- CURLMsg * const curlMsgP) {
+-/*----------------------------------------------------------------------------
+- Get the next message from the queue of things the Curl multi manager
+- wants to say to us.
+-
+- Return the message as *curlMsgP.
+-
+- Iff there are no messages in the queue, return *endOfMessagesP == true.
+------------------------------------------------------------------------------*/
+- int remainingMsgCount;
+- CURLMsg * privateCurlMsgP;
+- /* Note that this is a pointer into the multi manager's memory,
+- so we have to use it under lock.
+- */
+-
+- curlMultiP->lockP->lock(curlMultiP->lockP);
+-
+- privateCurlMsgP = curl_multi_info_read(curlMultiP->curlMultiP,
+- &remainingMsgCount);
+-
+- if (privateCurlMsgP == NULL)
+- *endOfMessagesP = true;
+- else {
+- *endOfMessagesP = false;
+- *curlMsgP = *privateCurlMsgP;
+- }
+- curlMultiP->lockP->unlock(curlMultiP->lockP);
+-}
+-
+-
+-
+-static void
+-curlMulti_fdset(xmlrpc_env * const envP,
+- curlMulti * const curlMultiP,
+- fd_set * const readFdSetP,
+- fd_set * const writeFdSetP,
+- fd_set * const exceptFdSetP,
+- int * const maxFdP) {
+-/*----------------------------------------------------------------------------
+- Set the CURLM object's file descriptor sets to those in the
+- curlMulti object, update those file descriptor sets with the
+- current needs of the multi manager, and return the resulting values
+- of the file descriptor sets.
+-
+- This is a bizarre operation, but is necessary because of the nonmodular
+- way in which the Curl multi interface works with respect to waiting
+- for work with select().
+------------------------------------------------------------------------------*/
+- CURLMcode rc;
+-
+- curlMultiP->lockP->lock(curlMultiP->lockP);
+-
+- /* curl_multi_fdset() doesn't _set_ the fdsets. It adds to existing
+- ones (so you can easily do a select() on other fds and Curl
+- fds at the same time). So we have to clear first:
+- */
+- FD_ZERO(&curlMultiP->readFdSet);
+- FD_ZERO(&curlMultiP->writeFdSet);
+- FD_ZERO(&curlMultiP->exceptFdSet);
+-
+- /* WARNING: curl_multi_fdset() doesn't just update the fdsets pointed
+- to by its arguments. It makes the CURLM object remember those
+- pointers and refer back to them later! In fact, curl_multi_perform
+- expects its caller to have done a select() on those masks. No,
+- really. The man page even admits it.
+-
+- Inspection of the Libcurl code in March 2007 indicates that
+- this isn't actually true -- curl_multi_fdset() updates your
+- fdset and doesn't remember the pointer at all. I.e. it's just
+- what you would expect. The man pages still says it's as
+- described above. My guess is that Libcurl was fixed at some
+- time and the man page not updated. In any case, we have to
+- work with old Libcurl if at all possible, so we still maintain
+- these fdsets as if they belong to the CURLM object.
+- */
+-
+- rc = curl_multi_fdset(curlMultiP->curlMultiP,
+- &curlMultiP->readFdSet,
+- &curlMultiP->writeFdSet,
+- &curlMultiP->exceptFdSet,
+- maxFdP);
+-
+- *readFdSetP = curlMultiP->readFdSet;
+- *writeFdSetP = curlMultiP->writeFdSet;
+- *exceptFdSetP = curlMultiP->exceptFdSet;
+-
+- curlMultiP->lockP->unlock(curlMultiP->lockP);
+-
+- if (rc != CURLM_OK) {
+- const char * reason;
+- interpretCurlMultiError(&reason, rc);
+- xmlrpc_faultf(envP, "Impossible failure of curl_multi_fdset(): %s",
+- reason);
+- xmlrpc_strfree(reason);
+- }
+-}
+-
+-
+-
+-static void
+-curlMulti_updateFdSet(curlMulti * const curlMultiP,
+- fd_set const readFdSet,
+- fd_set const writeFdSet,
+- fd_set const exceptFdSet) {
+-/*----------------------------------------------------------------------------
+- curl_multi_perform() expects the file descriptor sets, which were bound
+- to the CURLM object via a prior curlMulti_fdset(), to contain the results
+- of a recent select(). This subroutine provides you a way to supply those.
+------------------------------------------------------------------------------*/
+- curlMultiP->readFdSet = readFdSet;
+- curlMultiP->writeFdSet = writeFdSet;
+- curlMultiP->exceptFdSet = exceptFdSet;
+-}
+-
+-
+-
+-static xmlrpc_timespec
+-pselectTimeout(xmlrpc_timeoutType const timeoutType,
+- xmlrpc_timespec const timeoutDt) {
+-/*----------------------------------------------------------------------------
+- Return the value that should be used in the select() call to wait for
+- there to be work for the Curl multi manager to do, given that the user
+- wants to timeout according to 'timeoutType' and 'timeoutDt'.
+------------------------------------------------------------------------------*/
+- unsigned int const million = 1000000;
+- unsigned int selectTimeoutMillisec;
+- xmlrpc_timespec retval;
+-
+- selectTimeoutMillisec = 0; /* quiet compiler warning */
+-
+- /* We assume there is work to do at least every 3 seconds, because
+- the Curl multi manager often has retries and other scheduled work
+- that doesn't involve file handles on which we can select().
+- */
+- switch (timeoutType) {
+- case timeout_no:
+- selectTimeoutMillisec = 3000;
+- break;
+- case timeout_yes: {
+- xmlrpc_timespec nowTime;
+- int timeLeft;
+-
+- xmlrpc_gettimeofday(&nowTime);
+- timeLeft = timeDiffMillisec(timeoutDt, nowTime);
+-
+- selectTimeoutMillisec = MIN(3000, MAX(0, timeLeft));
+- }
+- break;
+- }
+- retval.tv_sec = selectTimeoutMillisec / 1000;
+- retval.tv_nsec = (uint32_t)((selectTimeoutMillisec % 1000) * million);
+-
+- return retval;
+-}
+-
+-
+-
+-static void
+-processCurlMessages(xmlrpc_env * const envP,
+- curlMulti * const curlMultiP) {
+-
+- bool endOfMessages;
+-
+- endOfMessages = false; /* initial assumption */
+-
+- while (!endOfMessages && !envP->fault_occurred) {
+- CURLMsg curlMsg;
+-
+- curlMulti_getMessage(curlMultiP, &endOfMessages, &curlMsg);
+-
+- if (!endOfMessages) {
+- if (curlMsg.msg == CURLMSG_DONE) {
+- curlTransaction * curlTransactionP;
+-
+- curl_easy_getinfo(curlMsg.easy_handle, CURLINFO_PRIVATE,
+- &curlTransactionP);
+-
+- curlTransactionP->result = curlMsg.data.result;
+-
+- if (curlTransactionP->finish)
+- curlTransactionP->finish(envP, curlTransactionP);
+- }
+- }
+- }
++ curlTransaction_finish(envP,
++ curlTransactionP, curlMsg.data.result);
++ }
++ }
++ }
+ }
+
+
+@@ -1237,411 +470,141 @@ waitForWork(xmlrpc_env * const envP,
+ readFdSet, writeFdSet, exceptFdSet);
+ }
+ }
+- }
+-}
+-
+-
+-
+-static void
+-waitForWorkInt(xmlrpc_env * const envP,
+- curlMulti * const curlMultiP,
+- xmlrpc_timeoutType const timeoutType,
+- xmlrpc_timespec const deadline,
+- int * const interruptP) {
+-/*----------------------------------------------------------------------------
+- Same as waitForWork(), except we guarantee to return if a signal handler
+- sets or has set *interruptP, whereas waitForWork() can miss a signal
+- that happens before or just after it starts.
+-
+- We mess with global state -- the signal mask -- so we might mess up
+- a multithreaded program. Therefore, don't call this if
+- waitForWork() will suffice.
+------------------------------------------------------------------------------*/
+- sigset_t callerBlockSet;
+-#ifdef WIN32
+- waitForWork(envP, curlMultiP, timeoutType, deadline, &callerBlockSet);
+-#else
+- sigset_t allSignals;
+-
+- assert(interruptP != NULL);
+-
+- sigfillset(&allSignals);
+-
+- sigprocmask(SIG_BLOCK, &allSignals, &callerBlockSet);
+-
+- if (*interruptP == 0)
+- waitForWork(envP, curlMultiP, timeoutType, deadline, &callerBlockSet);
+-
+- sigprocmask(SIG_SETMASK, &callerBlockSet, NULL);
+-#endif
+-}
+-
+-
+-
+-static void
+-doCurlWork(xmlrpc_env * const envP,
+- curlMulti * const curlMultiP,
+- bool * const transStillRunningP) {
+-/*----------------------------------------------------------------------------
+- Do whatever work is ready to be done by the Curl multi manager
+- identified by 'curlMultiP'. This typically is transferring data on
+- an HTTP connection because the server is ready.
+-
+- For each transaction for which the multi manager finishes all the
+- required work, complete the transaction by calling its
+- "finish" routine.
+-
+- Return *transStillRunningP false if this work completes all of the
+- manager's transactions so that there is no reason to call us ever
+- again.
+------------------------------------------------------------------------------*/
+- bool immediateWorkToDo;
+- int runningHandles;
+-
+- immediateWorkToDo = true; /* initial assumption */
+-
+- while (immediateWorkToDo && !envP->fault_occurred) {
+- curlMulti_perform(envP, curlMultiP,
+- &immediateWorkToDo, &runningHandles);
+- }
+-
+- /* We either did all the work that's ready to do or hit an error. */
+-
+- if (!envP->fault_occurred) {
+- /* The work we did may have resulted in asynchronous messages
+- (asynchronous to the thing they refer to, not to us, of course).
+- In particular the message "Curl transaction has completed".
+- So we process those now.
+- */
+- processCurlMessages(envP, curlMultiP);
+-
+- *transStillRunningP = runningHandles > 0;
+- }
+-}
+-
+-
+-
+-static void
+-curlMulti_finish(xmlrpc_env * const envP,
+- curlMulti * const curlMultiP,
+- xmlrpc_timeoutType const timeoutType,
+- xmlrpc_timespec const deadline,
+- int * const interruptP) {
+-/*----------------------------------------------------------------------------
+- Prosecute all the Curl transactions under the control of
+- *curlMultiP. E.g. send data if server is ready to take it, get
+- data if server has sent some, wind up the transaction if it is
+- done.
+-
+- Don't return until all the Curl transactions are done or we time out.
+-
+- The *interruptP flag alone will not interrupt us. We will wait in
+- spite of it for all Curl transactions to complete. *interruptP
+- just gives us a hint that the Curl transactions are being
+- interrupted, so we know there is work to do for them. (The way it
+- works is Caller sets up a "progress" function that checks the same
+- interrupt flag and reports "kill me." When we see the interrupt
+- flag, we call that progress function and get the message).
+------------------------------------------------------------------------------*/
+- bool rpcStillRunning;
+- bool timedOut;
+-
+- rpcStillRunning = true; /* initial assumption */
+- timedOut = false;
+-
+- while (rpcStillRunning && !timedOut && !envP->fault_occurred) {
+-
+- if (interruptP) {
+- waitForWorkInt(envP, curlMultiP, timeoutType, deadline,
+- interruptP);
+- } else
+- waitForWork(envP, curlMultiP, timeoutType, deadline, NULL);
+-
+- if (!envP->fault_occurred) {
+- xmlrpc_timespec nowTime;
+-
+- /* doCurlWork() (among other things) finds Curl
+- transactions that user wants to abort and finishes
+- them.
+- */
+- doCurlWork(envP, curlMultiP, &rpcStillRunning);
+-
+- xmlrpc_gettimeofday(&nowTime);
+-
+- timedOut = (timeoutType == timeout_yes &&
+- timeIsAfter(nowTime, deadline));
+- }
+- }
+-}
+-
+-
+-
+-/*===========================================================================*/
+-
+-
+-static void
+-startCurlTransaction(xmlrpc_env * const envP,
+- curlTransaction * const curlTransactionP,
+- curlMulti * const curlMultiP,
+- finishCurlTransactionFn finish) {
+-
+- curlTransactionP->finish = finish;
+-
+- /* A Curl session is serial -- it processes zero or one transaction
+- at a time. We use the "private" attribute of the Curl session to
+- indicate which transaction it is presently processing. This is
+- important when the transaction finishes, because libcurl will just
+- tell us that something finished on a particular session, not that
+- a particular transaction finished.
+- */
+- curl_easy_setopt(curlTransactionP->curlSessionP, CURLOPT_PRIVATE,
+- curlTransactionP);
+-
+- curlMulti_addHandle(envP, curlMultiP, curlTransactionP);
+-}
+-
+-
+-
+-static void
+-getCurlTransactionError(curlTransaction * const curlTransactionP,
+- xmlrpc_env * const envP) {
+-
+- if (curlTransactionP->result != CURLE_OK) {
+- /* We've seen Curl just return a null string for an explanation
+- (e.g. when TCP connect() fails because IP address doesn't exist).
+- */
+- const char * explanation;
+-
+- if (strlen(curlTransactionP->curlError) == 0)
+- interpretCurlEasyError(&explanation, curlTransactionP->result);
+- else
+- xmlrpc_asprintf(&explanation, "%s", curlTransactionP->curlError);
+-
+- xmlrpc_env_set_fault_formatted(
+- envP, XMLRPC_NETWORK_ERROR, "libcurl failed to execute the "
+- "HTTP POST transaction. %s", explanation);
+-
+- xmlrpc_strfree(explanation);
+- } else {
+- CURLcode res;
+- long http_result;
+-
+- res = curl_easy_getinfo(curlTransactionP->curlSessionP,
+- CURLINFO_HTTP_CODE, &http_result);
+-
+- if (res != CURLE_OK)
+- xmlrpc_env_set_fault_formatted(
+- envP, XMLRPC_INTERNAL_ERROR,
+- "Curl performed the HTTP POST request, but was "
+- "unable to say what the HTTP result code was. "
+- "curl_easy_getinfo(CURLINFO_HTTP_CODE) says: %s",
+- curlTransactionP->curlError);
+- else {
+- if (http_result != 200)
+- xmlrpc_env_set_fault_formatted(
+- envP, XMLRPC_NETWORK_ERROR,
+- "HTTP response code is %ld, not 200",
+- http_result);
+- }
+- }
+-}
+-
+-
+-
+-static void
+-performCurlTransaction(xmlrpc_env * const envP,
+- curlTransaction * const curlTransactionP,
+- curlMulti * const curlMultiP,
+- int * const interruptP) {
+-
+- void * const finish = NULL;
+- /* We don't need a finish function because we're going to wait here
+- for the transaction to complete and then do the next step
+- ourselves.
+- */
+-
+- startCurlTransaction(envP, curlTransactionP, curlMultiP, finish);
+-
+- /* Failure here just means something screwy in the multi manager;
+- Above does not even begin to perform the HTTP transaction
+- */
+-
+- if (!envP->fault_occurred) {
+- xmlrpc_timespec const dummy = {0,0};
+-
+- curlMulti_finish(envP, curlMultiP, timeout_no, dummy, interruptP);
+-
+- /* Failure here just means something screwy in the multi
+- manager; any failure of the HTTP transaction would have been
+- recorded in *curlTransactionP.
+- */
+-
+- if (!envP->fault_occurred) {
+- /* Curl session completed OK. But did HTTP transaction
+- work?
+- */
+- getCurlTransactionError(curlTransactionP, envP);
+- }
+- /* If the CURL transaction is still going, removing the handle
+- here aborts it. At least it's supposed to. From what I've
+- seen in the Curl code in 2007, I don't think it does. I
+- couldn't get Curl maintainers interested in the problem,
+- except to say, "If you're right, there's a bug."
+- */
+- curlMulti_removeHandle(curlMultiP, curlTransactionP);
+- }
+-}
+-
+-
+-
+-struct xmlrpc_client_transport {
+- CURL * syncCurlSessionP;
+- /* Handle for a Curl library session object that we use for
+- all synchronous RPCs. An async RPC has one of its own,
+- and consequently does not share things such as persistent
+- connections and cookies with any other RPC.
+- */
+- lock * syncCurlSessionLockP;
+- /* Hold this lock while accessing or using *syncCurlSessionP.
+- You're using the session from the time you set any
+- attributes in it or start a transaction with it until any
+- transaction has finished and you've lost interest in any
+- attributes of the session.
+- */
+- curlMulti * syncCurlMultiP;
+- /* The Curl multi manager that this transport uses to execute
+- Curl transactions for RPCs requested via the synchronous
+- interface. The fact that there is never more than one such
+- transaction going at a time might make you wonder why a
+- "multi" manager is needed. The reason is that it is the only
+- interface in libcurl that gives us the flexibility to execute
+- the transaction with proper interruptibility. The only Curl
+- transaction ever attached to this multi manager is
+- 'syncCurlSessionP'.
+-
+- This is constant (the handle, not the object).
+- */
+- curlMulti * asyncCurlMultiP;
+- /* The Curl multi manager that this transport uses to execute
+- Curl transactions for RPCs requested via the asynchronous
+- interface. Note that there may be multiple such Curl transactions
+- simultaneously and one can't wait for a particular one to finish;
+- the collection of asynchronous RPCs are an indivisible mass.
+-
+- This is constant (the handle, not the object).
+- */
+- const char * userAgent;
+- /* Prefix for the User-Agent HTTP header, reflecting facilities
+- outside of Xmlrpc-c. The actual User-Agent header consists
+- of this prefix plus information about Xmlrpc-c. NULL means
+- none.
+-
+- This is constant.
+- */
+- struct curlSetup curlSetupStuff;
+- /* This is constant */
+- int * interruptP;
+- /* Pointer to a value that user sets to nonzero to indicate he wants
+- the transport to give up on whatever it is doing and return ASAP.
++ }
++}
+
+- NULL means none -- transport never gives up.
+- */
+-};
+
+
++static void
++waitForWorkInt(xmlrpc_env * const envP,
++ curlMulti * const curlMultiP,
++ xmlrpc_timeoutType const timeoutType,
++ xmlrpc_timespec const deadline,
++ int * const interruptP) {
++/*----------------------------------------------------------------------------
++ Same as waitForWork(), except we guarantee to return if a signal handler
++ sets or has set *interruptP, whereas waitForWork() can miss a signal
++ that happens before or just after it starts.
+
+-struct rpc {
+- struct xmlrpc_client_transport * transportP;
+- /* The client XML transport that transports this RPC */
+- curlTransaction * curlTransactionP;
+- /* The object which does the HTTP transaction, with no knowledge
+- of XML-RPC or Xmlrpc-c.
+- */
+- xmlrpc_mem_block * responseXmlP;
+- /* Where the response XML for this RPC should go or has gone. */
+- xmlrpc_transport_asynch_complete complete;
+- /* Routine to call to complete the RPC after it is complete HTTP-wise.
+- NULL if none.
+- */
+- struct xmlrpc_call_info * callInfoP;
+- /* User's identifier for this RPC */
+-};
++ We mess with global state -- the signal mask -- so we might mess up
++ a multithreaded program. Therefore, don't call this if
++ waitForWork() will suffice.
++-----------------------------------------------------------------------------*/
++ sigset_t callerBlockSet;
++#ifdef WIN32
++ waitForWork(envP, curlMultiP, timeoutType, deadline, &callerBlockSet);
++#else
++ sigset_t allSignals;
+
++ assert(interruptP != NULL);
+
+-static void
+-lockSyncCurlSession(struct xmlrpc_client_transport * const transportP) {
+- transportP->syncCurlSessionLockP->lock(transportP->syncCurlSessionLockP);
++ sigfillset(&allSignals);
++
++ sigprocmask(SIG_BLOCK, &allSignals, &callerBlockSet);
++
++ if (*interruptP == 0)
++ waitForWork(envP, curlMultiP, timeoutType, deadline, &callerBlockSet);
++
++ sigprocmask(SIG_SETMASK, &callerBlockSet, NULL);
++#endif
+ }
+
+
+
+ static void
+-unlockSyncCurlSession(struct xmlrpc_client_transport * const transportP) {
+- transportP->syncCurlSessionLockP->unlock(transportP->syncCurlSessionLockP);
+-}
++doCurlWork(xmlrpc_env * const envP,
++ curlMulti * const curlMultiP,
++ bool * const transStillRunningP) {
++/*----------------------------------------------------------------------------
++ Do whatever work is ready to be done by the Curl multi manager
++ identified by 'curlMultiP'. This typically is transferring data on
++ an HTTP connection because the server is ready.
++
++ For each transaction for which the multi manager finishes all the
++ required work, complete the transaction by calling its
++ "finish" routine.
+
++ Return *transStillRunningP false if this work completes all of the
++ manager's transactions so that there is no reason to call us ever
++ again.
++-----------------------------------------------------------------------------*/
++ bool immediateWorkToDo;
++ int runningHandles;
+
++ immediateWorkToDo = true; /* initial assumption */
+
+-static void
+-initWindowsStuff(xmlrpc_env * const envP ATTR_UNUSED) {
++ while (immediateWorkToDo && !envP->fault_occurred) {
++ curlMulti_perform(envP, curlMultiP,
++ &immediateWorkToDo, &runningHandles);
++ }
+
+-#if defined (WIN32)
+- /* This is CRITICAL so that cURL-Win32 works properly! */
+-
+- /* So this commenter says, but I wonder why. libcurl should do the
+- required WSAStartup() itself, and it looks to me like it does.
+- -Bryan 06.01.01
+- */
+- WORD wVersionRequested;
+- WSADATA wsaData;
+- int err;
+- wVersionRequested = MAKEWORD(1, 1);
+-
+- err = WSAStartup(wVersionRequested, &wsaData);
+- if (err)
+- xmlrpc_env_set_fault_formatted(
+- envP, XMLRPC_INTERNAL_ERROR,
+- "Winsock startup failed. WSAStartup returned rc %d", err);
+- else {
+- if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1) {
+- /* Tell the user that we couldn't find a useable */
+- /* winsock.dll. */
+- xmlrpc_env_set_fault_formatted(
+- envP, XMLRPC_INTERNAL_ERROR, "Winsock reported that "
+- "it does not implement the requested version 1.1.");
+- }
+- if (envP->fault_occurred)
+- WSACleanup();
++ /* We either did all the work that's ready to do or hit an error. */
++
++ if (!envP->fault_occurred) {
++ /* The work we did may have resulted in asynchronous messages
++ (asynchronous to the thing they refer to, not to us, of course).
++ In particular the message "Curl transaction has completed".
++ So we process those now.
++ */
++ processCurlMessages(envP, curlMultiP);
++
++ *transStillRunningP = runningHandles > 0;
+ }
+-#endif
+ }
+
+
+
+ static void
+-termWindowsStuff(void) {
+-
+-#if defined (WIN32)
+- WSACleanup();
+-#endif
+-}
++finishCurlMulti(xmlrpc_env * const envP,
++ curlMulti * const curlMultiP,
++ xmlrpc_timeoutType const timeoutType,
++ xmlrpc_timespec const deadline,
++ int * const interruptP) {
++/*----------------------------------------------------------------------------
++ Prosecute all the Curl transactions under the control of
++ *curlMultiP. E.g. send data if server is ready to take it, get
++ data if server has sent some, wind up the transaction if it is
++ done.
+
++ Don't return until all the Curl transactions are done or we time out.
+
++ The *interruptP flag alone will not interrupt us. We will wait in
++ spite of it for all Curl transactions to complete. *interruptP
++ just gives us a hint that the Curl transactions are being
++ interrupted, so we know there is work to do for them. (The way it
++ works is Caller sets up a "progress" function that checks the same
++ interrupt flag and reports "kill me." When we see the interrupt
++ flag, we call that progress function and get the message).
++-----------------------------------------------------------------------------*/
++ bool rpcStillRunning;
++ bool timedOut;
+
+-static bool
+-curlHasNosignal(void) {
++ rpcStillRunning = true; /* initial assumption */
++ timedOut = false;
++
++ while (rpcStillRunning && !timedOut && !envP->fault_occurred) {
+
+- bool retval;
++ if (interruptP) {
++ waitForWorkInt(envP, curlMultiP, timeoutType, deadline,
++ interruptP);
++ } else
++ waitForWork(envP, curlMultiP, timeoutType, deadline, NULL);
+
+-#if HAVE_CURL_NOSIGNAL
+- curl_version_info_data * const curlInfoP =
+- curl_version_info(CURLVERSION_NOW);
++ if (!envP->fault_occurred) {
++ xmlrpc_timespec nowTime;
+
+- retval = (curlInfoP->version_num >= 0x070A00); /* 7.10.0 */
+-#else
+- retval = false;
+-#endif
+- return retval;
++ /* doCurlWork() (among other things) finds Curl
++ transactions that user wants to abort and finishes
++ them.
++ */
++ doCurlWork(envP, curlMultiP, &rpcStillRunning);
++
++ xmlrpc_gettimeofday(&nowTime);
++
++ timedOut = (timeoutType == timeout_yes &&
++ timeIsAfter(nowTime, deadline));
++ }
++ }
+ }
+
+
+@@ -1657,7 +620,8 @@ getTimeoutParm(xmlrpc_env * const envP,
+ else {
+ if (curlHasNosignal()) {
+ /* libcurl takes a 'long' in milliseconds for the timeout value */
+- if ((curlXportParmsP->timeout + 999) / 1000 > LONG_MAX)
++ if ((unsigned)(long)(curlXportParmsP->timeout) !=
++ curlXportParmsP->timeout)
+ xmlrpc_faultf(envP, "Timeout value %u is too large.",
+ curlXportParmsP->timeout);
+ else
+@@ -1673,6 +637,19 @@ getTimeoutParm(xmlrpc_env * const envP,
+
+
+ static void
++setVerbose(bool * const verboseP) {
++
++ const char * const xmlrpcTraceCurl = getenv("XMLRPC_TRACE_CURL");
++
++ if (xmlrpcTraceCurl)
++ *verboseP = true;
++ else
++ *verboseP = false;
++}
++
++
++
++static void
+ getXportParms(xmlrpc_env * const envP,
+ const struct xmlrpc_curl_xportparms * const curlXportParmsP,
+ size_t const parmSize,
+@@ -1710,6 +687,11 @@ getXportParms(xmlrpc_env * const envP,
+ else
+ transportP->userAgent = strdup(curlXportParmsP->user_agent);
+
++ if (!curlXportParmsP || parmSize < XMLRPC_CXPSIZE(dont_advertise))
++ transportP->dontAdvertise = false;
++ else
++ transportP->dontAdvertise = curlXportParmsP->dont_advertise;
++
+ if (!curlXportParmsP || parmSize < XMLRPC_CXPSIZE(network_interface))
+ curlSetupP->networkInterface = NULL;
+ else if (curlXportParmsP->network_interface == NULL)
+@@ -1764,7 +746,7 @@ getXportParms(xmlrpc_env * const envP,
+ else
+ curlSetupP->sslKeyType = strdup(curlXportParmsP->sslkeytype);
+
+- if (!curlXportParmsP || parmSize < XMLRPC_CXPSIZE(sslkeypasswd))
++ if (!curlXportParmsP || parmSize < XMLRPC_CXPSIZE(sslkeypasswd))
+ curlSetupP->sslKeyPasswd = NULL;
+ else if (curlXportParmsP->sslkeypasswd == NULL)
+ curlSetupP->sslKeyPasswd = NULL;
+@@ -1823,6 +805,35 @@ getXportParms(xmlrpc_env * const envP,
+ else
+ curlSetupP->sslCipherList = strdup(curlXportParmsP->ssl_cipher_list);
+
++ if (!curlXportParmsP || parmSize < XMLRPC_CXPSIZE(proxy))
++ curlSetupP->proxy = NULL;
++ else if (curlXportParmsP->proxy == NULL)
++ curlSetupP->proxy = NULL;
++ else
++ curlSetupP->proxy = strdup(curlXportParmsP->proxy);
++
++ if (!curlXportParmsP || parmSize < XMLRPC_CXPSIZE(proxy_port))
++ curlSetupP->proxyPort = 8080;
++ else
++ curlSetupP->proxyPort = curlXportParmsP->proxy_port;
++
++ if (!curlXportParmsP || parmSize < XMLRPC_CXPSIZE(proxy_auth))
++ curlSetupP->proxyAuth = CURLAUTH_BASIC;
++ else
++ curlSetupP->proxyAuth = curlXportParmsP->proxy_auth;
++
++ if (!curlXportParmsP || parmSize < XMLRPC_CXPSIZE(proxy_userpwd))
++ curlSetupP->proxyUserPwd = NULL;
++ else if (curlXportParmsP->proxy_userpwd == NULL)
++ curlSetupP->proxyUserPwd = NULL;
++ else
++ curlSetupP->proxyUserPwd = strdup(curlXportParmsP->proxy_userpwd);
++
++ if (!curlXportParmsP || parmSize < XMLRPC_CXPSIZE(proxy_type))
++ curlSetupP->proxyType = CURLPROXY_HTTP;
++ else
++ curlSetupP->proxyType = curlXportParmsP->proxy_type;
++
+ getTimeoutParm(envP, curlXportParmsP, parmSize, &curlSetupP->timeout);
+ }
+
+@@ -1861,6 +872,10 @@ freeXportParms(const struct xmlrpc_client_transport * const transportP) {
+ xmlrpc_strfree(curlSetupP->networkInterface);
+ if (transportP->userAgent)
+ xmlrpc_strfree(transportP->userAgent);
++ if (curlSetupP->proxy)
++ xmlrpc_strfree(curlSetupP->proxy);
++ if (curlSetupP->proxyUserPwd)
++ xmlrpc_strfree(curlSetupP->proxyUserPwd);
+ }
+
+
+@@ -1921,7 +936,7 @@ static void
+ makeSyncCurlSession(xmlrpc_env * const envP,
+ struct xmlrpc_client_transport * const transportP) {
+
+- transportP->syncCurlSessionLockP = createLock_pthread();
++ transportP->syncCurlSessionLockP = curlLock_create_pthread();
+ if (transportP->syncCurlSessionLockP == NULL)
+ xmlrpc_faultf(envP, "Unable to create lock for "
+ "synchronous Curl session.");
+@@ -1976,12 +991,12 @@ create(xmlrpc_env * const envP,
+
+ struct xmlrpc_client_transport * transportP;
+
+- assertConstantsMatch();
+-
+ MALLOCVAR(transportP);
+ if (transportP == NULL)
+ xmlrpc_faultf(envP, "Unable to allocate transport descriptor.");
+ else {
++ setVerbose(&transportP->curlSetupStuff.verbose);
++
+ transportP->interruptP = NULL;
+
+ transportP->asyncCurlMultiP = curlMulti_create();
+@@ -2044,6 +1059,14 @@ static void
+ destroy(struct xmlrpc_client_transport * const clientTransportP) {
+ /*----------------------------------------------------------------------------
+ This does the 'destroy' operation for a Curl client transport.
++
++ An RPC is a reference to a client XML transport, so you may not
++ destroy a transport while RPCs are running. To ensure no
++ asynchronous RPCs are running, you must successfully execute the
++ transport 'finishAsync' method, with no interruptions or timeouts
++ allowed. To speed that up, you can set the transport's interrupt
++ flag to 1 first, which will make all outstanding RPCs fail
++ immediately.
+ -----------------------------------------------------------------------------*/
+ XMLRPC_ASSERT(clientTransportP != NULL);
+
+@@ -2070,6 +1093,64 @@ destroy(struct xmlrpc_client_transport * const clientTransportP) {
+
+
+ static void
++performCurlTransaction(xmlrpc_env * const envP,
++ curlTransaction * const curlTransactionP,
++ curlMulti * const curlMultiP,
++ int * const interruptP) {
++
++ curlMulti_addHandle(envP, curlMultiP,
++ curlTransaction_curlSession(curlTransactionP));
++
++ /* Failure here just means something screwy in the multi manager;
++ Above does not even begin to perform the HTTP transaction
++ */
++
++ if (!envP->fault_occurred) {
++ xmlrpc_timespec const dummy = {0,0};
++
++ finishCurlMulti(envP, curlMultiP, timeout_no, dummy, interruptP);
++
++ /* Failure here just means something screwy in the multi
++ manager; any failure of the HTTP transaction would have been
++ recorded in *curlTransactionP.
++ */
++
++ if (!envP->fault_occurred) {
++ /* Curl session completed OK. But did HTTP transaction
++ work?
++ */
++ curlTransaction_getError(curlTransactionP, envP);
++ }
++ /* If the CURL transaction is still going, removing the handle
++ here aborts it. At least it's supposed to. From what I've
++ seen in the Curl code in 2007, I don't think it does. I
++ couldn't get Curl maintainers interested in the problem,
++ except to say, "If you're right, there's a bug."
++ */
++ curlMulti_removeHandle(curlMultiP,
++ curlTransaction_curlSession(curlTransactionP));
++ }
++}
++
++
++
++static void
++startRpc(xmlrpc_env * const envP,
++ rpc * const rpcP) {
++
++ curlMulti_addHandle(envP,
++ rpcP->transportP->asyncCurlMultiP,
++ curlTransaction_curlSession(rpcP->curlTransactionP));
++}
++
++
++
++static curlt_finishFn finishRpcCurlTransaction;
++static curlt_progressFn curlTransactionProgress;
++
++
++
++static void
+ createRpc(xmlrpc_env * const envP,
+ struct xmlrpc_client_transport * const clientTransportP,
+ CURL * const curlSessionP,
+@@ -2077,6 +1158,7 @@ createRpc(xmlrpc_env * const envP,
+ xmlrpc_mem_block * const callXmlP,
+ xmlrpc_mem_block * const responseXmlP,
+ xmlrpc_transport_asynch_complete complete,
++ xmlrpc_transport_progress progress,
+ struct xmlrpc_call_info * const callInfoP,
+ rpc ** const rpcPP) {
+
+@@ -2087,18 +1169,22 @@ createRpc(xmlrpc_env * const envP,
+ xmlrpc_faultf(envP, "Couldn't allocate memory for rpc object");
+ else {
+ rpcP->transportP = clientTransportP;
++ rpcP->curlSessionP = curlSessionP;
+ rpcP->callInfoP = callInfoP;
+ rpcP->complete = complete;
++ rpcP->progress = progress;
+ rpcP->responseXmlP = responseXmlP;
+
+ curlTransaction_create(envP,
+ curlSessionP,
+ serverP,
+ callXmlP, responseXmlP,
++ clientTransportP->dontAdvertise,
+ clientTransportP->userAgent,
+ &clientTransportP->curlSetupStuff,
+ rpcP,
+- clientTransportP->interruptP,
++ complete ? &finishRpcCurlTransaction : NULL,
++ progress ? &curlTransactionProgress : NULL,
+ &rpcP->curlTransactionP);
+ if (!envP->fault_occurred) {
+ if (envP->fault_occurred)
+@@ -2136,11 +1222,11 @@ performRpc(xmlrpc_env * const envP,
+
+
+
+-static finishCurlTransactionFn finishRpcCurlTransaction;
++static curlt_finishFn finishRpcCurlTransaction;
+
+ static void
+-finishRpcCurlTransaction(xmlrpc_env * const envP ATTR_UNUSED,
+- curlTransaction * const curlTransactionP) {
++finishRpcCurlTransaction(xmlrpc_env * const envP ATTR_UNUSED,
++ void * const userContextP) {
+ /*----------------------------------------------------------------------------
+ Handle the event that a Curl transaction for an asynchronous RPC has
+ completed on the Curl session identified by 'curlSessionP'.
+@@ -2150,24 +1236,26 @@ finishRpcCurlTransaction(xmlrpc_env * const envP ATTR_UNUSED,
+ Remove the Curl session from its Curl multi manager and destroy the
+ Curl session, the XML response buffer, the Curl transaction, and the RPC.
+ -----------------------------------------------------------------------------*/
+- rpc * const rpcP = curlTransactionP->rpcP;
++ rpc * const rpcP = userContextP;
++ curlTransaction * const curlTransactionP = rpcP->curlTransactionP;
+ struct xmlrpc_client_transport * const transportP = rpcP->transportP;
+
++ curlMulti_removeHandle(transportP->asyncCurlMultiP,
++ curlTransaction_curlSession(curlTransactionP));
++
+ {
+ xmlrpc_env env;
+
+ xmlrpc_env_init(&env);
+
+- getCurlTransactionError(curlTransactionP, &env);
++ curlTransaction_getError(curlTransactionP, &env);
+
+ rpcP->complete(rpcP->callInfoP, rpcP->responseXmlP, env);
+
+ xmlrpc_env_clean(&env);
+ }
+
+- curlMulti_removeHandle(transportP->asyncCurlMultiP, curlTransactionP);
+-
+- curl_easy_cleanup(curlTransactionP->curlSessionP);
++ curl_easy_cleanup(rpcP->curlSessionP);
+
+ XMLRPC_MEMBLOCK_FREE(char, rpcP->responseXmlP);
+
+@@ -2176,14 +1264,49 @@ finishRpcCurlTransaction(xmlrpc_env * const envP ATTR_UNUSED,
+
+
+
++static curlt_progressFn curlTransactionProgress;
++
+ static void
+-startRpc(xmlrpc_env * const envP,
+- rpc * const rpcP) {
++curlTransactionProgress(void * const context,
++ double const dlTotal,
++ double const dlNow,
++ double const ulTotal,
++ double const ulNow,
++ bool * const abortP) {
++/*----------------------------------------------------------------------------
++ This is equivalent to a Curl "progress function" (the curlTransaction
++ object just passes through the call from libcurl).
++
++ The curlTransaction calls this once a second telling us how much
++ data has transferred. If the transport user has set up a progress
++ function, we call that with this progress information. That
++ function might e.g. display a progress bar.
++
++ Additionally, the curlTransaction gives us the opportunity to tell it
++ to abort the transaction, which we do if the user has set his
++ "interrupt" flag (which he registered with the transport when he
++ created it).
++-----------------------------------------------------------------------------*/
++ rpc * const rpcP = context;
++ struct xmlrpc_client_transport * const transportP = rpcP->transportP;
++
++ struct xmlrpc_progress_data progressData;
+
+- startCurlTransaction(envP,
+- rpcP->curlTransactionP,
+- rpcP->transportP->asyncCurlMultiP,
+- &finishRpcCurlTransaction);
++ assert(rpcP);
++ assert(transportP);
++ assert(rpcP->progress);
++
++ progressData.response.total = dlTotal;
++ progressData.response.now = dlNow;
++ progressData.call.total = ulTotal;
++ progressData.call.now = ulNow;
++
++ rpcP->progress(rpcP->callInfoP, progressData);
++
++ if (transportP->interruptP)
++ *abortP = *transportP->interruptP;
++ else
++ *abortP = false;
+ }
+
+
+@@ -2194,6 +1317,7 @@ sendRequest(xmlrpc_env * const envP,
+ const xmlrpc_server_info * const serverP,
+ xmlrpc_mem_block * const callXmlP,
+ xmlrpc_transport_asynch_complete complete,
++ xmlrpc_transport_progress progress,
+ struct xmlrpc_call_info * const callInfoP) {
+ /*----------------------------------------------------------------------------
+ Initiate an XML-RPC rpc asynchronously. Don't wait for it to go to
+@@ -2216,7 +1340,7 @@ sendRequest(xmlrpc_env * const envP,
+ "curl_easy_init() failed.");
+ else {
+ createRpc(envP, clientTransportP, curlSessionP, serverP,
+- callXmlP, responseXmlP, complete, callInfoP,
++ callXmlP, responseXmlP, complete, progress, callInfoP,
+ &rpcP);
+
+ if (!envP->fault_occurred) {
+@@ -2282,19 +1406,19 @@ finishAsynch(
+ addMilliseconds(waitStartTime, timeout, &waitTimeoutTime);
+ }
+
+- curlMulti_finish(&env, clientTransportP->asyncCurlMultiP,
+- timeoutType, waitTimeoutTime,
+- clientTransportP->interruptP);
++ finishCurlMulti(&env, clientTransportP->asyncCurlMultiP,
++ timeoutType, waitTimeoutTime,
++ clientTransportP->interruptP);
+
+ /* If the above fails, it is catastrophic, because it means there is
+ no way to complete outstanding Curl transactions and RPCs, and
+ no way to release their resources.
+
+ We should at least expand this interface some day to push the
+- problem back up the user, but for now we just do this Hail Mary
++ problem back up to the user, but for now we just do this Hail Mary
+ response.
+
+- Note that a failure of curlMult_finish() does not mean that
++ Note that a failure of finish_curlMulti() does not mean that
+ a session completed with an error or an RPC completed with an
+ error. Those things are reported up through the user's
+ xmlrpc_transport_asynch_complete routine. A failure here is
+@@ -2339,7 +1463,7 @@ call(xmlrpc_env * const envP,
+ createRpc(envP, clientTransportP, clientTransportP->syncCurlSessionP,
+ serverP,
+ callXmlP, responseXmlP,
+- NULL, NULL,
++ NULL, NULL, NULL,
+ &rpcP);
+
+ if (!envP->fault_occurred) {
+diff --git a/libs/xmlrpc-c/lib/curl_transport/xmlrpc_curl_transport.h b/libs/xmlrpc-c/lib/curl_transport/xmlrpc_curl_transport.h
+deleted file mode 100644
+index 1425add..0000000
+--- a/libs/xmlrpc-c/lib/curl_transport/xmlrpc_curl_transport.h
++++ /dev/null
+@@ -1,8 +0,0 @@
+-#ifndef XMLRPC_CURL_TRANSPORT_H
+-#define XMLRPC_CURL_TRANSPORT_H
+-
+-#include "xmlrpc-c/transport.h"
+-
+-extern struct xmlrpc_client_transport_ops xmlrpc_curl_transport_ops;
+-
+-#endif
+diff --git a/libs/xmlrpc-c/lib/expat/.cvsignore b/libs/xmlrpc-c/lib/expat/.cvsignore
+deleted file mode 100644
+index f3c7a7c..0000000
+--- a/libs/xmlrpc-c/lib/expat/.cvsignore
++++ /dev/null
+@@ -1 +0,0 @@
+-Makefile
+diff --git a/libs/xmlrpc-c/lib/expat/Makefile.in b/libs/xmlrpc-c/lib/expat/Makefile.in
+deleted file mode 100644
+index 121de36..0000000
+--- a/libs/xmlrpc-c/lib/expat/Makefile.in
++++ /dev/null
+@@ -1,314 +0,0 @@
+-# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+-# This Makefile.in is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+-# PARTICULAR PURPOSE.
+-
+-
+-SHELL = @SHELL@
+-
+-srcdir = @srcdir@
+-top_srcdir = @top_srcdir@
+-VPATH = @srcdir@
+-prefix = @prefix@
+-exec_prefix = @exec_prefix@
+-
+-bindir = @bindir@
+-sbindir = @sbindir@
+-libexecdir = @libexecdir@
+-datadir = @datadir@
+-sysconfdir = @sysconfdir@
+-sharedstatedir = @sharedstatedir@
+-localstatedir = @localstatedir@
+-libdir = @libdir@
+-infodir = @infodir@
+-mandir = @mandir@
+-includedir = @includedir@
+-oldincludedir = /usr/include
+-
+-DESTDIR =
+-
+-pkgdatadir = $(datadir)/@PACKAGE@
+-pkglibdir = $(libdir)/@PACKAGE@
+-pkgincludedir = $(includedir)/@PACKAGE@
+-
+-top_builddir = ../..
+-
+-ACLOCAL = @ACLOCAL@
+-AUTOCONF = @AUTOCONF@
+-AUTOHEADER = @AUTOHEADER@
+-
+-INSTALL = @INSTALL@
+-INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
+-INSTALL_DATA = @INSTALL_DATA@
+-INSTALL_SCRIPT = @INSTALL_SCRIPT@
+-transform = @program_transform_name@
+-
+-NORMAL_INSTALL = :
+-PRE_INSTALL = :
+-POST_INSTALL = :
+-NORMAL_UNINSTALL = :
+-PRE_UNINSTALL = :
+-POST_UNINSTALL = :
+-host_alias = @host_alias@
+-host_triplet = @host@
+-ABYSS_SUBDIR = @ABYSS_SUBDIR@
+-AS = @AS@
+-ASYNCH_CLIENT = @ASYNCH_CLIENT@
+-AUTH_CLIENT = @AUTH_CLIENT@
+-AVAILABLE_MODULES = @AVAILABLE_MODULES@
+-CC = @CC@
+-CC_WARN_FLAGS = @CC_WARN_FLAGS@
+-CLIENTTEST = @CLIENTTEST@
+-CONFIGURE_DATE = @CONFIGURE_DATE@
+-CPPTEST = @CPPTEST@
+-CPP_WARN_FLAGS = @CPP_WARN_FLAGS@
+-CXX = @CXX@
+-DLLTOOL = @DLLTOOL@
+-EFRPCTEST = @EFRPCTEST@
+-EFRPCTEST_WRAPPER = @EFRPCTEST_WRAPPER@
+-INTEROP_CGI = @INTEROP_CGI@
+-INTEROP_CLIENT_SUBDIR = @INTEROP_CLIENT_SUBDIR@
+-LIBTOOL = @LIBTOOL@
+-LIBWWW_CFLAGS = @LIBWWW_CFLAGS@
+-LIBWWW_CONFIG = @LIBWWW_CONFIG@
+-LIBWWW_LDADD = @LIBWWW_LDADD@
+-LIBWWW_LIBDIR = @LIBWWW_LIBDIR@
+-LIBWWW_RPATH = @LIBWWW_RPATH@
+-LIBWWW_WL_RPATH = @LIBWWW_WL_RPATH@
+-LIBXMLRPC_ABYSS_SERVER_LA = @LIBXMLRPC_ABYSS_SERVER_LA@
+-LIBXMLRPC_CGI_LA = @LIBXMLRPC_CGI_LA@
+-LIBXMLRPC_CLIENT_LA = @LIBXMLRPC_CLIENT_LA@
+-LIBXMLRPC_CPP_A = @LIBXMLRPC_CPP_A@
+-LN_S = @LN_S@
+-MAKEINFO = @MAKEINFO@
+-MEERKAT_APP_LIST = @MEERKAT_APP_LIST@
+-OBJDUMP = @OBJDUMP@
+-PACKAGE = @PACKAGE@
+-QUERY_MEERKAT = @QUERY_MEERKAT@
+-RANLIB = @RANLIB@
+-SAMPLE_CGI_CGI = @SAMPLE_CGI_CGI@
+-SERVER = @SERVER@
+-SERVERTEST = @SERVERTEST@
+-SYNCH_CLIENT = @SYNCH_CLIENT@
+-VALIDATEE = @VALIDATEE@
+-VERSION = @VERSION@
+-VERSION_INFO = @VERSION_INFO@
+-XMLRPCCPP_H = @XMLRPCCPP_H@
+-XMLRPC_ABYSS_H = @XMLRPC_ABYSS_H@
+-XMLRPC_CGI_H = @XMLRPC_CGI_H@
+-XMLRPC_CLIENT_H = @XMLRPC_CLIENT_H@
+-XML_RPC_API2CPP_SUBDIR = @XML_RPC_API2CPP_SUBDIR@
+-
+-SUBDIRS = gennmtab xmltok xmlparse xmlwf sample
+-EXTRA_DIST = expat.html expat.dsw
+-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+-CONFIG_HEADER = ../../xmlrpc_config.h
+-CONFIG_CLEAN_FILES =
+-DIST_COMMON = Makefile.in
+-
+-DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
+-
+-TAR = gtar
+-GZIP_ENV = --best
+-all: all-redirect
+-.SUFFIXES:
+-
+-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+- cd $(top_builddir) \
+- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+-
+-
+-# This directory's subdirectories are mostly independent; you can cd
+-# into them and run `make' without going through this Makefile.
+-# To change the values of `make' variables: instead of editing Makefiles,
+-# (1) if the variable is set in `config.status', edit `config.status'
+-# (which will cause the Makefiles to be regenerated when you run `make');
+-# (2) otherwise, pass the desired values on the `make' command line.
+-
+-@SET_MAKE@
+-
+-all-recursive install-data-recursive install-exec-recursive \
+-installdirs-recursive install-recursive uninstall-recursive \
+-check-recursive installcheck-recursive info-recursive dvi-recursive:
+- @set fnord $(MAKEFLAGS); amf=$$2; \
+- dot_seen=no; \
+- target=`echo $@ | sed s/-recursive//`; \
+- list='$(SUBDIRS)'; for subdir in $$list; do \
+- echo "Making $$target in $$subdir"; \
+- if test "$$subdir" = "."; then \
+- dot_seen=yes; \
+- local_target="$$target-am"; \
+- else \
+- local_target="$$target"; \
+- fi; \
+- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+- done; \
+- if test "$$dot_seen" = "no"; then \
+- $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+- fi; test -z "$$fail"
+-
+-mostlyclean-recursive clean-recursive distclean-recursive \
+-maintainer-clean-recursive:
+- @set fnord $(MAKEFLAGS); amf=$$2; \
+- dot_seen=no; \
+- rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
+- rev="$$subdir $$rev"; \
+- test "$$subdir" = "." && dot_seen=yes; \
+- done; \
+- test "$$dot_seen" = "no" && rev=". $$rev"; \
+- target=`echo $@ | sed s/-recursive//`; \
+- for subdir in $$rev; do \
+- echo "Making $$target in $$subdir"; \
+- if test "$$subdir" = "."; then \
+- local_target="$$target-am"; \
+- else \
+- local_target="$$target"; \
+- fi; \
+- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+- done && test -z "$$fail"
+-tags-recursive:
+- list='$(SUBDIRS)'; for subdir in $$list; do \
+- test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+- done
+-
+-tags: TAGS
+-
+-ID: $(HEADERS) $(SOURCES) $(LISP)
+- list='$(SOURCES) $(HEADERS)'; \
+- unique=`for i in $$list; do echo $$i; done | \
+- awk ' { files[$$0] = 1; } \
+- END { for (i in files) print i; }'`; \
+- here=`pwd` && cd $(srcdir) \
+- && mkid -f$$here/ID $$unique $(LISP)
+-
+-TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
+- tags=; \
+- here=`pwd`; \
+- list='$(SUBDIRS)'; for subdir in $$list; do \
+- if test "$$subdir" = .; then :; else \
+- test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
+- fi; \
+- done; \
+- list='$(SOURCES) $(HEADERS)'; \
+- unique=`for i in $$list; do echo $$i; done | \
+- awk ' { files[$$0] = 1; } \
+- END { for (i in files) print i; }'`; \
+- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
+- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
+-
+-mostlyclean-tags:
+-
+-clean-tags:
+-
+-distclean-tags:
+- -rm -f TAGS ID
+-
+-maintainer-clean-tags:
+-
+-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
+-
+-subdir = lib/expat
+-
+-distdir: $(DISTFILES)
+- @for file in $(DISTFILES); do \
+- d=$(srcdir); \
+- if test -d $$d/$$file; then \
+- cp -pr $$d/$$file $(distdir)/$$file; \
+- else \
+- test -f $(distdir)/$$file \
+- || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+- || cp -p $$d/$$file $(distdir)/$$file || :; \
+- fi; \
+- done
+- for subdir in $(SUBDIRS); do \
+- if test "$$subdir" = .; then :; else \
+- test -d $(distdir)/$$subdir \
+- || mkdir $(distdir)/$$subdir \
+- || exit 1; \
+- chmod 777 $(distdir)/$$subdir; \
+- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(top_distdir) distdir=../$(distdir)/$$subdir distdir) \
+- || exit 1; \
+- fi; \
+- done
+-info-am:
+-info: info-recursive
+-dvi-am:
+-dvi: dvi-recursive
+-check-am: all-am
+-check: check-recursive
+-installcheck-am:
+-installcheck: installcheck-recursive
+-install-exec-am:
+-install-exec: install-exec-recursive
+-
+-install-data-am:
+-install-data: install-data-recursive
+-
+-install-am: all-am
+- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+-install: install-recursive
+-uninstall-am:
+-uninstall: uninstall-recursive
+-all-am: Makefile
+-all-redirect: all-recursive
+-install-strip:
+- $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
+-installdirs: installdirs-recursive
+-installdirs-am:
+-
+-
+-mostlyclean-generic:
+-
+-clean-generic:
+-
+-distclean-generic:
+- -rm -f Makefile $(CONFIG_CLEAN_FILES)
+- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+-
+-maintainer-clean-generic:
+-mostlyclean-am: mostlyclean-tags mostlyclean-generic
+-
+-mostlyclean: mostlyclean-recursive
+-
+-clean-am: clean-tags clean-generic mostlyclean-am
+-
+-clean: clean-recursive
+-
+-distclean-am: distclean-tags distclean-generic clean-am
+- -rm -f libtool
+-
+-distclean: distclean-recursive
+-
+-maintainer-clean-am: maintainer-clean-tags maintainer-clean-generic \
+- distclean-am
+- @echo "This command is intended for maintainers to use;"
+- @echo "it deletes files that may require special tools to rebuild."
+-
+-maintainer-clean: maintainer-clean-recursive
+-
+-.PHONY: install-data-recursive uninstall-data-recursive \
+-install-exec-recursive uninstall-exec-recursive installdirs-recursive \
+-uninstalldirs-recursive all-recursive check-recursive \
+-installcheck-recursive info-recursive dvi-recursive \
+-mostlyclean-recursive distclean-recursive clean-recursive \
+-maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
+-distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
+-dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
+-install-exec install-data-am install-data install-am install \
+-uninstall-am uninstall all-redirect all-am all installdirs-am \
+-installdirs mostlyclean-generic distclean-generic clean-generic \
+-maintainer-clean-generic clean mostlyclean distclean maintainer-clean
+-
+-
+-# Tell versions [3.59,3.63) of GNU make to not export all variables.
+-# Otherwise a system limit (for SysV at least) may be exceeded.
+-.NOEXPORT:
+-
+-dep:
+diff --git a/libs/xmlrpc-c/lib/expat/expat.dsw b/libs/xmlrpc-c/lib/expat/expat.dsw
+deleted file mode 100644
+index efc3322..0000000
+--- a/libs/xmlrpc-c/lib/expat/expat.dsw
++++ /dev/null
+@@ -1,74 +0,0 @@
+-Microsoft Developer Studio Workspace File, Format Version 6.00\r
+-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\r
+-\r
+-###############################################################################\r
+-\r
+-Project: "gennmtab"=.\gennmtab\gennmtab.dsp - Package Owner=<4>\r
+-\r
+-Package=<5>\r
+-{{{\r
+-}}}\r
+-\r
+-Package=<4>\r
+-{{{\r
+-}}}\r
+-\r
+-###############################################################################\r
+-\r
+-Project: "xmlparse"=.\xmlparse\xmlparse.dsp - Package Owner=<4>\r
+-\r
+-Package=<5>\r
+-{{{\r
+-}}}\r
+-\r
+-Package=<4>\r
+-{{{\r
+- Begin Project Dependency\r
+- Project_Dep_Name xmltok\r
+- End Project Dependency\r
+-}}}\r
+-\r
+-###############################################################################\r
+-\r
+-Project: "xmltok"=.\xmltok\xmltok.dsp - Package Owner=<4>\r
+-\r
+-Package=<5>\r
+-{{{\r
+-}}}\r
+-\r
+-Package=<4>\r
+-{{{\r
+- Begin Project Dependency\r
+- Project_Dep_Name gennmtab\r
+- End Project Dependency\r
+-}}}\r
+-\r
+-###############################################################################\r
+-\r
+-Project: "xmlwf"=.\xmlwf\xmlwf.dsp - Package Owner=<4>\r
+-\r
+-Package=<5>\r
+-{{{\r
+-}}}\r
+-\r
+-Package=<4>\r
+-{{{\r
+- Begin Project Dependency\r
+- Project_Dep_Name xmlparse\r
+- End Project Dependency\r
+-}}}\r
+-\r
+-###############################################################################\r
+-\r
+-Global:\r
+-\r
+-Package=<5>\r
+-{{{\r
+-}}}\r
+-\r
+-Package=<3>\r
+-{{{\r
+-}}}\r
+-\r
+-###############################################################################\r
+-\r
+diff --git a/libs/xmlrpc-c/lib/expat/gennmtab/.cvsignore b/libs/xmlrpc-c/lib/expat/gennmtab/.cvsignore
+deleted file mode 100644
+index b1f2027..0000000
+--- a/libs/xmlrpc-c/lib/expat/gennmtab/.cvsignore
++++ /dev/null
+@@ -1 +0,0 @@
+-gennmtab
+diff --git a/libs/xmlrpc-c/lib/expat/gennmtab/Makefile b/libs/xmlrpc-c/lib/expat/gennmtab/Makefile
+index 32e76b7..ebb100f 100644
+--- a/libs/xmlrpc-c/lib/expat/gennmtab/Makefile
++++ b/libs/xmlrpc-c/lib/expat/gennmtab/Makefile
+@@ -9,11 +9,9 @@ SUBDIR := lib/expat/gennmtab
+
+ include $(BLDDIR)/config.mk
+
+-CFLAGS = $(CFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
+-
+ LDFLAGS = $(LADD)
+
+-INCLUDES = -I$(BLDDIR) -I$(SRCDIR)/lib/util/include
++INCLUDES = -I$(BLDDIR) -Isrcdir/lib/util/include
+
+ default: all
+
+@@ -42,9 +40,9 @@ install:
+ dep: dep-common
+
+ gennmtab.o:%.o:%.c
+- $(BUILDTOOL_CC) -c $< -o $@ $(CFLAGS) $(INCLUDES)
++ $(BUILDTOOL_CC) -c $< -o $@ $(CFLAGS_ALL) $(INCLUDES)
+
+ gennmtab:%:%.o
+ $(BUILDTOOL_CCLD) -o $@ $(LDFLAGS) $^
+
+-include Makefile.depend
++include depend.mk
+diff --git a/libs/xmlrpc-c/lib/expat/gennmtab/gennmtab.dsp b/libs/xmlrpc-c/lib/expat/gennmtab/gennmtab.dsp
+deleted file mode 100644
+index 917dc44..0000000
+--- a/libs/xmlrpc-c/lib/expat/gennmtab/gennmtab.dsp
++++ /dev/null
+@@ -1,110 +0,0 @@
+-# Microsoft Developer Studio Project File - Name="gennmtab" - Package Owner=<4>
+-# Microsoft Developer Studio Generated Build File, Format Version 6.00
+-# ** DO NOT EDIT **
+-
+-# TARGTYPE "Win32 (x86) Console Application" 0x0103
+-
+-CFG=gennmtab - Win32 Release
+-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+-!MESSAGE use the Export Makefile command and run
+-!MESSAGE
+-!MESSAGE NMAKE /f "gennmtab.mak".
+-!MESSAGE
+-!MESSAGE You can specify a configuration when running NMAKE
+-!MESSAGE by defining the macro CFG on the command line. For example:
+-!MESSAGE
+-!MESSAGE NMAKE /f "gennmtab.mak" CFG="gennmtab - Win32 Release"
+-!MESSAGE
+-!MESSAGE Possible choices for configuration are:
+-!MESSAGE
+-!MESSAGE "gennmtab - Win32 Release" (based on "Win32 (x86) Console Application")
+-!MESSAGE "gennmtab - Win32 Debug" (based on "Win32 (x86) Console Application")
+-!MESSAGE
+-
+-# Begin Project
+-# PROP AllowPerConfigDependencies 0
+-# PROP Scc_ProjName "gennmtab"
+-# PROP Scc_LocalPath "."
+-CPP=cl.exe
+-RSC=rc.exe
+-
+-!IF "$(CFG)" == "gennmtab - Win32 Release"
+-
+-# PROP BASE Use_MFC 0
+-# PROP BASE Use_Debug_Libraries 0
+-# PROP BASE Output_Dir ".\Release"
+-# PROP BASE Intermediate_Dir ".\Release"
+-# PROP BASE Target_Dir "."
+-# PROP Use_MFC 0
+-# PROP Use_Debug_Libraries 0
+-# PROP Output_Dir "Release\gennmtab"
+-# PROP Intermediate_Dir "Release\gennmtab"
+-# PROP Ignore_Export_Lib 0
+-# PROP Target_Dir "."
+-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /FD /c
+-# ADD BASE RSC /l 0x809 /d "NDEBUG"
+-# ADD RSC /l 0x809 /d "NDEBUG"
+-BSC32=bscmake.exe
+-# ADD BASE BSC32 /nologo
+-# ADD BSC32 /nologo
+-LINK32=link.exe
+-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\Bin\gennmtab.exe"
+-# Begin Special Build Tool
+-SOURCE="$(InputPath)"
+-PostBuild_Cmds=..\..\..\Bin\gennmtab.exe >..\xmltok\nametab.h
+-# End Special Build Tool
+-
+-!ELSEIF "$(CFG)" == "gennmtab - Win32 Debug"
+-
+-# PROP BASE Use_MFC 0
+-# PROP BASE Use_Debug_Libraries 1
+-# PROP BASE Output_Dir ".\Debug"
+-# PROP BASE Intermediate_Dir ".\Debug"
+-# PROP BASE Target_Dir "."
+-# PROP Use_MFC 0
+-# PROP Use_Debug_Libraries 1
+-# PROP Output_Dir "Debug\gennmtab"
+-# PROP Intermediate_Dir "Debug\gennmtab"
+-# PROP Ignore_Export_Lib 0
+-# PROP Target_Dir "."
+-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /FD /c
+-# ADD BASE RSC /l 0x809 /d "_DEBUG"
+-# ADD RSC /l 0x809 /d "_DEBUG"
+-BSC32=bscmake.exe
+-# ADD BASE BSC32 /nologo
+-# ADD BSC32 /nologo
+-LINK32=link.exe
+-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386
+-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\..\..\Bin\gennmtabD.exe"
+-# Begin Special Build Tool
+-SOURCE="$(InputPath)"
+-PostBuild_Cmds=..\..\..\Bin\gennmtabD.exe >..\xmltok\nametab.h
+-# End Special Build Tool
+-
+-!ENDIF
+-
+-# Begin Target
+-
+-# Name "gennmtab - Win32 Release"
+-# Name "gennmtab - Win32 Debug"
+-# Begin Group "Source Files"
+-
+-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"
+-# Begin Source File
+-
+-SOURCE=.\gennmtab.c
+-# End Source File
+-# End Group
+-# Begin Group "Header Files"
+-
+-# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
+-# End Group
+-# Begin Group "Resource Files"
+-
+-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
+-# End Group
+-# End Target
+-# End Project
+diff --git a/libs/xmlrpc-c/lib/expat/sample/.cvsignore b/libs/xmlrpc-c/lib/expat/sample/.cvsignore
+deleted file mode 100644
+index f3c7a7c..0000000
+--- a/libs/xmlrpc-c/lib/expat/sample/.cvsignore
++++ /dev/null
+@@ -1 +0,0 @@
+-Makefile
+diff --git a/libs/xmlrpc-c/lib/expat/sample/Makefile.in b/libs/xmlrpc-c/lib/expat/sample/Makefile.in
+deleted file mode 100644
+index b6e338d..0000000
+--- a/libs/xmlrpc-c/lib/expat/sample/Makefile.in
++++ /dev/null
+@@ -1,208 +0,0 @@
+-# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+-# This Makefile.in is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+-# PARTICULAR PURPOSE.
+-
+-
+-SHELL = @SHELL@
+-
+-srcdir = @srcdir@
+-top_srcdir = @top_srcdir@
+-VPATH = @srcdir@
+-prefix = @prefix@
+-exec_prefix = @exec_prefix@
+-
+-bindir = @bindir@
+-sbindir = @sbindir@
+-libexecdir = @libexecdir@
+-datadir = @datadir@
+-sysconfdir = @sysconfdir@
+-sharedstatedir = @sharedstatedir@
+-localstatedir = @localstatedir@
+-libdir = @libdir@
+-infodir = @infodir@
+-mandir = @mandir@
+-includedir = @includedir@
+-oldincludedir = /usr/include
+-
+-DESTDIR =
+-
+-pkgdatadir = $(datadir)/@PACKAGE@
+-pkglibdir = $(libdir)/@PACKAGE@
+-pkgincludedir = $(includedir)/@PACKAGE@
+-
+-top_builddir = ../../..
+-
+-ACLOCAL = @ACLOCAL@
+-AUTOCONF = @AUTOCONF@
+-AUTOHEADER = @AUTOHEADER@
+-
+-INSTALL = @INSTALL@
+-INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
+-INSTALL_DATA = @INSTALL_DATA@
+-INSTALL_SCRIPT = @INSTALL_SCRIPT@
+-transform = @program_transform_name@
+-
+-NORMAL_INSTALL = :
+-PRE_INSTALL = :
+-POST_INSTALL = :
+-NORMAL_UNINSTALL = :
+-PRE_UNINSTALL = :
+-POST_UNINSTALL = :
+-host_alias = @host_alias@
+-host_triplet = @host@
+-ABYSS_SUBDIR = @ABYSS_SUBDIR@
+-AS = @AS@
+-ASYNCH_CLIENT = @ASYNCH_CLIENT@
+-AUTH_CLIENT = @AUTH_CLIENT@
+-AVAILABLE_MODULES = @AVAILABLE_MODULES@
+-CC = @CC@
+-CC_WARN_FLAGS = @CC_WARN_FLAGS@
+-CLIENTTEST = @CLIENTTEST@
+-CONFIGURE_DATE = @CONFIGURE_DATE@
+-CPPTEST = @CPPTEST@
+-CPP_WARN_FLAGS = @CPP_WARN_FLAGS@
+-CXX = @CXX@
+-DLLTOOL = @DLLTOOL@
+-EFRPCTEST = @EFRPCTEST@
+-EFRPCTEST_WRAPPER = @EFRPCTEST_WRAPPER@
+-INTEROP_CGI = @INTEROP_CGI@
+-INTEROP_CLIENT_SUBDIR = @INTEROP_CLIENT_SUBDIR@
+-LIBTOOL = @LIBTOOL@
+-LIBWWW_CFLAGS = @LIBWWW_CFLAGS@
+-LIBWWW_CONFIG = @LIBWWW_CONFIG@
+-LIBWWW_LDADD = @LIBWWW_LDADD@
+-LIBWWW_LIBDIR = @LIBWWW_LIBDIR@
+-LIBWWW_RPATH = @LIBWWW_RPATH@
+-LIBWWW_WL_RPATH = @LIBWWW_WL_RPATH@
+-LIBXMLRPC_ABYSS_SERVER_LA = @LIBXMLRPC_ABYSS_SERVER_LA@
+-LIBXMLRPC_CGI_LA = @LIBXMLRPC_CGI_LA@
+-LIBXMLRPC_CLIENT_LA = @LIBXMLRPC_CLIENT_LA@
+-LIBXMLRPC_CPP_A = @LIBXMLRPC_CPP_A@
+-LN_S = @LN_S@
+-MAKEINFO = @MAKEINFO@
+-MEERKAT_APP_LIST = @MEERKAT_APP_LIST@
+-OBJDUMP = @OBJDUMP@
+-PACKAGE = @PACKAGE@
+-QUERY_MEERKAT = @QUERY_MEERKAT@
+-RANLIB = @RANLIB@
+-SAMPLE_CGI_CGI = @SAMPLE_CGI_CGI@
+-SERVER = @SERVER@
+-SERVERTEST = @SERVERTEST@
+-SYNCH_CLIENT = @SYNCH_CLIENT@
+-VALIDATEE = @VALIDATEE@
+-VERSION = @VERSION@
+-VERSION_INFO = @VERSION_INFO@
+-XMLRPCCPP_H = @XMLRPCCPP_H@
+-XMLRPC_ABYSS_H = @XMLRPC_ABYSS_H@
+-XMLRPC_CGI_H = @XMLRPC_CGI_H@
+-XMLRPC_CLIENT_H = @XMLRPC_CLIENT_H@
+-XML_RPC_API2CPP_SUBDIR = @XML_RPC_API2CPP_SUBDIR@
+-
+-EXTRA_DIST = build.bat elements.c
+-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+-CONFIG_HEADER = ../../../xmlrpc_config.h
+-CONFIG_CLEAN_FILES =
+-DIST_COMMON = Makefile.in
+-
+-
+-DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
+-
+-TAR = gtar
+-GZIP_ENV = --best
+-all: all-redirect
+-.SUFFIXES:
+-
+-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+- cd $(top_builddir) \
+- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+-
+-tags: TAGS
+-TAGS:
+-
+-
+-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
+-
+-subdir = lib/expat/sample
+-
+-distdir: $(DISTFILES)
+- @for file in $(DISTFILES); do \
+- d=$(srcdir); \
+- if test -d $$d/$$file; then \
+- cp -pr $$d/$$file $(distdir)/$$file; \
+- else \
+- test -f $(distdir)/$$file \
+- || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+- || cp -p $$d/$$file $(distdir)/$$file || :; \
+- fi; \
+- done
+-info-am:
+-info: info-am
+-dvi-am:
+-dvi: dvi-am
+-check-am: all-am
+-check: check-am
+-installcheck-am:
+-installcheck: installcheck-am
+-install-exec-am:
+-install-exec: install-exec-am
+-
+-install-data-am:
+-install-data: install-data-am
+-
+-install-am: all-am
+- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+-install: install-am
+-uninstall-am:
+-uninstall: uninstall-am
+-all-am: Makefile
+-all-redirect: all-am
+-install-strip:
+- $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
+-installdirs:
+-
+-
+-mostlyclean-generic:
+-
+-clean-generic:
+-
+-distclean-generic:
+- -rm -f Makefile $(CONFIG_CLEAN_FILES)
+- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+-
+-maintainer-clean-generic:
+-mostlyclean-am: mostlyclean-generic
+-
+-mostlyclean: mostlyclean-am
+-
+-clean-am: clean-generic mostlyclean-am
+-
+-clean: clean-am
+-
+-distclean-am: distclean-generic clean-am
+- -rm -f libtool
+-
+-distclean: distclean-am
+-
+-maintainer-clean-am: maintainer-clean-generic distclean-am
+- @echo "This command is intended for maintainers to use;"
+- @echo "it deletes files that may require special tools to rebuild."
+-
+-maintainer-clean: maintainer-clean-am
+-
+-.PHONY: tags distdir info-am info dvi-am dvi check check-am \
+-installcheck-am installcheck install-exec-am install-exec \
+-install-data-am install-data install-am install uninstall-am uninstall \
+-all-redirect all-am all installdirs mostlyclean-generic \
+-distclean-generic clean-generic maintainer-clean-generic clean \
+-mostlyclean distclean maintainer-clean
+-
+-
+-# Tell versions [3.59,3.63) of GNU make to not export all variables.
+-# Otherwise a system limit (for SysV at least) may be exceeded.
+-.NOEXPORT:
+diff --git a/libs/xmlrpc-c/lib/expat/sample/build.bat b/libs/xmlrpc-c/lib/expat/sample/build.bat
+deleted file mode 100644
+index 8cf3048..0000000
+--- a/libs/xmlrpc-c/lib/expat/sample/build.bat
++++ /dev/null
+@@ -1,4 +0,0 @@
+-@echo off\r
+-set LIB=..\xmlparse\Release;..\lib;%LIB%\r
+-cl /nologo /DXMLTOKAPI=__declspec(dllimport) /DXMLPARSEAPI=__declspec(dllimport) /I..\xmlparse /Fe..\bin\elements elements.c xmlparse.lib\r
+-@echo Run it using: ..\bin\elements ^<..\expat.html\r
+diff --git a/libs/xmlrpc-c/lib/expat/sample/elements.c b/libs/xmlrpc-c/lib/expat/sample/elements.c
+deleted file mode 100644
+index 42745c4..0000000
+--- a/libs/xmlrpc-c/lib/expat/sample/elements.c
++++ /dev/null
+@@ -1,46 +0,0 @@
+-/* This is simple demonstration of how to use expat. This program
+-reads an XML document from standard input and writes a line with the
+-name of each element to standard output indenting child elements by
+-one tab stop more than their parent element. */
+-
+-#include <stdio.h>
+-#include "xmlparse.h"
+-
+-void startElement(void *userData, const char *name, const char **atts)
+-{
+- int i;
+- int *depthPtr = userData;
+- for (i = 0; i < *depthPtr; i++)
+- putchar('\t');
+- puts(name);
+- *depthPtr += 1;
+-}
+-
+-void endElement(void *userData, const char *name)
+-{
+- int *depthPtr = userData;
+- *depthPtr -= 1;
+-}
+-
+-int main()
+-{
+- char buf[BUFSIZ];
+- XML_Parser parser = XML_ParserCreate(NULL);
+- int done;
+- int depth = 0;
+- XML_SetUserData(parser, &depth);
+- XML_SetElementHandler(parser, startElement, endElement);
+- do {
+- size_t len = fread(buf, 1, sizeof(buf), stdin);
+- done = len < sizeof(buf);
+- if (!XML_Parse(parser, buf, len, done)) {
+- fprintf(stderr,
+- "%s at line %d\n",
+- XML_ErrorString(XML_GetErrorCode(parser)),
+- XML_GetCurrentLineNumber(parser));
+- return 1;
+- }
+- } while (!done);
+- XML_ParserFree(parser);
+- return 0;
+-}
+diff --git a/libs/xmlrpc-c/lib/expat/xmlparse/.cvsignore b/libs/xmlrpc-c/lib/expat/xmlparse/.cvsignore
+deleted file mode 100644
+index f3c7a7c..0000000
+--- a/libs/xmlrpc-c/lib/expat/xmlparse/.cvsignore
++++ /dev/null
+@@ -1 +0,0 @@
+-Makefile
+diff --git a/libs/xmlrpc-c/lib/expat/xmlparse/Makefile.in b/libs/xmlrpc-c/lib/expat/xmlparse/Makefile.in
+deleted file mode 100644
+index 3e715af..0000000
+--- a/libs/xmlrpc-c/lib/expat/xmlparse/Makefile.in
++++ /dev/null
+@@ -1,344 +0,0 @@
+-# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+-# This Makefile.in is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+-# PARTICULAR PURPOSE.
+-
+-
+-SHELL = @SHELL@
+-
+-srcdir = @srcdir@
+-top_srcdir = @top_srcdir@
+-VPATH = @srcdir@
+-prefix = @prefix@
+-exec_prefix = @exec_prefix@
+-
+-bindir = @bindir@
+-sbindir = @sbindir@
+-libexecdir = @libexecdir@
+-datadir = @datadir@
+-sysconfdir = @sysconfdir@
+-sharedstatedir = @sharedstatedir@
+-localstatedir = @localstatedir@
+-libdir = @libdir@
+-infodir = @infodir@
+-mandir = @mandir@
+-includedir = @includedir@
+-oldincludedir = /usr/include
+-
+-DESTDIR =
+-
+-pkgdatadir = $(datadir)/@PACKAGE@
+-pkglibdir = $(libdir)/@PACKAGE@
+-pkgincludedir = $(includedir)/@PACKAGE@
+-
+-top_builddir = ../../..
+-
+-ACLOCAL = @ACLOCAL@
+-AUTOCONF = @AUTOCONF@
+-AUTOHEADER = @AUTOHEADER@
+-
+-INSTALL = @INSTALL@
+-INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
+-INSTALL_DATA = @INSTALL_DATA@
+-INSTALL_SCRIPT = @INSTALL_SCRIPT@
+-transform = @program_transform_name@
+-
+-NORMAL_INSTALL = :
+-PRE_INSTALL = :
+-POST_INSTALL = :
+-NORMAL_UNINSTALL = :
+-PRE_UNINSTALL = :
+-POST_UNINSTALL = :
+-host_alias = @host_alias@
+-host_triplet = @host@
+-ABYSS_SUBDIR = @ABYSS_SUBDIR@
+-AS = @AS@
+-ASYNCH_CLIENT = @ASYNCH_CLIENT@
+-AUTH_CLIENT = @AUTH_CLIENT@
+-AVAILABLE_MODULES = @AVAILABLE_MODULES@
+-CC = @CC@
+-CC_WARN_FLAGS = @CC_WARN_FLAGS@
+-CLIENTTEST = @CLIENTTEST@
+-CONFIGURE_DATE = @CONFIGURE_DATE@
+-CPPTEST = @CPPTEST@
+-CPP_WARN_FLAGS = @CPP_WARN_FLAGS@
+-CXX = @CXX@
+-DLLTOOL = @DLLTOOL@
+-EFRPCTEST = @EFRPCTEST@
+-EFRPCTEST_WRAPPER = @EFRPCTEST_WRAPPER@
+-INTEROP_CGI = @INTEROP_CGI@
+-INTEROP_CLIENT_SUBDIR = @INTEROP_CLIENT_SUBDIR@
+-LIBTOOL = @LIBTOOL@
+-LIBWWW_CFLAGS = @LIBWWW_CFLAGS@
+-LIBWWW_CONFIG = @LIBWWW_CONFIG@
+-LIBWWW_LDADD = @LIBWWW_LDADD@
+-LIBWWW_LIBDIR = @LIBWWW_LIBDIR@
+-LIBWWW_RPATH = @LIBWWW_RPATH@
+-LIBWWW_WL_RPATH = @LIBWWW_WL_RPATH@
+-LIBXMLRPC_ABYSS_SERVER_LA = @LIBXMLRPC_ABYSS_SERVER_LA@
+-LIBXMLRPC_CGI_LA = @LIBXMLRPC_CGI_LA@
+-LIBXMLRPC_CLIENT_LA = @LIBXMLRPC_CLIENT_LA@
+-LIBXMLRPC_CPP_A = @LIBXMLRPC_CPP_A@
+-LN_S = @LN_S@
+-MAKEINFO = @MAKEINFO@
+-MEERKAT_APP_LIST = @MEERKAT_APP_LIST@
+-OBJDUMP = @OBJDUMP@
+-PACKAGE = @PACKAGE@
+-QUERY_MEERKAT = @QUERY_MEERKAT@
+-RANLIB = @RANLIB@
+-SAMPLE_CGI_CGI = @SAMPLE_CGI_CGI@
+-SERVER = @SERVER@
+-SERVERTEST = @SERVERTEST@
+-SYNCH_CLIENT = @SYNCH_CLIENT@
+-VALIDATEE = @VALIDATEE@
+-VERSION = @VERSION@
+-VERSION_INFO = @VERSION_INFO@
+-XMLRPCCPP_H = @XMLRPCCPP_H@
+-XMLRPC_ABYSS_H = @XMLRPC_ABYSS_H@
+-XMLRPC_CGI_H = @XMLRPC_CGI_H@
+-XMLRPC_CLIENT_H = @XMLRPC_CLIENT_H@
+-XML_RPC_API2CPP_SUBDIR = @XML_RPC_API2CPP_SUBDIR@
+-
+-INCLUDES = -I$(srcdir)/../xmltok
+-
+-lib_LTLIBRARIES = libxmlrpc_xmlparse.la
+-
+-libxmlrpc_xmlparse_la_SOURCES = xmlparse.c xmlparse.h
+-libxmlrpc_xmlparse_la_LDFLAGS = @VERSION_INFO@
+-
+-EXTRA_DIST = xmlparse.dsp
+-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+-CONFIG_HEADER = ../../../xmlrpc_config.h
+-CONFIG_CLEAN_FILES =
+-LTLIBRARIES = $(lib_LTLIBRARIES)
+-
+-
+-DEFS = @DEFS@ -I. -I$(srcdir) -I../../..
+-CPPFLAGS = @CPPFLAGS@
+-LDFLAGS = @LDFLAGS@
+-LIBS = @LIBS@
+-libxmlrpc_xmlparse_la_LIBADD =
+-libxmlrpc_xmlparse_la_OBJECTS = xmlparse.lo
+-COMPILER_CFLAGS = @COMPILER_CFLAGS@
+-CFLAGS = @CFLAGS@ $(COMPILER_CFLAGS)
+-COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+-CCLD = $(CC)
+-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
+-DIST_COMMON = Makefile.in
+-
+-
+-DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
+-
+-TAR = gtar
+-GZIP_ENV = --best
+-SOURCES = $(libxmlrpc_xmlparse_la_SOURCES)
+-OBJECTS = $(libxmlrpc_xmlparse_la_OBJECTS)
+-
+-all: all-redirect
+-.SUFFIXES:
+-.SUFFIXES: .S .c .lo .o .s
+-
+-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+- cd $(top_builddir) \
+- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+-
+-
+-mostlyclean-libLTLIBRARIES:
+-
+-clean-libLTLIBRARIES:
+- -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+-
+-distclean-libLTLIBRARIES:
+-
+-maintainer-clean-libLTLIBRARIES:
+-
+-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+- @$(NORMAL_INSTALL)
+- $(mkinstalldirs) $(DESTDIR)$(libdir)
+- @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+- if test -f $$p; then \
+- echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p"; \
+- $(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p; \
+- else :; fi; \
+- done
+-
+-uninstall-libLTLIBRARIES:
+- @$(NORMAL_UNINSTALL)
+- list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
+- done
+-
+-.c.o:
+- $(COMPILE) -c $<
+-
+-.s.o:
+- $(COMPILE) -c $<
+-
+-.S.o:
+- $(COMPILE) -c $<
+-
+-mostlyclean-compile:
+- -rm -f *.o core *.core
+-
+-clean-compile:
+-
+-distclean-compile:
+- -rm -f *.tab.c
+-
+-maintainer-clean-compile:
+-
+-.c.lo:
+- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
+-
+-.s.lo:
+- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
+-
+-.S.lo:
+- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
+-
+-mostlyclean-libtool:
+- -rm -f *.lo
+-
+-clean-libtool:
+- -rm -rf .libs _libs
+-
+-distclean-libtool:
+-
+-maintainer-clean-libtool:
+-
+-libxmlrpc_xmlparse.la: $(libxmlrpc_xmlparse_la_OBJECTS) $(libxmlrpc_xmlparse_la_DEPENDENCIES)
+- $(LINK) -rpath $(libdir) $(libxmlrpc_xmlparse_la_LDFLAGS) $(libxmlrpc_xmlparse_la_OBJECTS) $(libxmlrpc_xmlparse_la_LIBADD) $(LIBS)
+-
+-tags: TAGS
+-
+-ID: $(HEADERS) $(SOURCES) $(LISP)
+- list='$(SOURCES) $(HEADERS)'; \
+- unique=`for i in $$list; do echo $$i; done | \
+- awk ' { files[$$0] = 1; } \
+- END { for (i in files) print i; }'`; \
+- here=`pwd` && cd $(srcdir) \
+- && mkid -f$$here/ID $$unique $(LISP)
+-
+-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
+- tags=; \
+- here=`pwd`; \
+- list='$(SOURCES) $(HEADERS)'; \
+- unique=`for i in $$list; do echo $$i; done | \
+- awk ' { files[$$0] = 1; } \
+- END { for (i in files) print i; }'`; \
+- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
+- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
+-
+-mostlyclean-tags:
+-
+-clean-tags:
+-
+-distclean-tags:
+- -rm -f TAGS ID
+-
+-maintainer-clean-tags:
+-
+-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
+-
+-subdir = lib/expat/xmlparse
+-
+-distdir: $(DISTFILES)
+- @for file in $(DISTFILES); do \
+- d=$(srcdir); \
+- if test -d $$d/$$file; then \
+- cp -pr $$d/$$file $(distdir)/$$file; \
+- else \
+- test -f $(distdir)/$$file \
+- || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+- || cp -p $$d/$$file $(distdir)/$$file || :; \
+- fi; \
+- done
+-xmlparse.lo xmlparse.o : xmlparse.c ../xmltok/xmldef.h xmlparse.h \
+- ../xmltok/xmltok.h ../xmltok/xmlrole.h
+-
+-info-am:
+-info: info-am
+-dvi-am:
+-dvi: dvi-am
+-check-am: all-am
+-check: check-am
+-installcheck-am:
+-installcheck: installcheck-am
+-install-exec-am: install-libLTLIBRARIES
+-install-exec: install-exec-am
+-
+-install-data-am:
+-install-data: install-data-am
+-
+-install-am: all-am
+- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+-install: install-am
+-uninstall-am: uninstall-libLTLIBRARIES
+-uninstall: uninstall-am
+-all-am: Makefile $(LTLIBRARIES)
+-all-redirect: all-am
+-install-strip:
+- $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
+-installdirs:
+- $(mkinstalldirs) $(DESTDIR)$(libdir)
+-
+-
+-mostlyclean-generic:
+-
+-clean-generic:
+-
+-distclean-generic:
+- -rm -f Makefile $(CONFIG_CLEAN_FILES)
+- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+-
+-maintainer-clean-generic:
+-mostlyclean-am: mostlyclean-libLTLIBRARIES mostlyclean-compile \
+- mostlyclean-libtool mostlyclean-tags \
+- mostlyclean-generic
+-
+-mostlyclean: mostlyclean-am
+-
+-clean-am: clean-libLTLIBRARIES clean-compile clean-libtool clean-tags \
+- clean-generic mostlyclean-am
+-
+-clean: clean-am
+-
+-distclean-am: distclean-libLTLIBRARIES distclean-compile \
+- distclean-libtool distclean-tags distclean-generic \
+- clean-am
+- -rm -f libtool
+-
+-distclean: distclean-am
+-
+-maintainer-clean-am: maintainer-clean-libLTLIBRARIES \
+- maintainer-clean-compile maintainer-clean-libtool \
+- maintainer-clean-tags maintainer-clean-generic \
+- distclean-am
+- @echo "This command is intended for maintainers to use;"
+- @echo "it deletes files that may require special tools to rebuild."
+-
+-maintainer-clean: maintainer-clean-am
+-
+-.PHONY: mostlyclean-libLTLIBRARIES distclean-libLTLIBRARIES \
+-clean-libLTLIBRARIES maintainer-clean-libLTLIBRARIES \
+-uninstall-libLTLIBRARIES install-libLTLIBRARIES mostlyclean-compile \
+-distclean-compile clean-compile maintainer-clean-compile \
+-mostlyclean-libtool distclean-libtool clean-libtool \
+-maintainer-clean-libtool tags mostlyclean-tags distclean-tags \
+-clean-tags maintainer-clean-tags distdir info-am info dvi-am dvi check \
+-check-am installcheck-am installcheck install-exec-am install-exec \
+-install-data-am install-data install-am install uninstall-am uninstall \
+-all-redirect all-am all installdirs mostlyclean-generic \
+-distclean-generic clean-generic maintainer-clean-generic clean \
+-mostlyclean distclean maintainer-clean
+-
+-
+-# Tell versions [3.59,3.63) of GNU make to not export all variables.
+-# Otherwise a system limit (for SysV at least) may be exceeded.
+-.NOEXPORT:
+diff --git a/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.c b/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.c
+index fc1c9f3..5b647f1 100644
+--- a/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.c
++++ b/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.c
+@@ -139,7 +139,7 @@ typedef struct tag {
+ typedef struct {
+ const XML_Char *name;
+ const XML_Char *textPtr;
+- int textLen;
++ size_t textLen;
+ const XML_Char *systemId;
+ const XML_Char *base;
+ const XML_Char *publicId;
+@@ -473,7 +473,7 @@ int poolGrow(STRING_POOL *pool)
+ }
+ }
+ if (pool->blocks && pool->start == pool->blocks->s) {
+- int blockSize = (pool->end - pool->start)*2;
++ size_t const blockSize = (pool->end - pool->start)*2;
+ pool->blocks = realloc(pool->blocks, offsetof(BLOCK, s) +
+ blockSize * sizeof(XML_Char));
+ if (!pool->blocks)
+@@ -484,12 +484,11 @@ int poolGrow(STRING_POOL *pool)
+ pool->end = pool->start + blockSize;
+ }
+ else {
++ size_t const poolLen = pool->end - pool->start;
++ size_t const blockSize =
++ poolLen < INIT_BLOCK_SIZE ? INIT_BLOCK_SIZE : poolLen * 2;
+ BLOCK *tem;
+- int blockSize = pool->end - pool->start;
+- if (blockSize < INIT_BLOCK_SIZE)
+- blockSize = INIT_BLOCK_SIZE;
+- else
+- blockSize *= 2;
++
+ tem = malloc(offsetof(BLOCK, s) + blockSize * sizeof(XML_Char));
+ if (!tem)
+ return 0;
+@@ -1123,16 +1122,14 @@ normalizeLines(XML_Char *s)
+ static void
+ reportDefault(XML_Parser const xmlParserP,
+ const ENCODING * const enc,
+- const char * const startArg,
++ const char * const start,
+ const char * const end) {
+
+ Parser * const parser = (Parser *)xmlParserP;
+
+- const char * s;
+-
+- s = startArg;
++ if (MUST_CONVERT(enc, start)) {
++ const char * s;
+
+- if (MUST_CONVERT(enc, s)) {
+ const char **eventPP;
+ const char **eventEndPP;
+
+@@ -1144,16 +1141,23 @@ reportDefault(XML_Parser const xmlParserP,
+ eventPP = &(openInternalEntities->internalEventPtr);
+ eventEndPP = &(openInternalEntities->internalEventEndPtr);
+ }
++ s = start;
+ do {
+ ICHAR *dataPtr = (ICHAR *)dataBuf;
+ XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd);
+ *eventEndPP = s;
+- defaultHandler(handlerArg, dataBuf, dataPtr - (ICHAR *)dataBuf);
++ {
++ size_t const len = dataPtr - (ICHAR *)dataBuf;
++ assert((size_t)(int)len == len); /* parser requirement */
++ defaultHandler(handlerArg, dataBuf, (int)len);
++ }
+ *eventPP = s;
+ } while (s != end);
+- } else
+- defaultHandler(handlerArg, (XML_Char *)s,
+- (XML_Char *)end - (XML_Char *)s);
++ } else {
++ size_t const len = (XML_Char *)end - (XML_Char *)start;
++ assert((size_t)(int)len == len); /* parser requirement */
++ defaultHandler(handlerArg, (XML_Char *)start, len);
++ }
+ }
+
+
+@@ -2151,16 +2155,21 @@ doCdataSection(XML_Parser const xmlParserP,
+ ICHAR *dataPtr = (ICHAR *)dataBuf;
+ XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd);
+ *eventEndPP = next;
+- characterDataHandler(handlerArg, dataBuf, dataPtr - (ICHAR *)dataBuf);
++ {
++ size_t const len = dataPtr - (ICHAR *)dataBuf;
++ assert((size_t)(int)len == len); /* parser requirement */
++ characterDataHandler(handlerArg, dataBuf, (int)len);
++ }
+ if (s == next)
+ break;
+ *eventPP = s;
+ }
+ }
+- else
+- characterDataHandler(handlerArg,
+- (XML_Char *)s,
+- (XML_Char *)next - (XML_Char *)s);
++ else {
++ size_t const len = (XML_Char *)next - (XML_Char *)s;
++ assert((size_t)(int)len == len); /* parser requirement */
++ characterDataHandler(handlerArg, (XML_Char *)s, (int)len);
++ }
+ }
+ else if (defaultHandler)
+ reportDefault(xmlParserP, enc, s, next);
+@@ -2459,7 +2468,7 @@ doStartTagNoAtts(XML_Parser const xmlParserP,
+ if (fromPtr == rawNameEnd)
+ break;
+ else {
+- int const bufSize = (tag->bufEnd - tag->buf) << 1;
++ size_t const bufSize = (tag->bufEnd - tag->buf) << 1;
+ tag->buf = realloc(tag->buf, bufSize);
+ if (!tag->buf) {
+ *errorCodeP = XML_ERROR_NO_MEMORY;
+@@ -2777,12 +2786,16 @@ processContentToken(XML_Parser const xmlParserP,
+ from = s;
+ dataPtr = (ICHAR *)dataBuf;
+ XmlConvert(enc, &from, end, &dataPtr, (ICHAR *)dataBufEnd);
+- characterDataHandler(handlerArg, dataBuf,
+- dataPtr - (ICHAR *)dataBuf);
+- } else
+- characterDataHandler(handlerArg,
+- (XML_Char *)s,
+- (XML_Char *)end - (XML_Char *)s);
++ {
++ size_t const len = dataPtr - (ICHAR *)dataBuf;
++ assert((size_t)(int)len == len); /* parser reqt */
++ characterDataHandler(handlerArg, dataBuf, (int)len);
++ }
++ } else {
++ size_t const len = (XML_Char *)end - (XML_Char *)s;
++ assert((size_t)(int)len == len); /* parser reqt */
++ characterDataHandler(handlerArg, (XML_Char *)s, (int)len);
++ }
+ } else if (defaultHandler)
+ reportDefault(xmlParserP, enc, s, end);
+
+@@ -2807,16 +2820,20 @@ processContentToken(XML_Parser const xmlParserP,
+ XmlConvert(enc, &from, *nextP, &dataPtr,
+ (ICHAR *)dataBufEnd);
+ *eventEndPP = from;
+- characterDataHandler(handlerArg, dataBuf,
+- dataPtr - (ICHAR *)dataBuf);
++ {
++ size_t const len = dataPtr - (ICHAR *)dataBuf;
++ assert((size_t)(int)len == len); /* parser reqt */
++ characterDataHandler(handlerArg, dataBuf, (int)len);
++ }
+ if (from == *nextP)
+ break;
+ *eventPP = from;
+ }
+- } else
+- characterDataHandler(handlerArg,
+- (XML_Char *)s,
+- (XML_Char *)*nextP - (XML_Char *)s);
++ } else {
++ size_t const len = (XML_Char *)*nextP - (XML_Char *)s;
++ assert((size_t)(int)len == len); /* parser reqt */
++ characterDataHandler(handlerArg, (XML_Char *)s, len);
++ }
+ } else if (defaultHandler)
+ reportDefault(xmlParserP, enc, s, *nextP);
+ break;
+@@ -4369,7 +4386,7 @@ parseFinalLen0(Parser * const parser,
+ static void
+ parseNoBuffer(Parser * const parser,
+ const char * const s,
+- int const len,
++ size_t const len,
+ bool const isFinal,
+ int * const succeededP) {
+
+@@ -4377,8 +4394,8 @@ parseNoBuffer(Parser * const parser,
+ positionPtr = s;
+
+ if (isFinal) {
+- processor(parser, s, parseEndPtr = s + len, 0,
+- &errorCode, &errorString);
++ parseEndPtr = s + len;
++ processor(parser, s, parseEndPtr, 0, &errorCode, &errorString);
+ if (errorCode == XML_ERROR_NONE)
+ *succeededP = true;
+ else {
+@@ -4427,7 +4444,7 @@ parseNoBuffer(Parser * const parser,
+ int
+ xmlrpc_XML_Parse(XML_Parser const xmlParserP,
+ const char * const s,
+- int const len,
++ size_t const len,
+ int const isFinal) {
+
+ Parser * const parser = (Parser *) xmlParserP;
+@@ -4487,40 +4504,49 @@ xmlrpc_XML_ParseBuffer(XML_Parser const xmlParserP,
+ }
+ }
+
++
++
+ void *
+-xmlrpc_XML_GetBuffer(XML_Parser parser, int len)
+-{
+- if (len > bufferLim - bufferEnd) {
+- /* FIXME avoid integer overflow */
+- int neededSize = len + (bufferEnd - bufferPtr);
+- if (neededSize <= bufferLim - buffer) {
+- memmove(buffer, bufferPtr, bufferEnd - bufferPtr);
+- bufferEnd = buffer + (bufferEnd - bufferPtr);
+- bufferPtr = buffer;
+- }
+- else {
+- char *newBuf;
+- int bufferSize = bufferLim - bufferPtr;
+- if (bufferSize == 0)
+- bufferSize = INIT_BUFFER_SIZE;
+- do {
+- bufferSize *= 2;
+- } while (bufferSize < neededSize);
+- newBuf = malloc(bufferSize);
+- if (newBuf == 0) {
+- errorCode = XML_ERROR_NO_MEMORY;
+- return 0;
+- }
+- bufferLim = newBuf + bufferSize;
+- if (bufferPtr) {
+- memcpy(newBuf, bufferPtr, bufferEnd - bufferPtr);
+- free(buffer);
+- }
+- bufferEnd = newBuf + (bufferEnd - bufferPtr);
+- bufferPtr = buffer = newBuf;
++xmlrpc_XML_GetBuffer(XML_Parser const xmlParserP,
++ size_t const len) {
++
++ Parser * const parser = (Parser *)xmlParserP;
++
++ assert(bufferLim >= bufferEnd);
++
++ if (len > (size_t)(bufferLim - bufferEnd)) {
++ /* FIXME avoid integer overflow */
++ size_t neededSize = len + (bufferEnd - bufferPtr);
++ assert(bufferLim >= buffer);
++ if (neededSize <= (size_t)(bufferLim - buffer)) {
++ memmove(buffer, bufferPtr, bufferEnd - bufferPtr);
++ bufferEnd = buffer + (bufferEnd - bufferPtr);
++ bufferPtr = buffer;
++ } else {
++ size_t bufferSize;
++ char * newBuf;
++
++ bufferSize = bufferLim > bufferPtr ?
++ bufferLim - bufferPtr : INIT_BUFFER_SIZE;
++
++ do {
++ bufferSize *= 2;
++ } while (bufferSize < neededSize);
++ newBuf = malloc(bufferSize);
++ if (newBuf == 0) {
++ errorCode = XML_ERROR_NO_MEMORY;
++ return 0;
++ }
++ bufferLim = newBuf + bufferSize;
++ if (bufferPtr) {
++ memcpy(newBuf, bufferPtr, bufferEnd - bufferPtr);
++ free(buffer);
++ }
++ bufferEnd = newBuf + (bufferEnd - bufferPtr);
++ bufferPtr = buffer = newBuf;
++ }
+ }
+- }
+- return bufferEnd;
++ return bufferEnd;
+ }
+
+
+@@ -4547,19 +4573,40 @@ xmlrpc_XML_GetErrorString(XML_Parser const parser) {
+
+
+ long
+-xmlrpc_XML_GetCurrentByteIndex(XML_Parser parser)
+-{
+- if (eventPtr)
+- return parseEndByteIndex - (parseEndPtr - eventPtr);
+- return -1;
++xmlrpc_XML_GetCurrentByteIndex(XML_Parser const parser) {
++
++ long retval;
++
++ if (eventPtr) {
++ size_t const bytesLeft = parseEndPtr - eventPtr;
++
++ if ((size_t)(long)(bytesLeft) != bytesLeft)
++ retval = -1;
++ else
++ retval = parseEndByteIndex - (long)bytesLeft;
++ } else
++ retval = -1;
++
++ return retval;
+ }
+
++
++
+ int
+-xmlrpc_XML_GetCurrentByteCount(XML_Parser parser)
+-{
+- if (eventEndPtr && eventPtr)
+- return eventEndPtr - eventPtr;
+- return 0;
++xmlrpc_XML_GetCurrentByteCount(XML_Parser const parser) {
++
++ int retval;
++
++ if (eventEndPtr && eventPtr) {
++ size_t const byteCount = eventEndPtr - eventPtr;
++
++ assert((size_t)(int)byteCount == byteCount);
++
++ retval = (int)byteCount;
++ } else
++ retval = 0;
++
++ return retval;
+ }
+
+
+diff --git a/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.dsp b/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.dsp
+deleted file mode 100644
+index b95795a..0000000
+--- a/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.dsp
++++ /dev/null
+@@ -1,279 +0,0 @@
+-# Microsoft Developer Studio Project File - Name="xmlparse" - Package Owner=<4>
+-# Microsoft Developer Studio Generated Build File, Format Version 6.00
+-# ** DO NOT EDIT **
+-
+-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+-# TARGTYPE "Win32 (x86) Static Library" 0x0104
+-
+-CFG=xmlparse - Win32 Release
+-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+-!MESSAGE use the Export Makefile command and run
+-!MESSAGE
+-!MESSAGE NMAKE /f "xmlparse.mak".
+-!MESSAGE
+-!MESSAGE You can specify a configuration when running NMAKE
+-!MESSAGE by defining the macro CFG on the command line. For example:
+-!MESSAGE
+-!MESSAGE NMAKE /f "xmlparse.mak" CFG="xmlparse - Win32 Release"
+-!MESSAGE
+-!MESSAGE Possible choices for configuration are:
+-!MESSAGE
+-!MESSAGE "xmlparse - Win32 Release" (based on "Win32 (x86) Static Library")
+-!MESSAGE "xmlparse - Win32 Debug" (based on "Win32 (x86) Static Library")
+-!MESSAGE "xmlparse - Win32 Release DLL" (based on "Win32 (x86) Dynamic-Link Library")
+-!MESSAGE "xmlparse - Win32 Debug DLL" (based on "Win32 (x86) Dynamic-Link Library")
+-!MESSAGE "xmlparse - Win32 MinSize DLL" (based on "Win32 (x86) Dynamic-Link Library")
+-!MESSAGE
+-
+-# Begin Project
+-# PROP AllowPerConfigDependencies 0
+-# PROP Scc_ProjName "xmlparse"
+-# PROP Scc_LocalPath ".."
+-
+-!IF "$(CFG)" == "xmlparse - Win32 Release"
+-
+-# PROP BASE Use_MFC 0
+-# PROP BASE Use_Debug_Libraries 0
+-# PROP BASE Output_Dir ".\Release"
+-# PROP BASE Intermediate_Dir ".\Release"
+-# PROP BASE Target_Dir "."
+-# PROP Use_MFC 0
+-# PROP Use_Debug_Libraries 0
+-# PROP Output_Dir "Release\xmlparse"
+-# PROP Intermediate_Dir "Release\xmlparse"
+-# PROP Target_Dir "."
+-LINK32=link.exe -lib
+-MTL=midl.exe
+-CPP=cl.exe
+-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\xmltok" /I "..\xmlwf" /I "..\..\.." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "XML_DTD" /D "_MBCS" /D "_LIB" /YX /FD /c
+-RSC=rc.exe
+-# ADD BASE RSC /l 0x409 /d "NDEBUG"
+-# ADD RSC /l 0x409 /d "NDEBUG"
+-BSC32=bscmake.exe
+-# ADD BASE BSC32 /nologo
+-# ADD BSC32 /nologo
+-LIB32=link.exe -lib
+-# ADD BASE LIB32 /nologo
+-# ADD LIB32 /nologo
+-
+-!ELSEIF "$(CFG)" == "xmlparse - Win32 Debug"
+-
+-# PROP BASE Use_MFC 0
+-# PROP BASE Use_Debug_Libraries 1
+-# PROP BASE Output_Dir ".\Debug"
+-# PROP BASE Intermediate_Dir ".\Debug"
+-# PROP BASE Target_Dir "."
+-# PROP Use_MFC 0
+-# PROP Use_Debug_Libraries 1
+-# PROP Output_Dir "Debug\xmlparse"
+-# PROP Intermediate_Dir "Debug\xmlparse"
+-# PROP Target_Dir "."
+-LINK32=link.exe -lib
+-MTL=midl.exe
+-CPP=cl.exe
+-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\xmltok" /I "..\xmlwf" /I "..\..\.." /D "WIN32" /D "_WINDOWS" /D "XML_DTD" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+-RSC=rc.exe
+-# ADD BASE RSC /l 0x409 /d "_DEBUG"
+-# ADD RSC /l 0x409 /d "_DEBUG"
+-BSC32=bscmake.exe
+-# ADD BASE BSC32 /nologo
+-# ADD BSC32 /nologo
+-LIB32=link.exe -lib
+-# ADD BASE LIB32 /nologo
+-# ADD LIB32 /nologo
+-
+-!ELSEIF "$(CFG)" == "xmlparse - Win32 Release DLL"
+-
+-# PROP BASE Use_MFC 0
+-# PROP BASE Use_Debug_Libraries 0
+-# PROP BASE Output_Dir ".\ReleaseDLL"
+-# PROP BASE Intermediate_Dir ".\ReleaseDLL"
+-# PROP BASE Target_Dir "."
+-# PROP Use_MFC 0
+-# PROP Use_Debug_Libraries 0
+-# PROP Output_Dir "ReleaseDLL\xmlparse"
+-# PROP Intermediate_Dir "ReleaseDLL\xmlparse"
+-# PROP Ignore_Export_Lib 0
+-# PROP Target_Dir "."
+-CPP=cl.exe
+-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
+-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\xmltok" /I "..\xmlwf" /I "..\..\.." /D XMLTOKAPI=__declspec(dllimport) /D XMLPARSEAPI=__declspec(dllexport) /D "NDEBUG" /D "XML_NS" /D "WIN32" /D "_WINDOWS" /D "XML_DTD" /YX /FD /c
+-MTL=midl.exe
+-# ADD BASE MTL /nologo /D "NDEBUG" /win32
+-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+-RSC=rc.exe
+-# ADD BASE RSC /l 0x809 /d "NDEBUG"
+-# ADD RSC /l 0x809 /d "NDEBUG"
+-BSC32=bscmake.exe
+-# ADD BASE BSC32 /nologo
+-# ADD BSC32 /nologo
+-LINK32=link.exe
+-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
+-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x20000000" /subsystem:windows /dll /machine:I386 /link50compat
+-# SUBTRACT LINK32 /pdb:none
+-
+-!ELSEIF "$(CFG)" == "xmlparse - Win32 Debug DLL"
+-
+-# PROP BASE Use_MFC 0
+-# PROP BASE Use_Debug_Libraries 1
+-# PROP BASE Output_Dir ".\DebugDLL"
+-# PROP BASE Intermediate_Dir ".\DebugDLL"
+-# PROP BASE Target_Dir "."
+-# PROP Use_MFC 0
+-# PROP Use_Debug_Libraries 1
+-# PROP Output_Dir "DebugDLL\xmlparse"
+-# PROP Intermediate_Dir "DebugDLL\xmlparse"
+-# PROP Ignore_Export_Lib 0
+-# PROP Target_Dir "."
+-CPP=cl.exe
+-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
+-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\xmltok" /I "..\xmlwf" /I "..\..\.." /D "_DEBUG" /D XMLTOKAPI=__declspec(dllimport) /D XMLPARSEAPI=__declspec(dllexport) /D "WIN32" /D "_WINDOWS" /D "XML_DTD" /YX /FD /c
+-MTL=midl.exe
+-# ADD BASE MTL /nologo /D "_DEBUG" /win32
+-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+-RSC=rc.exe
+-# ADD BASE RSC /l 0x809 /d "_DEBUG"
+-# ADD RSC /l 0x809 /d "_DEBUG"
+-BSC32=bscmake.exe
+-# ADD BASE BSC32 /nologo
+-# ADD BSC32 /nologo
+-LINK32=link.exe
+-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
+-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x20000000" /subsystem:windows /dll /debug /machine:I386
+-
+-!ELSEIF "$(CFG)" == "xmlparse - Win32 MinSize DLL"
+-
+-# PROP BASE Use_MFC 0
+-# PROP BASE Use_Debug_Libraries 0
+-# PROP BASE Output_Dir ".\ReleaseMinSizeDLL"
+-# PROP BASE Intermediate_Dir ".\ReleaseMinSizeDLL"
+-# PROP BASE Ignore_Export_Lib 0
+-# PROP BASE Target_Dir ""
+-# PROP Use_MFC 0
+-# PROP Use_Debug_Libraries 0
+-# PROP Output_Dir "ReleaseMinSizeDLL\xmlparse"
+-# PROP Intermediate_Dir "ReleaseMinSizeDLL\xmlparse"
+-# PROP Ignore_Export_Lib 0
+-# PROP Target_Dir ""
+-CPP=cl.exe
+-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\xmltok" /I "..\xmlwf" /D XMLTOKAPI=__declspec(dllimport) /D XMLPARSEAPI=__declspec(dllexport) /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "XML_NS" /YX /FD /c
+-# ADD CPP /nologo /MD /W3 /GX /O1 /I "..\xmltok" /I "..\xmlwf" /I "..\..\.." /D "XML_MIN_SIZE" /D "XML_WINLIB" /D XMLPARSEAPI=__declspec(dllexport) /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
+-MTL=midl.exe
+-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+-RSC=rc.exe
+-# ADD BASE RSC /l 0x809 /d "NDEBUG"
+-# ADD RSC /l 0x809 /d "NDEBUG"
+-BSC32=bscmake.exe
+-# ADD BASE BSC32 /nologo
+-# ADD BSC32 /nologo
+-LINK32=link.exe
+-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x20000000" /subsystem:windows /dll /machine:I386
+-# SUBTRACT BASE LINK32 /profile
+-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x20000000" /entry:"DllMain" /subsystem:windows /dll /machine:I386
+-# SUBTRACT LINK32 /profile /nodefaultlib
+-
+-!ENDIF
+-
+-# Begin Target
+-
+-# Name "xmlparse - Win32 Release"
+-# Name "xmlparse - Win32 Debug"
+-# Name "xmlparse - Win32 Release DLL"
+-# Name "xmlparse - Win32 Debug DLL"
+-# Name "xmlparse - Win32 MinSize DLL"
+-# Begin Group "Source Files"
+-
+-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"
+-# Begin Source File
+-
+-SOURCE=..\xmltok\dllmain.c
+-
+-!IF "$(CFG)" == "xmlparse - Win32 Release"
+-
+-# PROP Exclude_From_Build 1
+-
+-!ELSEIF "$(CFG)" == "xmlparse - Win32 Debug"
+-
+-# PROP Exclude_From_Build 1
+-
+-!ELSEIF "$(CFG)" == "xmlparse - Win32 Release DLL"
+-
+-!ELSEIF "$(CFG)" == "xmlparse - Win32 Debug DLL"
+-
+-!ELSEIF "$(CFG)" == "xmlparse - Win32 MinSize DLL"
+-
+-!ENDIF
+-
+-# End Source File
+-# Begin Source File
+-
+-SOURCE=.\xmlparse.c
+-# End Source File
+-# Begin Source File
+-
+-SOURCE=..\xmltok\xmlrole.c
+-
+-!IF "$(CFG)" == "xmlparse - Win32 Release"
+-
+-# PROP Exclude_From_Build 1
+-
+-!ELSEIF "$(CFG)" == "xmlparse - Win32 Debug"
+-
+-# PROP Exclude_From_Build 1
+-
+-!ELSEIF "$(CFG)" == "xmlparse - Win32 Release DLL"
+-
+-# PROP Exclude_From_Build 1
+-
+-!ELSEIF "$(CFG)" == "xmlparse - Win32 Debug DLL"
+-
+-# PROP Exclude_From_Build 1
+-
+-!ELSEIF "$(CFG)" == "xmlparse - Win32 MinSize DLL"
+-
+-!ENDIF
+-
+-# End Source File
+-# Begin Source File
+-
+-SOURCE=..\xmltok\xmltok.c
+-
+-!IF "$(CFG)" == "xmlparse - Win32 Release"
+-
+-# PROP Exclude_From_Build 1
+-
+-!ELSEIF "$(CFG)" == "xmlparse - Win32 Debug"
+-
+-# PROP Exclude_From_Build 1
+-
+-!ELSEIF "$(CFG)" == "xmlparse - Win32 Release DLL"
+-
+-# PROP Exclude_From_Build 1
+-
+-!ELSEIF "$(CFG)" == "xmlparse - Win32 Debug DLL"
+-
+-# PROP Exclude_From_Build 1
+-
+-!ELSEIF "$(CFG)" == "xmlparse - Win32 MinSize DLL"
+-
+-!ENDIF
+-
+-# End Source File
+-# End Group
+-# Begin Group "Header Files"
+-
+-# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
+-# Begin Source File
+-
+-SOURCE=.\xmlparse.h
+-# End Source File
+-# End Group
+-# Begin Group "Resource Files"
+-
+-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
+-# End Group
+-# End Target
+-# End Project
+diff --git a/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.h b/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.h
+index 2b8c701..7a65521 100644
+--- a/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.h
++++ b/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.h
+@@ -6,14 +6,12 @@
+ #ifndef XMLPARSE_H_INCLUDED
+ #define XMLPARSE_H_INCLUDED
+
++#include "xmlrpc-c/c_util.h"
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+-#ifndef XMLPARSEAPI
+-#define XMLPARSEAPI /* as nothing */
+-#endif
+-
+ typedef void *XML_Parser;
+
+ #ifdef XML_UNICODE_WCHAR_T
+@@ -53,7 +51,7 @@ typedef char XML_LChar;
+ /* Constructs a new parser; encoding is the encoding specified by the external
+ protocol or null if there is none specified. */
+
+-XML_Parser XMLPARSEAPI
++XML_Parser XMLRPC_DLLEXPORT
+ xmlrpc_XML_ParserCreate(const XML_Char * const encoding);
+
+ /* Constructs a new parser and namespace processor. Element type names
+@@ -66,7 +64,7 @@ the namespace URI and the local part will be concatenated without any
+ separator. When a namespace is not declared, the name and prefix will be
+ passed through without expansion. */
+
+-XML_Parser XMLPARSEAPI
++XML_Parser XMLRPC_DLLEXPORT
+ xmlrpc_XML_ParserCreateNS(const XML_Char * const encoding,
+ XML_Char const namespaceSeparator);
+
+@@ -270,24 +268,24 @@ typedef int (*XML_UnknownEncodingHandler)(void *encodingHandlerData,
+ const XML_Char *name,
+ XML_Encoding *info);
+
+-void XMLPARSEAPI
++void XMLRPC_DLLEXPORT
+ xmlrpc_XML_SetElementHandler(XML_Parser parser,
+ XML_StartElementHandler start,
+ XML_EndElementHandler end);
+
+-void XMLPARSEAPI
++void XMLRPC_DLLEXPORT
+ xmlrpc_XML_SetCharacterDataHandler(XML_Parser parser,
+ XML_CharacterDataHandler handler);
+
+-void XMLPARSEAPI
++void XMLRPC_DLLEXPORT
+ xmlrpc_XML_SetProcessingInstructionHandler(
+ XML_Parser parser,
+ XML_ProcessingInstructionHandler handler);
+-void XMLPARSEAPI
++void XMLRPC_DLLEXPORT
+ xmlrpc_XML_SetCommentHandler(XML_Parser parser,
+ XML_CommentHandler handler);
+
+-void XMLPARSEAPI
++void XMLRPC_DLLEXPORT
+ xmlrpc_XML_SetCdataSectionHandler(XML_Parser parser,
+ XML_StartCdataSectionHandler start,
+ XML_EndCdataSectionHandler end);
+@@ -297,50 +295,50 @@ xmlrpc_XML_SetCdataSectionHandler(XML_Parser parser,
+ handler.
+ */
+
+-void XMLPARSEAPI
++void XMLRPC_DLLEXPORT
+ xmlrpc_XML_SetDefaultHandler(XML_Parser parser,
+ XML_DefaultHandler handler);
+
+ /* This sets the default handler but does not inhibit expansion of internal entities.
+ The entity reference will not be passed to the default handler. */
+
+-void XMLPARSEAPI
++void XMLRPC_DLLEXPORT
+ xmlrpc_XML_SetDefaultHandlerExpand(XML_Parser parser,
+ XML_DefaultHandler handler);
+
+-void XMLPARSEAPI
++void XMLRPC_DLLEXPORT
+ xmlrpc_XML_SetDoctypeDeclHandler(XML_Parser parser,
+ XML_StartDoctypeDeclHandler start,
+ XML_EndDoctypeDeclHandler end);
+
+-void XMLPARSEAPI
++void XMLRPC_DLLEXPORT
+ xmlrpc_XML_SetUnparsedEntityDeclHandler(XML_Parser parser,
+ XML_UnparsedEntityDeclHandler handler);
+
+-void XMLPARSEAPI
++void XMLRPC_DLLEXPORT
+ xmlrpc_XML_SetNotationDeclHandler(XML_Parser parser,
+ XML_NotationDeclHandler handler);
+
+-void XMLPARSEAPI
++void XMLRPC_DLLEXPORT
+ xmlrpc_XML_SetExternalParsedEntityDeclHandler(
+ XML_Parser parser,
+ XML_ExternalParsedEntityDeclHandler handler);
+
+-void XMLPARSEAPI
++void XMLRPC_DLLEXPORT
+ xmlrpc_XML_SetInternalParsedEntityDeclHandler(
+ XML_Parser parser,
+ XML_InternalParsedEntityDeclHandler handler);
+
+-void XMLPARSEAPI
++void XMLRPC_DLLEXPORT
+ xmlrpc_XML_SetNamespaceDeclHandler(XML_Parser parser,
+ XML_StartNamespaceDeclHandler start,
+ XML_EndNamespaceDeclHandler end);
+
+-void XMLPARSEAPI
++void XMLRPC_DLLEXPORT
+ xmlrpc_XML_SetNotStandaloneHandler(XML_Parser parser,
+ XML_NotStandaloneHandler handler);
+
+-void XMLPARSEAPI
++void XMLRPC_DLLEXPORT
+ xmlrpc_XML_SetExternalEntityRefHandler(XML_Parser parser,
+ XML_ExternalEntityRefHandler handler);
+
+@@ -348,10 +346,10 @@ xmlrpc_XML_SetExternalEntityRefHandler(XML_Parser parser,
+ passed as the first argument to the external entity ref handler
+ instead of the parser object.
+ */
+-void XMLPARSEAPI
++void XMLRPC_DLLEXPORT
+ xmlrpc_XML_SetExternalEntityRefHandlerArg(XML_Parser, void *arg);
+
+-void XMLPARSEAPI
++void XMLRPC_DLLEXPORT
+ xmlrpc_XML_SetUnknownEncodingHandler(XML_Parser parser,
+ XML_UnknownEncodingHandler handler,
+ void *encodingHandlerData);
+@@ -360,11 +358,11 @@ xmlrpc_XML_SetUnknownEncodingHandler(XML_Parser parser,
+ processing instruction or character data. It causes the corresponding
+ markup to be passed to the default handler.
+ */
+-void XMLPARSEAPI
++void XMLRPC_DLLEXPORT
+ xmlrpc_XML_DefaultCurrent(XML_Parser parser);
+
+ /* This value is passed as the userData argument to callbacks. */
+-void XMLPARSEAPI
++void XMLRPC_DLLEXPORT
+ xmlrpc_XML_SetUserData(XML_Parser parser, void *userData);
+
+ /* Returns the last value set by XML_SetUserData or null. */
+@@ -374,14 +372,14 @@ xmlrpc_XML_SetUserData(XML_Parser parser, void *userData);
+ to XML_ParserCreate. It must not be called after XML_Parse
+ or XML_ParseBuffer. */
+
+-int XMLPARSEAPI
++int XMLRPC_DLLEXPORT
+ xmlrpc_XML_SetEncoding(XML_Parser parser, const XML_Char *encoding);
+
+ /* If this function is called, then the parser will be passed
+ as the first argument to callbacks instead of userData.
+ The userData will still be accessible using XML_GetUserData.
+ */
+-void XMLPARSEAPI
++void XMLRPC_DLLEXPORT
+ xmlrpc_XML_UseParserAsHandlerArg(XML_Parser parser);
+
+ /* Sets the base to be used for resolving relative URIs in system
+@@ -391,10 +389,10 @@ xmlrpc_XML_UseParserAsHandlerArg(XML_Parser parser);
+ and XML_UnparsedEntityDeclHandler. The base argument will be copied.
+ Returns zero if out of memory, non-zero otherwise.
+ */
+-int XMLPARSEAPI
++int XMLRPC_DLLEXPORT
+ xmlrpc_XML_SetBase(XML_Parser parser, const XML_Char *base);
+
+-const XML_Char XMLPARSEAPI *
++const XML_Char XMLRPC_DLLEXPORT *
+ xmlrpc_XML_GetBase(XML_Parser parser);
+
+ /* Returns the number of the attribute/value pairs passed in last call
+@@ -403,7 +401,7 @@ xmlrpc_XML_GetBase(XML_Parser parser);
+ this correspondds to an index into the atts array passed to the
+ XML_StartElementHandler.
+ */
+-int XMLPARSEAPI
++int XMLRPC_DLLEXPORT
+ xmlrpc_XML_GetSpecifiedAttributeCount(XML_Parser parser);
+
+ /* Returns the index of the ID attribute passed in the last call to
+@@ -411,20 +409,24 @@ xmlrpc_XML_GetSpecifiedAttributeCount(XML_Parser parser);
+ attribute/value pair counts as 2; thus this correspondds to an index
+ into the atts array passed to the XML_StartElementHandler.
+ */
+-int XMLPARSEAPI
++int XMLRPC_DLLEXPORT
+ xmlrpc_XML_GetIdAttributeIndex(XML_Parser parser);
+
+ /* Parses some input. Returns 0 if a fatal error is detected.
+ The last call to XML_Parse must have isFinal true;
+ len may be zero for this call (or any other).
+ */
+-int XMLPARSEAPI
+-xmlrpc_XML_Parse(XML_Parser const parser, const char * const s, int const len, int const isFinal);
++int XMLRPC_DLLEXPORT
++xmlrpc_XML_Parse(XML_Parser const xmlParserP,
++ const char * const s,
++ size_t const len,
++ int const isFinal);
+
+-void XMLPARSEAPI *
+-xmlrpc_XML_GetBuffer(XML_Parser parser, int len);
++void XMLRPC_DLLEXPORT *
++xmlrpc_XML_GetBuffer(XML_Parser const xmlParserP,
++ size_t const len);
+
+-int XMLPARSEAPI
++int XMLRPC_DLLEXPORT
+ xmlrpc_XML_ParseBuffer(XML_Parser const parser, int const len, int const isFinal);
+
+ /* Creates an XML_Parser object that can parse an external general
+@@ -443,7 +445,7 @@ xmlrpc_XML_ParseBuffer(XML_Parser const parser, int const len, int const isFinal
+ from the parser argument. Returns 0 if out of memory. Otherwise
+ returns a new XML_Parser object.
+ */
+-XML_Parser XMLPARSEAPI
++XML_Parser XMLRPC_DLLEXPORT
+ xmlrpc_XML_ExternalEntityParserCreate(XML_Parser parser,
+ const XML_Char *context,
+ const XML_Char *encoding);
+@@ -473,7 +475,7 @@ enum XML_ParamEntityParsing {
+ XML_SetParamEntityParsing will return 0 if parsing of parameter
+ entities is requested; otherwise it will return non-zero.
+ */
+-int XMLPARSEAPI
++int XMLRPC_DLLEXPORT
+ xmlrpc_XML_SetParamEntityParsing(XML_Parser parser,
+ enum XML_ParamEntityParsing parsing);
+
+@@ -508,10 +510,10 @@ enum XML_Error {
+ information about the error.
+ */
+
+-enum XML_Error XMLPARSEAPI
++enum XML_Error XMLRPC_DLLEXPORT
+ xmlrpc_XML_GetErrorCode(XML_Parser const parser);
+
+-const char * XMLPARSEAPI
++XMLRPC_DLLEXPORT const char *
+ xmlrpc_XML_GetErrorString(XML_Parser const parser);
+
+ /* These functions return information about the current parse location.
+@@ -523,17 +525,17 @@ xmlrpc_XML_GetErrorString(XML_Parser const parser);
+ of the sequence of characters that generated the event.
+ */
+
+-int XMLPARSEAPI
++int XMLRPC_DLLEXPORT
+ xmlrpc_XML_GetCurrentLineNumber(XML_Parser parser);
+-int XMLPARSEAPI
++int XMLRPC_DLLEXPORT
+ xmlrpc_XML_GetCurrentColumnNumber(XML_Parser parser);
+-long XMLPARSEAPI
++long XMLRPC_DLLEXPORT
+ xmlrpc_XML_GetCurrentByteIndex(XML_Parser parser);
+
+ /* Return the number of bytes in the current event.
+ Returns 0 if the event is in an internal entity. */
+
+-int XMLPARSEAPI
++int XMLRPC_DLLEXPORT
+ xmlrpc_XML_GetCurrentByteCount(XML_Parser parser);
+
+ /* For backwards compatibility with previous versions. */
+@@ -542,11 +544,11 @@ xmlrpc_XML_GetCurrentByteCount(XML_Parser parser);
+ #define XML_GetErrorByteIndex XML_GetCurrentByteIndex
+
+ /* Frees memory used by the parser. */
+-void XMLPARSEAPI
++void XMLRPC_DLLEXPORT
+ xmlrpc_XML_ParserFree(XML_Parser parser);
+
+ /* Returns a string describing the error. */
+-const XML_LChar XMLPARSEAPI *
++const XML_LChar XMLRPC_DLLEXPORT *
+ xmlrpc_XML_ErrorString(int const code);
+
+ #ifdef __cplusplus
+diff --git a/libs/xmlrpc-c/lib/expat/xmltok/.cvsignore b/libs/xmlrpc-c/lib/expat/xmltok/.cvsignore
+deleted file mode 100644
+index 38cd01c..0000000
+--- a/libs/xmlrpc-c/lib/expat/xmltok/.cvsignore
++++ /dev/null
+@@ -1 +0,0 @@
+-nametab.h
+diff --git a/libs/xmlrpc-c/lib/expat/xmltok/Makefile b/libs/xmlrpc-c/lib/expat/xmltok/Makefile
+index cfcb8dd..4cb9723 100644
+--- a/libs/xmlrpc-c/lib/expat/xmltok/Makefile
++++ b/libs/xmlrpc-c/lib/expat/xmltok/Makefile
+@@ -24,10 +24,10 @@ include $(BLDDIR)/config.mk
+ # we started using the Gcc -Wundef option, that generates a warning, so
+ # se set it explicitly to 0 here.
+
+-CFLAGS = $(CFLAGS_COMMON) -DXML_BYTE_ORDER=0 $(CFLAGS_PERSONAL) $(CADD)
++CFLAGS_LOCAL = -DXML_BYTE_ORDER=0
+
+ # -I. is necessary when blddir != srcdir
+-INCLUDES = -I. -I$(BLDDIR) -I$(SRCDIR)/lib/util/include
++INCLUDES = -I. -I$(BLDDIR) -Isrcdir/lib/util/include -Isrcdir/include
+
+ default: all
+
+@@ -46,19 +46,20 @@ MAJ=3
+
+ include $(SRCDIR)/common.mk
+
++# This 'common.mk' dependency makes sure the symlinks get built before
++# this make file is used for anything.
++
++$(SRCDIR)/common.mk: srcdir blddir
++
+ XMLTOK_SHLIB = $(call shlibfn,libxmlrpc_xmltok)
+ #XMLTOK_SHLIB is e.g. libxmlrpc_xmltok.so.3.1
+ XMLTOK_SHLIBLE = $(call shliblefn,libxmlrpc_xmltok)
+ #XMLTOK_SHLIBLE is e.g. libxmlrpc_xmltok.so
+
+-ifneq ($(SHARED_LIB_TYPE),NONE)
+- TARGET_SHARED_LIBS := $(XMLTOK_SHLIB) $(XMLTOK_SHLIBLE)
+- endif
+-
+ .PHONY: all
+-all: libxmlrpc_xmltok.a $(TARGET_SHARED_LIBS) $(TARGET_SHARED_LE_LIBS)
++all: libxmlrpc_xmltok.a $(TARGET_SHARED_LIBRARIES) $(TARGET_SHARED_LE_LIBS)
+
+-# Rule for this is in common.mk, courtesy of TARGET_SHARED_LIBRARIES:
++# Rule for this is in common.mk, courtesy of TARGET_LIBRARY_NAMES
+ $(XMLTOK_SHLIB): $(TARGET_MODS:%=%.osh)
+ $(XMLTOK_SHLIB): LIBOBJECTS = $(TARGET_MODS:%=%.osh)
+
+@@ -103,6 +104,6 @@ nametab.h: $(GENNMTAB)
+ $(GENNMTAB):
+ $(MAKE) -C $(dir $@) $(notdir $@)
+
+-xmltok.o xmltok.osh: nametab.h
++xmltok.o xmltok.osh: nametab.h xmltok_impl.c
+
+-include Makefile.depend
++include depend.mk
+diff --git a/libs/xmlrpc-c/lib/expat/xmltok/nametab.h b/libs/xmlrpc-c/lib/expat/xmltok/nametab.h
+index b05e62c..adea34c 100644
+--- a/libs/xmlrpc-c/lib/expat/xmltok/nametab.h
++++ b/libs/xmlrpc-c/lib/expat/xmltok/nametab.h
+@@ -1,150 +1,150 @@
+-static const unsigned namingBitmap[] = {
+-0x00000000, 0x00000000, 0x00000000, 0x00000000,
+-0x00000000, 0x00000000, 0x00000000, 0x00000000,
+-0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+-0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+-0x00000000, 0x04000000, 0x87FFFFFE, 0x07FFFFFE,
+-0x00000000, 0x00000000, 0xFF7FFFFF, 0xFF7FFFFF,
+-0xFFFFFFFF, 0x7FF3FFFF, 0xFFFFFDFE, 0x7FFFFFFF,
+-0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE00F, 0xFC31FFFF,
+-0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,
+-0xFFFFFFFF, 0xF80001FF, 0x00000003, 0x00000000,
+-0x00000000, 0x00000000, 0x00000000, 0x00000000,
+-0xFFFFD740, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD,
+-0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF,
+-0xFFFF0003, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF,
+-0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE,
+-0x0000007F, 0x00000000, 0xFFFF0000, 0x000707FF,
+-0x00000000, 0x07FFFFFE, 0x000007FE, 0xFFFE0000,
+-0xFFFFFFFF, 0x7CFFFFFF, 0x002F7FFF, 0x00000060,
+-0xFFFFFFE0, 0x23FFFFFF, 0xFF000000, 0x00000003,
+-0xFFF99FE0, 0x03C5FDFF, 0xB0000000, 0x00030003,
+-0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000,
+-0xFFFBAFE0, 0x23EDFDFF, 0x00000000, 0x00000001,
+-0xFFF99FE0, 0x23CDFDFF, 0xB0000000, 0x00000003,
+-0xD63DC7E0, 0x03BFC718, 0x00000000, 0x00000000,
+-0xFFFDDFE0, 0x03EFFDFF, 0x00000000, 0x00000003,
+-0xFFFDDFE0, 0x03EFFDFF, 0x40000000, 0x00000003,
+-0xFFFDDFE0, 0x03FFFDFF, 0x00000000, 0x00000003,
+-0x00000000, 0x00000000, 0x00000000, 0x00000000,
+-0xFFFFFFFE, 0x000D7FFF, 0x0000003F, 0x00000000,
+-0xFEF02596, 0x200D6CAE, 0x0000001F, 0x00000000,
+-0x00000000, 0x00000000, 0xFFFFFEFF, 0x000003FF,
+-0x00000000, 0x00000000, 0x00000000, 0x00000000,
+-0x00000000, 0x00000000, 0x00000000, 0x00000000,
+-0x00000000, 0xFFFFFFFF, 0xFFFF003F, 0x007FFFFF,
+-0x0007DAED, 0x50000000, 0x82315001, 0x002C62AB,
+-0x40000000, 0xF580C900, 0x00000007, 0x02010800,
+-0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+-0x0FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF,
+-0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF,
+-0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF,
+-0x00000000, 0x00004C40, 0x00000000, 0x00000000,
+-0x00000007, 0x00000000, 0x00000000, 0x00000000,
+-0x00000080, 0x000003FE, 0xFFFFFFFE, 0xFFFFFFFF,
+-0x001FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x07FFFFFF,
+-0xFFFFFFE0, 0x00001FFF, 0x00000000, 0x00000000,
+-0x00000000, 0x00000000, 0x00000000, 0x00000000,
+-0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+-0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000,
+-0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+-0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000,
+-0x00000000, 0x07FF6000, 0x87FFFFFE, 0x07FFFFFE,
+-0x00000000, 0x00800000, 0xFF7FFFFF, 0xFF7FFFFF,
+-0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,
+-0xFFFFFFFF, 0xF80001FF, 0x00030003, 0x00000000,
+-0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000003,
+-0xFFFFD7C0, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD,
+-0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF,
+-0xFFFF007B, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF,
+-0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE,
+-0xFFFE007F, 0xBBFFFFFB, 0xFFFF0016, 0x000707FF,
+-0x00000000, 0x07FFFFFE, 0x0007FFFF, 0xFFFF03FF,
+-0xFFFFFFFF, 0x7CFFFFFF, 0xFFEF7FFF, 0x03FF3DFF,
+-0xFFFFFFEE, 0xF3FFFFFF, 0xFF1E3FFF, 0x0000FFCF,
+-0xFFF99FEE, 0xD3C5FDFF, 0xB080399F, 0x0003FFCF,
+-0xFFF987E4, 0xD36DFDFF, 0x5E003987, 0x001FFFC0,
+-0xFFFBAFEE, 0xF3EDFDFF, 0x00003BBF, 0x0000FFC1,
+-0xFFF99FEE, 0xF3CDFDFF, 0xB0C0398F, 0x0000FFC3,
+-0xD63DC7EC, 0xC3BFC718, 0x00803DC7, 0x0000FF80,
+-0xFFFDDFEE, 0xC3EFFDFF, 0x00603DDF, 0x0000FFC3,
+-0xFFFDDFEC, 0xC3EFFDFF, 0x40603DDF, 0x0000FFC3,
+-0xFFFDDFEC, 0xC3FFFDFF, 0x00803DCF, 0x0000FFC3,
+-0x00000000, 0x00000000, 0x00000000, 0x00000000,
+-0xFFFFFFFE, 0x07FF7FFF, 0x03FF7FFF, 0x00000000,
+-0xFEF02596, 0x3BFF6CAE, 0x03FF3F5F, 0x00000000,
+-0x03000000, 0xC2A003FF, 0xFFFFFEFF, 0xFFFE03FF,
+-0xFEBF0FDF, 0x02FE3FFF, 0x00000000, 0x00000000,
+-0x00000000, 0x00000000, 0x00000000, 0x00000000,
+-0x00000000, 0x00000000, 0x1FFF0000, 0x00000002,
+-0x000000A0, 0x003EFFFE, 0xFFFFFFFE, 0xFFFFFFFF,
+-0x661FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x77FFFFFF,
+-};
+-static const unsigned char nmstrtPages[] = {
+-0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00,
+-0x00, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
+-0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13,
+-0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+-0x15, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17,
+-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+-0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,
+-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+-};
+-static const unsigned char namePages[] = {
+-0x19, 0x03, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x00,
+-0x00, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25,
+-0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13,
+-0x26, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+-0x27, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17,
+-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+-0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,
+-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+-};
++static const unsigned namingBitmap[] = {\r
++0x00000000, 0x00000000, 0x00000000, 0x00000000,\r
++0x00000000, 0x00000000, 0x00000000, 0x00000000,\r
++0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,\r
++0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,\r
++0x00000000, 0x04000000, 0x87FFFFFE, 0x07FFFFFE,\r
++0x00000000, 0x00000000, 0xFF7FFFFF, 0xFF7FFFFF,\r
++0xFFFFFFFF, 0x7FF3FFFF, 0xFFFFFDFE, 0x7FFFFFFF,\r
++0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE00F, 0xFC31FFFF,\r
++0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,\r
++0xFFFFFFFF, 0xF80001FF, 0x00000003, 0x00000000,\r
++0x00000000, 0x00000000, 0x00000000, 0x00000000,\r
++0xFFFFD740, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD,\r
++0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF,\r
++0xFFFF0003, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF,\r
++0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE,\r
++0x0000007F, 0x00000000, 0xFFFF0000, 0x000707FF,\r
++0x00000000, 0x07FFFFFE, 0x000007FE, 0xFFFE0000,\r
++0xFFFFFFFF, 0x7CFFFFFF, 0x002F7FFF, 0x00000060,\r
++0xFFFFFFE0, 0x23FFFFFF, 0xFF000000, 0x00000003,\r
++0xFFF99FE0, 0x03C5FDFF, 0xB0000000, 0x00030003,\r
++0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000,\r
++0xFFFBAFE0, 0x23EDFDFF, 0x00000000, 0x00000001,\r
++0xFFF99FE0, 0x23CDFDFF, 0xB0000000, 0x00000003,\r
++0xD63DC7E0, 0x03BFC718, 0x00000000, 0x00000000,\r
++0xFFFDDFE0, 0x03EFFDFF, 0x00000000, 0x00000003,\r
++0xFFFDDFE0, 0x03EFFDFF, 0x40000000, 0x00000003,\r
++0xFFFDDFE0, 0x03FFFDFF, 0x00000000, 0x00000003,\r
++0x00000000, 0x00000000, 0x00000000, 0x00000000,\r
++0xFFFFFFFE, 0x000D7FFF, 0x0000003F, 0x00000000,\r
++0xFEF02596, 0x200D6CAE, 0x0000001F, 0x00000000,\r
++0x00000000, 0x00000000, 0xFFFFFEFF, 0x000003FF,\r
++0x00000000, 0x00000000, 0x00000000, 0x00000000,\r
++0x00000000, 0x00000000, 0x00000000, 0x00000000,\r
++0x00000000, 0xFFFFFFFF, 0xFFFF003F, 0x007FFFFF,\r
++0x0007DAED, 0x50000000, 0x82315001, 0x002C62AB,\r
++0x40000000, 0xF580C900, 0x00000007, 0x02010800,\r
++0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,\r
++0x0FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF,\r
++0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF,\r
++0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF,\r
++0x00000000, 0x00004C40, 0x00000000, 0x00000000,\r
++0x00000007, 0x00000000, 0x00000000, 0x00000000,\r
++0x00000080, 0x000003FE, 0xFFFFFFFE, 0xFFFFFFFF,\r
++0x001FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x07FFFFFF,\r
++0xFFFFFFE0, 0x00001FFF, 0x00000000, 0x00000000,\r
++0x00000000, 0x00000000, 0x00000000, 0x00000000,\r
++0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,\r
++0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000,\r
++0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,\r
++0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000,\r
++0x00000000, 0x07FF6000, 0x87FFFFFE, 0x07FFFFFE,\r
++0x00000000, 0x00800000, 0xFF7FFFFF, 0xFF7FFFFF,\r
++0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,\r
++0xFFFFFFFF, 0xF80001FF, 0x00030003, 0x00000000,\r
++0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000003,\r
++0xFFFFD7C0, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD,\r
++0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF,\r
++0xFFFF007B, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF,\r
++0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE,\r
++0xFFFE007F, 0xBBFFFFFB, 0xFFFF0016, 0x000707FF,\r
++0x00000000, 0x07FFFFFE, 0x0007FFFF, 0xFFFF03FF,\r
++0xFFFFFFFF, 0x7CFFFFFF, 0xFFEF7FFF, 0x03FF3DFF,\r
++0xFFFFFFEE, 0xF3FFFFFF, 0xFF1E3FFF, 0x0000FFCF,\r
++0xFFF99FEE, 0xD3C5FDFF, 0xB080399F, 0x0003FFCF,\r
++0xFFF987E4, 0xD36DFDFF, 0x5E003987, 0x001FFFC0,\r
++0xFFFBAFEE, 0xF3EDFDFF, 0x00003BBF, 0x0000FFC1,\r
++0xFFF99FEE, 0xF3CDFDFF, 0xB0C0398F, 0x0000FFC3,\r
++0xD63DC7EC, 0xC3BFC718, 0x00803DC7, 0x0000FF80,\r
++0xFFFDDFEE, 0xC3EFFDFF, 0x00603DDF, 0x0000FFC3,\r
++0xFFFDDFEC, 0xC3EFFDFF, 0x40603DDF, 0x0000FFC3,\r
++0xFFFDDFEC, 0xC3FFFDFF, 0x00803DCF, 0x0000FFC3,\r
++0x00000000, 0x00000000, 0x00000000, 0x00000000,\r
++0xFFFFFFFE, 0x07FF7FFF, 0x03FF7FFF, 0x00000000,\r
++0xFEF02596, 0x3BFF6CAE, 0x03FF3F5F, 0x00000000,\r
++0x03000000, 0xC2A003FF, 0xFFFFFEFF, 0xFFFE03FF,\r
++0xFEBF0FDF, 0x02FE3FFF, 0x00000000, 0x00000000,\r
++0x00000000, 0x00000000, 0x00000000, 0x00000000,\r
++0x00000000, 0x00000000, 0x1FFF0000, 0x00000002,\r
++0x000000A0, 0x003EFFFE, 0xFFFFFFFE, 0xFFFFFFFF,\r
++0x661FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x77FFFFFF,\r
++};\r
++static const unsigned char nmstrtPages[] = {\r
++0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00,\r
++0x00, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,\r
++0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13,\r
++0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
++0x15, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17,\r
++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
++0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,\r
++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
++};\r
++static const unsigned char namePages[] = {\r
++0x19, 0x03, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x00,\r
++0x00, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25,\r
++0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13,\r
++0x26, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
++0x27, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17,\r
++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
++0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\r
++0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,\r
++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
++0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r
++};\r
+diff --git a/libs/xmlrpc-c/lib/expat/xmltok/xmlrole.h b/libs/xmlrpc-c/lib/expat/xmltok/xmlrole.h
+index 3cccb83..523b3da 100644
+--- a/libs/xmlrpc-c/lib/expat/xmltok/xmlrole.h
++++ b/libs/xmlrpc-c/lib/expat/xmltok/xmlrole.h
+@@ -3,9 +3,10 @@ Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
+ See the file copying.txt for copying permission.
+ */
+
+-#ifndef XmlRole_INCLUDED
+-#define XmlRole_INCLUDED 1
++#ifndef XMLROLE_H_INCLUDED
++#define XMLROLE_H_INCLUDED
+
++#include "xmlrpc-c/c_util.h"
+ #include "xmltok.h"
+
+ #ifdef __cplusplus
+@@ -80,10 +81,10 @@ typedef struct prolog_state {
+ int documentEntity;
+ } PROLOG_STATE;
+
+-XMLTOKAPI void
++XMLRPC_DLLEXPORT void
+ xmlrpc_XmlPrologStateInit(PROLOG_STATE * const state);
+
+-XMLTOKAPI void
++XMLRPC_DLLEXPORT void
+ xmlrpc_XmlPrologStateInitExternalEntity(PROLOG_STATE * const state);
+
+ #define XmlTokenRole(state, tok, ptr, end, enc) \
+diff --git a/libs/xmlrpc-c/lib/expat/xmltok/xmltok.c b/libs/xmlrpc-c/lib/expat/xmltok/xmltok.c
+index 9eb8284..969ac23 100644
+--- a/libs/xmlrpc-c/lib/expat/xmltok/xmltok.c
++++ b/libs/xmlrpc-c/lib/expat/xmltok/xmltok.c
+@@ -4,6 +4,7 @@ See the file copying.txt for copying permission.
+ */
+
+ #include "xmlrpc_config.h"
++#include "bool.h"
+ #include "xmldef.h"
+ #include "xmltok.h"
+ #include "nametab.h"
+@@ -357,31 +358,48 @@ static const struct normal_encoding internal_utf8_encoding = {
+ STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)
+ };
+
+-static
+-void latin1_toUtf8(const ENCODING *enc ATTR_UNUSED,
+- const char **fromP, const char *fromLim,
+- char **toP, const char *toLim)
+-{
+- for (;;) {
+- unsigned char c;
+- if (*fromP == fromLim)
+- break;
+- c = (unsigned char)**fromP;
+- if (c & 0x80) {
+- if (toLim - *toP < 2)
+- break;
+- *(*toP)++ = ((c >> 6) | UTF8_cval2);
+- *(*toP)++ = ((c & 0x3f) | 0x80);
+- (*fromP)++;
+- }
+- else {
+- if (*toP == toLim)
+- break;
+- *(*toP)++ = *(*fromP)++;
++
++
++static void
++latin1_toUtf8(const ENCODING * const enc ATTR_UNUSED,
++ const char ** const fromP,
++ const char * const fromLim,
++ char ** const toP,
++ const char * const toLim) {
++/*----------------------------------------------------------------------------
++ Convert the Latin1 string that starts at *fromP and ends at 'fromLim'
++ to UTF8 in the buffer that starts at *toP and ends at 'toLim'.
++
++ Go from left to right and stop when the output buffer is full.
++
++ Note that the buffer can be full while still having a byte left in it
++ because a Latin1 character may require two bytes of the output buffer.
++
++ Leave *fromP and *toP pointing after the last character converted.
++-----------------------------------------------------------------------------*/
++ bool bufferIsFull;
++
++ for (bufferIsFull = false; *fromP != fromLim && !bufferIsFull;) {
++ unsigned char const c = (unsigned char)**fromP;
++ if (c & 0x80) {
++ if (toLim - *toP < 2)
++ bufferIsFull = true;
++ else {
++ *(*toP)++ = ((c >> 6) | UTF8_cval2);
++ *(*toP)++ = ((c & 0x3f) | 0x80);
++ ++(*fromP);
++ }
++ } else {
++ if (*toP == toLim)
++ bufferIsFull = true;
++ else
++ *(*toP)++ = *(*fromP)++;
++ }
+ }
+- }
+ }
+
++
++
+ static
+ void latin1_toUtf16(const ENCODING *enc ATTR_UNUSED,
+ const char **fromP, const char *fromLim,
+diff --git a/libs/xmlrpc-c/lib/expat/xmltok/xmltok.dsp b/libs/xmlrpc-c/lib/expat/xmltok/xmltok.dsp
+deleted file mode 100644
+index 58a70ef..0000000
+--- a/libs/xmlrpc-c/lib/expat/xmltok/xmltok.dsp
++++ /dev/null
+@@ -1,259 +0,0 @@
+-# Microsoft Developer Studio Project File - Name="xmltok" - Package Owner=<4>
+-# Microsoft Developer Studio Generated Build File, Format Version 6.00
+-# ** DO NOT EDIT **
+-
+-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+-# TARGTYPE "Win32 (x86) Static Library" 0x0104
+-
+-CFG=xmltok - Win32 Release
+-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+-!MESSAGE use the Export Makefile command and run
+-!MESSAGE
+-!MESSAGE NMAKE /f "xmltok.mak".
+-!MESSAGE
+-!MESSAGE You can specify a configuration when running NMAKE
+-!MESSAGE by defining the macro CFG on the command line. For example:
+-!MESSAGE
+-!MESSAGE NMAKE /f "xmltok.mak" CFG="xmltok - Win32 Release"
+-!MESSAGE
+-!MESSAGE Possible choices for configuration are:
+-!MESSAGE
+-!MESSAGE "xmltok - Win32 Release" (based on "Win32 (x86) Static Library")
+-!MESSAGE "xmltok - Win32 Debug" (based on "Win32 (x86) Static Library")
+-!MESSAGE "xmltok - Win32 Release DLL" (based on "Win32 (x86) Dynamic-Link Library")
+-!MESSAGE "xmltok - Win32 Debug DLL" (based on "Win32 (x86) Dynamic-Link Library")
+-!MESSAGE
+-
+-# Begin Project
+-# PROP AllowPerConfigDependencies 0
+-# PROP Scc_ProjName "xmltok"
+-# PROP Scc_LocalPath ".."
+-
+-!IF "$(CFG)" == "xmltok - Win32 Release"
+-
+-# PROP BASE Use_MFC 0
+-# PROP BASE Use_Debug_Libraries 0
+-# PROP BASE Output_Dir ".\Release"
+-# PROP BASE Intermediate_Dir ".\Release"
+-# PROP BASE Target_Dir "."
+-# PROP Use_MFC 0
+-# PROP Use_Debug_Libraries 0
+-# PROP Output_Dir "Release\xmltok"
+-# PROP Intermediate_Dir "Release\xmltok"
+-# PROP Target_Dir "."
+-LINK32=link.exe -lib
+-MTL=midl.exe
+-CPP=cl.exe
+-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_LIB" /YX /FD /c
+-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\.." /D "NDEBUG" /D "XML_NS" /D XMLTOKAPI=__declspec(dllexport) /D "WIN32" /D "_WINDOWS" /D "XML_DTD" /D "_MBCS" /D "_LIB" /YX /FD /c
+-RSC=rc.exe
+-# ADD BASE RSC /l 0x409 /d "NDEBUG"
+-# ADD RSC /l 0x409 /d "NDEBUG"
+-BSC32=bscmake.exe
+-# ADD BASE BSC32 /nologo
+-# ADD BSC32 /nologo
+-LIB32=link.exe -lib
+-# ADD BASE LIB32 /nologo
+-# ADD LIB32 /nologo
+-
+-!ELSEIF "$(CFG)" == "xmltok - Win32 Debug"
+-
+-# PROP BASE Use_MFC 0
+-# PROP BASE Use_Debug_Libraries 1
+-# PROP BASE Output_Dir ".\Debug"
+-# PROP BASE Intermediate_Dir ".\Debug"
+-# PROP BASE Target_Dir "."
+-# PROP Use_MFC 0
+-# PROP Use_Debug_Libraries 1
+-# PROP Output_Dir "Debug\xmltok"
+-# PROP Intermediate_Dir "Debug\xmltok"
+-# PROP Target_Dir "."
+-LINK32=link.exe -lib
+-MTL=midl.exe
+-CPP=cl.exe
+-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\.." /D "_DEBUG" /D XMLTOKAPI=__declspec(dllexport) /D "WIN32" /D "_WINDOWS" /D "XML_DTD" /D "XML_NS" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+-RSC=rc.exe
+-# ADD BASE RSC /l 0x409 /d "_DEBUG"
+-# ADD RSC /l 0x409 /d "_DEBUG"
+-BSC32=bscmake.exe
+-# ADD BASE BSC32 /nologo
+-# ADD BSC32 /nologo
+-LIB32=link.exe -lib
+-# ADD BASE LIB32 /nologo
+-# ADD LIB32 /nologo
+-
+-!ELSEIF "$(CFG)" == "xmltok - Win32 Release DLL"
+-
+-# PROP BASE Use_MFC 0
+-# PROP BASE Use_Debug_Libraries 0
+-# PROP BASE Output_Dir ".\ReleaseDLL"
+-# PROP BASE Intermediate_Dir ".\ReleaseDLL"
+-# PROP BASE Target_Dir "."
+-# PROP Use_MFC 0
+-# PROP Use_Debug_Libraries 0
+-# PROP Output_Dir "ReleaseDLL\xmltok"
+-# PROP Intermediate_Dir "ReleaseDLL\xmltok"
+-# PROP Ignore_Export_Lib 0
+-# PROP Target_Dir "."
+-CPP=cl.exe
+-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
+-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\.." /D "NDEBUG" /D "XML_NS" /D XMLTOKAPI=__declspec(dllexport) /D "WIN32" /D "_WINDOWS" /D "XML_DTD" /YX /FD /c
+-MTL=midl.exe
+-# ADD BASE MTL /nologo /D "NDEBUG" /win32
+-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+-RSC=rc.exe
+-# ADD BASE RSC /l 0x809 /d "NDEBUG"
+-# ADD RSC /l 0x809 /d "NDEBUG"
+-BSC32=bscmake.exe
+-# ADD BASE BSC32 /nologo
+-# ADD BSC32 /nologo
+-LINK32=link.exe
+-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
+-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /entry:"DllMain" /subsystem:windows /dll /machine:I386 /out:"..\..\xmltok.dll" /link50compat
+-# SUBTRACT LINK32 /pdb:none
+-
+-!ELSEIF "$(CFG)" == "xmltok - Win32 Debug DLL"
+-
+-# PROP BASE Use_MFC 0
+-# PROP BASE Use_Debug_Libraries 1
+-# PROP BASE Output_Dir ".\DebugDLL"
+-# PROP BASE Intermediate_Dir ".\DebugDLL"
+-# PROP BASE Target_Dir "."
+-# PROP Use_MFC 0
+-# PROP Use_Debug_Libraries 1
+-# PROP Output_Dir "DebugDLL\xmltok"
+-# PROP Intermediate_Dir "DebugDLL\xmltok"
+-# PROP Ignore_Export_Lib 0
+-# PROP Target_Dir "."
+-CPP=cl.exe
+-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
+-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\.." /D "_DEBUG" /D XMLTOKAPI=__declspec(dllexport) /D "WIN32" /D "_WINDOWS" /D "XML_DTD" /D "XML_NS" /YX /FD /c
+-MTL=midl.exe
+-# ADD BASE MTL /nologo /D "_DEBUG" /win32
+-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+-RSC=rc.exe
+-# ADD BASE RSC /l 0x809 /d "_DEBUG"
+-# ADD RSC /l 0x809 /d "_DEBUG"
+-BSC32=bscmake.exe
+-# ADD BASE BSC32 /nologo
+-# ADD BSC32 /nologo
+-LINK32=link.exe
+-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
+-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"..\..\xmltokD.dll"
+-
+-!ENDIF
+-
+-# Begin Target
+-
+-# Name "xmltok - Win32 Release"
+-# Name "xmltok - Win32 Debug"
+-# Name "xmltok - Win32 Release DLL"
+-# Name "xmltok - Win32 Debug DLL"
+-# Begin Group "Source Files"
+-
+-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"
+-# Begin Source File
+-
+-SOURCE=.\dllmain.c
+-
+-!IF "$(CFG)" == "xmltok - Win32 Release"
+-
+-# PROP Exclude_From_Build 1
+-
+-!ELSEIF "$(CFG)" == "xmltok - Win32 Debug"
+-
+-# PROP Exclude_From_Build 1
+-
+-!ELSEIF "$(CFG)" == "xmltok - Win32 Release DLL"
+-
+-!ELSEIF "$(CFG)" == "xmltok - Win32 Debug DLL"
+-
+-!ENDIF
+-
+-# End Source File
+-# Begin Source File
+-
+-SOURCE=..\gennmtab\gennmtab.c
+-
+-!IF "$(CFG)" == "xmltok - Win32 Release"
+-
+-# PROP Ignore_Default_Tool 1
+-
+-!ELSEIF "$(CFG)" == "xmltok - Win32 Debug"
+-
+-# PROP Ignore_Default_Tool 1
+-
+-!ELSEIF "$(CFG)" == "xmltok - Win32 Release DLL"
+-
+-!ELSEIF "$(CFG)" == "xmltok - Win32 Debug DLL"
+-
+-!ENDIF
+-
+-# End Source File
+-# Begin Source File
+-
+-SOURCE=.\xmlrole.c
+-# End Source File
+-# Begin Source File
+-
+-SOURCE=.\xmltok.c
+-# End Source File
+-# Begin Source File
+-
+-SOURCE=.\xmltok_impl.c
+-# PROP BASE Exclude_From_Build 1
+-# PROP Exclude_From_Build 1
+-# End Source File
+-# Begin Source File
+-
+-SOURCE=.\xmltok_ns.c
+-# PROP Exclude_From_Build 1
+-# End Source File
+-# End Group
+-# Begin Group "Header Files"
+-
+-# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
+-# Begin Source File
+-
+-SOURCE=.\asciitab.h
+-# End Source File
+-# Begin Source File
+-
+-SOURCE=.\iasciitab.h
+-# End Source File
+-# Begin Source File
+-
+-SOURCE=.\latin1tab.h
+-# End Source File
+-# Begin Source File
+-
+-SOURCE=.\nametab.h
+-# End Source File
+-# Begin Source File
+-
+-SOURCE=.\utf8tab.h
+-# End Source File
+-# Begin Source File
+-
+-SOURCE=.\xmldef.h
+-# End Source File
+-# Begin Source File
+-
+-SOURCE=.\xmlrole.h
+-# End Source File
+-# Begin Source File
+-
+-SOURCE=.\xmltok.h
+-# End Source File
+-# Begin Source File
+-
+-SOURCE=.\xmltok_impl.h
+-# End Source File
+-# End Group
+-# Begin Group "Resource Files"
+-
+-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
+-# End Group
+-# End Target
+-# End Project
+diff --git a/libs/xmlrpc-c/lib/expat/xmltok/xmltok.h b/libs/xmlrpc-c/lib/expat/xmltok/xmltok.h
+index 453568f..e24a78c 100644
+--- a/libs/xmlrpc-c/lib/expat/xmltok/xmltok.h
++++ b/libs/xmlrpc-c/lib/expat/xmltok/xmltok.h
+@@ -3,17 +3,15 @@ Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
+ See the file copying.txt for copying permission.
+ */
+
+-#ifndef XmlTok_INCLUDED
+-#define XmlTok_INCLUDED 1
++#ifndef XMLTOK_H_INCLUDED
++#define XMLTOK_H_INCLUDED
++
++#include "xmlrpc-c/c_util.h"
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+-#ifndef XMLTOKAPI
+-#define XMLTOKAPI /* as nothing */
+-#endif
+-
+ /* The following token may be returned by XmlContentTok */
+ #define XML_TOK_TRAILING_RSQB -5 /* ] or ]] at the end of the scan; might be start of
+ illegal ]]> sequence */
+@@ -130,7 +128,7 @@ struct encoding {
+ const char *, const char *);
+ int (*nameMatchesAscii)(const ENCODING *,
+ const char *, const char *, const char *);
+- int (*nameLength)(const ENCODING *, const char *);
++ size_t (*nameLength)(const ENCODING *, const char *);
+ const char *(*skipS)(const ENCODING *, const char *);
+ int (*getAtts)(const ENCODING *enc, const char *ptr,
+ int attsMax, ATTRIBUTE *atts);
+@@ -242,7 +240,8 @@ typedef struct {
+ const ENCODING **encPtr;
+ } INIT_ENCODING;
+
+-XMLTOKAPI int
++XMLRPC_DLLEXPORT
++int
+ xmlrpc_XmlParseXmlDecl(int const isGeneralTextEntity,
+ const ENCODING * const enc,
+ const char * const ptr,
+@@ -253,34 +252,42 @@ xmlrpc_XmlParseXmlDecl(int const isGeneralTextEntity,
+ const ENCODING ** const namedEncodingPtr,
+ int * const standalonePtr);
+
+-XMLTOKAPI const ENCODING *
++XMLRPC_DLLEXPORT
++const ENCODING *
+ xmlrpc_XmlGetUtf8InternalEncoding(void);
+
+-XMLTOKAPI const ENCODING *
++XMLRPC_DLLEXPORT
++const ENCODING *
+ xmlrpc_XmlGetUtf16InternalEncoding(void);
+
+-XMLTOKAPI int
++XMLRPC_DLLEXPORT
++int
+ xmlrpc_XmlInitEncoding(INIT_ENCODING * const p,
+ const ENCODING ** const encPtr,
+ const char * const name);
+
+-XMLTOKAPI int
++XMLRPC_DLLEXPORT
++int
+ xmlrpc_XmlUtf8Encode(int const c,
+ char * const buf);
+
+-XMLTOKAPI int
++XMLRPC_DLLEXPORT
++int
+ xmlrpc_XmlUtf16Encode(int const charNum,
+ unsigned short * const buf);
+
+-XMLTOKAPI int
++XMLRPC_DLLEXPORT
++int
+ xmlrpc_XmlSizeOfUnknownEncoding(void);
+
+-XMLTOKAPI ENCODING *
++XMLRPC_DLLEXPORT
++ENCODING *
+ xmlrpc_XmlInitUnknownEncoding(void * const mem,
+ int * const table,
+ int (*convert)(void *userData, const char *p),
+ void * const userData);
+
++XMLRPC_DLLEXPORT
+ int
+ xmlrpc_XmlParseXmlDeclNS(int const isGeneralTextEntity,
+ const ENCODING * const enc,
+@@ -292,17 +299,21 @@ xmlrpc_XmlParseXmlDeclNS(int const isGeneralTextEntity,
+ const ENCODING ** const namedEncodingPtr,
+ int * const standalonePtr);
+
++XMLRPC_DLLEXPORT
+ int
+ xmlrpc_XmlInitEncodingNS(INIT_ENCODING * const p,
+ const ENCODING ** const encPtr,
+ const char * const name);
+
++XMLRPC_DLLEXPORT
+ const ENCODING *
+ xmlrpc_XmlGetUtf8InternalEncodingNS(void);
+
++XMLRPC_DLLEXPORT
+ const ENCODING *
+ xmlrpc_XmlGetUtf16InternalEncodingNS(void);
+
++XMLRPC_DLLEXPORT
+ ENCODING *
+ xmlrpc_XmlInitUnknownEncodingNS(void * const mem,
+ int * const table,
+diff --git a/libs/xmlrpc-c/lib/expat/xmltok/xmltok_impl.c b/libs/xmlrpc-c/lib/expat/xmltok/xmltok_impl.c
+index cc9bc59..2bbc8db 100644
+--- a/libs/xmlrpc-c/lib/expat/xmltok/xmltok_impl.c
++++ b/libs/xmlrpc-c/lib/expat/xmltok/xmltok_impl.c
+@@ -26,7 +26,7 @@ See the file copying.txt for copying permission.
+ case BT_MALFORM: \
+ case BT_TRAIL: \
+ *(nextTokPtr) = (ptr); \
+- return XML_TOK_INVALID;
++ return XML_TOK_INVALID
+
+ #define CHECK_NAME_CASE(n, enc, ptr, end, nextTokPtr) \
+ case BT_LEAD ## n: \
+@@ -99,7 +99,7 @@ int PREFIX(scanComment)(const ENCODING *enc, const char *ptr, const char *end,
+ ptr += MINBPC(enc);
+ while (ptr != end) {
+ switch (BYTE_TYPE(enc, ptr)) {
+- INVALID_CASES(ptr, nextTokPtr)
++ INVALID_CASES(ptr, nextTokPtr);
+ case BT_MINUS:
+ if ((ptr += MINBPC(enc)) == end)
+ return XML_TOK_PARTIAL;
+@@ -244,7 +244,7 @@ int PREFIX(scanPi)(const ENCODING *enc, const char *ptr, const char *end,
+ ptr += MINBPC(enc);
+ while (ptr != end) {
+ switch (BYTE_TYPE(enc, ptr)) {
+- INVALID_CASES(ptr, nextTokPtr)
++ INVALID_CASES(ptr, nextTokPtr);
+ case BT_QUEST:
+ ptr += MINBPC(enc);
+ if (ptr == end)
+@@ -345,7 +345,7 @@ int PREFIX(cdataSectionTok)(const ENCODING *enc, const char *ptr, const char *en
+ case BT_LF:
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_DATA_NEWLINE;
+- INVALID_CASES(ptr, nextTokPtr)
++ INVALID_CASES(ptr, nextTokPtr);
+ default:
+ ptr += MINBPC(enc);
+ break;
+@@ -598,7 +598,7 @@ int PREFIX(scanAtts)(const ENCODING *enc, const char *ptr, const char *end,
+ if (t == open)
+ break;
+ switch (t) {
+- INVALID_CASES(ptr, nextTokPtr)
++ INVALID_CASES(ptr, nextTokPtr);
+ case BT_AMP:
+ {
+ int tok = PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, &ptr);
+@@ -768,103 +768,179 @@ int PREFIX(scanLt)(const ENCODING *enc, const char *ptr, const char *end,
+ return XML_TOK_PARTIAL;
+ }
+
+-static
+-int PREFIX(contentTok)(const ENCODING *enc, const char *ptr, const char *end,
+- const char **nextTokPtr)
+-{
+- if (ptr == end)
+- return XML_TOK_NONE;
+- if (MINBPC(enc) > 1) {
+- size_t n = end - ptr;
+- if (n & (MINBPC(enc) - 1)) {
+- n &= ~(MINBPC(enc) - 1);
+- if (n == 0)
+- return XML_TOK_PARTIAL;
+- end = ptr + n;
+- }
+- }
+- switch (BYTE_TYPE(enc, ptr)) {
+- case BT_LT:
+- return PREFIX(scanLt)(enc, ptr + MINBPC(enc), end, nextTokPtr);
+- case BT_AMP:
+- return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr);
+- case BT_CR:
+- ptr += MINBPC(enc);
+- if (ptr == end)
+- return XML_TOK_TRAILING_CR;
+- if (BYTE_TYPE(enc, ptr) == BT_LF)
+- ptr += MINBPC(enc);
+- *nextTokPtr = ptr;
+- return XML_TOK_DATA_NEWLINE;
+- case BT_LF:
+- *nextTokPtr = ptr + MINBPC(enc);
+- return XML_TOK_DATA_NEWLINE;
+- case BT_RSQB:
+- ptr += MINBPC(enc);
+- if (ptr == end)
+- return XML_TOK_TRAILING_RSQB;
+- if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB))
+- break;
+- ptr += MINBPC(enc);
+- if (ptr == end)
+- return XML_TOK_TRAILING_RSQB;
+- if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) {
+- ptr -= MINBPC(enc);
+- break;
+- }
+- *nextTokPtr = ptr;
+- return XML_TOK_INVALID;
+- INVALID_CASES(ptr, nextTokPtr)
+- default:
+- ptr += MINBPC(enc);
+- break;
+- }
+- while (ptr != end) {
+- switch (BYTE_TYPE(enc, ptr)) {
++
++
+ #define LEAD_CASE(n) \
+ case BT_LEAD ## n: \
+- if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \
+- *nextTokPtr = ptr; \
+- return XML_TOK_DATA_CHARS; \
+- } \
+- ptr += n; \
+- break;
+- LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
+-#undef LEAD_CASE
+- case BT_RSQB:
+- if (ptr + MINBPC(enc) != end) {
+- if (!CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_RSQB)) {
+- ptr += MINBPC(enc);
+- break;
+- }
+- if (ptr + 2*MINBPC(enc) != end) {
+- if (!CHAR_MATCHES(enc, ptr + 2*MINBPC(enc), ASCII_GT)) {
+- ptr += MINBPC(enc);
+- break;
+- }
+- *nextTokPtr = ptr + 2*MINBPC(enc);
+- return XML_TOK_INVALID;
+- }
+- }
+- /* fall through */
+- case BT_AMP:
+- case BT_LT:
+- case BT_NONXML:
+- case BT_MALFORM:
+- case BT_TRAIL:
+- case BT_CR:
+- case BT_LF:
+- *nextTokPtr = ptr;
+- return XML_TOK_DATA_CHARS;
+- default:
+- ptr += MINBPC(enc);
+- break;
++ if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \
++ *nextTokPtr = ptr; \
++ return XML_TOK_DATA_CHARS; \
++ } \
++ ptr += n; \
++ break
++
++
++
++static void
++PREFIX(chopToWholeCharacters)(const char * const inputStart,
++ const char * const inputEnd,
++ const char ** const choppedEndP) {
++
++ if (MINBPC(enc) > 1) {
++ size_t const length = inputEnd - inputStart;
++ if (length & (MINBPC(enc) - 1)) {
++ size_t const roundedLen = length & ~(MINBPC(enc) - 1);
++ *choppedEndP = inputStart + roundedLen;
++ } else
++ *choppedEndP = inputEnd;
++ } else
++ *choppedEndP = inputEnd;
++}
++
++
++
++static void
++PREFIX(processBtRsqb)(const ENCODING * const enc ATTR_UNUSED,
++ const char * const start,
++ const char * const end,
++ unsigned int * const countP,
++ bool * const invalidP) {
++
++ if (start + MINBPC(enc) < end) {
++ if (!CHAR_MATCHES(enc, start + MINBPC(enc), ASCII_RSQB)) {
++ *countP = MINBPC(enc);
++ *invalidP = false;
++ } else {
++ if (start + 2*MINBPC(enc) < end) {
++ if (!CHAR_MATCHES(enc, start + 2*MINBPC(enc), ASCII_GT)) {
++ *countP = MINBPC(enc);
++ *invalidP = false;
++ } else {
++ *countP = 2 * MINBPC(enc);
++ *invalidP = true;
++ }
++ } else {
++ *countP = 0;
++ *invalidP = false;
++ }
++ }
++ } else {
++ *countP = 0;
++ *invalidP = false;
+ }
+- }
+- *nextTokPtr = ptr;
+- return XML_TOK_DATA_CHARS;
+ }
+
++
++
++static int
++PREFIX(contentTok)(const ENCODING * const enc,
++ const char * const inputStart,
++ const char * const inputEnd,
++ const char ** const nextTokPtr) {
++/*----------------------------------------------------------------------------
++ Parse off a token from the string that starts at 'inputStart' and ends at
++ 'inputEnd'. Return the class of that token.
++
++ Return *nextTokPtr pointing just after the parsed-off token in the string.
++
++ Sometimes, there is no token we can parse, so our return value is a
++ disposition code indicating that situation and *nextTokPtr points to the
++ beginning of the string.
++-----------------------------------------------------------------------------*/
++ if (inputEnd == inputStart) {
++ *nextTokPtr = inputStart;
++ return XML_TOK_NONE;
++ } else {
++ const char * ptr;
++ const char * end;
++ /* The virtual end of the string; we look at only whole
++ characters; e.g. if there are 2 bytes per character and the
++ buffer is 9 bytes, we look at only the first 8 and 'end' points
++ after the 8th byte.
++ */
++ PREFIX(chopToWholeCharacters)(inputStart, inputEnd, &end);
++
++ if (end == inputStart) {
++ *nextTokPtr = inputStart;
++ return XML_TOK_PARTIAL;
++ }
++ ptr = inputStart; /* Start at the beginning */
++
++ switch (BYTE_TYPE(enc, ptr)) {
++ case BT_LT:
++ return PREFIX(scanLt)(enc, ptr + MINBPC(enc), end, nextTokPtr);
++ case BT_AMP:
++ return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr);
++ case BT_CR:
++ ptr += MINBPC(enc);
++ if (ptr == end)
++ return XML_TOK_TRAILING_CR;
++ if (BYTE_TYPE(enc, ptr) == BT_LF)
++ ptr += MINBPC(enc);
++ *nextTokPtr = ptr;
++ return XML_TOK_DATA_NEWLINE;
++ case BT_LF:
++ *nextTokPtr = ptr + MINBPC(enc);
++ return XML_TOK_DATA_NEWLINE;
++ case BT_RSQB:
++ ptr += MINBPC(enc);
++ if (ptr == end)
++ return XML_TOK_TRAILING_RSQB;
++ if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB))
++ break;
++ ptr += MINBPC(enc);
++ if (ptr == end)
++ return XML_TOK_TRAILING_RSQB;
++ if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) {
++ ptr -= MINBPC(enc);
++ break;
++ }
++ *nextTokPtr = ptr;
++ return XML_TOK_INVALID;
++ INVALID_CASES(ptr, nextTokPtr);
++ default:
++ ptr += MINBPC(enc);
++ break;
++ }
++ while (ptr < end) {
++ switch (BYTE_TYPE(enc, ptr)) {
++ LEAD_CASE(2);
++ LEAD_CASE(3);
++ LEAD_CASE(4);
++ case BT_RSQB: {
++ bool invalid;
++ unsigned int count;
++ PREFIX(processBtRsqb)(enc, ptr, end, &count, &invalid);
++ ptr += count;
++ if (invalid) {
++ *nextTokPtr = ptr;
++ return XML_TOK_INVALID;
++ }
++ }
++ /* fall through */
++ case BT_AMP:
++ case BT_LT:
++ case BT_NONXML:
++ case BT_MALFORM:
++ case BT_TRAIL:
++ case BT_CR:
++ case BT_LF:
++ *nextTokPtr = ptr;
++ return XML_TOK_DATA_CHARS;
++ default:
++ ptr += MINBPC(enc);
++ break;
++ }
++ }
++ *nextTokPtr = ptr;
++ return XML_TOK_DATA_CHARS;
++ }
++}
++
++#undef LEAD_CASE
++
++
++
+ /* ptr points to character following "%" */
+
+ static
+@@ -931,7 +1007,7 @@ int PREFIX(scanLit)(int open, const ENCODING *enc,
+ while (ptr != end) {
+ int t = BYTE_TYPE(enc, ptr);
+ switch (t) {
+- INVALID_CASES(ptr, nextTokPtr)
++ INVALID_CASES(ptr, nextTokPtr);
+ case BT_QUOT:
+ case BT_APOS:
+ ptr += MINBPC(enc);
+@@ -1305,7 +1381,7 @@ int PREFIX(ignoreSectionTok)(const ENCODING *enc, const char *ptr, const char *e
+ }
+ while (ptr != end) {
+ switch (BYTE_TYPE(enc, ptr)) {
+- INVALID_CASES(ptr, nextTokPtr)
++ INVALID_CASES(ptr, nextTokPtr);
+ case BT_LT:
+ if ((ptr += MINBPC(enc)) == end)
+ return XML_TOK_PARTIAL;
+@@ -1664,30 +1740,38 @@ int PREFIX(nameMatchesAscii)(const ENCODING * enc ATTR_UNUSED,
+ return ptr1 == end1;
+ }
+
+-static
+-int PREFIX(nameLength)(const ENCODING *enc, const char *ptr)
+-{
+- const char *start = ptr;
+- for (;;) {
+- switch (BYTE_TYPE(enc, ptr)) {
+-#define LEAD_CASE(n) \
+- case BT_LEAD ## n: ptr += n; break;
+- LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
+-#undef LEAD_CASE
+- case BT_NONASCII:
+- case BT_NMSTRT:
+- case BT_COLON:
+- case BT_HEX:
+- case BT_DIGIT:
+- case BT_NAME:
+- case BT_MINUS:
+- ptr += MINBPC(enc);
+- break;
+- default:
+- return ptr - start;
++
++
++#define LEAD_CASE(n) case BT_LEAD ## n: ptr += n; break
++
++static size_t
++PREFIX(nameLength)(const ENCODING * const enc,
++ const char * const start) {
++
++ const char * ptr;
++
++ for (ptr = start;;) {
++ switch (BYTE_TYPE(enc, ptr)) {
++ LEAD_CASE(2);
++ LEAD_CASE(3);
++ LEAD_CASE(4);
++ case BT_NONASCII:
++ case BT_NMSTRT:
++ case BT_COLON:
++ case BT_HEX:
++ case BT_DIGIT:
++ case BT_NAME:
++ case BT_MINUS:
++ ptr += MINBPC(enc);
++ break;
++ default:
++ return ptr - start;
++ }
+ }
+- }
+ }
++#undef LEAD_CASE
++
++
+
+ static
+ const char *PREFIX(skipS)(const ENCODING *enc, const char *ptr)
+@@ -1705,40 +1789,49 @@ const char *PREFIX(skipS)(const ENCODING *enc, const char *ptr)
+ }
+ }
+
+-static
+-void PREFIX(updatePosition)(const ENCODING *enc,
+- const char *ptr,
+- const char *end,
+- POSITION *pos)
+-{
+- while (ptr != end) {
+- switch (BYTE_TYPE(enc, ptr)) {
++
++
+ #define LEAD_CASE(n) \
+ case BT_LEAD ## n: \
+ ptr += n; \
+- break;
+- LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
+-#undef LEAD_CASE
+- case BT_LF:
+- pos->columnNumber = (unsigned)-1;
+- pos->lineNumber++;
+- ptr += MINBPC(enc);
+- break;
+- case BT_CR:
+- pos->lineNumber++;
+- ptr += MINBPC(enc);
+- if (ptr != end && BYTE_TYPE(enc, ptr) == BT_LF)
+- ptr += MINBPC(enc);
+- pos->columnNumber = (unsigned)-1;
+- break;
+- default:
+- ptr += MINBPC(enc);
+- break;
++ break
++
++static void
++PREFIX(updatePosition)(const ENCODING * const enc,
++ const char * const start,
++ const char * const end,
++ POSITION * const posP) {
++
++ const char * ptr;
++
++ for (ptr = start; ptr < end;) {
++ switch (BYTE_TYPE(enc, ptr)) {
++ LEAD_CASE(2);
++ LEAD_CASE(3);
++ LEAD_CASE(4);
++ case BT_LF:
++ posP->columnNumber = (unsigned)-1;
++ ++posP->lineNumber;
++ ptr += MINBPC(enc);
++ break;
++ case BT_CR:
++ ++posP->lineNumber;
++ ptr += MINBPC(enc);
++ if (ptr != end && BYTE_TYPE(enc, ptr) == BT_LF)
++ ptr += MINBPC(enc);
++ posP->columnNumber = (unsigned)-1;
++ break;
++ default:
++ ptr += MINBPC(enc);
++ break;
++ }
++ ++posP->columnNumber;
+ }
+- pos->columnNumber++;
+- }
+ }
+
++#undef LEAD_CASE
++
++
+ #undef DO_LEAD_CASE
+ #undef MULTIBYTE_CASES
+ #undef INVALID_CASES
+diff --git a/libs/xmlrpc-c/lib/expat/xmlwf/.cvsignore b/libs/xmlrpc-c/lib/expat/xmlwf/.cvsignore
+deleted file mode 100644
+index f3c7a7c..0000000
+--- a/libs/xmlrpc-c/lib/expat/xmlwf/.cvsignore
++++ /dev/null
+@@ -1 +0,0 @@
+-Makefile
+diff --git a/libs/xmlrpc-c/lib/expat/xmlwf/xmlfile.c b/libs/xmlrpc-c/lib/expat/xmlwf/xmlfile.c
+index 5b3b978..8675790 100644
+--- a/libs/xmlrpc-c/lib/expat/xmlwf/xmlfile.c
++++ b/libs/xmlrpc-c/lib/expat/xmlwf/xmlfile.c
+@@ -17,7 +17,7 @@ See the file copying.txt for copying permission.
+ #include <io.h>
+ #endif
+
+-#ifdef _POSIX_SOURCE
++#ifdef _XOPEN_SOURCE 600
+ #include <unistd.h>
+ #endif
+
+diff --git a/libs/xmlrpc-c/lib/libutil/Makefile b/libs/xmlrpc-c/lib/libutil/Makefile
+index 7c75a37..5e53b47 100644
+--- a/libs/xmlrpc-c/lib/libutil/Makefile
++++ b/libs/xmlrpc-c/lib/libutil/Makefile
+@@ -1,7 +1,9 @@
+ ###############################################################################
+ # This directory builds libxmlrpc_util, which contains utility
+-# functions that are used by the Xmlprc-c # libraries, and also
+-# directly by Xmlrpc-c programs.
++# functions that are used by the Xmlprc-c libraries, and also
++# directly by Xmlrpc-c programs. Some of them are documented for use
++# by Xmlrpc-c users, as facilities of the libxmlrpc library (which
++# prerequires libxmlrpc_util).
+ #
+ # The functions in this library are characterized by being general purpose
+ # programming functions, such as one might wish were in the standard C
+@@ -29,11 +31,13 @@ SHARED_LIBS_TO_INSTALL := libxmlrpc_util
+
+ TARGET_MODS = \
+ asprintf \
++ base64 \
+ error \
+ make_printable \
+ memblock \
+ select \
+ sleep \
++ string_number \
+ time \
+ utf8 \
+
+@@ -43,8 +47,6 @@ MAJ=3
+
+ include $(SRCDIR)/common.mk
+
+-CFLAGS = $(CFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
+-
+ INCLUDES = -I$(BLDDIR) -Isrcdir \
+ -I$(BLDDIR)/include -Isrcdir/include -Isrcdir/lib/util/include
+
+@@ -53,17 +55,13 @@ UTIL_SHLIB = $(call shlibfn,libxmlrpc_util)
+ UTIL_SHLIBLE = $(call shliblefn,libxmlrpc_util)
+ #UTIL_SHLIBLE is e.g. libxmlrpc_util.so
+
+-ifneq ($(SHARED_LIB_TYPE),NONE)
+- TARGET_SHARED_LIBS := $(UTIL_SHLIB) $(UTIL_SHLIBLE)
+- endif
+-
+ # This 'common.mk' dependency makes sure the symlinks get built before
+ # this make file is used for anything.
+
+ $(SRCDIR)/common.mk: srcdir blddir
+
+ .PHONY: all
+-all: libxmlrpc_util.a $(TARGET_SHARED_LIBS) $(TARGET_SHARED_LE_LIBS)
++all: libxmlrpc_util.a $(TARGET_SHARED_LIBRARIES) $(TARGET_SHARED_LE_LIBS)
+
+ # Rule for this is in common.mk, courtesy of TARGET_LIBRARY_NAMES:
+ $(UTIL_SHLIB): $(TARGET_MODS:%=%.osh)
+@@ -92,4 +90,4 @@ distclean: clean distclean-common
+ .PHONY: dep
+ dep: dep-common
+
+-include Makefile.depend
++include depend.mk
+diff --git a/libs/xmlrpc-c/lib/libutil/asprintf.c b/libs/xmlrpc-c/lib/libutil/asprintf.c
+index 9e5a614..b525230 100644
+--- a/libs/xmlrpc-c/lib/libutil/asprintf.c
++++ b/libs/xmlrpc-c/lib/libutil/asprintf.c
+@@ -1,10 +1,61 @@
+-//#define _GNU_SOURCE
++#define _XOPEN_SOURCE 600 /* Make sure strdup() is in <string.h> */
++#ifndef _GNU_SOURCE
++ #define _GNU_SOURCE /* But only when HAVE_ASPRINTF */
++#endif
++#include <stdarg.h>
++
+ #include <stdarg.h>
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <limits.h>
+
+ #include "xmlrpc_config.h" /* For HAVE_ASPRINTF, __inline__ */
+ #include "xmlrpc-c/string_int.h"
++#include "bool.h"
++
++
++
++static __inline__ void
++newVsnprintf(char * const buffer,
++ size_t const bufferSize,
++ const char * const fmt,
++ va_list varargs,
++ size_t * const formattedSizeP) {
++/*----------------------------------------------------------------------------
++ This is vsnprintf() with the new behavior, where not fitting in the buffer
++ is not a failure.
++
++ Unfortunately, we can't practically return the size of the formatted string
++ if the C library has old vsnprintf() and the formatted string doesn't fit
++ in the buffer, so in that case we just return something larger than the
++ buffer.
++-----------------------------------------------------------------------------*/
++ if (bufferSize > INT_MAX/2) {
++ /* There's a danger we won't be able to coerce the return value
++ of XMLRPC_VSNPRINTF to an integer (which we have to do because,
++ while for POSIX its return value is ssize_t, on Windows it is int),
++ or return double the buffer size.
++ */
++ *formattedSizeP = 0;
++ } else {
++ int rc;
++
++ rc = XMLRPC_VSNPRINTF(buffer, bufferSize, fmt, varargs);
++
++ if (rc < 0) {
++ /* We have old vsnprintf() (or Windows) and the formatted value
++ doesn't fit in the buffer, but we don't know how big a buffer it
++ needs.
++ */
++ *formattedSizeP = bufferSize * 2;
++ } else {
++ /* Either the string fits in the buffer or we have new vsnprintf()
++ which tells us how big the string is regardless.
++ */
++ *formattedSizeP = rc;
++ }
++ }
++}
+
+
+
+@@ -15,29 +66,24 @@ simpleVasprintf(char ** const retvalP,
+ /*----------------------------------------------------------------------------
+ This is a poor man's implementation of vasprintf(), of GNU fame.
+ -----------------------------------------------------------------------------*/
+- size_t const initialSize = 4096;
+ char * result;
+-
+- result = malloc(initialSize);
+- if (result != NULL) {
+- size_t bytesNeeded;
+- bytesNeeded = XMLRPC_VSNPRINTF(result, initialSize, fmt, varargs);
+- if (bytesNeeded > initialSize) {
+- free(result);
+- result = malloc(bytesNeeded);
+- if (result != NULL)
+- XMLRPC_VSNPRINTF(result, bytesNeeded, fmt, varargs);
+- } else if (bytesNeeded == initialSize) {
+- if (result[initialSize-1] != '\0') {
+- /* This is one of those old systems where vsnprintf()
+- returns the number of bytes it used, instead of the
+- number that it needed, and it in fact needed more than
+- we gave it. Rather than mess with this highly unlikely
+- case (old system and string > 4095 characters), we just
+- treat this like an out of memory failure.
+- */
++ size_t bufferSize;
++ bool outOfMemory;
++
++ for (result = NULL, bufferSize = 4096, outOfMemory = false;
++ !result && !outOfMemory;
++ ) {
++
++ result = malloc(bufferSize);
++ if (!result)
++ outOfMemory = true;
++ else {
++ size_t bytesNeeded;
++ newVsnprintf(result, bufferSize, fmt, varargs, &bytesNeeded);
++ if (bytesNeeded > bufferSize) {
+ free(result);
+ result = NULL;
++ bufferSize = bytesNeeded;
+ }
+ }
+ }
+@@ -46,7 +92,28 @@ simpleVasprintf(char ** const retvalP,
+
+
+
+-const char * const xmlrpc_strsol = "[insufficient memory to build string]";
++static const char * const xmlrpc_strsol =
++ "[insufficient memory to build string]";
++
++
++
++bool
++xmlrpc_strnomem(const char * const string) {
++/*----------------------------------------------------------------------------
++ The string 'string' was generated by a function in this file because it
++ couldn't get enough memory to generate the string that it was supposed to
++ generate. I.e. a preceding call to a string function failed.
++-----------------------------------------------------------------------------*/
++ return string == xmlrpc_strsol;
++}
++
++
++
++const char *
++xmlrpc_strnomemval() {
++
++ return xmlrpc_strsol;
++}
+
+
+
+@@ -71,7 +138,7 @@ xmlrpc_vasprintf(const char ** const retvalP,
+
+
+
+-void GNU_PRINTF_ATTR(2,3)
++void XMLRPC_PRINTF_ATTR(2,3)
+ xmlrpc_asprintf(const char ** const retvalP, const char * const fmt, ...) {
+
+ va_list varargs; /* mysterious structure used by variable arg facility */
+@@ -86,12 +153,13 @@ xmlrpc_asprintf(const char ** const retvalP, const char * const fmt, ...) {
+
+
+ const char *
+-xmlrpc_strdupnull(const char * const string) {
++xmlrpc_strdupsol(const char * const string) {
+
+- if (string)
+- return strdup(string);
+- else
+- return NULL;
++ const char * retvalOrNull;
++
++ retvalOrNull = strdup(string);
++
++ return retvalOrNull ? retvalOrNull : xmlrpc_strsol;
+ }
+
+
+@@ -105,6 +173,17 @@ xmlrpc_strfree(const char * const string) {
+
+
+
++const char *
++xmlrpc_strdupnull(const char * const string) {
++
++ if (string)
++ return strdup(string);
++ else
++ return NULL;
++}
++
++
++
+ void
+ xmlrpc_strfreenull(const char * const string) {
+
+diff --git a/libs/xmlrpc-c/lib/libutil/error.c b/libs/xmlrpc-c/lib/libutil/error.c
+index fd964d0..ff3bbe1 100644
+--- a/libs/xmlrpc-c/lib/libutil/error.c
++++ b/libs/xmlrpc-c/lib/libutil/error.c
+@@ -1,5 +1,7 @@
+ /* Copyright information is at end of file */
+
++#define _XOPEN_SOURCE 600 /* Make sure strdup() is in <string.h> */
++
+ #include "xmlrpc_config.h"
+
+ #include <stdlib.h>
+@@ -86,7 +88,7 @@ void
+ xmlrpc_set_fault_formatted_v(xmlrpc_env * const envP,
+ int const code,
+ const char * const format,
+- va_list const args) {
++ va_list args) {
+
+ const char * faultDescription;
+
+diff --git a/libs/xmlrpc-c/lib/libutil/make_printable.c b/libs/xmlrpc-c/lib/libutil/make_printable.c
+index fc94f78..444a733 100644
+--- a/libs/xmlrpc-c/lib/libutil/make_printable.c
++++ b/libs/xmlrpc-c/lib/libutil/make_printable.c
+@@ -1,4 +1,4 @@
+-//#define _GNU_SOURCE
++#define _XOPEN_SOURCE 600 /* Make sure strdup() is in <string.h> */
+
+ #include <stdarg.h>
+ #include <string.h>
+diff --git a/libs/xmlrpc-c/lib/libutil/memblock.c b/libs/xmlrpc-c/lib/libutil/memblock.c
+index d79d4ca..f0119a8 100644
+--- a/libs/xmlrpc-c/lib/libutil/memblock.c
++++ b/libs/xmlrpc-c/lib/libutil/memblock.c
+@@ -6,6 +6,7 @@
+ #include <string.h>
+ #include <ctype.h>
+
++#include "mallocvar.h"
+ #include "xmlrpc-c/util_int.h"
+ #include "xmlrpc-c/util.h"
+
+@@ -19,30 +20,30 @@
+
+
+ xmlrpc_mem_block *
+-xmlrpc_mem_block_new(xmlrpc_env * const env,
++xmlrpc_mem_block_new(xmlrpc_env * const envP,
+ size_t const size) {
+
+- xmlrpc_mem_block* block;
++ xmlrpc_mem_block * block;
+
+- XMLRPC_ASSERT_ENV_OK(env);
+-
+- block = (xmlrpc_mem_block*) malloc(sizeof(xmlrpc_mem_block));
+- XMLRPC_FAIL_IF_NULL(block, env, XMLRPC_INTERNAL_ERROR,
+- "Can't allocate memory block");
++ XMLRPC_ASSERT_ENV_OK(envP);
+
+- xmlrpc_mem_block_init(env, block, size);
+- XMLRPC_FAIL_IF_FAULT(env);
++ MALLOCVAR(block);
++
++ if (block == NULL)
++ xmlrpc_faultf(envP, "Can't allocate memory block");
++ else {
++ xmlrpc_mem_block_init(envP, block, size);
+
+- cleanup:
+- if (env->fault_occurred) {
+- if (block)
++ if (envP->fault_occurred) {
+ free(block);
+- return NULL;
+- } else {
+- return block;
++ block = NULL;
++ }
+ }
++ return block;
+ }
+
++
++
+ /* Destroy an existing xmlrpc_mem_block, and everything it contains. */
+ void
+ xmlrpc_mem_block_free(xmlrpc_mem_block * const blockP) {
+@@ -74,7 +75,7 @@ xmlrpc_mem_block_init(xmlrpc_env * const envP,
+ blockP->_block = (void*) malloc(blockP->_allocated);
+ if (!blockP->_block)
+ xmlrpc_faultf(envP, "Can't allocate %u-byte memory block",
+- blockP->_allocated);
++ (unsigned)blockP->_allocated);
+ }
+
+
+@@ -170,19 +171,15 @@ xmlrpc_mem_block_append(xmlrpc_env * const envP,
+ const void * const data,
+ size_t const len) {
+
+- int size;
++ size_t const originalSize = blockP->_size;
+
+ XMLRPC_ASSERT_ENV_OK(envP);
+ XMLRPC_ASSERT(blockP != NULL);
+
+- size = blockP->_size;
+- xmlrpc_mem_block_resize(envP, blockP, size + len);
+- XMLRPC_FAIL_IF_FAULT(envP);
+-
+- memcpy(((unsigned char*) blockP->_block) + size, data, len);
+-
+- cleanup:
+- return;
++ xmlrpc_mem_block_resize(envP, blockP, originalSize + len);
++ if (!envP->fault_occurred) {
++ memcpy(((unsigned char*) blockP->_block) + originalSize, data, len);
++ }
+ }
+
+
+diff --git a/libs/xmlrpc-c/lib/libutil/select.c b/libs/xmlrpc-c/lib/libutil/select.c
+index 8999884..6a390d4 100644
+--- a/libs/xmlrpc-c/lib/libutil/select.c
++++ b/libs/xmlrpc-c/lib/libutil/select.c
+@@ -1,5 +1,7 @@
+ #define _XOPEN_SOURCE 600 /* Get pselect() in <sys/select.h> */
+
++#include "xmlrpc_config.h"
++
+ #ifdef WIN32
+ #include <winsock.h>
+ #else
+@@ -8,12 +10,12 @@
+ in this order appears to work on all.
+ */
+ #include <sys/time.h>
++#if HAVE_SYS_SELECT_H
+ #include <sys/select.h>
++#endif
+ #endif
+ #include <signal.h>
+
+-#include "xmlrpc_config.h"
+-
+ #include "xmlrpc-c/select_int.h"
+
+
+diff --git a/libs/xmlrpc-c/lib/libutil/utf8.c b/libs/xmlrpc-c/lib/libutil/utf8.c
+index d0de07e..77e436d 100644
+--- a/libs/xmlrpc-c/lib/libutil/utf8.c
++++ b/libs/xmlrpc-c/lib/libutil/utf8.c
+@@ -38,6 +38,7 @@
+ ** http://www.cl.cam.ac.uk/~mgk25/unicode.html
+ */
+
++#include <assert.h>
+ #include "int.h"
+
+ #include "xmlrpc_config.h"
+@@ -51,31 +52,33 @@
+ ** UTF-8 data.
+ */
+
+-/* The number of bytes in a UTF-8 sequence starting with the character used
+-** as the array index. A zero entry indicates an illegal initial byte.
+-** This table was generated using a Perl script and information from the
+-** UTF-8 standard.
+-**
+-** Fredrik Lundh's UTF-8 decoder Python 2.0 uses a similar table. But
+-** since Python 2.0 has the icky CNRI license, I regenerated this
+-** table from scratch and wrote my own decoder. */
+-static unsigned char utf8_seq_length[256] = {
+- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+- 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 0, 0
++static unsigned char utf8SeqLength[256] = {
++
++ /* utf8SeqLength[B] is the number of bytes in a UTF-8 sequence that starts
++ with byte B. Except zero indicates an illegal initial byte.
++
++ Fredrik Lundh's UTF-8 decoder Python 2.0 uses a similar table. But since
++ Python 2.0 has the icky CNRI license, I generated this table from scratch
++ and wrote my own decoder.
++ */
++
++ /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
++ /* 0 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
++ /* 1 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
++ /* 2 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
++ /* 3 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
++ /* 4 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
++ /* 5 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
++ /* 6 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
++ /* 7 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
++ /* 8 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
++ /* 9 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
++ /* A */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
++ /* B */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
++ /* C */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
++ /* D */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
++ /* E */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
++ /* F */ 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 0, 0
+ };
+
+ /* The minimum legal character value for a UTF-8 sequence of the given
+@@ -118,14 +121,129 @@ static uint32_t const utf8_min_char_for_length[] = {
+ #if HAVE_UNICODE_WCHAR
+
+
++static void
++validateContinuation(xmlrpc_env * const envP,
++ char const c) {
++
++ if (!IS_CONTINUATION(c))
++ xmlrpc_env_set_fault_formatted(
++ envP, XMLRPC_INVALID_UTF8_ERROR,
++ "UTF-8 multibyte sequence contains character 0x%02x, "
++ "which does not indicate continuation.", c);
++}
++
++
++
++static void
++validateUtf16(xmlrpc_env * const envP,
++ wchar_t const wc) {
++
++ if (wc > UCS2_MAX_LEGAL_CHARACTER)
++ xmlrpc_env_set_fault_formatted(
++ envP, XMLRPC_INVALID_UTF8_ERROR,
++ "UCS-2 characters > U+FFFD are illegal. String contains 0x%04x",
++ (unsigned)wc);
++ else if (UTF16_FIRST_SURROGATE <= wc && wc <= UTF16_LAST_SURROGATE)
++ xmlrpc_env_set_fault_formatted(
++ envP, XMLRPC_INVALID_UTF8_ERROR,
++ "UTF-16 surrogates may not appear in UTF-8 data. "
++ "String contains %04x", (unsigned)wc);
++}
++
++
++
++/* Microsoft Visual C in debug mode produces code that complains about
++ returning an undefined value from xmlrpc_datetime_new_str(). It's a bogus
++ complaint, because this function is defined to return nothing meaningful
++ those cases. So we disable the check.
++*/
++#pragma runtime_checks("u", off)
++
++static void
++decodeMultibyte(xmlrpc_env * const envP,
++ const char * const utf8_seq,
++ size_t const length,
++ wchar_t * const wcP) {
++/*----------------------------------------------------------------------------
++ Decode the multibyte UTF-8 sequence which is 'length' characters
++ at 'utf8_data'.
++
++ Return the character in UTF-16 format as *wcP.
++-----------------------------------------------------------------------------*/
++ wchar_t wc;
++
++ assert(utf8_seq[0] & 0x80); /* High bit set: this is multibyte seq */
++
++ switch (length) {
++ case 2:
++ /* 110xxxxx 10xxxxxx */
++ validateContinuation(envP, utf8_seq[1]);
++
++ if (!envP->fault_occurred)
++ wc = ((((wchar_t) (utf8_seq[0] & 0x1F)) << 6) |
++ (((wchar_t) (utf8_seq[1] & 0x3F))));
++ break;
++
++ case 3:
++ /* 1110xxxx 10xxxxxx 10xxxxxx */
++ validateContinuation(envP, utf8_seq[1]);
++ if (!envP->fault_occurred) {
++ validateContinuation(envP, utf8_seq[2]);
++ if (!envP->fault_occurred)
++ wc = ((((wchar_t) (utf8_seq[0] & 0x0F)) << 12) |
++ (((wchar_t) (utf8_seq[1] & 0x3F)) << 6) |
++ (((wchar_t) (utf8_seq[2] & 0x3F))));
++ }
++ break;
++
++ case 4:
++ /* 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx */
++ case 5:
++ /* 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx */
++ case 6:
++ /* 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx */
++ /* This would require more than 16 bits in UTF-16, so
++ it can't be represented in UCS-2, so it's beyond
++ our capability. Characters in the BMP fit in 16
++ bits.
++ */
++ xmlrpc_env_set_fault_formatted(
++ envP, XMLRPC_INVALID_UTF8_ERROR,
++ "UTF-8 string contains a character not in the "
++ "Basic Multilingual Plane (first byte 0x%02x)",
++ utf8_seq[0]);
++ break;
++
++ default:
++ xmlrpc_faultf(envP,
++ "Internal error: Impossible UTF-8 sequence length %u",
++ (unsigned)length);
++ }
++
++ if (!envP->fault_occurred)
++ validateUtf16(envP, wc);
++
++ if (!envP->fault_occurred)
++ if ((uint32_t)wc < utf8_min_char_for_length[length])
++ xmlrpc_env_set_fault_formatted(
++ envP, XMLRPC_INVALID_UTF8_ERROR,
++ "Overlong UTF-8 sequence not allowed");
++
++ *wcP = wc;
++}
++
++#pragma runtime_checks("u", restore)
++
++
++
+ static void
+-decode_utf8(xmlrpc_env * const envP,
+- const char * const utf8_data,
+- size_t const utf8_len,
+- wchar_t * const ioBuff,
+- size_t * const outBuffLenP) {
++decodeUtf8(xmlrpc_env * const envP,
++ const char * const utf8_data,
++ size_t const utf8_len,
++ wchar_t * const ioBuff,
++ size_t * const outBuffLenP) {
+ /*----------------------------------------------------------------------------
+- Decode to UCS-2 (or validates as UTF-8 that can be decoded to UCS-2)
++ Decode to UCS-2 (or validate as UTF-8 that can be decoded to UCS-2)
+ a UTF-8 string. To validate, set ioBuff and outBuffLenP to NULL.
+ To decode, allocate a sufficiently large buffer, pass it as ioBuff,
+ and pass a pointer as as outBuffLenP. The data will be written to
+@@ -134,132 +252,60 @@ decode_utf8(xmlrpc_env * const envP,
+ We assume that wchar_t holds a single UCS-2 character in native-endian
+ byte ordering.
+ -----------------------------------------------------------------------------*/
+- size_t i, length, out_pos;
+- char init, con1, con2;
+- wchar_t wc;
++ size_t utf8Cursor;
++ size_t outPos;
+
+ XMLRPC_ASSERT_ENV_OK(envP);
+ XMLRPC_ASSERT_PTR_OK(utf8_data);
+- XMLRPC_ASSERT((!ioBuff && !outBuffLenP) ||
+- (ioBuff && outBuffLenP));
++ XMLRPC_ASSERT((!ioBuff && !outBuffLenP) || (ioBuff && outBuffLenP));
++
++ for (utf8Cursor = 0, outPos = 0;
++ utf8Cursor < utf8_len && !envP->fault_occurred;
++ ) {
+
+- /* Suppress GCC warning about possibly undefined variable. */
+- wc = 0;
++ char const init = utf8_data[utf8Cursor];
++ /* Initial byte of the UTF-8 sequence */
++
++ wchar_t wc;
+
+- i = 0;
+- out_pos = 0;
+- while (i < utf8_len) {
+- init = utf8_data[i];
+ if ((init & 0x80) == 0x00) {
+ /* Convert ASCII character to wide character. */
+ wc = init;
+- i++;
++ ++utf8Cursor;
+ } else {
+ /* Look up the length of this UTF-8 sequence. */
+- length = utf8_seq_length[(unsigned char) init];
+-
+- /* Check to make sure we have enough bytes to convert. */
+- if (i + length > utf8_len)
+- XMLRPC_FAIL(envP, XMLRPC_INVALID_UTF8_ERROR,
+- "Truncated UTF-8 sequence");
+-
+- /* Decode a multibyte UTF-8 sequence. */
+- switch (length) {
+- case 0:
+- XMLRPC_FAIL(envP, XMLRPC_INVALID_UTF8_ERROR,
+- "Invalid UTF-8 initial byte");
+-
+- case 2:
+- /* 110xxxxx 10xxxxxx */
+- con1 = utf8_data[i+1];
+- if (!IS_CONTINUATION(con1))
+- XMLRPC_FAIL(envP, XMLRPC_INVALID_UTF8_ERROR,
+- "UTF-8 sequence too short");
+- wc = ((((wchar_t) (init & 0x1F)) << 6) |
+- (((wchar_t) (con1 & 0x3F))));
+- break;
+-
+- case 3:
+- /* 1110xxxx 10xxxxxx 10xxxxxx */
+- con1 = utf8_data[i+1];
+- con2 = utf8_data[i+2];
+- if (!IS_CONTINUATION(con1) || !IS_CONTINUATION(con2))
+- XMLRPC_FAIL(envP, XMLRPC_INVALID_UTF8_ERROR,
+- "UTF-8 sequence too short");
+- wc = ((((wchar_t) (init & 0x0F)) << 12) |
+- (((wchar_t) (con1 & 0x3F)) << 6) |
+- (((wchar_t) (con2 & 0x3F))));
+- break;
+-
+- case 4:
+- /* 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx */
+- case 5:
+- /* 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx */
+- case 6:
+- /* 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx */
+- /* This would require more than 16 bits in UTF-16, so
+- it can't be represented in UCS-2, so it's beyond
+- our capability. Characters in the BMP fit in 16
+- bits.
+- */
++ size_t const length = utf8SeqLength[(unsigned char) init];
++
++ if (length == 0)
+ xmlrpc_env_set_fault_formatted(
+ envP, XMLRPC_INVALID_UTF8_ERROR,
+- "UTF-8 string contains a character not in the "
+- "Basic Multilingual Plane (first byte %08x)",
+- init);
+- goto cleanup;
+-
+- default:
+- XMLRPC_ASSERT("Error in UTF-8 decoder tables");
++ "Unrecognized UTF-8 initial byte value 0x%02x", init);
++ else {
++ /* Make sure we have enough bytes to convert. */
++ if (utf8Cursor + length > utf8_len) {
++ xmlrpc_env_set_fault_formatted(
++ envP, XMLRPC_INVALID_UTF8_ERROR,
++ "Invalid UTF-8 sequence indicates a %u-byte sequence "
++ "when only %u bytes are left in the string",
++ (unsigned)length, (unsigned)(utf8_len - utf8Cursor));
++ } else {
++ decodeMultibyte(envP, &utf8_data[utf8Cursor], length, &wc);
++
++ /* Advance to the end of the sequence. */
++ utf8Cursor += length;
++ }
+ }
+-
+- /* Advance to the end of the sequence. */
+- i += length;
+-
+- /* Check for illegal UCS-2 characters. */
+- if (wc > UCS2_MAX_LEGAL_CHARACTER)
+- XMLRPC_FAIL(envP, XMLRPC_INVALID_UTF8_ERROR,
+- "UCS-2 characters > U+FFFD are illegal");
+-
+- /* Check for UTF-16 surrogates. */
+- if (UTF16_FIRST_SURROGATE <= wc && wc <= UTF16_LAST_SURROGATE)
+- XMLRPC_FAIL(envP, XMLRPC_INVALID_UTF8_ERROR,
+- "UTF-16 surrogates may not appear in UTF-8 data");
+-
+- /* Check for overlong sequences. */
+- if ((uint32_t)wc < utf8_min_char_for_length[length])
+- XMLRPC_FAIL(envP, XMLRPC_INVALID_UTF8_ERROR,
+- "Overlong UTF-8 sequence not allowed");
+ }
+-
+- /* If we have a buffer, write our character to it. */
+- if (ioBuff) {
+- ioBuff[out_pos++] = wc;
++
++ if (!envP->fault_occurred) {
++ /* If we have a buffer, write our character to it. */
++ if (ioBuff)
++ ioBuff[outPos++] = wc;
+ }
+ }
+-
+- /* Record the number of characters we found. */
+- if (outBuffLenP)
+- *outBuffLenP = out_pos;
+-
+- cleanup:
+- if (envP->fault_occurred) {
+- if (outBuffLenP)
+- *outBuffLenP = 0;
+- }
+-}
+-
+
+-
+-void
+-xmlrpc_validate_utf8(xmlrpc_env * const env,
+- const char * const utf8_data,
+- size_t const utf8_len) {
+-/*----------------------------------------------------------------------------
+- Validate that a string is valid UTF-8.
+------------------------------------------------------------------------------*/
+-
+- decode_utf8(env, utf8_data, utf8_len, NULL, NULL);
++ if (outBuffLenP)
++ *outBuffLenP = envP->fault_occurred ? 0 : outPos;
+ }
+
+
+@@ -286,9 +332,9 @@ xmlrpc_utf8_to_wcs(xmlrpc_env * const envP,
+ wcsP = XMLRPC_MEMBLOCK_NEW(wchar_t, envP, utf8_len);
+ if (!envP->fault_occurred) {
+ /* Decode the UTF-8 data. */
+- decode_utf8(envP, utf8_data, utf8_len,
+- XMLRPC_MEMBLOCK_CONTENTS(wchar_t, wcsP),
+- &wcs_length);
++ decodeUtf8(envP, utf8_data, utf8_len,
++ XMLRPC_MEMBLOCK_CONTENTS(wchar_t, wcsP),
++ &wcs_length);
+ if (!envP->fault_occurred) {
+ /* We can't have overrun our buffer. */
+ XMLRPC_ASSERT(wcs_length <= utf8_len);
+@@ -329,7 +375,8 @@ xmlrpc_wcs_to_utf8(xmlrpc_env * const envP,
+
+ utf8P = XMLRPC_MEMBLOCK_NEW(char, envP, estimate);
+ if (!envP->fault_occurred) {
+- unsigned char * const buffer = XMLRPC_MEMBLOCK_CONTENTS(char, utf8P);
++ unsigned char * const buffer =
++ XMLRPC_MEMBLOCK_CONTENTS(unsigned char, utf8P);
+ size_t bytesUsed;
+ size_t i;
+
+@@ -401,13 +448,12 @@ xmlrpc_force_to_utf8(char * const buffer) {
+ char * p;
+
+ for (p = &buffer[0]; *p;) {
+- uint const length = utf8_seq_length[(unsigned char) *p];
++ unsigned int const length = utf8SeqLength[(unsigned char) *p];
+
+ bool forceDel;
+ uint32_t decoded;
+
+- forceDel = false;
+- decoded = 0; /* suppress compiler warning; valid when !forceDel */
++ forceDel = false; /* initial value */
+
+ switch (length) {
+ case 1:
+@@ -482,7 +528,7 @@ xmlrpc_force_to_xml_chars(char * const buffer) {
+ char * p;
+
+ for (p = &buffer[0]; *p;) {
+- uint const length = utf8_seq_length[(unsigned char) *p];
++ unsigned int const length = utf8SeqLength[(unsigned char) *p];
+
+ if (length == 1) {
+ if (*p < 0x20 && *p != '\r' && *p != '\n' && *p != '\t')
+@@ -505,7 +551,31 @@ xmlrpc_force_to_xml_chars(char * const buffer) {
+
+
+
++void
++xmlrpc_validate_utf8(xmlrpc_env * const envP,
++ const char * const utf8_data,
++ size_t const utf8_len) {
++/*----------------------------------------------------------------------------
++ Validate that a string is valid UTF-8.
++-----------------------------------------------------------------------------*/
++ xmlrpc_env env;
+
++ xmlrpc_env_init(&env);
+
+-
+-
++#if HAVE_UNICODE_WCHAR
++ decodeUtf8(&env, utf8_data, utf8_len, NULL, NULL);
++#else
++ /* We don't have a convenient way to validate, so we just fake it and
++ call it valid.
++ */
++#endif
++
++ if (env.fault_occurred) {
++ xmlrpc_env_set_fault_formatted(
++ envP, XMLRPC_INVALID_UTF8_ERROR,
++ "%" XMLRPC_PRId64 "-byte "
++ "supposed UTF-8 string is not valid UTF-8. %s",
++ (XMLRPC_INT64)utf8_len, env.fault_string);
++ }
++ xmlrpc_env_clean(&env);
++}
+diff --git a/libs/xmlrpc-c/lib/libwww_transport/Makefile b/libs/xmlrpc-c/lib/libwww_transport/Makefile
+index 1bb362c..c8c51fa 100644
+--- a/libs/xmlrpc-c/lib/libwww_transport/Makefile
++++ b/libs/xmlrpc-c/lib/libwww_transport/Makefile
+@@ -22,15 +22,18 @@ OMIT_LIBWWW_TRANSPORT_RULE=Y
+
+ include $(SRCDIR)/common.mk
+
+-LIBWWW_INCLUDES := $(shell libwww-config --cflags)
++# This 'common.mk' dependency makes sure the symlinks get built before
++# this make file is used for anything.
++
++$(SRCDIR)/common.mk: srcdir blddir
+
+-CFLAGS = $(CFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
++LIBWWW_INCLUDES := $(shell libwww-config --cflags)
+
+ INCLUDES = \
+ -I$(BLDDIR) \
+ -I$(BLDDIR)/include \
+- -I$(SRCDIR)/include \
+- -I$(SRCDIR)/lib/util/include \
++ -Isrcdir/include \
++ -Isrcdir/lib/util/include \
+ $(LIBWWW_INCLUDES)
+
+ .PHONY: clean
+@@ -51,8 +54,8 @@ install:
+ .PHONY: dep
+ dep: dep-common
+
+-include Makefile.depend
++include depend.mk
+
+-# Need this dependency for those who don't use Makefile.depend.
++# Need this dependency for those who don't use depend.mk.
+ # Without it, version.h doesn't get created.
+ xmlrpc_libwww_transport.o xmlrpc_libwww_transport.osh: version.h
+diff --git a/libs/xmlrpc-c/lib/libwww_transport/xmlrpc_libwww_transport.c b/libs/xmlrpc-c/lib/libwww_transport/xmlrpc_libwww_transport.c
+index 10866c1..1a0fcc7 100644
+--- a/libs/xmlrpc-c/lib/libwww_transport/xmlrpc_libwww_transport.c
++++ b/libs/xmlrpc-c/lib/libwww_transport/xmlrpc_libwww_transport.c
+@@ -884,6 +884,7 @@ sendRequest(xmlrpc_env * const envP,
+ const xmlrpc_server_info * const serverP,
+ xmlrpc_mem_block * const xmlP,
+ xmlrpc_transport_asynch_complete complete,
++ xmlrpc_transport_progress progress ATTR_UNUSED,
+ struct xmlrpc_call_info * const callInfoP) {
+ /*----------------------------------------------------------------------------
+ Initiate an XML-RPC rpc asynchronously. Don't wait for it to go to
+diff --git a/libs/xmlrpc-c/lib/libwww_transport/xmlrpc_libwww_transport.h b/libs/xmlrpc-c/lib/libwww_transport/xmlrpc_libwww_transport.h
+deleted file mode 100644
+index 66d8048..0000000
+--- a/libs/xmlrpc-c/lib/libwww_transport/xmlrpc_libwww_transport.h
++++ /dev/null
+@@ -1,8 +0,0 @@
+-#ifndef XMLRPC_LIBWWW_TRANSPORT_H
+-#define XMLRPC_LIBWWW_TRANSPORT_H
+-
+-#include "xmlrpc-c/transport.h"
+-
+-extern struct xmlrpc_client_transport_ops xmlrpc_libwww_transport_ops;
+-
+-#endif
+diff --git a/libs/xmlrpc-c/lib/util/Makefile b/libs/xmlrpc-c/lib/util/Makefile
+index a061b2e..d79b905 100644
+--- a/libs/xmlrpc-c/lib/util/Makefile
++++ b/libs/xmlrpc-c/lib/util/Makefile
+@@ -33,6 +33,11 @@ OMIT_UTILS_RULE = Y
+
+ include $(SRCDIR)/common.mk
+
++# This 'common.mk' dependency makes sure the symlinks get built before
++# this make file is used for anything.
++
++$(SRCDIR)/common.mk: srcdir blddir
++
+ LIBOBJS = \
+ casprintf.o \
+ cmdline_parser.o \
+@@ -44,17 +49,15 @@ LIBOBJS = \
+ .PHONY: all
+ all: $(LIBOBJS)
+
+-INCLUDES = -I$(SRCDIR)/$(SUBDIR)/include -I$(BLDDIR)
+-
+-CFLAGS = $(CFLAGS_COMMON) $(INCLUDES) $(CFLAGS_PERSONAL) $(CADD)
++INCLUDES = -Isrcdir/$(SUBDIR)/include -I$(BLDDIR)
+
+ %.o:%.c
+- $(CC) -c $(CFLAGS) $<
++ $(CC) -c $(CFLAGS_ALL) $<
+
+ %.o:%.cpp
+- $(CXX) -c $(CFLAGS) $<
++ $(CXX) -c $(CXXFLAGS_ALL) $<
+
+-include Makefile.depend
++include depend.mk
+
+ .PHONY: clean distclean
+ clean: clean-common
+diff --git a/libs/xmlrpc-c/lib/util/casprintf.c b/libs/xmlrpc-c/lib/util/casprintf.c
+index 959e4ce..0a26f4d 100644
+--- a/libs/xmlrpc-c/lib/util/casprintf.c
++++ b/libs/xmlrpc-c/lib/util/casprintf.c
+@@ -1,43 +1,87 @@
+-//#define _GNU_SOURCE
++#ifndef _GNU_SOURCE
++ #define _GNU_SOURCE /* But only when HAVE_ASPRINTF */
++#endif
++
+ #include <stdarg.h>
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <limits.h>
+
+ #include "xmlrpc_config.h" /* For HAVE_ASPRINTF, __inline__ */
++#include "bool.h"
+ #include "casprintf.h"
+
+
+
+ static __inline__ void
++newVsnprintf(char * const buffer,
++ size_t const bufferSize,
++ const char * const fmt,
++ va_list varargs,
++ size_t * const formattedSizeP) {
++/*----------------------------------------------------------------------------
++ This is vsnprintf() with the new behavior, where not fitting in the buffer
++ is not a failure.
++
++ Unfortunately, we can't practically return the size of the formatted string
++ if the C library has old vsnprintf() and the formatted string doesn't fit
++ in the buffer, so in that case we just return something larger than the
++ buffer.
++-----------------------------------------------------------------------------*/
++ if (bufferSize > INT_MAX/2) {
++ /* There's a danger we won't be able to coerce the return value
++ of XMLRPC_VSNPRINTF to an integer (which we have to do because,
++ while for POSIX its return value is ssize_t, on Windows it is int),
++ or return double the buffer size.
++ */
++ *formattedSizeP = 0;
++ } else {
++ int rc;
++
++ rc = XMLRPC_VSNPRINTF(buffer, bufferSize, fmt, varargs);
++
++ if (rc < 0) {
++ /* We have old vsnprintf() (or Windows) and the formatted value
++ doesn't fit in the buffer, but we don't know how big a buffer it
++ needs.
++ */
++ *formattedSizeP = bufferSize * 2;
++ } else {
++ /* Either the string fits in the buffer or we have new vsnprintf()
++ which tells us how big the string is regardless.
++ */
++ *formattedSizeP = rc;
++ }
++ }
++}
++
++
++
++static __inline__ void
+ simpleVasprintf(char ** const retvalP,
+ const char * const fmt,
+ va_list varargs) {
+ /*----------------------------------------------------------------------------
+ This is a poor man's implementation of vasprintf(), of GNU fame.
+ -----------------------------------------------------------------------------*/
+- size_t const initialSize = 4096;
+ char * result;
+-
+- result = malloc(initialSize);
+- if (result != NULL) {
+- size_t bytesNeeded;
+- bytesNeeded = XMLRPC_VSNPRINTF(result, initialSize, fmt, varargs);
+- if (bytesNeeded > initialSize) {
+- free(result);
+- result = malloc(bytesNeeded);
+- if (result != NULL)
+- XMLRPC_VSNPRINTF(result, bytesNeeded, fmt, varargs);
+- } else if (bytesNeeded == initialSize) {
+- if (result[initialSize-1] != '\0') {
+- /* This is one of those old systems where vsnprintf()
+- returns the number of bytes it used, instead of the
+- number that it needed, and it in fact needed more than
+- we gave it. Rather than mess with this highly unlikely
+- case (old system and string > 4095 characters), we just
+- treat this like an out of memory failure.
+- */
++ size_t bufferSize;
++ bool outOfMemory;
++
++ for (result = NULL, bufferSize = 4096, outOfMemory = false;
++ !result && !outOfMemory;
++ ) {
++
++ result = malloc(bufferSize);
++ if (!result)
++ outOfMemory = true;
++ else {
++ size_t bytesNeeded;
++ newVsnprintf(result, bufferSize, fmt, varargs, &bytesNeeded);
++ if (bytesNeeded > bufferSize) {
+ free(result);
+ result = NULL;
++ bufferSize = bytesNeeded;
+ }
+ }
+ }
+diff --git a/libs/xmlrpc-c/lib/util/cmdline_parser.c b/libs/xmlrpc-c/lib/util/cmdline_parser.c
+index 37caadb..cc33d8d 100644
+--- a/libs/xmlrpc-c/lib/util/cmdline_parser.c
++++ b/libs/xmlrpc-c/lib/util/cmdline_parser.c
+@@ -1,3 +1,5 @@
++#define _XOPEN_SOURCE 600 /* Make sure <string.h> has strdup() */
++
+ #include "xmlrpc_config.h" /* prereq for mallocvar.h -- defines __inline__ */
+
+ #include <sys/types.h>
+diff --git a/libs/xmlrpc-c/lib/util/include/int.h b/libs/xmlrpc-c/lib/util/include/int.h
+index 253ea34..3c7b216 100644
+--- a/libs/xmlrpc-c/lib/util/include/int.h
++++ b/libs/xmlrpc-c/lib/util/include/int.h
+@@ -11,6 +11,14 @@
+ long long mask= ULL(1) << 33;
+ */
+
++/* 'uint' is quite convenient, but there's no simple way have it everywhere.
++ Some systems have it in the base system (e.g. GNU C library has it in
++ <sys/types.h>, and others (e.g. Solaris - 08.12.02) don't. Since we
++ can't define it unless we know it's not defined already, and we don't
++ want to burden the reader with a special Xmlrpc-c name such as xuint,
++ we just use standard "unsigned int" instead.
++*/
++
+ #ifdef _MSC_VER
+ # define PRId64 "I64d"
+ # define PRIu64 "I64u"
+@@ -33,9 +41,6 @@ typedef __int64 int64_t;
+ #ifndef uint64_t
+ typedef unsigned __int64 uint64_t;
+ #endif
+-#ifndef uint
+-typedef unsigned int uint;
+-#endif
+ #ifndef uint8_t
+ typedef unsigned char uint8_t;
+ #endif
+@@ -44,6 +49,11 @@ typedef unsigned char uint8_t;
+ #define LL(x) x ## i64
+ #define ULL(x) x ## u64
+
++#elif defined(__INTERIX)
++# include <stdint.h>
++# define PRId64 "I64d"
++# define PRIu64 "I64u"
++
+ #else
+ /* Not Microsoft compiler */
+ #include <inttypes.h>
+diff --git a/libs/xmlrpc-c/lib/util/include/mallocvar.h b/libs/xmlrpc-c/lib/util/include/mallocvar.h
+index 5dd9fc9..12ca9d9 100644
+--- a/libs/xmlrpc-c/lib/util/include/mallocvar.h
++++ b/libs/xmlrpc-c/lib/util/include/mallocvar.h
+@@ -18,7 +18,7 @@
+ static __inline__ void
+ mallocProduct(void ** const resultP,
+ unsigned int const factor1,
+- unsigned int const factor2) {
++ size_t const factor2) {
+ /*----------------------------------------------------------------------------
+ malloc a space whose size in bytes is the product of 'factor1' and
+ 'factor2'. But if that size cannot be represented as an unsigned int,
+@@ -102,7 +102,7 @@ do { \
+
+
+ #define MALLOCVAR(varName) \
+- if (varName = malloc(sizeof(*varName))) memset(varName, 0, sizeof(*varName))
++ varName = malloc(sizeof(*varName))
+
+ #define MALLOCVAR_NOFAIL(varName) \
+ do {if ((varName = malloc(sizeof(*varName))) == NULL) abort();} while(0)
+diff --git a/libs/xmlrpc-c/lib/util/include/pthreadx.h b/libs/xmlrpc-c/lib/util/include/pthreadx.h
+index 3ec8f2a..bf5a45f 100644
+--- a/libs/xmlrpc-c/lib/util/include/pthreadx.h
++++ b/libs/xmlrpc-c/lib/util/include/pthreadx.h
+@@ -26,10 +26,12 @@
+ #ifndef PTHREADX_H_INCLUDED
+ #define PTHREADX_H_INCLUDED
+
+-#ifndef WIN32
++#include "xmlrpc_config.h"
++
++#if HAVE_PTHREAD
+ # define _REENTRANT
+ # include <pthread.h>
+-#elif defined (WIN32)
++#elif HAVE_WINDOWS_THREAD
+ #include <windows.h>
+
+ #ifdef __cplusplus
+@@ -52,11 +54,7 @@ struct {
+ int attrs; /* currently unused. placeholder. */
+ } pthread_mutexattr_t;
+
+-/* We make pthread_func identical to a Windows thread start function
+- so we can use Windows thread functions to implement these pthread
+- functions directly.
+-*/
+-typedef unsigned (WINAPI pthread_func)(void *);
++typedef void * pthread_func(void *);
+
+ extern int pthread_create(pthread_t * const new_thread_ID,
+ const pthread_attr_t * const attr,
+@@ -75,6 +73,10 @@ extern int pthread_mutex_destroy(pthread_mutex_t * const mp);
+ #ifdef __cplusplus
+ }
+ #endif
+-#endif /* WIN32 */
++#else /* HAVE_WINDOWS_THREAD */
++ #error "You don't have any thread facility. (According to "
++ #error "HAVE_PTHREAD and HAVE_WINDOWS_THREAD macros defined in "
++ #error "xmlrpc_config.h)"
++#endif
+
+ #endif
+diff --git a/libs/xmlrpc-c/lib/util/include/sstring.h b/libs/xmlrpc-c/lib/util/include/sstring.h
+deleted file mode 100644
+index c493cf2..0000000
+--- a/libs/xmlrpc-c/lib/util/include/sstring.h
++++ /dev/null
+@@ -1,15 +0,0 @@
+-#ifndef SSTRING_H_INCLUDED
+-#define SSTRING_H_INCLUDED
+-
+-/* This file contains string functions that are cognizant of the
+- declared size of the destination data structure.
+-*/
+-
+-
+-/* Copy string pointed by B to array A with size checking. */
+-#define SSTRCPY(A,B) \
+- (strncpy((A), (B), sizeof(A)), *((A)+sizeof(A)-1) = '\0')
+-#define SSTRCMP(A,B) \
+- (strncmp((A), (B), sizeof(A)))
+-
+-#endif
+diff --git a/libs/xmlrpc-c/lib/util/include/stdargx.h b/libs/xmlrpc-c/lib/util/include/stdargx.h
+index ee54464..0441f54 100644
+--- a/libs/xmlrpc-c/lib/util/include/stdargx.h
++++ b/libs/xmlrpc-c/lib/util/include/stdargx.h
+@@ -56,7 +56,7 @@ init_va_listx(va_listx * const argsxP,
+ #if VA_LIST_IS_ARRAY
+ /* 'args' is NOT a va_list. It is a pointer to the first element of a
+ 'va_list', which is the same address as a pointer to the va_list
+- itself.
++ itself. (That's what happens when you pass an array in C).
+ */
+ memcpy(&argsxP->v, args, sizeof(argsxP->v));
+ #else
+diff --git a/libs/xmlrpc-c/lib/util/pthreadx_win32.c b/libs/xmlrpc-c/lib/util/pthreadx_win32.c
+index 6a8446a..91e3f37 100644
+--- a/libs/xmlrpc-c/lib/util/pthreadx_win32.c
++++ b/libs/xmlrpc-c/lib/util/pthreadx_win32.c
+@@ -25,31 +25,65 @@
+
+ #include "xmlrpc_config.h"
+
+-#ifdef WIN32
++#include <process.h>
+
+-#include "pthreadx.h"
++#include "mallocvar.h"
+
+-#include <process.h>
++#include "pthreadx.h"
+
+ #undef PACKAGE
+ #undef VERSION
+
++struct winStartArg {
++ pthread_func * func;
++ void * arg;
++};
++
++
++
++static unsigned int __stdcall
++winThreadStart(void * const arg) {
++/*----------------------------------------------------------------------------
++ This is a thread start/root function for the Windows threading facility
++ (i.e. this can be an argument to _beginthreadex()).
++
++ All we do is call the real start/root function, which expects to be
++ called in the pthread format.
++-----------------------------------------------------------------------------*/
++ struct winStartArg * const winStartArgP = arg;
++
++ winStartArgP->func(winStartArgP->arg);
++
++ free(winStartArgP);
++
++ return 0;
++}
++
++
++
+ int
+-pthread_create(pthread_t * const new_thread_ID,
++pthread_create(pthread_t * const newThreadIdP,
+ const pthread_attr_t * const attr,
+ pthread_func * func,
+ void * const arg) {
+
+ HANDLE hThread;
+ DWORD dwThreadID;
++ struct winStartArg * winStartArgP;
++
++ MALLOCVAR_NOFAIL(winStartArgP);
+
+- hThread = (HANDLE) _beginthreadex (
+- NULL, 0, func, (LPVOID)arg, CREATE_SUSPENDED, &dwThreadID);
++ winStartArgP->func = func;
++ winStartArgP->arg = arg;
+
+- SetThreadPriority (hThread, THREAD_PRIORITY_NORMAL);
+- ResumeThread (hThread);
++ hThread = (HANDLE) _beginthreadex(
++ NULL, 0, &winThreadStart, (LPVOID)winStartArgP, CREATE_SUSPENDED,
++ &dwThreadID);
+
+- *new_thread_ID = hThread;
++ SetThreadPriority(hThread, THREAD_PRIORITY_NORMAL);
++ ResumeThread(hThread);
++
++ *newThreadIdP = hThread;
+
+ return hThread ? 0 : -1;
+ }
+@@ -119,5 +153,3 @@ pthread_mutex_destroy(pthread_mutex_t * const mp) {
+ DeleteCriticalSection(mp);
+ return 0;
+ }
+-
+-#endif
+diff --git a/libs/xmlrpc-c/lib/util/string_parser.c b/libs/xmlrpc-c/lib/util/string_parser.c
+index 32879f5..3c1fdf5 100644
+--- a/libs/xmlrpc-c/lib/util/string_parser.c
++++ b/libs/xmlrpc-c/lib/util/string_parser.c
+@@ -50,7 +50,7 @@ interpretUll(const char * const string,
+
+ errno = 0; /* So we can tell if strtoull() overflowed */
+
+- *ullP = strtoull(strippedString, &tail, 10);
++ *ullP = XMLRPC_STRTOULL(strippedString, &tail, 10);
+
+ if (tail[0] != '\0')
+ casprintf(errorP, "Non-digit stuff in string: %s", tail);
+@@ -80,7 +80,7 @@ interpretLl(const char * const string,
+
+ errno = 0; /* So we can tell if strtoll() overflowed */
+
+- *llP = strtoll(string, &tail, 10);
++ *llP = XMLRPC_STRTOLL(string, &tail, 10);
+
+ if (tail[0] != '\0')
+ casprintf(errorP, "Non-digit stuff in string: %s", tail);
+@@ -94,9 +94,9 @@ interpretLl(const char * const string,
+
+
+ void
+-interpretUint(const char * const string,
+- uint * const uintP,
+- const char ** const errorP) {
++interpretUint(const char * const string,
++ unsigned int * const uintP,
++ const char ** const errorP) {
+
+ /* strtoul() does a lousy job of dealing with invalid numbers. A null
+ string is just zero; a negative number is a large positive one; a
+diff --git a/libs/xmlrpc-c/lib/util/stripcaseeq.c b/libs/xmlrpc-c/lib/util/stripcaseeq.c
+index 348a868..861da10 100644
+--- a/libs/xmlrpc-c/lib/util/stripcaseeq.c
++++ b/libs/xmlrpc-c/lib/util/stripcaseeq.c
+@@ -1,4 +1,3 @@
+-//#define _GNU_SOURCE
+ #include <ctype.h>
+
+ #include "bool.h"
+diff --git a/libs/xmlrpc-c/lib/wininet_transport/Makefile b/libs/xmlrpc-c/lib/wininet_transport/Makefile
+index 648c6c3..1b24efc 100644
+--- a/libs/xmlrpc-c/lib/wininet_transport/Makefile
++++ b/libs/xmlrpc-c/lib/wininet_transport/Makefile
+@@ -22,13 +22,16 @@ OMIT_WININET_TRANSPORT_RULE=Y
+
+ include $(SRCDIR)/common.mk
+
+-CFLAGS = $(CFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
++# This 'common.mk' dependency makes sure the symlinks get built before
++# this make file is used for anything.
++
++$(SRCDIR)/common.mk: srcdir blddir
+
+ INCLUDES = \
+ -I$(BLDDIR) \
+ -I$(BLDDIR)/include \
+- -I$(SRCDIR)/include \
+- -I$(SRCDIR)/lib/util/include \
++ -Isrcdir/include \
++ -Isrcdir/lib/util/include \
+
+ .PHONY: clean
+ clean: clean-common
+@@ -48,8 +51,8 @@ install:
+ .PHONY: dep
+ dep: dep-common
+
+-include Makefile.depend
++include depend.mk
+
+-# Need this dependency for those who don't use Makefile.depend.
++# Need this dependency for those who don't use depend.mk.
+ # Without it, version.h doesn't get created.
+ xmlrpc_wininet_transport.o xmlrpc_wininet_transport.osh: version.h
+diff --git a/libs/xmlrpc-c/lib/wininet_transport/xmlrpc_wininet_transport.c b/libs/xmlrpc-c/lib/wininet_transport/xmlrpc_wininet_transport.c
+index d81c6ea..b5efb93 100644
+--- a/libs/xmlrpc-c/lib/wininet_transport/xmlrpc_wininet_transport.c
++++ b/libs/xmlrpc-c/lib/wininet_transport/xmlrpc_wininet_transport.c
+@@ -398,6 +398,15 @@ performWinInetTransaction(
+ XMLRPC_FAIL(envP, XMLRPC_INTERNAL_ERROR,
+ "Could not set Content-Type.");
+
++ {
++ /* By default, a request times out after 30 seconds. We don't want
++ it to timeout at all, since we don't know what the user is doing.
++ */
++ DWORD dwTimeOut = 0x7FFFFFFF; /* Approximation of infinity */
++ InternetSetOption(winInetTransactionP->hHttpRequest,
++ INTERNET_OPTION_RECEIVE_TIMEOUT,
++ &dwTimeOut, sizeof(dwTimeOut));
++ }
+ Again:
+ /* Send the requested XML remote procedure command */
+ succeeded = HttpSendRequest(winInetTransactionP->hHttpRequest, NULL, 0,
+@@ -558,17 +567,22 @@ Again:
+
+
+
+-static unsigned __stdcall
++static void *
+ doAsyncRpc(void * const arg) {
++
+ rpc * const rpcP = arg;
++
+ xmlrpc_env env;
+ xmlrpc_env_init(&env);
++
+ performWinInetTransaction(&env, rpcP->winInetTransactionP,
+ rpcP->clientTransportP );
++
+ rpcP->complete(rpcP->callInfoP, rpcP->responseXmlP, env);
++
+ xmlrpc_env_clean(&env);
+
+- return 0;
++ return NULL;
+ }
+
+
+@@ -837,6 +851,7 @@ sendRequest(xmlrpc_env * const envP,
+ const xmlrpc_server_info * const serverP,
+ xmlrpc_mem_block * const callXmlP,
+ xmlrpc_transport_asynch_complete complete,
++ xmlrpc_transport_progress progress,
+ struct xmlrpc_call_info * const callInfoP) {
+ /*----------------------------------------------------------------------------
+ Initiate an XML-RPC rpc asynchronously. Don't wait for it to go to
+diff --git a/libs/xmlrpc-c/lib/wininet_transport/xmlrpc_wininet_transport.h b/libs/xmlrpc-c/lib/wininet_transport/xmlrpc_wininet_transport.h
+deleted file mode 100644
+index d9f2b39..0000000
+--- a/libs/xmlrpc-c/lib/wininet_transport/xmlrpc_wininet_transport.h
++++ /dev/null
+@@ -1,8 +0,0 @@
+-#ifndef XMLRPC_WININET_TRANSPORT_H
+-#define XMLRPC_WININET_TRANSPORT_H
+-
+-#include "xmlrpc-c/transport.h"
+-
+-extern struct xmlrpc_client_transport_ops xmlrpc_wininet_transport_ops;
+-
+-#endif
+diff --git a/libs/xmlrpc-c/ltconfig b/libs/xmlrpc-c/ltconfig
+deleted file mode 100755
+index a01334f..0000000
+--- a/libs/xmlrpc-c/ltconfig
++++ /dev/null
+@@ -1,3078 +0,0 @@
+-#! /bin/sh
+-
+-# ltconfig - Create a system-specific libtool.
+-# Copyright (C) 1996-1999 Free Software Foundation, Inc.
+-# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+-#
+-# This file is free software; you can redistribute it and/or modify it
+-# under the terms of the GNU General Public License as published by
+-# the Free Software Foundation; either version 2 of the License, or
+-# (at your option) any later version.
+-#
+-# This program is distributed in the hope that it will be useful, but
+-# WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+-# General Public License for more details.
+-#
+-# You should have received a copy of the GNU General Public License
+-# along with this program; if not, write to the Free Software
+-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+-#
+-# As a special exception to the GNU General Public License, if you
+-# distribute this file as part of a program that contains a
+-# configuration script generated by Autoconf, you may include it under
+-# the same distribution terms that you use for the rest of that program.
+-
+-# A lot of this script is taken from autoconf-2.10.
+-
+-# Check that we are running under the correct shell.
+-SHELL=${CONFIG_SHELL-/bin/sh}
+-echo=echo
+-if test "X$1" = X--no-reexec; then
+- # Discard the --no-reexec flag, and continue.
+- shift
+-elif test "X$1" = X--fallback-echo; then
+- # Avoid inline document here, it may be left over
+- :
+-elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+- # Yippee, $echo works!
+- :
+-else
+- # Restart under the correct shell.
+- exec "$SHELL" "$0" --no-reexec ${1+"$@"}
+-fi
+-
+-if test "X$1" = X--fallback-echo; then
+- # used as fallback echo
+- shift
+- cat <<EOF
+-$*
+-EOF
+- exit 0
+-fi
+-
+-# Find the correct PATH separator. Usually this is `:', but
+-# DJGPP uses `;' like DOS.
+-if test "X${PATH_SEPARATOR+set}" != Xset; then
+- UNAME=${UNAME-`uname 2>/dev/null`}
+- case X$UNAME in
+- *-DOS) PATH_SEPARATOR=';' ;;
+- *) PATH_SEPARATOR=':' ;;
+- esac
+-fi
+-
+-# The HP-UX ksh and POSIX shell print the target directory to stdout
+-# if CDPATH is set.
+-if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+-
+-if test "X${echo_test_string+set}" != Xset; then
+- # find a string as large as possible, as long as the shell can cope with it
+- for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+- # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+- if (echo_test_string="`eval $cmd`") 2>/dev/null &&
+- echo_test_string="`eval $cmd`" &&
+- (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null; then
+- break
+- fi
+- done
+-fi
+-
+-if test "X`($echo '\t') 2>/dev/null`" != 'X\t' ||
+- test "X`($echo "$echo_test_string") 2>/dev/null`" != X"$echo_test_string"; then
+- # The Solaris, AIX, and Digital Unix default echo programs unquote
+- # backslashes. This makes it impossible to quote backslashes using
+- # echo "$something" | sed 's/\\/\\\\/g'
+- #
+- # So, first we look for a working echo in the user's PATH.
+-
+- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+- for dir in $PATH /usr/ucb; do
+- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+- test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
+- echo="$dir/echo"
+- break
+- fi
+- done
+- IFS="$save_ifs"
+-
+- if test "X$echo" = Xecho; then
+- # We didn't find a better echo, so look for alternatives.
+- if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+- test "X`(print -r "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
+- # This shell has a builtin print -r that does the trick.
+- echo='print -r'
+- elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+- test "X$CONFIG_SHELL" != X/bin/ksh; then
+- # If we have ksh, try running ltconfig again with it.
+- ORIGINAL_CONFIG_SHELL="${CONFIG_SHELL-/bin/sh}"
+- export ORIGINAL_CONFIG_SHELL
+- CONFIG_SHELL=/bin/ksh
+- export CONFIG_SHELL
+- exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"}
+- else
+- # Try using printf.
+- echo='printf "%s\n"'
+- if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+- test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
+- # Cool, printf works
+- :
+- elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' &&
+- test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
+- CONFIG_SHELL="$ORIGINAL_CONFIG_SHELL"
+- export CONFIG_SHELL
+- SHELL="$CONFIG_SHELL"
+- export SHELL
+- echo="$CONFIG_SHELL $0 --fallback-echo"
+- elif test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' &&
+- test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
+- echo="$CONFIG_SHELL $0 --fallback-echo"
+- else
+- # maybe with a smaller string...
+- prev=:
+-
+- for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
+- if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null; then
+- break
+- fi
+- prev="$cmd"
+- done
+-
+- if test "$prev" != 'sed 50q "$0"'; then
+- echo_test_string=`eval $prev`
+- export echo_test_string
+- exec "${ORIGINAL_CONFIG_SHELL}" "$0" ${1+"$@"}
+- else
+- # Oops. We lost completely, so just stick with echo.
+- echo=echo
+- fi
+- fi
+- fi
+- fi
+-fi
+-
+-# Sed substitution that helps us do robust quoting. It backslashifies
+-# metacharacters that are still active within double-quoted strings.
+-Xsed='sed -e s/^X//'
+-sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
+-
+-# Same as above, but do not quote variable references.
+-double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
+-
+-# Sed substitution to delay expansion of an escaped shell variable in a
+-# double_quote_subst'ed string.
+-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+-
+-# The name of this program.
+-progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'`
+-
+-# Constants:
+-PROGRAM=ltconfig
+-PACKAGE=libtool
+-VERSION=1.3.4
+-TIMESTAMP=" (1.385.2.196 1999/12/07 21:47:57)"
+-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+-ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+-rm="rm -f"
+-
+-help="Try \`$progname --help' for more information."
+-
+-# Global variables:
+-default_ofile=libtool
+-can_build_shared=yes
+-enable_shared=yes
+-# All known linkers require a `.a' archive for static linking (except M$VC,
+-# which needs '.lib').
+-enable_static=yes
+-enable_fast_install=yes
+-enable_dlopen=unknown
+-enable_win32_dll=no
+-ltmain=
+-silent=
+-srcdir=
+-ac_config_guess=
+-ac_config_sub=
+-host=
+-nonopt=
+-ofile="$default_ofile"
+-verify_host=yes
+-with_gcc=no
+-with_gnu_ld=no
+-need_locks=yes
+-ac_ext=c
+-objext=o
+-libext=a
+-exeext=
+-cache_file=
+-
+-old_AR="$AR"
+-old_CC="$CC"
+-old_CFLAGS="$CFLAGS"
+-old_CPPFLAGS="$CPPFLAGS"
+-old_LDFLAGS="$LDFLAGS"
+-old_LD="$LD"
+-old_LN_S="$LN_S"
+-old_LIBS="$LIBS"
+-old_NM="$NM"
+-old_RANLIB="$RANLIB"
+-old_DLLTOOL="$DLLTOOL"
+-old_OBJDUMP="$OBJDUMP"
+-old_AS="$AS"
+-
+-# Parse the command line options.
+-args=
+-prev=
+-for option
+-do
+- case "$option" in
+- -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+- *) optarg= ;;
+- esac
+-
+- # If the previous option needs an argument, assign it.
+- if test -n "$prev"; then
+- eval "$prev=\$option"
+- prev=
+- continue
+- fi
+-
+- case "$option" in
+- --help) cat <<EOM
+-Usage: $progname [OPTION]... [HOST [LTMAIN]]
+-
+-Generate a system-specific libtool script.
+-
+- --debug enable verbose shell tracing
+- --disable-shared do not build shared libraries
+- --disable-static do not build static libraries
+- --disable-fast-install do not optimize for fast installation
+- --enable-dlopen enable dlopen support
+- --enable-win32-dll enable building dlls on win32 hosts
+- --help display this help and exit
+- --no-verify do not verify that HOST is a valid host type
+--o, --output=FILE specify the output file [default=$default_ofile]
+- --quiet same as \`--silent'
+- --silent do not print informational messages
+- --srcdir=DIR find \`config.guess' in DIR
+- --version output version information and exit
+- --with-gcc assume that the GNU C compiler will be used
+- --with-gnu-ld assume that the C compiler uses the GNU linker
+- --disable-lock disable file locking
+- --cache-file=FILE configure cache file
+-
+-LTMAIN is the \`ltmain.sh' shell script fragment or \`ltmain.c' program
+-that provides basic libtool functionality.
+-
+-HOST is the canonical host system name [default=guessed].
+-EOM
+- exit 0
+- ;;
+-
+- --debug)
+- echo "$progname: enabling shell trace mode"
+- set -x
+- ;;
+-
+- --disable-shared) enable_shared=no ;;
+-
+- --disable-static) enable_static=no ;;
+-
+- --disable-fast-install) enable_fast_install=no ;;
+-
+- --enable-dlopen) enable_dlopen=yes ;;
+-
+- --enable-win32-dll) enable_win32_dll=yes ;;
+-
+- --quiet | --silent) silent=yes ;;
+-
+- --srcdir) prev=srcdir ;;
+- --srcdir=*) srcdir="$optarg" ;;
+-
+- --no-verify) verify_host=no ;;
+-
+- --output | -o) prev=ofile ;;
+- --output=*) ofile="$optarg" ;;
+-
+- --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"; exit 0 ;;
+-
+- --with-gcc) with_gcc=yes ;;
+- --with-gnu-ld) with_gnu_ld=yes ;;
+-
+- --disable-lock) need_locks=no ;;
+-
+- --cache-file=*) cache_file="$optarg" ;;
+-
+- -*)
+- echo "$progname: unrecognized option \`$option'" 1>&2
+- echo "$help" 1>&2
+- exit 1
+- ;;
+-
+- *)
+- if test -z "$ltmain"; then
+- ltmain="$option"
+- elif test -z "$host"; then
+-# This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1
+-# if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then
+-# echo "$progname: warning \`$option' is not a valid host type" 1>&2
+-# fi
+- host="$option"
+- else
+- echo "$progname: too many arguments" 1>&2
+- echo "$help" 1>&2
+- exit 1
+- fi ;;
+- esac
+-done
+-
+-if test -z "$ltmain"; then
+- echo "$progname: you must specify a LTMAIN file" 1>&2
+- echo "$help" 1>&2
+- exit 1
+-fi
+-
+-if test ! -f "$ltmain"; then
+- echo "$progname: \`$ltmain' does not exist" 1>&2
+- echo "$help" 1>&2
+- exit 1
+-fi
+-
+-# Quote any args containing shell metacharacters.
+-ltconfig_args=
+-for arg
+-do
+- case "$arg" in
+- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
+- ltconfig_args="$ltconfig_args '$arg'" ;;
+- *) ltconfig_args="$ltconfig_args $arg" ;;
+- esac
+-done
+-
+-# A relevant subset of AC_INIT.
+-
+-# File descriptor usage:
+-# 0 standard input
+-# 1 file creation
+-# 2 errors and warnings
+-# 3 some systems may open it to /dev/tty
+-# 4 used on the Kubota Titan
+-# 5 compiler messages saved in config.log
+-# 6 checking for... messages and results
+-if test "$silent" = yes; then
+- exec 6>/dev/null
+-else
+- exec 6>&1
+-fi
+-exec 5>>./config.log
+-
+-# NLS nuisances.
+-# Only set LANG and LC_ALL to C if already set.
+-# These must not be set unconditionally because not all systems understand
+-# e.g. LANG=C (notably SCO).
+-if test "X${LC_ALL+set}" = Xset; then LC_ALL=C; export LC_ALL; fi
+-if test "X${LANG+set}" = Xset; then LANG=C; export LANG; fi
+-
+-if test -n "$cache_file" && test -r "$cache_file"; then
+- echo "loading cache $cache_file within ltconfig"
+- . $cache_file
+-fi
+-
+-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
+- # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
+- if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
+- ac_n= ac_c='
+-' ac_t=' '
+- else
+- ac_n=-n ac_c= ac_t=
+- fi
+-else
+- ac_n= ac_c='\c' ac_t=
+-fi
+-
+-if test -z "$srcdir"; then
+- # Assume the source directory is the same one as the path to LTMAIN.
+- srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'`
+- test "$srcdir" = "$ltmain" && srcdir=.
+-fi
+-
+-trap "$rm conftest*; exit 1" 1 2 15
+-if test "$verify_host" = yes; then
+- # Check for config.guess and config.sub.
+- ac_aux_dir=
+- for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+- if test -f $ac_dir/config.guess; then
+- ac_aux_dir=$ac_dir
+- break
+- fi
+- done
+- if test -z "$ac_aux_dir"; then
+- echo "$progname: cannot find config.guess in $srcdir $srcdir/.. $srcdir/../.." 1>&2
+- echo "$help" 1>&2
+- exit 1
+- fi
+- ac_config_guess=$ac_aux_dir/config.guess
+- ac_config_sub=$ac_aux_dir/config.sub
+-
+- # Make sure we can run config.sub.
+- if $SHELL $ac_config_sub sun4 >/dev/null 2>&1; then :
+- else
+- echo "$progname: cannot run $ac_config_sub" 1>&2
+- echo "$help" 1>&2
+- exit 1
+- fi
+-
+- echo $ac_n "checking host system type""... $ac_c" 1>&6
+-
+- host_alias=$host
+- case "$host_alias" in
+- "")
+- if host_alias=`$SHELL $ac_config_guess`; then :
+- else
+- echo "$progname: cannot guess host type; you must specify one" 1>&2
+- echo "$help" 1>&2
+- exit 1
+- fi ;;
+- esac
+- host=`$SHELL $ac_config_sub $host_alias`
+- echo "$ac_t$host" 1>&6
+-
+- # Make sure the host verified.
+- test -z "$host" && exit 1
+-
+-elif test -z "$host"; then
+- echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2
+- echo "$help" 1>&2
+- exit 1
+-else
+- host_alias=$host
+-fi
+-
+-# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
+-case "$host_os" in
+-linux-gnu*) ;;
+-linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
+-esac
+-
+-host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+-host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+-host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+-
+-case "$host_os" in
+-aix3*)
+- # AIX sometimes has problems with the GCC collect2 program. For some
+- # reason, if we set the COLLECT_NAMES environment variable, the problems
+- # vanish in a puff of smoke.
+- if test "X${COLLECT_NAMES+set}" != Xset; then
+- COLLECT_NAMES=
+- export COLLECT_NAMES
+- fi
+- ;;
+-esac
+-
+-# Determine commands to create old-style static archives.
+-old_archive_cmds='$AR cru $oldlib$oldobjs'
+-old_postinstall_cmds='chmod 644 $oldlib'
+-old_postuninstall_cmds=
+-
+-# Set a sane default for `AR'.
+-test -z "$AR" && AR=ar
+-
+-# Set a sane default for `OBJDUMP'.
+-test -z "$OBJDUMP" && OBJDUMP=objdump
+-
+-# If RANLIB is not set, then run the test.
+-if test "${RANLIB+set}" != "set"; then
+- result=no
+-
+- echo $ac_n "checking for ranlib... $ac_c" 1>&6
+- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+- for dir in $PATH; do
+- test -z "$dir" && dir=.
+- if test -f $dir/ranlib || test -f $dir/ranlib$ac_exeext; then
+- RANLIB="ranlib"
+- result="ranlib"
+- break
+- fi
+- done
+- IFS="$save_ifs"
+-
+- echo "$ac_t$result" 1>&6
+-fi
+-
+-if test -n "$RANLIB"; then
+- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+-fi
+-
+-# Set sane defaults for `DLLTOOL', `OBJDUMP', and `AS', used on cygwin.
+-test -z "$DLLTOOL" && DLLTOOL=dlltool
+-test -z "$OBJDUMP" && OBJDUMP=objdump
+-test -z "$AS" && AS=as
+-
+-# Check to see if we are using GCC.
+-if test "$with_gcc" != yes || test -z "$CC"; then
+- # If CC is not set, then try to find GCC or a usable CC.
+- if test -z "$CC"; then
+- echo $ac_n "checking for gcc... $ac_c" 1>&6
+- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+- for dir in $PATH; do
+- test -z "$dir" && dir=.
+- if test -f $dir/gcc || test -f $dir/gcc$ac_exeext; then
+- CC="gcc"
+- break
+- fi
+- done
+- IFS="$save_ifs"
+-
+- if test -n "$CC"; then
+- echo "$ac_t$CC" 1>&6
+- else
+- echo "$ac_t"no 1>&6
+- fi
+- fi
+-
+- # Not "gcc", so try "cc", rejecting "/usr/ucb/cc".
+- if test -z "$CC"; then
+- echo $ac_n "checking for cc... $ac_c" 1>&6
+- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+- cc_rejected=no
+- for dir in $PATH; do
+- test -z "$dir" && dir=.
+- if test -f $dir/cc || test -f $dir/cc$ac_exeext; then
+- if test "$dir/cc" = "/usr/ucb/cc"; then
+- cc_rejected=yes
+- continue
+- fi
+- CC="cc"
+- break
+- fi
+- done
+- IFS="$save_ifs"
+- if test $cc_rejected = yes; then
+- # We found a bogon in the path, so make sure we never use it.
+- set dummy $CC
+- shift
+- if test $# -gt 0; then
+- # We chose a different compiler from the bogus one.
+- # However, it has the same name, so the bogon will be chosen
+- # first if we set CC to just the name; use the full file name.
+- shift
+- set dummy "$dir/cc" "$@"
+- shift
+- CC="$@"
+- fi
+- fi
+-
+- if test -n "$CC"; then
+- echo "$ac_t$CC" 1>&6
+- else
+- echo "$ac_t"no 1>&6
+- fi
+-
+- if test -z "$CC"; then
+- echo "$progname: error: no acceptable cc found in \$PATH" 1>&2
+- exit 1
+- fi
+- fi
+-
+- # Now see if the compiler is really GCC.
+- with_gcc=no
+- echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6
+- echo "$progname:581: checking whether we are using GNU C" >&5
+-
+- $rm conftest.c
+- cat > conftest.c <<EOF
+-#ifdef __GNUC__
+- yes;
+-#endif
+-EOF
+- if { ac_try='${CC-cc} -E conftest.c'; { (eval echo $progname:589: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+- with_gcc=yes
+- fi
+- $rm conftest.c
+- echo "$ac_t$with_gcc" 1>&6
+-fi
+-
+-# Allow CC to be a program name with arguments.
+-set dummy $CC
+-compiler="$2"
+-
+-echo $ac_n "checking for object suffix... $ac_c" 1>&6
+-$rm conftest*
+-echo 'int i = 1;' > conftest.c
+-echo "$progname:603: checking for object suffix" >& 5
+-if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then
+- # Append any warnings to the config.log.
+- cat conftest.err 1>&5
+-
+- for ac_file in conftest.*; do
+- case $ac_file in
+- *.c) ;;
+- *) objext=`echo $ac_file | sed -e s/conftest.//` ;;
+- esac
+- done
+-else
+- cat conftest.err 1>&5
+- echo "$progname: failed program was:" >&5
+- cat conftest.c >&5
+-fi
+-$rm conftest*
+-echo "$ac_t$objext" 1>&6
+-
+-echo $ac_n "checking for executable suffix... $ac_c" 1>&6
+-if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
+- echo $ac_n "(cached) $ac_c" 1>&6
+-else
+- ac_cv_exeext="no"
+- $rm conftest*
+- echo 'main () { return 0; }' > conftest.c
+- echo "$progname:629: checking for executable suffix" >& 5
+- if { (eval echo $progname:630: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then
+- # Append any warnings to the config.log.
+- cat conftest.err 1>&5
+-
+- for ac_file in conftest.*; do
+- case $ac_file in
+- *.c | *.err | *.$objext ) ;;
+- *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;;
+- esac
+- done
+- else
+- cat conftest.err 1>&5
+- echo "$progname: failed program was:" >&5
+- cat conftest.c >&5
+- fi
+- $rm conftest*
+-fi
+-if test "X$ac_cv_exeext" = Xno; then
+- exeext=""
+-else
+- exeext="$ac_cv_exeext"
+-fi
+-echo "$ac_t$ac_cv_exeext" 1>&6
+-
+-echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6
+-pic_flag=
+-special_shlib_compile_flags=
+-wl=
+-link_static_flag=
+-no_builtin_flag=
+-
+-if test "$with_gcc" = yes; then
+- wl='-Wl,'
+- link_static_flag='-static'
+-
+- case "$host_os" in
+- beos* | irix5* | irix6* | osf3* | osf4* | osf5*)
+- # PIC is the default for these OSes.
+- ;;
+- aix*)
+- # Below there is a dirty hack to force normal static linking with -ldl
+- # The problem is because libdl dynamically linked with both libc and
+- # libC (AIX C++ library), which obviously doesn't included in libraries
+- # list by gcc. This cause undefined symbols with -static flags.
+- # This hack allows C programs to be linked with "-static -ldl", but
+- # we not sure about C++ programs.
+- link_static_flag="$link_static_flag ${wl}-lC"
+- ;;
+- cygwin* | mingw* | os2*)
+- # We can build DLLs from non-PIC.
+- ;;
+- amigaos*)
+- # FIXME: we need at least 68020 code to build shared libraries, but
+- # adding the `-m68020' flag to GCC prevents building anything better,
+- # like `-m68040'.
+- pic_flag='-m68020 -resident32 -malways-restore-a4'
+- ;;
+- sysv4*MP*)
+- if test -d /usr/nec; then
+- pic_flag=-Kconform_pic
+- fi
+- ;;
+- *)
+- pic_flag='-fPIC'
+- ;;
+- esac
+-else
+- # PORTME Check for PIC flags for the system compiler.
+- case "$host_os" in
+- aix3* | aix4*)
+- # All AIX code is PIC.
+- link_static_flag='-bnso -bI:/lib/syscalls.exp'
+- ;;
+-
+- hpux9* | hpux10* | hpux11*)
+- # Is there a better link_static_flag that works with the bundled CC?
+- wl='-Wl,'
+- link_static_flag="${wl}-a ${wl}archive"
+- pic_flag='+Z'
+- ;;
+-
+- irix5* | irix6*)
+- wl='-Wl,'
+- link_static_flag='-non_shared'
+- # PIC (with -KPIC) is the default.
+- ;;
+-
+- cygwin* | mingw* | os2*)
+- # We can build DLLs from non-PIC.
+- ;;
+-
+- osf3* | osf4* | osf5*)
+- # All OSF/1 code is PIC.
+- wl='-Wl,'
+- link_static_flag='-non_shared'
+- ;;
+-
+- sco3.2v5*)
+- pic_flag='-Kpic'
+- link_static_flag='-dn'
+- special_shlib_compile_flags='-belf'
+- ;;
+-
+- solaris*)
+- pic_flag='-KPIC'
+- link_static_flag='-Bstatic'
+- wl='-Wl,'
+- ;;
+-
+- sunos4*)
+- pic_flag='-PIC'
+- link_static_flag='-Bstatic'
+- wl='-Qoption ld '
+- ;;
+-
+- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+- pic_flag='-KPIC'
+- link_static_flag='-Bstatic'
+- wl='-Wl,'
+- ;;
+-
+- uts4*)
+- pic_flag='-pic'
+- link_static_flag='-Bstatic'
+- ;;
+- sysv4*MP*)
+- if test -d /usr/nec ;then
+- pic_flag='-Kconform_pic'
+- link_static_flag='-Bstatic'
+- fi
+- ;;
+- *)
+- can_build_shared=no
+- ;;
+- esac
+-fi
+-
+-if test -n "$pic_flag"; then
+- echo "$ac_t$pic_flag" 1>&6
+-
+- # Check to make sure the pic_flag actually works.
+- echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6
+- $rm conftest*
+- echo "int some_variable = 0;" > conftest.c
+- save_CFLAGS="$CFLAGS"
+- CFLAGS="$CFLAGS $pic_flag -DPIC"
+- echo "$progname:776: checking if $compiler PIC flag $pic_flag works" >&5
+- if { (eval echo $progname:777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then
+- # Append any warnings to the config.log.
+- cat conftest.err 1>&5
+-
+- case "$host_os" in
+- hpux9* | hpux10* | hpux11*)
+- # On HP-UX, both CC and GCC only warn that PIC is supported... then they
+- # create non-PIC objects. So, if there were any warnings, we assume that
+- # PIC is not supported.
+- if test -s conftest.err; then
+- echo "$ac_t"no 1>&6
+- can_build_shared=no
+- pic_flag=
+- else
+- echo "$ac_t"yes 1>&6
+- pic_flag=" $pic_flag"
+- fi
+- ;;
+- *)
+- echo "$ac_t"yes 1>&6
+- pic_flag=" $pic_flag"
+- ;;
+- esac
+- else
+- # Append any errors to the config.log.
+- cat conftest.err 1>&5
+- can_build_shared=no
+- pic_flag=
+- echo "$ac_t"no 1>&6
+- fi
+- CFLAGS="$save_CFLAGS"
+- $rm conftest*
+-else
+- echo "$ac_t"none 1>&6
+-fi
+-
+-# Check to see if options -o and -c are simultaneously supported by compiler
+-echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6
+-$rm -r conftest 2>/dev/null
+-mkdir conftest
+-cd conftest
+-$rm conftest*
+-echo "int some_variable = 0;" > conftest.c
+-mkdir out
+-# According to Tom Tromey, Ian Lance Taylor reported there are C compilers
+-# that will create temporary files in the current directory regardless of
+-# the output directory. Thus, making CWD read-only will cause this test
+-# to fail, enabling locking or at least warning the user not to do parallel
+-# builds.
+-chmod -w .
+-save_CFLAGS="$CFLAGS"
+-CFLAGS="$CFLAGS -o out/conftest2.o"
+-echo "$progname:829: checking if $compiler supports -c -o file.o" >&5
+-if { (eval echo $progname:830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then
+-
+- # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings
+- if test -s out/conftest.err; then
+- echo "$ac_t"no 1>&6
+- compiler_c_o=no
+- else
+- echo "$ac_t"yes 1>&6
+- compiler_c_o=yes
+- fi
+-else
+- # Append any errors to the config.log.
+- cat out/conftest.err 1>&5
+- compiler_c_o=no
+- echo "$ac_t"no 1>&6
+-fi
+-CFLAGS="$save_CFLAGS"
+-chmod u+w .
+-$rm conftest* out/*
+-rmdir out
+-cd ..
+-rmdir conftest
+-$rm -r conftest 2>/dev/null
+-
+-if test x"$compiler_c_o" = x"yes"; then
+- # Check to see if we can write to a .lo
+- echo $ac_n "checking if $compiler supports -c -o file.lo... $ac_c" 1>&6
+- $rm conftest*
+- echo "int some_variable = 0;" > conftest.c
+- save_CFLAGS="$CFLAGS"
+- CFLAGS="$CFLAGS -c -o conftest.lo"
+- echo "$progname:862: checking if $compiler supports -c -o file.lo" >&5
+-if { (eval echo $progname:863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then
+-
+- # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings
+- if test -s conftest.err; then
+- echo "$ac_t"no 1>&6
+- compiler_o_lo=no
+- else
+- echo "$ac_t"yes 1>&6
+- compiler_o_lo=yes
+- fi
+- else
+- # Append any errors to the config.log.
+- cat conftest.err 1>&5
+- compiler_o_lo=no
+- echo "$ac_t"no 1>&6
+- fi
+- CFLAGS="$save_CFLAGS"
+- $rm conftest*
+-else
+- compiler_o_lo=no
+-fi
+-
+-# Check to see if we can do hard links to lock some files if needed
+-hard_links="nottested"
+-if test "$compiler_c_o" = no && test "$need_locks" != no; then
+- # do not overwrite the value of need_locks provided by the user
+- echo $ac_n "checking if we can lock with hard links... $ac_c" 1>&6
+- hard_links=yes
+- $rm conftest*
+- ln conftest.a conftest.b 2>/dev/null && hard_links=no
+- touch conftest.a
+- ln conftest.a conftest.b 2>&5 || hard_links=no
+- ln conftest.a conftest.b 2>/dev/null && hard_links=no
+- echo "$ac_t$hard_links" 1>&6
+- $rm conftest*
+- if test "$hard_links" = no; then
+- echo "*** WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2
+- need_locks=warn
+- fi
+-else
+- need_locks=no
+-fi
+-
+-if test "$with_gcc" = yes; then
+- # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
+- echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions ... $ac_c" 1>&6
+- $rm conftest*
+- echo "int some_variable = 0;" > conftest.c
+- save_CFLAGS="$CFLAGS"
+- CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c"
+- echo "$progname:914: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+- if { (eval echo $progname:915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then
+-
+- # The compiler can only warn and ignore the option if not recognized
+- # So say no if there are warnings
+- if test -s conftest.err; then
+- echo "$ac_t"no 1>&6
+- compiler_rtti_exceptions=no
+- else
+- echo "$ac_t"yes 1>&6
+- compiler_rtti_exceptions=yes
+- fi
+- else
+- # Append any errors to the config.log.
+- cat conftest.err 1>&5
+- compiler_rtti_exceptions=no
+- echo "$ac_t"no 1>&6
+- fi
+- CFLAGS="$save_CFLAGS"
+- $rm conftest*
+-
+- if test "$compiler_rtti_exceptions" = "yes"; then
+- no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions'
+- else
+- no_builtin_flag=' -fno-builtin'
+- fi
+-
+-fi
+-
+-# Check for any special shared library compilation flags.
+-if test -n "$special_shlib_compile_flags"; then
+- echo "$progname: warning: \`$CC' requires \`$special_shlib_compile_flags' to build shared libraries" 1>&2
+- if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$special_shlib_compile_flags[ ]" >/dev/null; then :
+- else
+- echo "$progname: add \`$special_shlib_compile_flags' to the CC or CFLAGS env variable and reconfigure" 1>&2
+- can_build_shared=no
+- fi
+-fi
+-
+-echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6
+-$rm conftest*
+-echo 'main(){return(0);}' > conftest.c
+-save_LDFLAGS="$LDFLAGS"
+-LDFLAGS="$LDFLAGS $link_static_flag"
+-echo "$progname:958: checking if $compiler static flag $link_static_flag works" >&5
+-if { (eval echo $progname:959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+- echo "$ac_t$link_static_flag" 1>&6
+-else
+- echo "$ac_t"none 1>&6
+- link_static_flag=
+-fi
+-LDFLAGS="$save_LDFLAGS"
+-$rm conftest*
+-
+-if test -z "$LN_S"; then
+- # Check to see if we can use ln -s, or we need hard links.
+- echo $ac_n "checking whether ln -s works... $ac_c" 1>&6
+- $rm conftest.dat
+- if ln -s X conftest.dat 2>/dev/null; then
+- $rm conftest.dat
+- LN_S="ln -s"
+- else
+- LN_S=ln
+- fi
+- if test "$LN_S" = "ln -s"; then
+- echo "$ac_t"yes 1>&6
+- else
+- echo "$ac_t"no 1>&6
+- fi
+-fi
+-
+-# Make sure LD is an absolute path.
+-if test -z "$LD"; then
+- ac_prog=ld
+- if test "$with_gcc" = yes; then
+- # Check if gcc -print-prog-name=ld gives a path.
+- echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6
+- echo "$progname:991: checking for ld used by GCC" >&5
+- ac_prog=`($CC -print-prog-name=ld) 2>&5`
+- case "$ac_prog" in
+- # Accept absolute paths.
+- [\\/]* | [A-Za-z]:[\\/]*)
+- re_direlt='/[^/][^/]*/\.\./'
+- # Canonicalize the path of ld
+- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+- done
+- test -z "$LD" && LD="$ac_prog"
+- ;;
+- "")
+- # If it fails, then pretend we are not using GCC.
+- ac_prog=ld
+- ;;
+- *)
+- # If it is relative, then search for the first ld in PATH.
+- with_gnu_ld=unknown
+- ;;
+- esac
+- elif test "$with_gnu_ld" = yes; then
+- echo $ac_n "checking for GNU ld... $ac_c" 1>&6
+- echo "$progname:1015: checking for GNU ld" >&5
+- else
+- echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
+- echo "$progname:1018: checking for non-GNU ld" >&5
+- fi
+-
+- if test -z "$LD"; then
+- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+- for ac_dir in $PATH; do
+- test -z "$ac_dir" && ac_dir=.
+- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+- LD="$ac_dir/$ac_prog"
+- # Check to see if the program is GNU ld. I'd rather use --version,
+- # but apparently some GNU ld's only accept -v.
+- # Break only if it was the GNU/non-GNU ld that we prefer.
+- if "$LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
+- test "$with_gnu_ld" != no && break
+- else
+- test "$with_gnu_ld" != yes && break
+- fi
+- fi
+- done
+- IFS="$ac_save_ifs"
+- fi
+-
+- if test -n "$LD"; then
+- echo "$ac_t$LD" 1>&6
+- else
+- echo "$ac_t"no 1>&6
+- fi
+-
+- if test -z "$LD"; then
+- echo "$progname: error: no acceptable ld found in \$PATH" 1>&2
+- exit 1
+- fi
+-fi
+-
+-# Check to see if it really is or is not GNU ld.
+-echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6
+-# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+-if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
+- with_gnu_ld=yes
+-else
+- with_gnu_ld=no
+-fi
+-echo "$ac_t$with_gnu_ld" 1>&6
+-
+-# See if the linker supports building shared libraries.
+-echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6
+-
+-allow_undefined_flag=
+-no_undefined_flag=
+-need_lib_prefix=unknown
+-need_version=unknown
+-# when you set need_version to no, make sure it does not cause -set_version
+-# flags to be left without arguments
+-archive_cmds=
+-archive_expsym_cmds=
+-old_archive_from_new_cmds=
+-export_dynamic_flag_spec=
+-whole_archive_flag_spec=
+-thread_safe_flag_spec=
+-hardcode_libdir_flag_spec=
+-hardcode_libdir_separator=
+-hardcode_direct=no
+-hardcode_minus_L=no
+-hardcode_shlibpath_var=unsupported
+-runpath_var=
+-always_export_symbols=no
+-export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
+-# include_expsyms should be a list of space-separated symbols to be *always*
+-# included in the symbol list
+-include_expsyms=
+-# exclude_expsyms can be an egrep regular expression of symbols to exclude
+-# it will be wrapped by ` (' and `)$', so one must not match beginning or
+-# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+-# as well as any symbol that contains `d'.
+-exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+-# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+-# platforms (ab)use it in PIC code, but their linkers get confused if
+-# the symbol is explicitly referenced. Since portable code cannot
+-# rely on this symbol name, it's probably fine to never include it in
+-# preloaded symbol tables.
+-
+-case "$host_os" in
+-cygwin* | mingw*)
+- # FIXME: the MSVC++ port hasn't been tested in a loooong time
+- # When not using gcc, we currently assume that we are using
+- # Microsoft Visual C++.
+- if test "$with_gcc" != yes; then
+- with_gnu_ld=no
+- fi
+- ;;
+-
+-esac
+-
+-ld_shlibs=yes
+-if test "$with_gnu_ld" = yes; then
+- # If archive_cmds runs LD, not CC, wlarc should be empty
+- wlarc='${wl}'
+-
+- # See if GNU ld supports shared libraries.
+- case "$host_os" in
+- aix3* | aix4*)
+- # On AIX, the GNU linker is very broken
+- ld_shlibs=no
+- cat <<EOF 1>&2
+-
+-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+-*** to be unable to reliably create shared libraries on AIX.
+-*** Therefore, libtool is disabling shared libraries support. If you
+-*** really care for shared libraries, you may want to modify your PATH
+-*** so that a non-GNU linker is found, and then restart.
+-
+-EOF
+- ;;
+-
+- amigaos*)
+- archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)'
+- hardcode_libdir_flag_spec='-L$libdir'
+- hardcode_minus_L=yes
+-
+- # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+- # that the semantics of dynamic libraries on AmigaOS, at least up
+- # to version 4, is to share data among multiple programs linked
+- # with the same dynamic library. Since this doesn't match the
+- # behavior of shared libraries on other platforms, we can use
+- # them.
+- ld_shlibs=no
+- ;;
+-
+- beos*)
+- if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+- allow_undefined_flag=unsupported
+- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+- # support --undefined. This deserves some investigation. FIXME
+- archive_cmds='$CC -nostart $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
+- else
+- ld_shlibs=no
+- fi
+- ;;
+-
+- cygwin* | mingw*)
+- # hardcode_libdir_flag_spec is actually meaningless, as there is
+- # no search path for DLLs.
+- hardcode_libdir_flag_spec='-L$libdir'
+- allow_undefined_flag=unsupported
+- always_export_symbols=yes
+-
+- # Extract the symbol export list from an `--export-all' def file,
+- # then regenerate the def file from the symbol export list, so that
+- # the compiled dll only exports the symbol export list.
+- export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~
+- test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~
+- $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def $objdir/$soname-ltdll.$objext $libobjs $convenience~
+- sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]* ; *//" < $objdir/$soname-def > $export_symbols'
+-
+- archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~
+- _lt_hint=1;
+- for symbol in `cat $export_symbols`; do
+- echo " \$symbol @ \$_lt_hint ; " >> $objdir/$soname-def;
+- _lt_hint=`expr 1 + \$_lt_hint`;
+- done~
+- test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~
+- test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~
+- $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~
+- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~
+- $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~
+- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~
+- $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts'
+-
+- old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a'
+- ;;
+-
+- netbsd*)
+- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- else
+- archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib'
+- # can we support soname and/or expsyms with a.out? -oliva
+- fi
+- ;;
+-
+- solaris* | sysv5*)
+- if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
+- ld_shlibs=no
+- cat <<EOF 1>&2
+-
+-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+-*** create shared libraries on Solaris systems. Therefore, libtool
+-*** is disabling shared libraries support. We urge you to upgrade GNU
+-*** binutils to release 2.9.1 or newer. Another option is to modify
+-*** your PATH or compiler configuration so that the native linker is
+-*** used, and then restart.
+-
+-EOF
+- elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- else
+- ld_shlibs=no
+- fi
+- ;;
+-
+- sunos4*)
+- archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linkopts'
+- wlarc=
+- hardcode_direct=yes
+- hardcode_shlibpath_var=no
+- ;;
+-
+- *)
+- if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+- archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
+- archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+- else
+- ld_shlibs=no
+- fi
+- ;;
+- esac
+-
+- if test "$ld_shlibs" = yes; then
+- runpath_var=LD_RUN_PATH
+- hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+- export_dynamic_flag_spec='${wl}--export-dynamic'
+- case $host_os in
+- cygwin* | mingw*)
+- # dlltool doesn't understand --whole-archive et. al.
+- whole_archive_flag_spec=
+- ;;
+- *)
+- # ancient GNU ld didn't support --whole-archive et. al.
+- if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
+- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+- else
+- whole_archive_flag_spec=
+- fi
+- ;;
+- esac
+- fi
+-else
+- # PORTME fill in a description of your system's linker (not GNU ld)
+- case "$host_os" in
+- aix3*)
+- allow_undefined_flag=unsupported
+- always_export_symbols=yes
+- archive_expsym_cmds='$LD -o $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname'
+- # Note: this linker hardcodes the directories in LIBPATH if there
+- # are no directories specified by -L.
+- hardcode_minus_L=yes
+- if test "$with_gcc" = yes && test -z "$link_static_flag"; then
+- # Neither direct hardcoding nor static linking is supported with a
+- # broken collect2.
+- hardcode_direct=unsupported
+- fi
+- ;;
+-
+- aix4*)
+- hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib'
+- hardcode_libdir_separator=':'
+- if test "$with_gcc" = yes; then
+- collect2name=`${CC} -print-prog-name=collect2`
+- if test -f "$collect2name" && \
+- strings "$collect2name" | grep resolve_lib_name >/dev/null
+- then
+- # We have reworked collect2
+- hardcode_direct=yes
+- else
+- # We have old collect2
+- hardcode_direct=unsupported
+- # It fails to find uninstalled libraries when the uninstalled
+- # path is not listed in the libpath. Setting hardcode_minus_L
+- # to unsupported forces relinking
+- hardcode_minus_L=yes
+- hardcode_libdir_flag_spec='-L$libdir'
+- hardcode_libdir_separator=
+- fi
+- shared_flag='-shared'
+- else
+- shared_flag='${wl}-bM:SRE'
+- hardcode_direct=yes
+- fi
+- allow_undefined_flag=' ${wl}-berok'
+- archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}'
+- archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}'
+- case "$host_os" in aix4.[01]|aix4.[01].*)
+- # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on
+- always_export_symbols=yes ;;
+- esac
+- ;;
+-
+- amigaos*)
+- archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)'
+- hardcode_libdir_flag_spec='-L$libdir'
+- hardcode_minus_L=yes
+- # see comment about different semantics on the GNU ld section
+- ld_shlibs=no
+- ;;
+-
+- cygwin* | mingw*)
+- # When not using gcc, we currently assume that we are using
+- # Microsoft Visual C++.
+- # hardcode_libdir_flag_spec is actually meaningless, as there is
+- # no search path for DLLs.
+- hardcode_libdir_flag_spec=' '
+- allow_undefined_flag=unsupported
+- # Tell ltmain to make .lib files, not .a files.
+- libext=lib
+- # FIXME: Setting linknames here is a bad hack.
+- archive_cmds='$CC -o $lib $libobjs $linkopts `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames='
+- # The linker will automatically build a .lib file if we build a DLL.
+- old_archive_from_new_cmds='true'
+- # FIXME: Should let the user specify the lib program.
+- old_archive_cmds='lib /OUT:$oldlib$oldobjs'
+- fix_srcfile_path='`cygpath -w $srcfile`'
+- ;;
+-
+- freebsd1*)
+- ld_shlibs=no
+- ;;
+-
+- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+- # support. Future versions do this automatically, but an explicit c++rt0.o
+- # does not break anything, and helps significantly (at the cost of a little
+- # extra space).
+- freebsd2.2*)
+- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts /usr/lib/c++rt0.o'
+- hardcode_libdir_flag_spec='-R$libdir'
+- hardcode_direct=yes
+- hardcode_shlibpath_var=no
+- ;;
+-
+- # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+- freebsd2*)
+- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts'
+- hardcode_direct=yes
+- hardcode_minus_L=yes
+- hardcode_shlibpath_var=no
+- ;;
+-
+- # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+- freebsd*)
+- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $linkopts'
+- hardcode_libdir_flag_spec='-R$libdir'
+- hardcode_direct=yes
+- hardcode_shlibpath_var=no
+- ;;
+-
+- hpux9* | hpux10* | hpux11*)
+- case "$host_os" in
+- hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;;
+- *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linkopts' ;;
+- esac
+- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+- hardcode_libdir_separator=:
+- hardcode_direct=yes
+- hardcode_minus_L=yes # Not in the search PATH, but as the default
+- # location of the library.
+- export_dynamic_flag_spec='${wl}-E'
+- ;;
+-
+- irix5* | irix6*)
+- if test "$with_gcc" = yes; then
+- archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+- else
+- archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+- fi
+- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+- hardcode_libdir_separator=:
+- ;;
+-
+- netbsd*)
+- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' # a.out
+- else
+- archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts' # ELF
+- fi
+- hardcode_libdir_flag_spec='${wl}-R$libdir'
+- hardcode_direct=yes
+- hardcode_shlibpath_var=no
+- ;;
+-
+- openbsd*)
+- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts'
+- hardcode_libdir_flag_spec='-R$libdir'
+- hardcode_direct=yes
+- hardcode_shlibpath_var=no
+- ;;
+-
+- os2*)
+- hardcode_libdir_flag_spec='-L$libdir'
+- hardcode_minus_L=yes
+- allow_undefined_flag=unsupported
+- archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def'
+- old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def'
+- ;;
+-
+- osf3*)
+- if test "$with_gcc" = yes; then
+- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+- else
+- allow_undefined_flag=' -expect_unresolved \*'
+- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+- fi
+- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+- hardcode_libdir_separator=:
+- ;;
+-
+- osf4* | osf5*) # As osf3* with the addition of the -msym flag
+- if test "$with_gcc" = yes; then
+- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+- else
+- allow_undefined_flag=' -expect_unresolved \*'
+- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+- fi
+- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+- hardcode_libdir_separator=:
+- ;;
+-
+- sco3.2v5*)
+- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+- hardcode_shlibpath_var=no
+- runpath_var=LD_RUN_PATH
+- hardcode_runpath_var=yes
+- ;;
+-
+- solaris*)
+- no_undefined_flag=' -z text'
+- # $CC -shared without GNU ld will not create a library from C++
+- # object files and a static libstdc++, better avoid it by now
+- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts'
+- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp'
+- hardcode_libdir_flag_spec='-R$libdir'
+- hardcode_shlibpath_var=no
+- case "$host_os" in
+- solaris2.[0-5] | solaris2.[0-5].*) ;;
+- *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+- esac
+- ;;
+-
+- sunos4*)
+- archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts'
+- hardcode_libdir_flag_spec='-L$libdir'
+- hardcode_direct=yes
+- hardcode_minus_L=yes
+- hardcode_shlibpath_var=no
+- ;;
+-
+- sysv4)
+- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+- runpath_var='LD_RUN_PATH'
+- hardcode_shlibpath_var=no
+- hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+- ;;
+-
+- sysv4.3*)
+- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+- hardcode_shlibpath_var=no
+- export_dynamic_flag_spec='-Bexport'
+- ;;
+-
+- sysv5*)
+- no_undefined_flag=' -z text'
+- # $CC -shared without GNU ld will not create a library from C++
+- # object files and a static libstdc++, better avoid it by now
+- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts'
+- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp'
+- hardcode_libdir_flag_spec=
+- hardcode_shlibpath_var=no
+- runpath_var='LD_RUN_PATH'
+- ;;
+-
+- uts4*)
+- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+- hardcode_libdir_flag_spec='-L$libdir'
+- hardcode_shlibpath_var=no
+- ;;
+-
+- dgux*)
+- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+- hardcode_libdir_flag_spec='-L$libdir'
+- hardcode_shlibpath_var=no
+- ;;
+-
+- sysv4*MP*)
+- if test -d /usr/nec; then
+- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+- hardcode_shlibpath_var=no
+- runpath_var=LD_RUN_PATH
+- hardcode_runpath_var=yes
+- ld_shlibs=yes
+- fi
+- ;;
+-
+- sysv4.2uw2*)
+- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linkopts'
+- hardcode_direct=yes
+- hardcode_minus_L=no
+- hardcode_shlibpath_var=no
+- hardcode_runpath_var=yes
+- runpath_var=LD_RUN_PATH
+- ;;
+-
+- unixware7*)
+- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+- runpath_var='LD_RUN_PATH'
+- hardcode_shlibpath_var=no
+- ;;
+-
+- *)
+- ld_shlibs=no
+- ;;
+- esac
+-fi
+-echo "$ac_t$ld_shlibs" 1>&6
+-test "$ld_shlibs" = no && can_build_shared=no
+-
+-if test -z "$NM"; then
+- echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6
+- case "$NM" in
+- [\\/]* | [A-Za-z]:[\\/]*) ;; # Let the user override the test with a path.
+- *)
+- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+- for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do
+- test -z "$ac_dir" && ac_dir=.
+- if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext; then
+- # Check to see if the nm accepts a BSD-compat flag.
+- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+- # nm: unknown option "B" ignored
+- if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+- NM="$ac_dir/nm -B"
+- break
+- elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+- NM="$ac_dir/nm -p"
+- break
+- else
+- NM=${NM="$ac_dir/nm"} # keep the first match, but
+- continue # so that we can try to find one that supports BSD flags
+- fi
+- fi
+- done
+- IFS="$ac_save_ifs"
+- test -z "$NM" && NM=nm
+- ;;
+- esac
+- echo "$ac_t$NM" 1>&6
+-fi
+-
+-# Check for command to grab the raw symbol name followed by C symbol from nm.
+-echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6
+-
+-# These are sane defaults that work on at least a few old systems.
+-# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+-
+-# Character class describing NM global symbol codes.
+-symcode='[BCDEGRST]'
+-
+-# Regexp to match symbols that can be accessed directly from C.
+-sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+-
+-# Transform the above into a raw symbol and a C symbol.
+-symxfrm='\1 \2\3 \3'
+-
+-# Transform an extracted symbol line into a proper C declaration
+-global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
+-
+-# Define system-specific variables.
+-case "$host_os" in
+-aix*)
+- symcode='[BCDT]'
+- ;;
+-cygwin* | mingw*)
+- symcode='[ABCDGISTW]'
+- ;;
+-hpux*) # Its linker distinguishes data from code symbols
+- global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'"
+- ;;
+-irix*)
+- symcode='[BCDEGRST]'
+- ;;
+-solaris*)
+- symcode='[BDT]'
+- ;;
+-sysv4)
+- symcode='[DFNSTU]'
+- ;;
+-esac
+-
+-# If we're using GNU nm, then use its standard symbol codes.
+-if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
+- symcode='[ABCDGISTW]'
+-fi
+-
+-# Try without a prefix undercore, then with it.
+-for ac_symprfx in "" "_"; do
+-
+- # Write the raw and C identifiers.
+- global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$/$symxfrm/p'"
+-
+- # Check to see that the pipe works correctly.
+- pipe_works=no
+- $rm conftest*
+- cat > conftest.c <<EOF
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-char nm_test_var;
+-void nm_test_func(){}
+-#ifdef __cplusplus
+-}
+-#endif
+-main(){nm_test_var='a';nm_test_func();return(0);}
+-EOF
+-
+- echo "$progname:1635: checking if global_symbol_pipe works" >&5
+- if { (eval echo $progname:1636: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then
+- # Now try to grab the symbols.
+- nlist=conftest.nm
+- if { echo "$progname:1639: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then
+-
+- # Try sorting and uniquifying the output.
+- if sort "$nlist" | uniq > "$nlist"T; then
+- mv -f "$nlist"T "$nlist"
+- else
+- rm -f "$nlist"T
+- fi
+-
+- # Make sure that we snagged all the symbols we need.
+- if egrep ' nm_test_var$' "$nlist" >/dev/null; then
+- if egrep ' nm_test_func$' "$nlist" >/dev/null; then
+- cat <<EOF > conftest.c
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+-EOF
+- # Now generate the symbol file.
+- eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c'
+-
+- cat <<EOF >> conftest.c
+-#if defined (__STDC__) && __STDC__
+-# define lt_ptr_t void *
+-#else
+-# define lt_ptr_t char *
+-# define const
+-#endif
+-
+-/* The mapping between symbol names and symbols. */
+-const struct {
+- const char *name;
+- lt_ptr_t address;
+-}
+-lt_preloaded_symbols[] =
+-{
+-EOF
+- sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c
+- cat <<\EOF >> conftest.c
+- {0, (lt_ptr_t) 0}
+-};
+-
+-#ifdef __cplusplus
+-}
+-#endif
+-EOF
+- # Now try linking the two files.
+- mv conftest.$objext conftstm.$objext
+- save_LIBS="$LIBS"
+- save_CFLAGS="$CFLAGS"
+- LIBS="conftstm.$objext"
+- CFLAGS="$CFLAGS$no_builtin_flag"
+- if { (eval echo $progname:1691: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+- pipe_works=yes
+- else
+- echo "$progname: failed program was:" >&5
+- cat conftest.c >&5
+- fi
+- LIBS="$save_LIBS"
+- else
+- echo "cannot find nm_test_func in $nlist" >&5
+- fi
+- else
+- echo "cannot find nm_test_var in $nlist" >&5
+- fi
+- else
+- echo "cannot run $global_symbol_pipe" >&5
+- fi
+- else
+- echo "$progname: failed program was:" >&5
+- cat conftest.c >&5
+- fi
+- $rm conftest* conftst*
+-
+- # Do not use the global_symbol_pipe unless it works.
+- if test "$pipe_works" = yes; then
+- break
+- else
+- global_symbol_pipe=
+- fi
+-done
+-if test "$pipe_works" = yes; then
+- echo "${ac_t}ok" 1>&6
+-else
+- echo "${ac_t}failed" 1>&6
+-fi
+-
+-if test -z "$global_symbol_pipe"; then
+- global_symbol_to_cdecl=
+-fi
+-
+-# Check hardcoding attributes.
+-echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6
+-hardcode_action=
+-if test -n "$hardcode_libdir_flag_spec" || \
+- test -n "$runpath_var"; then
+-
+- # We can hardcode non-existant directories.
+- if test "$hardcode_direct" != no &&
+- # If the only mechanism to avoid hardcoding is shlibpath_var, we
+- # have to relink, otherwise we might link with an installed library
+- # when we should be linking with a yet-to-be-installed one
+- ## test "$hardcode_shlibpath_var" != no &&
+- test "$hardcode_minus_L" != no; then
+- # Linking always hardcodes the temporary library directory.
+- hardcode_action=relink
+- else
+- # We can link without hardcoding, and we can hardcode nonexisting dirs.
+- hardcode_action=immediate
+- fi
+-else
+- # We cannot hardcode anything, or else we can only hardcode existing
+- # directories.
+- hardcode_action=unsupported
+-fi
+-echo "$ac_t$hardcode_action" 1>&6
+-
+-
+-reload_flag=
+-reload_cmds='$LD$reload_flag -o $output$reload_objs'
+-echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6
+-# PORTME Some linkers may need a different reload flag.
+-reload_flag='-r'
+-echo "$ac_t$reload_flag" 1>&6
+-test -n "$reload_flag" && reload_flag=" $reload_flag"
+-
+-# PORTME Fill in your ld.so characteristics
+-library_names_spec=
+-libname_spec='lib$name'
+-soname_spec=
+-postinstall_cmds=
+-postuninstall_cmds=
+-finish_cmds=
+-finish_eval=
+-shlibpath_var=
+-shlibpath_overrides_runpath=unknown
+-version_type=none
+-dynamic_linker="$host_os ld.so"
+-sys_lib_dlsearch_path_spec="/lib /usr/lib"
+-sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+-file_magic_cmd=
+-file_magic_test_file=
+-deplibs_check_method='unknown'
+-# Need to set the preceding variable on all platforms that support
+-# interlibrary dependencies.
+-# 'none' -- dependencies not supported.
+-# `unknown' -- same as none, but documents that we really don't know.
+-# 'pass_all' -- all dependencies passed with no checks.
+-# 'test_compile' -- check by making test program.
+-# 'file_magic [regex]' -- check by looking for files in library path
+-# which responds to the $file_magic_cmd with a given egrep regex.
+-# If you have `file' or equivalent on your system and you're not sure
+-# whether `pass_all' will *always* work, you probably want this one.
+-echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6
+-case "$host_os" in
+-aix3*)
+- version_type=linux
+- library_names_spec='${libname}${release}.so$versuffix $libname.a'
+- shlibpath_var=LIBPATH
+-
+- # AIX has no versioning support, so we append a major version to the name.
+- soname_spec='${libname}${release}.so$major'
+- ;;
+-
+-aix4*)
+- version_type=linux
+- # AIX has no versioning support, so currently we can not hardcode correct
+- # soname into executable. Probably we can add versioning support to
+- # collect2, so additional links can be useful in future.
+- # We preserve .a as extension for shared libraries though AIX4.2
+- # and later linker supports .so
+- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a'
+- shlibpath_var=LIBPATH
+- deplibs_check_method=pass_all
+- ;;
+-
+-amigaos*)
+- library_names_spec='$libname.ixlibrary $libname.a'
+- # Create ${libname}_ixlibrary.a entries in /sys/libs.
+- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
+- ;;
+-
+-beos*)
+- library_names_spec='${libname}.so'
+- dynamic_linker="$host_os ld.so"
+- shlibpath_var=LIBRARY_PATH
+- deplibs_check_method=pass_all
+- lt_cv_dlopen="load_add_on"
+- lt_cv_dlopen_libs=
+- lt_cv_dlopen_self=yes
+- ;;
+-
+-bsdi4*)
+- version_type=linux
+- need_version=no
+- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+- soname_spec='${libname}${release}.so$major'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+- file_magic_cmd=/usr/bin/file
+- file_magic_test_file=/shlib/libc.so
+- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+- export_dynamic_flag_spec=-rdynamic
+- # the default ld.so.conf also contains /usr/contrib/lib and
+- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+- # libtool to hard-code these into programs
+- ;;
+-
+-cygwin* | mingw*)
+- version_type=windows
+- need_version=no
+- need_lib_prefix=no
+- if test "$with_gcc" = yes; then
+- library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a'
+- else
+- library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib'
+- fi
+- dynamic_linker='Win32 ld.exe'
+- deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+- file_magic_cmd='${OBJDUMP} -f'
+- # FIXME: first we should search . and the directory the executable is in
+- shlibpath_var=PATH
+- lt_cv_dlopen="LoadLibrary"
+- lt_cv_dlopen_libs=
+- ;;
+-
+-freebsd1*)
+- dynamic_linker=no
+- ;;
+-
+-freebsd*)
+- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+- version_type=freebsd-$objformat
+- case "$version_type" in
+- freebsd-elf*)
+- deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
+- file_magic_cmd=/usr/bin/file
+- file_magic_test_file=`echo /usr/lib/libc.so*`
+- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
+- need_version=no
+- need_lib_prefix=no
+- ;;
+- freebsd-*)
+- deplibs_check_method=unknown
+- library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix'
+- need_version=yes
+- ;;
+- esac
+- shlibpath_var=LD_LIBRARY_PATH
+- case "$host_os" in
+- freebsd2* | freebsd3.[01]* | freebsdelf3.[01]*)
+- shlibpath_overrides_runpath=yes
+- ;;
+- *) # from 3.2 on
+- shlibpath_overrides_runpath=no
+- ;;
+- esac
+- ;;
+-
+-gnu*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so'
+- soname_spec='${libname}${release}.so$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- ;;
+-
+-hpux9* | hpux10* | hpux11*)
+- # Give a soname corresponding to the major version so that dld.sl refuses to
+- # link against other versions.
+- dynamic_linker="$host_os dld.sl"
+- version_type=sunos
+- need_lib_prefix=no
+- need_version=no
+- shlibpath_var=SHLIB_PATH
+- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+- library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl'
+- soname_spec='${libname}${release}.sl$major'
+- # HP-UX runs *really* slowly unless shared libraries are mode 555.
+- postinstall_cmds='chmod 555 $lib'
+- ;;
+-
+-irix5* | irix6*)
+- version_type=irix
+- need_lib_prefix=no
+- need_version=no
+- soname_spec='${libname}${release}.so.$major'
+- library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major ${libname}${release}.so $libname.so'
+- case "$host_os" in
+- irix5*)
+- libsuff= shlibsuff=
+- # this will be overridden with pass_all, but let us keep it just in case
+- deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
+- ;;
+- *)
+- case "$LD" in # libtool.m4 will add one of these switches to LD
+- *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;;
+- *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;;
+- *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;;
+- *) libsuff= shlibsuff= libmagic=never-match;;
+- esac
+- ;;
+- esac
+- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+- shlibpath_overrides_runpath=no
+- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+- file_magic_cmd=/usr/bin/file
+- file_magic_test_file=`echo /lib${libsuff}/libc.so*`
+- deplibs_check_method='pass_all'
+- ;;
+-
+-# No shared lib support for Linux oldld, aout, or coff.
+-linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
+- dynamic_linker=no
+- ;;
+-
+-# This must be Linux ELF.
+-linux-gnu*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+- soname_spec='${libname}${release}.so$major'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=no
+- deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+- file_magic_cmd=/usr/bin/file
+- file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
+-
+- if test -f /lib/ld.so.1; then
+- dynamic_linker='GNU ld.so'
+- else
+- # Only the GNU ld.so supports shared libraries on MkLinux.
+- case "$host_cpu" in
+- powerpc*) dynamic_linker=no ;;
+- *) dynamic_linker='Linux ld.so' ;;
+- esac
+- fi
+- ;;
+-
+-netbsd*)
+- version_type=sunos
+- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+- dynamic_linker='NetBSD (a.out) ld.so'
+- else
+- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so'
+- soname_spec='${libname}${release}.so$major'
+- dynamic_linker='NetBSD ld.elf_so'
+- fi
+- shlibpath_var=LD_LIBRARY_PATH
+- ;;
+-
+-openbsd*)
+- version_type=sunos
+- if test "$with_gnu_ld" = yes; then
+- need_lib_prefix=no
+- need_version=no
+- fi
+- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- ;;
+-
+-os2*)
+- libname_spec='$name'
+- need_lib_prefix=no
+- library_names_spec='$libname.dll $libname.a'
+- dynamic_linker='OS/2 ld.exe'
+- shlibpath_var=LIBPATH
+- ;;
+-
+-osf3* | osf4* | osf5*)
+- version_type=osf
+- need_version=no
+- soname_spec='${libname}${release}.so'
+- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
+- shlibpath_var=LD_LIBRARY_PATH
+- # this will be overridden with pass_all, but let us keep it just in case
+- deplibs_check_method='file_magic COFF format alpha shared library'
+- file_magic_cmd=/usr/bin/file
+- file_magic_test_file=/shlib/libc.so
+- deplibs_check_method='pass_all'
+- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+- ;;
+-
+-sco3.2v5*)
+- version_type=osf
+- soname_spec='${libname}${release}.so$major'
+- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+- shlibpath_var=LD_LIBRARY_PATH
+- ;;
+-
+-solaris*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+- soname_spec='${libname}${release}.so$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- # ldd complains unless libraries are executable
+- postinstall_cmds='chmod +x $lib'
+- deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib"
+- file_magic_cmd=/usr/bin/file
+- file_magic_test_file=/lib/libc.so
+- ;;
+-
+-sunos4*)
+- version_type=sunos
+- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+- shlibpath_var=LD_LIBRARY_PATH
+- shlibpath_overrides_runpath=yes
+- if test "$with_gnu_ld" = yes; then
+- need_lib_prefix=no
+- fi
+- need_version=yes
+- ;;
+-
+-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+- version_type=linux
+- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+- soname_spec='${libname}${release}.so$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- case "$host_vendor" in
+- ncr)
+- deplibs_check_method='pass_all'
+- ;;
+- motorola)
+- need_lib_prefix=no
+- need_version=no
+- shlibpath_overrides_runpath=no
+- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+- deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+- file_magic_cmd=/usr/bin/file
+- file_magic_test_file=`echo /usr/lib/libc.so*`
+- ;;
+- esac
+- ;;
+-
+-uts4*)
+- version_type=linux
+- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+- soname_spec='${libname}${release}.so$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- ;;
+-
+-dgux*)
+- version_type=linux
+- need_lib_prefix=no
+- need_version=no
+- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+- soname_spec='${libname}${release}.so$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- ;;
+-
+-sysv4*MP*)
+- if test -d /usr/nec ;then
+- version_type=linux
+- library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so'
+- soname_spec='$libname.so.$major'
+- shlibpath_var=LD_LIBRARY_PATH
+- fi
+- ;;
+-
+-*)
+- dynamic_linker=no
+- ;;
+-esac
+-echo "$ac_t$dynamic_linker" 1>&6
+-test "$dynamic_linker" = no && can_build_shared=no
+-
+-# Report the final consequences.
+-echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6
+-
+-# Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in
+-# configure.in, otherwise build static only libraries.
+-case "$host_os" in
+-cygwin* | mingw* | os2*)
+- if test x$can_build_shared = xyes; then
+- test x$enable_win32_dll = xno && can_build_shared=no
+- echo "checking if package supports dlls... $can_build_shared" 1>&6
+- fi
+-;;
+-esac
+-
+-if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then
+- case "$deplibs_check_method" in
+- "file_magic "*)
+- file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+- egrep "$file_magic_regex" > /dev/null; then
+- :
+- else
+- cat <<EOF 1>&2
+-
+-*** Warning: the command libtool uses to detect shared libraries,
+-*** $file_magic_cmd, produces output that libtool cannot recognize.
+-*** The result is that libtool may fail to recognize shared libraries
+-*** as such. This will affect the creation of libtool libraries that
+-*** depend on shared libraries, but programs linked with such libtool
+-*** libraries will work regardless of this problem. Nevertheless, you
+-*** may want to report the problem to your system manager and/or to
+-*** bug-libtool@gnu.org
+-
+-EOF
+- fi ;;
+- esac
+-fi
+-
+-echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&6
+-test "$can_build_shared" = "no" && enable_shared=no
+-
+-# On AIX, shared libraries and static libraries use the same namespace, and
+-# are all built from PIC.
+-case "$host_os" in
+-aix3*)
+- test "$enable_shared" = yes && enable_static=no
+- if test -n "$RANLIB"; then
+- archive_cmds="$archive_cmds~\$RANLIB \$lib"
+- postinstall_cmds='$RANLIB $lib'
+- fi
+- ;;
+-
+-aix4*)
+- test "$enable_shared" = yes && enable_static=no
+- ;;
+-esac
+-
+-echo "$ac_t$enable_shared" 1>&6
+-
+-# Make sure either enable_shared or enable_static is yes.
+-test "$enable_shared" = yes || enable_static=yes
+-
+-echo "checking whether to build static libraries... $enable_static" 1>&6
+-
+-if test "$hardcode_action" = relink; then
+- # Fast installation is not supported
+- enable_fast_install=no
+-elif test "$shlibpath_overrides_runpath" = yes ||
+- test "$enable_shared" = no; then
+- # Fast installation is not necessary
+- enable_fast_install=needless
+-fi
+-
+-echo $ac_n "checking for objdir... $ac_c" 1>&6
+-rm -f .libs 2>/dev/null
+-mkdir .libs 2>/dev/null
+-if test -d .libs; then
+- objdir=.libs
+-else
+- # MS-DOS does not allow filenames that begin with a dot.
+- objdir=_libs
+-fi
+-rmdir .libs 2>/dev/null
+-echo "$ac_t$objdir" 1>&6
+-
+-if test "x$enable_dlopen" != xyes; then
+- enable_dlopen=unknown
+- enable_dlopen_self=unknown
+- enable_dlopen_self_static=unknown
+-else
+-if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then
+- lt_cv_dlopen=no lt_cv_dlopen_libs=
+-echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
+-echo "$progname:2212: checking for dlopen in -ldl" >&5
+-ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
+-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+- echo $ac_n "(cached) $ac_c" 1>&6
+-else
+- ac_save_LIBS="$LIBS"
+-LIBS="-ldl $LIBS"
+-cat > conftest.$ac_ext <<EOF
+-#line 2220 "ltconfig"
+-/* Override any gcc2 internal prototype to avoid an error. */
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-char dlopen();
+-
+-int main() {
+-dlopen()
+-; return 0; }
+-EOF
+-if { (eval echo $progname:2233: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+- rm -rf conftest*
+- eval "ac_cv_lib_$ac_lib_var=yes"
+-else
+- echo "$progname: failed program was:" >&5
+- cat conftest.$ac_ext >&5
+- rm -rf conftest*
+- eval "ac_cv_lib_$ac_lib_var=no"
+-fi
+-rm -f conftest*
+-LIBS="$ac_save_LIBS"
+-
+-fi
+-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+- echo "$ac_t""yes" 1>&6
+- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+-else
+- echo "$ac_t""no" 1>&6
+-echo $ac_n "checking for dlopen""... $ac_c" 1>&6
+-echo "$progname:2252: checking for dlopen" >&5
+-if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then
+- echo $ac_n "(cached) $ac_c" 1>&6
+-else
+- cat > conftest.$ac_ext <<EOF
+-#line 2257 "ltconfig"
+-/* System header to define __stub macros and hopefully few prototypes,
+- which can conflict with char dlopen(); below. */
+-#include <assert.h>
+-/* Override any gcc2 internal prototype to avoid an error. */
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-char dlopen();
+-
+-int main() {
+-
+-/* The GNU C library defines this for functions which it implements
+- to always fail with ENOSYS. Some functions are actually named
+- something starting with __ and the normal name is an alias. */
+-#if defined (__stub_dlopen) || defined (__stub___dlopen)
+-choke me
+-#else
+-dlopen();
+-#endif
+-
+-; return 0; }
+-EOF
+-if { (eval echo $progname:2282: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+- rm -rf conftest*
+- eval "ac_cv_func_dlopen=yes"
+-else
+- echo "$progname: failed program was:" >&5
+- cat conftest.$ac_ext >&5
+- rm -rf conftest*
+- eval "ac_cv_func_dlopen=no"
+-fi
+-rm -f conftest*
+-fi
+-if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then
+- echo "$ac_t""yes" 1>&6
+- lt_cv_dlopen="dlopen"
+-else
+- echo "$ac_t""no" 1>&6
+-echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6
+-echo "$progname:2299: checking for dld_link in -ldld" >&5
+-ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'`
+-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+- echo $ac_n "(cached) $ac_c" 1>&6
+-else
+- ac_save_LIBS="$LIBS"
+-LIBS="-ldld $LIBS"
+-cat > conftest.$ac_ext <<EOF
+-#line 2307 "ltconfig"
+-/* Override any gcc2 internal prototype to avoid an error. */
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-char dld_link();
+-
+-int main() {
+-dld_link()
+-; return 0; }
+-EOF
+-if { (eval echo $progname:2320: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+- rm -rf conftest*
+- eval "ac_cv_lib_$ac_lib_var=yes"
+-else
+- echo "$progname: failed program was:" >&5
+- cat conftest.$ac_ext >&5
+- rm -rf conftest*
+- eval "ac_cv_lib_$ac_lib_var=no"
+-fi
+-rm -f conftest*
+-LIBS="$ac_save_LIBS"
+-
+-fi
+-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+- echo "$ac_t""yes" 1>&6
+- lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+-else
+- echo "$ac_t""no" 1>&6
+-echo $ac_n "checking for shl_load""... $ac_c" 1>&6
+-echo "$progname:2339: checking for shl_load" >&5
+-if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then
+- echo $ac_n "(cached) $ac_c" 1>&6
+-else
+- cat > conftest.$ac_ext <<EOF
+-#line 2344 "ltconfig"
+-/* System header to define __stub macros and hopefully few prototypes,
+- which can conflict with char shl_load(); below. */
+-#include <assert.h>
+-/* Override any gcc2 internal prototype to avoid an error. */
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-char shl_load();
+-
+-int main() {
+-
+-/* The GNU C library defines this for functions which it implements
+- to always fail with ENOSYS. Some functions are actually named
+- something starting with __ and the normal name is an alias. */
+-#if defined (__stub_shl_load) || defined (__stub___shl_load)
+-choke me
+-#else
+-shl_load();
+-#endif
+-
+-; return 0; }
+-EOF
+-if { (eval echo $progname:2369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+- rm -rf conftest*
+- eval "ac_cv_func_shl_load=yes"
+-else
+- echo "$progname: failed program was:" >&5
+- cat conftest.$ac_ext >&5
+- rm -rf conftest*
+- eval "ac_cv_func_shl_load=no"
+-fi
+-rm -f conftest*
+-fi
+-
+-if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then
+- echo "$ac_t""yes" 1>&6
+- lt_cv_dlopen="shl_load"
+-else
+- echo "$ac_t""no" 1>&6
+-echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
+-echo "$progname:2387: checking for shl_load in -ldld" >&5
+-ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
+-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+- echo $ac_n "(cached) $ac_c" 1>&6
+-else
+- ac_save_LIBS="$LIBS"
+-LIBS="-ldld $LIBS"
+-cat > conftest.$ac_ext <<EOF
+-#line 2395 "ltconfig"
+-#include "confdefs.h"
+-/* Override any gcc2 internal prototype to avoid an error. */
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-char shl_load();
+-
+-int main() {
+-shl_load()
+-; return 0; }
+-EOF
+-if { (eval echo $progname:2409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+- rm -rf conftest*
+- eval "ac_cv_lib_$ac_lib_var=yes"
+-else
+- echo "$progname: failed program was:" >&5
+- cat conftest.$ac_ext >&5
+- rm -rf conftest*
+- eval "ac_cv_lib_$ac_lib_var=no"
+-fi
+-rm -f conftest*
+-LIBS="$ac_save_LIBS"
+-
+-fi
+-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+- echo "$ac_t""yes" 1>&6
+- lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+-else
+- echo "$ac_t""no" 1>&6
+-fi
+-
+-
+-fi
+-
+-
+-fi
+-
+-
+-fi
+-
+-
+-fi
+-
+-fi
+-
+- if test "x$lt_cv_dlopen" != xno; then
+- enable_dlopen=yes
+- fi
+-
+- case "$lt_cv_dlopen" in
+- dlopen)
+-for ac_hdr in dlfcn.h; do
+-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+-echo "$progname:2452: checking for $ac_hdr" >&5
+-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+- echo $ac_n "(cached) $ac_c" 1>&6
+-else
+- cat > conftest.$ac_ext <<EOF
+-#line 2457 "ltconfig"
+-#include <$ac_hdr>
+-int fnord = 0;
+-EOF
+-ac_try="$ac_compile >/dev/null 2>conftest.out"
+-{ (eval echo $progname:2462: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+-if test -z "$ac_err"; then
+- rm -rf conftest*
+- eval "ac_cv_header_$ac_safe=yes"
+-else
+- echo "$ac_err" >&5
+- echo "$progname: failed program was:" >&5
+- cat conftest.$ac_ext >&5
+- rm -rf conftest*
+- eval "ac_cv_header_$ac_safe=no"
+-fi
+-rm -f conftest*
+-fi
+-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+- echo "$ac_t""yes" 1>&6
+-else
+- echo "$ac_t""no" 1>&6
+-fi
+-done
+-
+- if test "x$ac_cv_header_dlfcn_h" = xyes; then
+- CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+- fi
+- eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+- LIBS="$lt_cv_dlopen_libs $LIBS"
+-
+- echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6
+-echo "$progname:2490: checking whether a program can dlopen itself" >&5
+-if test "${lt_cv_dlopen_self+set}" = set; then
+- echo $ac_n "(cached) $ac_c" 1>&6
+-else
+- if test "$cross_compiling" = yes; then
+- lt_cv_dlopen_self=cross
+- else
+- cat > conftest.c <<EOF
+-#line 2498 "ltconfig"
+-
+-#if HAVE_DLFCN_H
+-#include <dlfcn.h>
+-#endif
+-
+-#include <stdio.h>
+-
+-#ifdef RTLD_GLOBAL
+-# define LTDL_GLOBAL RTLD_GLOBAL
+-#else
+-# ifdef DL_GLOBAL
+-# define LTDL_GLOBAL DL_GLOBAL
+-# else
+-# define LTDL_GLOBAL 0
+-# endif
+-#endif
+-
+-/* We may have to define LTDL_LAZY_OR_NOW in the command line if we
+- find out it does not work in some platform. */
+-#ifndef LTDL_LAZY_OR_NOW
+-# ifdef RTLD_LAZY
+-# define LTDL_LAZY_OR_NOW RTLD_LAZY
+-# else
+-# ifdef DL_LAZY
+-# define LTDL_LAZY_OR_NOW DL_LAZY
+-# else
+-# ifdef RTLD_NOW
+-# define LTDL_LAZY_OR_NOW RTLD_NOW
+-# else
+-# ifdef DL_NOW
+-# define LTDL_LAZY_OR_NOW DL_NOW
+-# else
+-# define LTDL_LAZY_OR_NOW 0
+-# endif
+-# endif
+-# endif
+-# endif
+-#endif
+-
+-fnord() { int i=42;}
+-main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW);
+- if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
+- if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); }
+-
+-EOF
+-if { (eval echo $progname:2544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+-then
+- lt_cv_dlopen_self=yes
+-else
+- echo "$progname: failed program was:" >&5
+- cat conftest.$ac_ext >&5
+- rm -fr conftest*
+- lt_cv_dlopen_self=no
+-fi
+-rm -fr conftest*
+-fi
+-
+-fi
+-
+-echo "$ac_t""$lt_cv_dlopen_self" 1>&6
+-
+- if test "$lt_cv_dlopen_self" = yes; then
+- LDFLAGS="$LDFLAGS $link_static_flag"
+- echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6
+-echo "$progname:2563: checking whether a statically linked program can dlopen itself" >&5
+-if test "${lt_cv_dlopen_self_static+set}" = set; then
+- echo $ac_n "(cached) $ac_c" 1>&6
+-else
+- if test "$cross_compiling" = yes; then
+- lt_cv_dlopen_self_static=cross
+- else
+- cat > conftest.c <<EOF
+-#line 2571 "ltconfig"
+-
+-#if HAVE_DLFCN_H
+-#include <dlfcn.h>
+-#endif
+-
+-#include <stdio.h>
+-
+-#ifdef RTLD_GLOBAL
+-# define LTDL_GLOBAL RTLD_GLOBAL
+-#else
+-# ifdef DL_GLOBAL
+-# define LTDL_GLOBAL DL_GLOBAL
+-# else
+-# define LTDL_GLOBAL 0
+-# endif
+-#endif
+-
+-/* We may have to define LTDL_LAZY_OR_NOW in the command line if we
+- find out it does not work in some platform. */
+-#ifndef LTDL_LAZY_OR_NOW
+-# ifdef RTLD_LAZY
+-# define LTDL_LAZY_OR_NOW RTLD_LAZY
+-# else
+-# ifdef DL_LAZY
+-# define LTDL_LAZY_OR_NOW DL_LAZY
+-# else
+-# ifdef RTLD_NOW
+-# define LTDL_LAZY_OR_NOW RTLD_NOW
+-# else
+-# ifdef DL_NOW
+-# define LTDL_LAZY_OR_NOW DL_NOW
+-# else
+-# define LTDL_LAZY_OR_NOW 0
+-# endif
+-# endif
+-# endif
+-# endif
+-#endif
+-
+-fnord() { int i=42;}
+-main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW);
+- if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
+- if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); }
+-
+-EOF
+-if { (eval echo $progname:2617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+-then
+- lt_cv_dlopen_self_static=yes
+-else
+- echo "$progname: failed program was:" >&5
+- cat conftest.$ac_ext >&5
+- rm -fr conftest*
+- lt_cv_dlopen_self_static=no
+-fi
+-rm -fr conftest*
+-fi
+-
+-fi
+-
+-echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6
+-fi
+- ;;
+- esac
+-
+- case "$lt_cv_dlopen_self" in
+- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+- *) enable_dlopen_self=unknown ;;
+- esac
+-
+- case "$lt_cv_dlopen_self_static" in
+- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+- *) enable_dlopen_self_static=unknown ;;
+- esac
+-fi
+-
+-# Copy echo and quote the copy, instead of the original, because it is
+-# used later.
+-ltecho="$echo"
+-if test "X$ltecho" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+- ltecho="$CONFIG_SHELL \$0 --fallback-echo"
+-fi
+-LTSHELL="$SHELL"
+-
+-LTCONFIG_VERSION="$VERSION"
+-
+-# Only quote variables if we're using ltmain.sh.
+-case "$ltmain" in
+-*.sh)
+- # Now quote all the things that may contain metacharacters.
+- for var in ltecho old_CC old_CFLAGS old_CPPFLAGS \
+- old_LD old_LDFLAGS old_LIBS \
+- old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS \
+- AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \
+- reload_flag reload_cmds wl \
+- pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \
+- thread_safe_flag_spec whole_archive_flag_spec libname_spec \
+- library_names_spec soname_spec \
+- RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
+- old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \
+- file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \
+- finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
+- hardcode_libdir_flag_spec hardcode_libdir_separator \
+- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+- compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do
+-
+- case "$var" in
+- reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
+- old_postinstall_cmds | old_postuninstall_cmds | \
+- export_symbols_cmds | archive_cmds | archive_expsym_cmds | \
+- postinstall_cmds | postuninstall_cmds | \
+- finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+- # Double-quote double-evaled strings.
+- eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+- ;;
+- *)
+- eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+- ;;
+- esac
+- done
+-
+- case "$ltecho" in
+- *'\$0 --fallback-echo"')
+- ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+- ;;
+- esac
+-
+- trap "$rm \"$ofile\"; exit 1" 1 2 15
+- echo "creating $ofile"
+- $rm "$ofile"
+- cat <<EOF > "$ofile"
+-#! $SHELL
+-
+-# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+-# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+-# NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh.
+-#
+-# Copyright (C) 1996-1999 Free Software Foundation, Inc.
+-# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+-#
+-# This program is free software; you can redistribute it and/or modify
+-# it under the terms of the GNU General Public License as published by
+-# the Free Software Foundation; either version 2 of the License, or
+-# (at your option) any later version.
+-#
+-# This program is distributed in the hope that it will be useful, but
+-# WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+-# General Public License for more details.
+-#
+-# You should have received a copy of the GNU General Public License
+-# along with this program; if not, write to the Free Software
+-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+-#
+-# As a special exception to the GNU General Public License, if you
+-# distribute this file as part of a program that contains a
+-# configuration script generated by Autoconf, you may include it under
+-# the same distribution terms that you use for the rest of that program.
+-
+-# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+-Xsed="sed -e s/^X//"
+-
+-# The HP-UX ksh and POSIX shell print the target directory to stdout
+-# if CDPATH is set.
+-if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+-
+-### BEGIN LIBTOOL CONFIG
+-EOF
+- cfgfile="$ofile"
+- ;;
+-
+-*)
+- # Double-quote the variables that need it (for aesthetics).
+- for var in old_CC old_CFLAGS old_CPPFLAGS \
+- old_LD old_LDFLAGS old_LIBS \
+- old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS; do
+- eval "$var=\\\"\$var\\\""
+- done
+-
+- # Just create a config file.
+- cfgfile="$ofile.cfg"
+- trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+- echo "creating $cfgfile"
+- $rm "$cfgfile"
+- cat <<EOF > "$cfgfile"
+-# `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file.
+-# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+-EOF
+- ;;
+-esac
+-
+-cat <<EOF >> "$cfgfile"
+-# Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+-#
+-# CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\
+-# LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\
+-# NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\
+-# DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP AS=$old_AS \\
+-# $0$ltconfig_args
+-#
+-# Compiler and other test output produced by $progname, useful for
+-# debugging $progname, is in ./config.log if it exists.
+-
+-# The version of $progname that generated this script.
+-LTCONFIG_VERSION=$LTCONFIG_VERSION
+-
+-# Shell to use when invoking shell scripts.
+-SHELL=$LTSHELL
+-
+-# Whether or not to build shared libraries.
+-build_libtool_libs=$enable_shared
+-
+-# Whether or not to build static libraries.
+-build_old_libs=$enable_static
+-
+-# Whether or not to optimize for fast installation.
+-fast_install=$enable_fast_install
+-
+-# The host system.
+-host_alias=$host_alias
+-host=$host
+-
+-# An echo program that does not interpret backslashes.
+-echo=$ltecho
+-
+-# The archiver.
+-AR=$AR
+-
+-# The default C compiler.
+-CC=$CC
+-
+-# The linker used to build libraries.
+-LD=$LD
+-
+-# Whether we need hard or soft links.
+-LN_S=$LN_S
+-
+-# A BSD-compatible nm program.
+-NM=$NM
+-
+-# Used on cygwin: DLL creation program.
+-DLLTOOL="$DLLTOOL"
+-
+-# Used on cygwin: object dumper.
+-OBJDUMP="$OBJDUMP"
+-
+-# Used on cygwin: assembler.
+-AS="$AS"
+-
+-# The name of the directory that contains temporary libtool files.
+-objdir=$objdir
+-
+-# How to create reloadable object files.
+-reload_flag=$reload_flag
+-reload_cmds=$reload_cmds
+-
+-# How to pass a linker flag through the compiler.
+-wl=$wl
+-
+-# Object file suffix (normally "o").
+-objext="$objext"
+-
+-# Old archive suffix (normally "a").
+-libext="$libext"
+-
+-# Executable file suffix (normally "").
+-exeext="$exeext"
+-
+-# Additional compiler flags for building library objects.
+-pic_flag=$pic_flag
+-
+-# Does compiler simultaneously support -c and -o options?
+-compiler_c_o=$compiler_c_o
+-
+-# Can we write directly to a .lo ?
+-compiler_o_lo=$compiler_o_lo
+-
+-# Must we lock files when doing compilation ?
+-need_locks=$need_locks
+-
+-# Do we need the lib prefix for modules?
+-need_lib_prefix=$need_lib_prefix
+-
+-# Do we need a version for libraries?
+-need_version=$need_version
+-
+-# Whether dlopen is supported.
+-dlopen=$enable_dlopen
+-
+-# Whether dlopen of programs is supported.
+-dlopen_self=$enable_dlopen_self
+-
+-# Whether dlopen of statically linked programs is supported.
+-dlopen_self_static=$enable_dlopen_self_static
+-
+-# Compiler flag to prevent dynamic linking.
+-link_static_flag=$link_static_flag
+-
+-# Compiler flag to turn off builtin functions.
+-no_builtin_flag=$no_builtin_flag
+-
+-# Compiler flag to allow reflexive dlopens.
+-export_dynamic_flag_spec=$export_dynamic_flag_spec
+-
+-# Compiler flag to generate shared objects directly from archives.
+-whole_archive_flag_spec=$whole_archive_flag_spec
+-
+-# Compiler flag to generate thread-safe objects.
+-thread_safe_flag_spec=$thread_safe_flag_spec
+-
+-# Library versioning type.
+-version_type=$version_type
+-
+-# Format of library name prefix.
+-libname_spec=$libname_spec
+-
+-# List of archive names. First name is the real one, the rest are links.
+-# The last name is the one that the linker finds with -lNAME.
+-library_names_spec=$library_names_spec
+-
+-# The coded name of the library, if different from the real name.
+-soname_spec=$soname_spec
+-
+-# Commands used to build and install an old-style archive.
+-RANLIB=$RANLIB
+-old_archive_cmds=$old_archive_cmds
+-old_postinstall_cmds=$old_postinstall_cmds
+-old_postuninstall_cmds=$old_postuninstall_cmds
+-
+-# Create an old-style archive from a shared archive.
+-old_archive_from_new_cmds=$old_archive_from_new_cmds
+-
+-# Commands used to build and install a shared archive.
+-archive_cmds=$archive_cmds
+-archive_expsym_cmds=$archive_expsym_cmds
+-postinstall_cmds=$postinstall_cmds
+-postuninstall_cmds=$postuninstall_cmds
+-
+-# Method to check whether dependent libraries are shared objects.
+-deplibs_check_method=$deplibs_check_method
+-
+-# Command to use when deplibs_check_method == file_magic.
+-file_magic_cmd=$file_magic_cmd
+-
+-# Flag that allows shared libraries with undefined symbols to be built.
+-allow_undefined_flag=$allow_undefined_flag
+-
+-# Flag that forces no undefined symbols.
+-no_undefined_flag=$no_undefined_flag
+-
+-# Commands used to finish a libtool library installation in a directory.
+-finish_cmds=$finish_cmds
+-
+-# Same as above, but a single script fragment to be evaled but not shown.
+-finish_eval=$finish_eval
+-
+-# Take the output of nm and produce a listing of raw symbols and C names.
+-global_symbol_pipe=$global_symbol_pipe
+-
+-# Transform the output of nm in a proper C declaration
+-global_symbol_to_cdecl=$global_symbol_to_cdecl
+-
+-# This is the shared library runtime path variable.
+-runpath_var=$runpath_var
+-
+-# This is the shared library path variable.
+-shlibpath_var=$shlibpath_var
+-
+-# Is shlibpath searched before the hard-coded library search path?
+-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+-
+-# How to hardcode a shared library path into an executable.
+-hardcode_action=$hardcode_action
+-
+-# Flag to hardcode \$libdir into a binary during linking.
+-# This must work even if \$libdir does not exist.
+-hardcode_libdir_flag_spec=$hardcode_libdir_flag_spec
+-
+-# Whether we need a single -rpath flag with a separated argument.
+-hardcode_libdir_separator=$hardcode_libdir_separator
+-
+-# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+-# resulting binary.
+-hardcode_direct=$hardcode_direct
+-
+-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+-# resulting binary.
+-hardcode_minus_L=$hardcode_minus_L
+-
+-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+-# the resulting binary.
+-hardcode_shlibpath_var=$hardcode_shlibpath_var
+-
+-# Compile-time system search path for libraries
+-sys_lib_search_path_spec=$sys_lib_search_path_spec
+-
+-# Run-time system search path for libraries
+-sys_lib_dlsearch_path_spec=$sys_lib_dlsearch_path_spec
+-
+-# Fix the shell variable \$srcfile for the compiler.
+-fix_srcfile_path="$fix_srcfile_path"
+-
+-# Set to yes if exported symbols are required.
+-always_export_symbols=$always_export_symbols
+-
+-# The commands to list exported symbols.
+-export_symbols_cmds=$export_symbols_cmds
+-
+-# Symbols that should not be listed in the preloaded symbols.
+-exclude_expsyms=$exclude_expsyms
+-
+-# Symbols that must always be exported.
+-include_expsyms=$include_expsyms
+-
+-EOF
+-
+-case "$ltmain" in
+-*.sh)
+- echo '### END LIBTOOL CONFIG' >> "$ofile"
+- echo >> "$ofile"
+- case "$host_os" in
+- aix3*)
+- cat <<\EOF >> "$ofile"
+-
+-# AIX sometimes has problems with the GCC collect2 program. For some
+-# reason, if we set the COLLECT_NAMES environment variable, the problems
+-# vanish in a puff of smoke.
+-if test "X${COLLECT_NAMES+set}" != Xset; then
+- COLLECT_NAMES=
+- export COLLECT_NAMES
+-fi
+-EOF
+- ;;
+- esac
+-
+- # Append the ltmain.sh script.
+- sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1)
+- # We use sed instead of cat because bash on DJGPP gets confused if
+- # if finds mixed CR/LF and LF-only lines. Since sed operates in
+- # text mode, it properly converts lines to CR/LF. This bash problem
+- # is reportedly fixed, but why not run on old versions too?
+-
+- chmod +x "$ofile"
+- ;;
+-
+-*)
+- # Compile the libtool program.
+- echo "FIXME: would compile $ltmain"
+- ;;
+-esac
+-
+-test -n "$cache_file" || exit 0
+-
+-# AC_CACHE_SAVE
+-trap '' 1 2 15
+-cat > confcache <<\EOF
+-# This file is a shell script that caches the results of configure
+-# tests run on this system so they can be shared between configure
+-# scripts and configure runs. It is not useful on other systems.
+-# If it contains results you don't want to keep, you may remove or edit it.
+-#
+-# By default, configure uses ./config.cache as the cache file,
+-# creating it if it does not exist already. You can give configure
+-# the --cache-file=FILE option to use a different cache file; that is
+-# what configure does when it calls configure scripts in
+-# subdirectories, so they share the cache.
+-# Giving --cache-file=/dev/null disables caching, for debugging configure.
+-# config.status only pays attention to the cache file if you give it the
+-# --recheck option to rerun configure.
+-#
+-EOF
+-# The following way of writing the cache mishandles newlines in values,
+-# but we know of no workaround that is simple, portable, and efficient.
+-# So, don't put newlines in cache variables' values.
+-# Ultrix sh set writes to stderr and can't be redirected directly,
+-# and sets the high bit in the cache file unless we assign to the vars.
+-(set) 2>&1 |
+- case `(ac_space=' '; set | grep ac_space) 2>&1` in
+- *ac_space=\ *)
+- # `set' does not quote correctly, so add quotes (double-quote substitution
+- # turns \\\\ into \\, and sed turns \\ into \).
+- sed -n \
+- -e "s/'/'\\\\''/g" \
+- -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
+- ;;
+- *)
+- # `set' quotes correctly as required by POSIX, so do not add quotes.
+- sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
+- ;;
+- esac >> confcache
+-if cmp -s $cache_file confcache; then
+- :
+-else
+- if test -w $cache_file; then
+- echo "updating cache $cache_file"
+- cat confcache > $cache_file
+- else
+- echo "not updating unwritable cache $cache_file"
+- fi
+-fi
+-rm -f confcache
+-
+-exit 0
+-
+-# Local Variables:
+-# mode:shell-script
+-# sh-indentation:2
+-# End:
+diff --git a/libs/xmlrpc-c/src/.cvsignore b/libs/xmlrpc-c/src/.cvsignore
+deleted file mode 100644
+index b808ac3..0000000
+--- a/libs/xmlrpc-c/src/.cvsignore
++++ /dev/null
+@@ -1,6 +0,0 @@
+-Makefile
+-rpctest
+-rpctest.static
+-cpptest
+-efrpctest
+-efrpctest_wrapper
+diff --git a/libs/xmlrpc-c/src/Makefile b/libs/xmlrpc-c/src/Makefile
+index 50514b2..36300e9 100644
+--- a/libs/xmlrpc-c/src/Makefile
++++ b/libs/xmlrpc-c/src/Makefile
+@@ -48,15 +48,18 @@ SHARED_LIBS_TO_INSTALL := $(TARGET_LIBRARY_NAMES)
+ TRANSPORT_MODS =
+ TRANSPORT_LIBDEP =
+ ifeq ($(MUST_BUILD_WININET_CLIENT),yes)
+- TRANSPORT_MODS += $(BLDDIR)/lib/wininet_transport/xmlrpc_wininet_transport
++ TRANSPORT_MODS += blddir/lib/wininet_transport/xmlrpc_wininet_transport
+ TRANSPORT_LIBDEP += $(shell wininet-config --libs)
+ endif
+ ifeq ($(MUST_BUILD_CURL_CLIENT),yes)
+- TRANSPORT_MODS += $(BLDDIR)/lib/curl_transport/xmlrpc_curl_transport
++ TRANSPORT_MODS += blddir/lib/curl_transport/xmlrpc_curl_transport
++ TRANSPORT_MODS += blddir/lib/curl_transport/curltransaction
++ TRANSPORT_MODS += blddir/lib/curl_transport/curlmulti
++ TRANSPORT_MODS += blddir/lib/curl_transport/lock_pthread
+ TRANSPORT_LIBDEP += $(shell curl-config --libs)
+ endif
+ ifeq ($(MUST_BUILD_LIBWWW_CLIENT),yes)
+- TRANSPORT_MODS += $(BLDDIR)/lib/libwww_transport/xmlrpc_libwww_transport
++ TRANSPORT_MODS += blddir/lib/libwww_transport/xmlrpc_libwww_transport
+ TRANSPORT_LIBDEP += $(shell libwww-config --libs)
+ endif
+
+@@ -66,14 +69,18 @@ ifeq ($(ENABLE_LIBXML2_BACKEND),yes)
+ XML_PARSER_LIBDEP_DEP =
+ else
+ XMLRPC_XML_PARSER = xmlrpc_expat
+- XML_PARSER_LIBDEP = -L$(BLDDIR)/lib/expat/xmlparse -lxmlrpc_xmlparse
+- XML_PARSER_LIBDEP_DEP = $(LIBXMLRPC_XMLPARSE)
++ XML_PARSER_LIBDEP = \
++ -Lblddir/lib/expat/xmlparse -lxmlrpc_xmlparse \
++ -Lblddir/lib/expat/xmltok -lxmlrpc_xmltok
++ XML_PARSER_LIBDEP_DEP = $(LIBXMLRPC_XMLPARSE) $(LIBXMLRPC_XMLTOK)
+ endif
+
+ # LIBxxx_OBJS is the list of object files that make up library libxxx.
+
+ LIBXMLRPC_MODS = \
+ double \
++ json \
++ parse_datetime \
+ parse_value \
+ resource \
+ trace \
+@@ -130,7 +137,7 @@ all: \
+ # Extra dependencies to make parallel make work in spite of all the submakes
+ # (See top level make file for details)
+ ifeq ($MUST_BUILD_CLIENT),yes)
+-cpp/all: $(BLDDIR)/transport_config.h
++cpp/all: $(BLDDIR)/transport_config.h $(TARGET_SHARED_LE_LIBS)
+ endif
+
+ #-----------------------------------------------------------------------------
+@@ -160,7 +167,7 @@ $(LIBXMLRPC_SERVER): \
+ $(call shliblefn, libxmlrpc)
+ $(LIBXMLRPC_SERVER): LIBOBJECTS = $(LIBXMLRPC_SERVER_MODS:%=%.osh)
+ $(LIBXMLRPC_SERVER): LIBDEP = \
+- -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util -L. -lxmlrpc
++ -L. -lxmlrpc $(XML_PARSER_LIBDEP) -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
+
+ LIBXMLRPC_SERVER_ABYSS = $(call shlibfn, libxmlrpc_server_abyss)
+
+@@ -172,10 +179,9 @@ $(LIBXMLRPC_SERVER_ABYSS): \
+ $(call shliblefn, libxmlrpc)
+ $(LIBXMLRPC_SERVER_ABYSS): LIBOBJECTS = $(LIBXMLRPC_SERVER_ABYSS_MODS:%=%.osh)
+ $(LIBXMLRPC_SERVER_ABYSS): LIBDEP = \
+- -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util \
+ -L. -lxmlrpc_server \
+ -L$(LIBXMLRPC_ABYSS_DIR) -lxmlrpc_abyss \
+- -lxmlrpc
++ -L. -lxmlrpc $(XML_PARSER_LIBDEP) -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
+
+ LIBXMLRPC_SERVER_CGI = $(call shlibfn, libxmlrpc_server_cgi)
+
+@@ -186,7 +192,8 @@ $(LIBXMLRPC_SERVER_CGI): \
+ $(call shliblefn, libxmlrpc)
+ $(LIBXMLRPC_SERVER_CGI): LIBOBJECTS = $(LIBXMLRPC_SERVER_CGI_MODS:%=%.osh)
+ $(LIBXMLRPC_SERVER_CGI): LIBDEP = \
+- -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util -L. -lxmlrpc_server -lxmlrpc
++ -L. -lxmlrpc_server \
++ -L. -lxmlrpc $(XML_PARSER_LIBDEP) -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
+
+ LIBXMLRPC_CLIENT = $(call shlibfn, libxmlrpc_client)
+
+@@ -199,10 +206,8 @@ $(LIBXMLRPC_CLIENT): LIBOBJECTS = \
+ $(LIBXMLRPC_CLIENT_MODS:%=%.osh) \
+ $(TRANSPORT_MODS:%=%.osh)
+ $(LIBXMLRPC_CLIENT): LIBDEP = \
+- -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util \
+- -L. -lxmlrpc \
+- $(TRANSPORT_LIBDEP)
+-
++ $(TRANSPORT_LIBDEP) \
++ -L. -lxmlrpc $(XML_PARSER_LIBDEP) -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
+
+ libxmlrpc.a: $(LIBXMLRPC_MODS:%=%.o)
+ libxmlrpc.a: LIBOBJECTS = $(LIBXMLRPC_MODS:%=%.o)
+@@ -229,20 +234,20 @@ libxmlrpc_client.a: LIBOBJECTS = \
+ # Rules for these are in common.mk, courtesy of TARGET_MODS:
+
+ BASIC_INCLUDES = \
+- -I$(BLDDIR) \
+- -I$(BLDDIR)/include \
+- -I$(SRCDIR)/include \
+- -I$(SRCDIR)/lib/util/include \
++ -Iblddir \
++ -Iblddir/include \
++ -Isrcdir/include \
++ -Isrcdir/lib/util/include \
+
+ TRANSPORT_INCLUDES = \
+- -I$($SRCDIR)/lib/wininet_transport \
+- -I$(SRCDIR)/lib/curl_transport \
+- -I$(SRCDIR)/lib/libwww_transport \
++ -Isrcdir/lib/wininet_transport \
++ -Isrcdir/lib/curl_transport \
++ -Isrcdir/lib/libwww_transport \
+
+ ifeq ($(ENABLE_LIBXML2_BACKEND),yes)
+ LIBXML_INCLUDES = $(shell xml2-config --cflags)
+ else
+- LIBXML_INCLUDES = -I$(SRCDIR)/lib/expat/xmlparse
++ LIBXML_INCLUDES = -Isrcdir/lib/expat/xmlparse
+ endif
+
+ $(LIBXMLRPC_MODS:%=%.o) \
+@@ -259,14 +264,12 @@ $(LIBXMLRPC_SERVER_MODS:%=%.osh): \
+
+ $(LIBXMLRPC_SERVER_ABYSS_MODS:%=%.o) \
+ $(LIBXMLRPC_SERVER_ABYSS_MODS:%=%.osh): \
+- INCLUDES = $(BASIC_INCLUDES) -I$(SRCDIR)/lib/abyss/src
++ INCLUDES = $(BASIC_INCLUDES) -Isrcdir/lib/abyss/src
+
+ $(LIBXMLRPC_SERVER_CGI_MODS:%=%.o) \
+ $(LIBXMLRPC_SERVER_CGI_MODS:%=%.osh): \
+ INCLUDES = $(BASIC_INCLUDES)
+
+-CFLAGS = $(CFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
+-
+
+ check:
+ $(MAKE) -C test runtests
+@@ -275,12 +278,15 @@ check:
+ .PHONY: install
+ install: install-common $(SUBDIRS:%=%/install)
+
+-.PHONY: clean clean-local distclean
+-clean: clean-common clean-local $(SUBDIRS:%=%/clean)
++.PHONY: clean clean-local distclean distclean-local
++clean: clean-common clean-local
+ clean-local:
+ $(MAKE) -C test clean
+
+-distclean: clean-common clean-local distclean-common $(SUBDIRS:%=%/distclean)
++distclean: clean distclean-local distclean-common
++
++distclean-local:
++ $(MAKE) -C test distclean
+
+ .PHONY: dep
+ dep: $(SUBDIRS:%=%/dep) $(BLDDIR)/transport_config.h dep-common
+@@ -293,4 +299,4 @@ xmlrpc_client.o xmlrpc_client.osh: $(BLDDIR)/version.h
+ registry.o registry.osh: $(BLDDIR)/version.h
+ version.o version.osh: $(BLDDIR)/version.h
+
+-include Makefile.depend
++include depend.mk
+diff --git a/libs/xmlrpc-c/src/cpp/.cvsignore b/libs/xmlrpc-c/src/cpp/.cvsignore
+deleted file mode 100644
+index 19bccb9..0000000
+--- a/libs/xmlrpc-c/src/cpp/.cvsignore
++++ /dev/null
+@@ -1 +0,0 @@
+-cpptest
+diff --git a/libs/xmlrpc-c/src/cpp/Makefile b/libs/xmlrpc-c/src/cpp/Makefile
+index fa2fac4..9142fcb 100644
+--- a/libs/xmlrpc-c/src/cpp/Makefile
++++ b/libs/xmlrpc-c/src/cpp/Makefile
+@@ -13,22 +13,26 @@ default: all
+ # libxmlrpc_cpp is the legacy C++ wrapper library. The others are the
+ # more elaborate replacements.
+
+-TARGET_LIB_NAMES_PP := \
++TARGET_LIB_NAMES_PP = \
+ libxmlrpc_cpp \
+- libxmlrpc++ \
++ lib$(LIBXMLRPCPP_NAME) \
+ libxmlrpc_server++ \
+- libxmlrpc_server_abyss++ \
++ libxmlrpc_server_cgi++ \
+ libxmlrpc_server_pstream++ \
+ libxmlrpc_packetsocket \
+
++ifeq ($(ENABLE_ABYSS_SERVER),yes)
++ TARGET_LIB_NAMES_PP += libxmlrpc_server_abyss++
++endif
++
+ ifeq ($(MUST_BUILD_CLIENT),yes)
+ TARGET_LIB_NAMES_PP += libxmlrpc_client++
+ endif
+
+ STATIC_LIBRARIES_TO_INSTALL = $(TARGET_STATIC_LIBRARIES)
+
+-SHARED_LIBS_TO_BUILD := $(TARGET_LIB_NAMES_PP)
+-SHARED_LIBS_TO_INSTALL := $(TARGET_LIB_NAMES_PP)
++SHARED_LIBS_TO_BUILD = $(TARGET_LIB_NAMES_PP)
++SHARED_LIBS_TO_INSTALL = $(TARGET_LIB_NAMES_PP)
+
+ # INCLUDES and DEP_SOURCES are used by dep-common target
+ INCLUDES = $(BASIC_INCLUDES) $(CLIENT_INCLUDES) $(LIBXML_INCLUDES) \
+@@ -45,11 +49,20 @@ else
+ LIBXML_INCLUDES = -Isrcdir/lib/expat/xmlparse
+ endif
+
++ifeq ($(ENABLE_LIBXML2_BACKEND),yes)
++ XML_PARSER_LIBDEP = $(shell xml2-config --libs)
++else
++ XML_PARSER_LIBDEP = \
++ -L$(BLDDIR)/lib/expat/xmlparse -lxmlrpc_xmlparse \
++ -L$(BLDDIR)/lib/expat/xmltok -lxmlrpc_xmltok
++endif
++
+ LIBXMLRPCPP_MODS = \
+ base64 env_wrap fault girerr girmem outcome param_list value xml
+ LIBXMLRPC_SERVERPP_MODS = registry
+ LIBXMLRPC_SERVER_ABYSSPP_MODS = server_abyss
+-LIBXMLRPC_SERVER_PSTREAMPP_MODS = server_pstream
++LIBXMLRPC_SERVER_CGIPP_MODS = server_cgi
++LIBXMLRPC_SERVER_PSTREAMPP_MODS = server_pstream_conn server_pstream
+ LIBXMLRPC_CLIENTPP_MODS = client client_simple curl libwww wininet pstream
+ LIBXMLRPC_PACKETSOCKET_MODS = packetsocket
+
+@@ -58,12 +71,13 @@ TARGET_MODS_PP = \
+ $(LIBXMLRPCPP_MODS) \
+ $(LIBXMLRPC_SERVERPP_MODS) \
+ $(LIBXMLRPC_SERVER_ABYSSPP_MODS) \
++ $(LIBXMLRPC_SERVER_CGIPP_MODS) \
+ $(LIBXMLRPC_SERVER_PSTREAMPP_MODS) \
+ $(LIBXMLRPC_CLIENTPP_MODS) \
+ $(LIBXMLRPC_PACKETSOCKET_MODS) \
+
+ OMIT_CPP_LIB_RULES = Y
+-MAJ=4
++MAJ = 7
+ # Major number of shared libraries in this directory
+
+ include $(SRCDIR)/common.mk
+@@ -104,63 +118,120 @@ all: \
+ # shlibfn generates e.g. libxmlrpc.so.3.1
+ # shliblefn generates e.g. libxmlrpc.so
+
+-LIBXMLRPC_CPP = $(call shlibfn, libxmlrpc_cpp)
++LIBXMLRPC_CPP_SH = $(call shlibfn, libxmlrpc_cpp)
+
+-$(LIBXMLRPC_CPP): XmlRpcCpp.osh
+-$(LIBXMLRPC_CPP): LIBOBJECTS = XmlRpcCpp.osh
++$(LIBXMLRPC_CPP_SH): XmlRpcCpp.osh \
++ $(LIBXMLRPC_UTIL) \
++ $(LIBXMLRPC) \
++ $(LIBXMLRPC_SERVER) \
++ $(LIBXMLRPC_UTIL)
++$(LIBXMLRPC_CPP_SH): LIBOBJECTS = XmlRpcCpp.osh
++$(LIBXMLRPC_CPP_SH): LIBDEP = \
++ -Lblddir/src -lxmlrpc_server -lxmlrpc \
++ $(XML_PARSER_LIBDEP) \
++ -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
+
+-LIBXMLRPCPP = $(call shlibfn, libxmlrpc++)
++LIBXMLRPCPP_SH = $(call shlibfn, lib$(LIBXMLRPCPP_NAME))
+
+-$(LIBXMLRPCPP): $(LIBXMLRPCPP_MODS:%=%.osh) \
+- $(LIBXMLRPC)
+-$(LIBXMLRPCPP): LIBOBJECTS = $(LIBXMLRPCPP_MODS:%=%.osh)
+-$(LIBXMLRPCPP): LIBDEP = -Lblddir/src -lxmlrpc
++$(LIBXMLRPCPP_SH): $(LIBXMLRPCPP_MODS:%=%.osh) \
++ $(LIBXMLRPC) \
++ $(LIBXMLRPC_UTIL)
++$(LIBXMLRPCPP_SH): LIBOBJECTS = $(LIBXMLRPCPP_MODS:%=%.osh)
++$(LIBXMLRPCPP_SH): LIBDEP = \
++ -Lblddir/src -lxmlrpc \
++ $(XML_PARSER_LIBDEP) \
++ -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
+
+-LIBXMLRPC_SERVERPP = $(call shlibfn, libxmlrpc_server++)
+
+-$(LIBXMLRPC_SERVERPP): $(LIBXMLRPC_SERVERPP_MODS:%=%.osh) \
++LIBXMLRPC_SERVERPP_SH = $(call shlibfn, libxmlrpc_server++)
++
++$(LIBXMLRPC_SERVERPP_SH): $(LIBXMLRPC_SERVERPP_MODS:%=%.osh) \
+ $(LIBXMLRPC_SERVER) \
++ $(call shliblefn, lib$(LIBXMLRPCPP_NAME)) \
++ $(LIBXMLRPC_UTIL) \
+ $(LIBXMLRPC)
+-$(LIBXMLRPC_SERVERPP): LIBOBJECTS = $(LIBXMLRPC_SERVERPP_MODS:%=%.osh)
+-$(LIBXMLRPC_SERVERPP): LIBDEP = -Lblddir/src -lxmlrpc_server -lxmlrpc
++$(LIBXMLRPC_SERVERPP_SH): LIBOBJECTS = $(LIBXMLRPC_SERVERPP_MODS:%=%.osh)
++$(LIBXMLRPC_SERVERPP_SH): LIBDEP = \
++ -L. -l$(LIBXMLRPCPP_NAME) \
++ -Lblddir/src -lxmlrpc_server -lxmlrpc \
++ $(XML_PARSER_LIBDEP) \
++ -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
+
+-LIBXMLRPC_SERVER_ABYSSPP = $(call shlibfn, libxmlrpc_server_abyss++)
++LIBXMLRPC_SERVER_ABYSSPP_SH = $(call shlibfn, libxmlrpc_server_abyss++)
+
+-$(LIBXMLRPC_SERVER_ABYSSPP): $(LIBXMLRPC_SERVER_ABYSSPP_MODS:%=%.osh) \
++$(LIBXMLRPC_SERVER_ABYSSPP_SH): $(LIBXMLRPC_SERVER_ABYSSPP_MODS:%=%.osh) \
+ $(LIBXMLRPC_ABYSS) \
++ $(LIBXMLRPC_SERVER_ABYSS) \
++ $(call shliblefn, lib$(LIBXMLRPCPP_NAME)) \
++ $(call shlibfn, libxmlrpc_server++) \
++ $(LIBXMLRPC_UTIL) \
++ $(LIBXMLRPC)
++$(LIBXMLRPC_SERVER_ABYSSPP_SH): LIBOBJECTS = $(LIBXMLRPC_SERVER_ABYSSPP_MODS:%=%.osh)
++$(LIBXMLRPC_SERVER_ABYSSPP_SH): LIBDEP = \
++ -L. -lxmlrpc_server++ -l$(LIBXMLRPCPP_NAME) \
++ -Lblddir/src -lxmlrpc_server_abyss -lxmlrpc_server -lxmlrpc \
++ $(XML_PARSER_LIBDEP) \
++ -L$(LIBXMLRPC_ABYSS_DIR) -lxmlrpc_abyss \
++ -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util \
++
++LIBXMLRPC_SERVER_CGIPP_SH = $(call shlibfn, libxmlrpc_server_cgi++)
++
++$(LIBXMLRPC_SERVER_CGIPP_SH): $(LIBXMLRPC_SERVER_CGIPP_MODS:%=%.osh) \
++ $(call shliblefn, libxmlrpc_server++) \
++ $(call shliblefn, lib$(LIBXMLRPCPP_NAME)) \
+ $(LIBXMLRPC)
+-$(LIBXMLRPC_SERVER_ABYSSPP): LIBOBJECTS = $(LIBXMLRPC_SERVER_ABYSSPP_MODS:%=%.osh)
+-$(LIBXMLRPC_SERVER_ABYSSPP): LIBDEP = \
+- -L$(LIBXMLRPC_ABYSS_DIR) -lxmlrpc_abyss -Lblddir/src -lxmlrpc
++$(LIBXMLRPC_SERVER_CGIPP_SH): LIBOBJECTS = $(LIBXMLRPC_SERVER_CGIPP_MODS:%=%.osh)
++$(LIBXMLRPC_SERVER_CGIPP_SH): LIBDEP = \
++ -L. -lxmlrpc_server++ -l$(LIBXMLRPCPP_NAME) \
++ -Lblddir/src -lxmlrpc_server -lxmlrpc \
++ $(XML_PARSER_LIBDEP) \
++ -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
+
+-LIBXMLRPC_SERVER_PSTREAMPP = $(call shlibfn, libxmlrpc_server_pstream++)
++LIBXMLRPC_SERVER_PSTREAMPP_SH = $(call shlibfn, libxmlrpc_server_pstream++)
+
+-$(LIBXMLRPC_SERVER_PSTREAMPP): $(LIBXMLRPC_SERVER_PSTREAMPP_MODS:%=%.osh) \
++$(LIBXMLRPC_SERVER_PSTREAMPP_SH): $(LIBXMLRPC_SERVER_PSTREAMPP_MODS:%=%.osh) \
+ $(LIBXMLRPC_SERVER) \
+- $(LIBXMLRPC_PACKETSOCKET)
+-$(LIBXMLRPC_SERVER_PSTREAMPP): LIBOBJECTS = $(LIBXMLRPC_SERVER_PSTREAMPP_MODS:%=%.osh)
+-$(LIBXMLRPC_SERVER_PSTREAMPP): LIBDEP = \
+- -Lblddir/src -lxmlrpc_server -L. -lxmlrpc_packetsocket
+-
+-LIBXMLRPC_CLIENTPP = $(call shlibfn, libxmlrpc_client++)
+-
+-$(LIBXMLRPC_CLIENTPP): $(LIBXMLRPC_CLIENTPP_MODS:%=%.osh) \
+- $(LIBXMLRPCPP) \
++ $(call shliblefn, lib$(LIBXMLRPCPP_NAME)) \
++ $(call shliblefn, libxmlrpc_packetsocket) \
++ $(call shliblefn, libxmlrpc_server++)
++$(LIBXMLRPC_SERVER_PSTREAMPP_SH): LIBOBJECTS = $(LIBXMLRPC_SERVER_PSTREAMPP_MODS:%=%.osh)
++$(LIBXMLRPC_SERVER_PSTREAMPP_SH): LIBDEP = \
++ -L. -lxmlrpc_server++ -l$(LIBXMLRPCPP_NAME) -lxmlrpc_packetsocket \
++ -Lblddir/src -lxmlrpc_server -lxmlrpc \
++ $(XML_PARSER_LIBDEP) \
++ -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util \
++
++LIBXMLRPC_CLIENTPP_SH = $(call shlibfn, libxmlrpc_client++)
++
++$(LIBXMLRPC_CLIENTPP_SH): $(LIBXMLRPC_CLIENTPP_MODS:%=%.osh) \
++ $(LIBXMLRPC_UTIL) \
++ $(call shliblefn, libxmlrpc_packetsocket) \
++ $(LIBXMLRPC) \
++ $(call shliblefn, lib$(LIBXMLRPCPP_NAME)) \
+ $(LIBXMLRPC_CLIENT)
+-$(LIBXMLRPC_CLIENTPP): LIBOBJECTS = $(LIBXMLRPC_CLIENTPP_MODS:%=%.osh)
+-$(LIBXMLRPC_CLIENTPP): LIBDEP = \
+- -L. -lxmlrpc++ -Lblddir/src -lxmlrpc_client
+-
+-LIBXMLRPC_PACKETSOCKET = $(call shlibfn, libxmlrpc_packetsocket)
+-
+-$(LIBXMLRPC_PACKETSOCKET): $(LIBXMLRPC_PACKETSOCKET_MODS:%=%.osh)
+-$(LIBXMLRPC_PACKETSOCKET): LIBOBJECTS = $(LIBXMLRPC_PACKETSOCKET_MODS:%=%.osh)
++$(LIBXMLRPC_CLIENTPP_SH): LIBOBJECTS = $(LIBXMLRPC_CLIENTPP_MODS:%=%.osh)
++$(LIBXMLRPC_CLIENTPP_SH): LIBDEP = \
++ -L. -l$(LIBXMLRPCPP_NAME) -lxmlrpc_packetsocket \
++ -Lblddir/src -lxmlrpc_client -lxmlrpc \
++ $(XML_PARSER_LIBDEP) \
++ -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
++
++LIBXMLRPC_PACKETSOCKET_SH = $(call shlibfn, libxmlrpc_packetsocket)
++
++$(LIBXMLRPC_PACKETSOCKET_SH): $(LIBXMLRPC_PACKETSOCKET_MODS:%=%.osh) \
++ $(call shliblefn, lib$(LIBXMLRPCPP_NAME))
++$(LIBXMLRPC_PACKETSOCKET_SH): LIBOBJECTS = $(LIBXMLRPC_PACKETSOCKET_MODS:%=%.osh)
++$(LIBXMLRPC_PACKETSOCKET_SH): LIBDEP = \
++ -L. -l$(LIBXMLRPCPP_NAME) \
++ -Lblddir/src -lxmlrpc \
++ $(XML_PARSER_LIBDEP) \
++ -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
+
+ libxmlrpc_cpp.a: XmlRpcCpp.o
+ libxmlrpc_cpp.a: LIBOBJECTS = XmlRpcCpp.o
+
+-libxmlrpc++.a: $(LIBXMLRPCPP_MODS:%=%.o)
+-libxmlrpc++.a: LIBOBJECTS = $(LIBXMLRPCPP_MODS:%=%.o)
++lib$(LIBXMLRPCPP_NAME).a: $(LIBXMLRPCPP_MODS:%=%.o)
++lib$(LIBXMLRPCPP_NAME).a: LIBOBJECTS = $(LIBXMLRPCPP_MODS:%=%.o)
+
+ libxmlrpc_server++.a: $(LIBXMLRPC_SERVERPP_MODS:%=%.o)
+ libxmlrpc_server++.a: LIBOBJECTS = $(LIBXMLRPC_SERVERPP_MODS:%=%.o)
+@@ -168,6 +239,9 @@ libxmlrpc_server++.a: LIBOBJECTS = $(LIBXMLRPC_SERVERPP_MODS:%=%.o)
+ libxmlrpc_server_abyss++.a: $(LIBXMLRPC_SERVER_ABYSSPP_MODS:%=%.o)
+ libxmlrpc_server_abyss++.a: LIBOBJECTS=$(LIBXMLRPC_SERVER_ABYSSPP_MODS:%=%.o)
+
++libxmlrpc_server_cgi++.a: $(LIBXMLRPC_SERVER_CGIPP_MODS:%=%.o)
++libxmlrpc_server_cgi++.a: LIBOBJECTS=$(LIBXMLRPC_SERVER_CGIPP_MODS:%=%.o)
++
+ libxmlrpc_server_pstream++.a: $(LIBXMLRPC_SERVER_PSTREAMPP_MODS:%=%.o)
+ libxmlrpc_server_pstream++.a: LIBOBJECTS=$(LIBXMLRPC_SERVER_PSTREAMPP_MODS:%=%.o)
+
+@@ -197,11 +271,15 @@ $(LIBXMLRPC_SERVERPP_MODS:%=%.osh): \
+ INCLUDES = $(SERVER_INCLUDES)
+
+ $(LIBXMLRPC_SERVER_ABYSSPP_MODS:%=%.o) \
+-$(LIBXMLRPC_SERVER_ABYSSPP_MODS:%=%.o): \
++$(LIBXMLRPC_SERVER_ABYSSPP_MODS:%=%.osh): \
++ INCLUDES = $(SERVER_INCLUDES)
++
++$(LIBXMLRPC_SERVER_CGIPP_MODS:%=%.o) \
++$(LIBXMLRPC_SERVER_CGIPP_MODS:%=%.osh): \
+ INCLUDES = $(SERVER_INCLUDES)
+
+ $(LIBXMLRPC_SERVER_PSTREAMPP_MODS:%=%.o) \
+-$(LIBXMLRPC_SERVER_PSTREAMPP_MODS:%=%.o): \
++$(LIBXMLRPC_SERVER_PSTREAMPP_MODS:%=%.osh): \
+ INCLUDES = $(SERVER_INCLUDES)
+
+ $(LIBXMLRPC_CLIENTPP_MODS:%=%.o) \
+@@ -212,7 +290,10 @@ $(LIBXMLRPC_PACKETSOCKET_MODS:%=%.o) \
+ $(LIBXMLRPC_PACKETSOCKET_MODS:%=%.osh): \
+ INCLUDES = $(BASIC_INCLUDES)
+
+-CXXFLAGS = $(CXXFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
++# <sstream> in Glibc 2.2 has some failed inlines, so we disable that warning:
++$(LIBXMLRPC_PACKETSOCKET_MODS:%=%.o) \
++$(LIBXMLRPC_PACKETSOCKET_MODS:%=%.osh): \
++ CFLAGS_LOCAL = -Wno-inline
+
+ TRANSPORT_CONFIG_USERS = client curl libwww wininet
+
+@@ -242,4 +323,4 @@ distclean-local:
+ .PHONY: dep
+ dep: dep-common $(BLDDIR)/transport_config.h
+
+-include Makefile.depend
++include depend.mk
+diff --git a/libs/xmlrpc-c/src/cpp/base64.cpp b/libs/xmlrpc-c/src/cpp/base64.cpp
+index f9c0dac..dd07e1c 100644
+--- a/libs/xmlrpc-c/src/cpp/base64.cpp
++++ b/libs/xmlrpc-c/src/cpp/base64.cpp
+@@ -77,7 +77,7 @@ public:
+
+ assert(bitsInBuffer >= 8);
+
+- *outputP = (this->buffer >> (this->bitsInBuffer - 8)) & 0x3f;
++ *outputP = (this->buffer >> (this->bitsInBuffer - 8)) & 0xff;
+ this->bitsInBuffer -= 8;
+ }
+
+diff --git a/libs/xmlrpc-c/src/cpp/client.cpp b/libs/xmlrpc-c/src/cpp/client.cpp
+index 2dba1bd..4ca8db0 100644
+--- a/libs/xmlrpc-c/src/cpp/client.cpp
++++ b/libs/xmlrpc-c/src/cpp/client.cpp
+@@ -26,6 +26,7 @@ using girmem::autoObject;
+ #include "xmlrpc-c/transport.h"
+ #include "xmlrpc-c/base.hpp"
+ #include "xmlrpc-c/xml.hpp"
++#include "xmlrpc-c/timeout.hpp"
+ #include "xmlrpc-c/client.hpp"
+ #include "transport_config.h"
+
+@@ -127,7 +128,7 @@ carriageParmPtr::operator->() const {
+
+ carriageParm *
+ carriageParmPtr::get() const {
+- return dynamic_cast<carriageParm *>(objectP);
++ return dynamic_cast<carriageParm *>(this->objectP);
+ }
+
+
+@@ -371,6 +372,15 @@ xmlTransaction::finishErr(error const&) const {
+
+
+
++void
++xmlTransaction::progress(struct xmlrpc_progress_data const&) const {
++
++ // This is just the base class method. A derived class may override
++ // this with something substantial.
++}
++
++
++
+ xmlTransactionPtr::xmlTransactionPtr() {}
+
+
+@@ -503,6 +513,18 @@ clientXmlTransport::asyncComplete(
+
+
+ void
++clientXmlTransport::progress(
++ struct xmlrpc_call_info * const callInfoP,
++ struct xmlrpc_progress_data const progressData) {
++
++ xmlTranCtl * const xmlTranCtlP = reinterpret_cast<xmlTranCtl *>(callInfoP);
++
++ xmlTranCtlP->xmlTranP->progress(progressData);
++}
++
++
++
++void
+ clientXmlTransport::setInterrupt(int *) {
+
+ throwf("The client XML transport is not interruptible");
+@@ -600,7 +622,7 @@ clientXmlTransport_http::start(
+ this->c_transportP,
+ carriageParmHttpP->c_serverInfoP,
+ tranCtlP->callXmlP,
+- &this->asyncComplete,
++ &this->asyncComplete, &this->progress,
+ reinterpret_cast<xmlrpc_call_info *>(tranCtlP));
+
+ throwIfError(env);
+@@ -1095,8 +1117,20 @@ rpc::notifyComplete() {
+
+ }
+
++
++
++void
++rpc::progress(struct xmlrpc_progress_data const&) const {
++/*----------------------------------------------------------------------------
++ If the user is interested in tracking the progress of the RPC, he will
++ derive a class from xmlrpc_c::rpc and override this with a progress()
++ that does something, such as display a progress bar.
++-----------------------------------------------------------------------------*/
++
++}
+
+
++
+ value
+ rpc::getResult() const {
+
+@@ -1214,6 +1248,15 @@ xmlTransaction_client::finishErr(error const& error) const {
+
+
+
++void
++xmlTransaction_client::progress(
++ struct xmlrpc_progress_data const& progressData) const {
++
++ this->tranP->progress(progressData);
++}
++
++
++
+ xmlTransaction_clientPtr::xmlTransaction_clientPtr() {}
+
+
+diff --git a/libs/xmlrpc-c/src/cpp/cpptest.cpp b/libs/xmlrpc-c/src/cpp/cpptest.cpp
+deleted file mode 100644
+index 2d07793..0000000
+--- a/libs/xmlrpc-c/src/cpp/cpptest.cpp
++++ /dev/null
+@@ -1,1187 +0,0 @@
+-#include <string>
+-#include <iostream>
+-#include <iomanip>
+-#include <vector>
+-#include <sstream>
+-#include <memory>
+-#include <time.h>
+-
+-#include "xmlrpc-c/girerr.hpp"
+-using girerr::error;
+-#include "transport_config.h"
+-#include "xmlrpc-c/base.hpp"
+-#include "xmlrpc-c/oldcppwrapper.hpp"
+-#include "xmlrpc-c/registry.hpp"
+-#include "xmlrpc-c/client.hpp"
+-#include "xmlrpc-c/client_simple.hpp"
+-using namespace xmlrpc_c;
+-
+-using namespace std;
+-
+-//=========================================================================
+-// Test Harness
+-//=========================================================================
+-//
+-// There are two styles of test in here. The older ones are vaguely
+-// inspired by Kent Beck's book on eXtreme Programming (XP) and use
+-// the TEST...() macros.
+-//
+-// But this style is not really appropriate for C++. It's based on
+-// code that explicitly tests for errors, as one would do in C. In C++,
+-// it is cumbersome to catch exceptions on every call, so we don't in
+-// the new style.
+-
+-// And there's not much point in trying to count test successes and
+-// failures. Any failure is a problem, so in the new style, we just
+-// quit after we recognize one (again, more in line with regular exception
+-// throwing). With exception throwing, you can't count what _didn't_
+-// cause an exception, so there's no meaningful count of test successes.
+-//
+-// To run the tests, type './cpptest'.
+-// To check for memory leaks, install RedHat's 'memprof' utility, and
+-// type 'memprof cpptest'.
+-//
+-// If you add new tests to this file, please deallocate any data
+-// structures you use in the appropriate fashion. This allows us to test
+-// various destructor code for memory leaks.
+-
+-
+-// This is a good place to set a breakpoint.
+-static void
+-logFailedTest(const char * const fileName,
+- unsigned int const lineNum,
+- const char * const statement) {
+-
+- ostringstream msg;
+-
+- msg << endl
+- << fileName << ":" << lineNum
+- << ": expected (" << statement << ")" << endl;
+-
+- throw(error(msg.str()));
+-}
+-
+-
+-#define TEST(statement) \
+- do { \
+- if (!(statement)) \
+- logFailedTest(__FILE__, __LINE__, #statement); \
+- } while (0)
+-
+-
+-#define TEST_PASSED() \
+- do { } while (0)
+-
+-#define TEST_FAILED(reason) \
+- do { \
+- logFailedTest(__FILE__, __LINE__, (reason)); \
+- } while (0)
+-
+-
+-
+-#define EXPECT_ERROR(statement) \
+- do { try { statement } catch (error) {break;} \
+- throw(fileLineError(__FILE__, __LINE__, "Didn't get expected error")); \
+- } while (0)
+-
+-#define trickToStraightenOutEmacsIndentation \
+-;
+-
+-namespace {
+-error
+-fileLineError(string const filename,
+- unsigned int const lineNumber,
+- string const description) {
+-
+- ostringstream combined;
+-
+- combined << filename << ":" << lineNumber << " " << description;
+-
+- return error(combined.str());
+-}
+-} // namespace
+-
+-
+-
+-class sampleAddMethod : public method {
+-public:
+- sampleAddMethod() {
+- this->_signature = "ii";
+- this->_help = "This method adds two integers together";
+- }
+- void
+- execute(xmlrpc_c::paramList const& paramList,
+- value * const retvalP) {
+-
+- int const addend(paramList.getInt(0));
+- int const adder(paramList.getInt(1));
+-
+- paramList.verifyEnd(2);
+-
+- *retvalP = value_int(addend + adder);
+- }
+-};
+-
+-
+-
+-class nameMethod : public defaultMethod {
+-
+- void
+- execute(string const& methodName,
+- xmlrpc_c::paramList const& , // paramList
+- value * const retvalP) {
+-
+- *retvalP = value_string(string("no such method: ") + methodName);
+- }
+-};
+-
+-
+-//=========================================================================
+-// Test Suites
+-//=========================================================================
+-
+-void
+-test_fault (void) {
+-
+- // Create a new fault and perform basic operations.
+- XmlRpcFault fault1 = XmlRpcFault(6, "Sample fault");
+- TEST(fault1.getFaultCode() == 6);
+- TEST(fault1.getFaultString() == "Sample fault");
+-
+- // Extract and examine the underlying xmlrpc_env struct.
+- xmlrpc_env *env1 = fault1.getFaultEnv();
+- TEST(env1 != NULL);
+- TEST(env1->fault_occurred);
+- TEST(env1->fault_code == 6);
+- TEST(strcmp(env1->fault_string, "Sample fault") == 0);
+-
+- // Test our copy constructor.
+- XmlRpcFault fault2 = fault1;
+- TEST(fault2.getFaultCode() == 6);
+- TEST(fault2.getFaultString() == "Sample fault");
+-
+- // Construct a fault from a pre-existing xmlrpc_env structure.
+- xmlrpc_env env3;
+- xmlrpc_env_init(&env3);
+- xmlrpc_env_set_fault(&env3, 7, "Another fault");
+- XmlRpcFault fault3 = XmlRpcFault(&env3);
+- xmlrpc_env_clean(&env3);
+- TEST(fault3.getFaultCode() == 7);
+- TEST(fault3.getFaultString() == "Another fault");
+-
+- // Attempt to construct a fault from a fault-free xmlrpc_env.
+- xmlrpc_env env4;
+- xmlrpc_env_init(&env4);
+- try {
+- XmlRpcFault fault4 = XmlRpcFault(&env4);
+- TEST_FAILED("Constructed invalid XmlRpcFault");
+- } catch (XmlRpcFault& fault) {
+- TEST_PASSED();
+- TEST(fault.getFaultCode() == XMLRPC_INTERNAL_ERROR);
+- }
+- xmlrpc_env_clean(&env4);
+-}
+-
+-
+-
+-void test_env (void) {
+-
+- // Declare these here to prevent silly compiler warnings about
+- // potentially uninitialized variables.
+- XmlRpcEnv env1;
+- XmlRpcEnv env2;
+-
+- // Perform simple environment tests.
+- TEST(!env1.hasFaultOccurred());
+- xmlrpc_env_set_fault(env1, 8, "Fault 8");
+- TEST(env1.hasFaultOccurred());
+- XmlRpcFault fault1 = env1.getFault();
+- TEST(fault1.getFaultCode() == 8);
+- TEST(fault1.getFaultString() == "Fault 8");
+-
+- // Test throwIfFaultOccurred.
+- try {
+- env2.throwIfFaultOccurred();
+- TEST_PASSED();
+- } catch (XmlRpcFault& fault) {
+- TEST_FAILED("We threw a fault when one hadn't occurred");
+- }
+- xmlrpc_env_set_fault(env2, 9, "Fault 9");
+- try {
+- env2.throwIfFaultOccurred();
+- TEST_FAILED("A fault occurred, and we didn't throw it");
+- } catch (XmlRpcFault& fault) {
+- TEST_PASSED();
+- TEST(fault.getFaultCode() == 9);
+- TEST(fault.getFaultString() == "Fault 9");
+- }
+-
+- // Make sure we can't get a fault if one hasn't occurred.
+- XmlRpcEnv env3;
+- try {
+- XmlRpcFault fault3 = env3.getFault();
+- TEST_FAILED("We retrieved a non-existant fault");
+- } catch (XmlRpcFault& fault) {
+- TEST_PASSED();
+- TEST(fault.getFaultCode() == XMLRPC_INTERNAL_ERROR);
+- }
+-}
+-
+-void test_value (void) {
+- XmlRpcEnv env;
+-
+- // Test basic reference counting behavior.
+- xmlrpc_value *v = xmlrpc_build_value(env, "i", (xmlrpc_int32) 1);
+- env.throwIfFaultOccurred();
+- XmlRpcValue val1 = XmlRpcValue(v, XmlRpcValue::CONSUME_REFERENCE);
+- v = xmlrpc_build_value(env, "i", (xmlrpc_int32) 2);
+- env.throwIfFaultOccurred();
+- XmlRpcValue val2 = v;
+- xmlrpc_DECREF(v);
+-
+- // Borrow a reference.
+- v = xmlrpc_build_value(env, "i", (xmlrpc_int32) 3);
+- env.throwIfFaultOccurred();
+- XmlRpcValue val3 = XmlRpcValue(v, XmlRpcValue::CONSUME_REFERENCE);
+- xmlrpc_value *borrowed = val3.borrowReference();
+- TEST(borrowed == v);
+-
+- // Make a reference.
+- v = xmlrpc_build_value(env, "i", (xmlrpc_int32) 4);
+- env.throwIfFaultOccurred();
+- XmlRpcValue val4 = XmlRpcValue(v, XmlRpcValue::CONSUME_REFERENCE);
+- xmlrpc_value *made = val4.makeReference();
+- TEST(made == v);
+- xmlrpc_DECREF(made);
+-
+- // Test our default constructor.
+- XmlRpcValue val5;
+- TEST(val5.getBool() == false);
+-
+- // Test our type introspection.
+- TEST(XmlRpcValue::makeInt(0).getType() == XMLRPC_TYPE_INT);
+-
+- // Test our basic data types.
+- TEST(XmlRpcValue::makeInt(30).getInt() == 30);
+- TEST(XmlRpcValue::makeInt(-30).getInt() == -30);
+- TEST(XmlRpcValue::makeBool(true).getBool() == true);
+- TEST(XmlRpcValue::makeBool(false).getBool() == false);
+- TEST(XmlRpcValue::makeDateTime("19980717T14:08:55").getRawDateTime() ==
+- "19980717T14:08:55");
+- TEST(XmlRpcValue::makeString("foo").getString() == "foo");
+- TEST(XmlRpcValue::makeString("bar", 3).getString() == "bar");
+- TEST(XmlRpcValue::makeString("bar", 3).getString() == "bar");
+- TEST(XmlRpcValue::makeString("a\0b").getString() == string("a\0b"));
+- XmlRpcValue::makeArray().getArray();
+- XmlRpcValue::makeStruct().getStruct();
+-
+- // Test Base64 values.
+- const unsigned char *b64_data;
+- size_t b64_len;
+- XmlRpcValue val6 = XmlRpcValue::makeBase64((unsigned char*) "a\0\0b", 4);
+- val6.getBase64(b64_data, b64_len);
+- TEST(b64_len == 4);
+- TEST(memcmp(b64_data, "a\0\0b", 4) == 0);
+-
+- // Test arrays.
+- XmlRpcValue array = XmlRpcValue::makeArray();
+- TEST(array.arraySize() == 0);
+- array.arrayAppendItem(XmlRpcValue::makeString("foo"));
+- TEST(array.arraySize() == 1);
+- array.arrayAppendItem(XmlRpcValue::makeString("bar"));
+- TEST(array.arraySize() == 2);
+- TEST(array.arrayGetItem(0).getString() == "foo");
+- TEST(array.arrayGetItem(1).getString() == "bar");
+-
+- // Test structs.
+- XmlRpcValue strct = XmlRpcValue::makeStruct();
+- TEST(strct.structSize() == 0);
+- strct.structSetValue("foo", XmlRpcValue::makeString("fooval"));
+- TEST(strct.structSize() == 1);
+- strct.structSetValue("bar", XmlRpcValue::makeString("barval"));
+- TEST(strct.structSize() == 2);
+- TEST(strct.structHasKey("bar"));
+- TEST(!strct.structHasKey("nosuch"));
+- for (size_t i = 0; i < strct.structSize(); i++) {
+- string key;
+- XmlRpcValue value;
+- strct.structGetKeyAndValue(i, key, value);
+- TEST(key + "val" == value.getString());
+- }
+-}
+-
+-void test_errors (void) {
+- // XXX - Test typechecks on get* methods.
+- // XXX - Test typechceks on array and struct methods.
+- // XXX - Test bounds checks on arrayGetItem, structGetKeyAndValue.
+-}
+-
+-
+-static void
+-testXmlRpcCpp() {
+-/*----------------------------------------------------------------------------
+- Test the legacy XmlRpcCpp.cpp library
+------------------------------------------------------------------------------*/
+- cout << "Testing XmlRpcCpp library..." << endl;
+-
+- test_fault();
+- test_env();
+- test_value();
+- test_errors();
+-}
+-
+-
+-
+-class testSuite {
+-/*----------------------------------------------------------------------------
+- This is a base class for a test suite. Give the suite a name
+- (to be used in messages about it) and some test code via
+- virtual methods suiteName() and runtests(), respectively.
+-
+- runtests() should throw either an 'error' object or an 'XmlRpcFault'
+- object if the test fails. It should throw something else if the
+- test can't run. It should throw nothing if the tests pass.
+-
+- You don't normally keep an object of this class around. You don't
+- even give it a name. You simply refer to a literal object, like so:
+-
+- myTestSuite().run(0)
+------------------------------------------------------------------------------*/
+-public:
+- void run(unsigned int const indentation);
+-
+- virtual void runtests(unsigned int const) {
+- throw(error("test suite does not have a runtests() method"));
+- };
+- virtual string suiteName() {
+- return "unnamed test suite";
+- }
+-};
+-
+-void
+-testSuite::run(unsigned int const indentation) {
+- try {
+- cout << string(indentation*2, ' ')
+- << "Running " << suiteName() << endl;
+- runtests(indentation);
+- } catch (error thisError) {
+- throw(error(suiteName() + string(" failed. ") + thisError.what()));
+- } catch (...) {
+- throw(error(suiteName() + string(" failed. ") +
+- string("It threw an unexpected type of object")));
+- }
+- cout << string(indentation*2, ' ')
+- << suiteName() << " tests passed." << endl;
+-}
+-
+-
+-
+-class intTestSuite : public testSuite {
+-public:
+- virtual string suiteName() {
+- return "intTestSuite";
+- }
+- virtual void runtests(unsigned int const) {
+- value_int int1(7);
+- TEST(static_cast<int>(int1) == 7);
+- value_int int2(-7);
+- TEST(static_cast<int>(int2) == -7);
+- value val1(int1);
+- TEST(val1.type() == value::TYPE_INT);
+- value_int int3(val1);
+- TEST(static_cast<int>(int3) == 7);
+- try {
+- value_int int4(value_double(3.7));
+- TEST_FAILED("invalid cast double-int suceeded");
+- } catch (error) {}
+- }
+-};
+-
+-
+-
+-class doubleTestSuite : public testSuite {
+-public:
+- virtual string suiteName() {
+- return "doubleTestSuite";
+- }
+- virtual void runtests(unsigned int const) {
+- value_double double1(3.14);
+- TEST(static_cast<double>(double1) == 3.14);
+- value val1(double1);
+- TEST(val1.type() == value::TYPE_DOUBLE);
+- value_double double2(val1);
+- TEST(static_cast<double>(double2) == 3.14);
+- try {
+- value_double double4(value_int(4));
+- TEST_FAILED("invalid cast int-double suceeded");
+- } catch (error) {}
+- }
+-};
+-
+-
+-
+-class booleanTestSuite : public testSuite {
+-public:
+- virtual string suiteName() {
+- return "booleanTestSuite";
+- }
+- virtual void runtests(unsigned int const) {
+- value_boolean boolean1(true);
+- TEST(static_cast<bool>(boolean1) == true);
+- value_boolean boolean2(false);
+- TEST(static_cast<bool>(boolean2) == false);
+- value val1(boolean1);
+- TEST(val1.type() == value::TYPE_BOOLEAN);
+- value_boolean boolean3(val1);
+- TEST(static_cast<bool>(boolean3) == true);
+- try {
+- value_boolean boolean4(value_int(4));
+- TEST_FAILED("invalid cast int-boolean suceeded");
+- } catch (error) {}
+- }
+-};
+-
+-
+-
+-class datetimeTestSuite : public testSuite {
+-public:
+- virtual string suiteName() {
+- return "datetimeTestSuite";
+- }
+- virtual void runtests(unsigned int const) {
+- time_t const testTime(900684535);
+- value_datetime datetime1("19980717T14:08:55");
+- TEST(static_cast<time_t>(datetime1) == testTime);
+- value_datetime datetime2(testTime);
+- TEST(static_cast<time_t>(datetime2) == testTime);
+- value val1(datetime1);
+- TEST(val1.type() == value::TYPE_DATETIME);
+- value_datetime datetime3(val1);
+- TEST(static_cast<time_t>(datetime3) == testTime);
+- try {
+- value_datetime datetime4(value_int(4));
+- TEST_FAILED("invalid cast int-datetime suceeded");
+- } catch (error) {}
+- }
+-};
+-
+-
+-
+-class stringTestSuite : public testSuite {
+-public:
+- virtual string suiteName() {
+- return "stringTestSuite";
+- }
+- virtual void runtests(unsigned int const) {
+- value_string string1("hello world");
+- TEST(static_cast<string>(string1) == "hello world");
+- value_string string2("embedded\0null");
+- TEST(static_cast<string>(string2) == "embedded\0null");
+- value val1(string1);
+- TEST(val1.type() == value::TYPE_STRING);
+- value_string string3(val1);
+- TEST(static_cast<string>(string3) == "hello world");
+- try {
+- value_string string4(value_int(4));
+- TEST_FAILED("invalid cast int-string suceeded");
+- } catch (error) {}
+- }
+-};
+-
+-
+-
+-class bytestringTestSuite : public testSuite {
+-public:
+- virtual string suiteName() {
+- return "bytestringTestSuite";
+- }
+- virtual void runtests(unsigned int const) {
+- unsigned char bytestringArray[] = {0x10, 0x11, 0x12, 0x13, 0x14};
+- vector<unsigned char>
+- bytestringData(&bytestringArray[0], &bytestringArray[4]);
+- value_bytestring bytestring1(bytestringData);
+-
+- vector<unsigned char> const dataReadBack1(
+- bytestring1.vectorUcharValue());
+- TEST(dataReadBack1 == bytestringData);
+- value val1(bytestring1);
+- TEST(val1.type() == value::TYPE_BYTESTRING);
+- value_bytestring bytestring2(val1);
+- vector<unsigned char> const dataReadBack2(
+- bytestring2.vectorUcharValue());
+- TEST(dataReadBack2 == bytestringData);
+- try {
+- value_bytestring bytestring4(value_int(4));
+- TEST_FAILED("invalid cast int-bytestring suceeded");
+- } catch (error) {}
+- }
+-};
+-
+-
+-
+-class nilTestSuite : public testSuite {
+-public:
+- virtual string suiteName() {
+- return "nilTestSuite";
+- }
+- virtual void runtests(unsigned int const) {
+- value_nil nil1;
+- value val1(nil1);
+- TEST(val1.type() == value::TYPE_NIL);
+- value_nil nil2(val1);
+- try {
+- value_nil nil4(value_int(4));
+- TEST_FAILED("invalid cast int-nil suceeded");
+- } catch (error) {}
+- }
+-};
+-
+-
+-
+-class structTestSuite : public testSuite {
+-public:
+- virtual string suiteName() {
+- return "structTestSuite";
+- }
+- virtual void runtests(unsigned int const) {
+- map<string, value> structData;
+- pair<string, value> member("the_integer", value_int(9));
+- structData.insert(member);
+-
+- value_struct struct1(structData);
+-
+- map<string, value> dataReadBack(struct1);
+-
+- TEST(static_cast<int>(value_int(dataReadBack["the_integer"])) == 9);
+-
+- value val1(struct1);
+- TEST(val1.type() == value::TYPE_STRUCT);
+- value_struct struct2(val1);
+- try {
+- value_struct struct4(value_int(4));
+- TEST_FAILED("invalid cast int-struct suceeded");
+- } catch (error) {}
+- }
+-};
+-
+-
+-
+-class arrayTestSuite : public testSuite {
+-public:
+- virtual string suiteName() {
+- return "arrayTestSuite";
+- }
+- virtual void runtests(unsigned int const) {
+- vector<value> arrayData;
+- arrayData.push_back(value_int(7));
+- arrayData.push_back(value_double(2.78));
+- arrayData.push_back(value_string("hello world"));
+- value_array array1(arrayData);
+-
+- TEST(array1.size() == 3);
+- vector<value> dataReadBack1(array1.vectorValueValue());
+- TEST(dataReadBack1[0].type() == value::TYPE_INT);
+- TEST(static_cast<int>(value_int(dataReadBack1[0])) == 7);
+- TEST(dataReadBack1[1].type() == value::TYPE_DOUBLE);
+- TEST(static_cast<double>(value_double(dataReadBack1[1])) == 2.78);
+- TEST(dataReadBack1[2].type() == value::TYPE_STRING);
+- TEST(static_cast<string>(value_string(dataReadBack1[2])) ==
+- "hello world");
+-
+- value val1(array1);
+- TEST(val1.type() == value::TYPE_ARRAY);
+- value_array array2(val1);
+- TEST(array2.size() == 3);
+- try {
+- value_array array4(value_int(4));
+- TEST_FAILED("invalid cast int-array suceeded");
+- } catch (error) {}
+- }
+-};
+-
+-
+-
+-class valueTestSuite : public testSuite {
+-
+-public:
+- virtual string suiteName() {
+- return "valueTestSuite";
+- }
+- virtual void runtests(unsigned int const indentation) {
+-
+- intTestSuite().run(indentation+1);
+- doubleTestSuite().run(indentation+1);
+- booleanTestSuite().run(indentation+1);
+- datetimeTestSuite().run(indentation+1);
+- stringTestSuite().run(indentation+1);
+- bytestringTestSuite().run(indentation+1);
+- nilTestSuite().run(indentation+1);
+- structTestSuite().run(indentation+1);
+- arrayTestSuite().run(indentation+1);
+- }
+-};
+-
+-
+-namespace {
+-string const noElementFoundXml(
+- "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
+- "<methodResponse>\r\n"
+- "<fault>\r\n"
+- "<value><struct>\r\n"
+- "<member><name>faultCode</name>\r\n"
+- "<value><i4>-503</i4></value></member>\r\n"
+- "<member><name>faultString</name>\r\n"
+- "<value><string>Call is not valid XML. "
+- "no element found</string></value></member>\r\n"
+- "</struct></value>\r\n"
+- "</fault>\r\n"
+- "</methodResponse>\r\n"
+- );
+-
+-string const sampleAddGoodCallXml(
+- "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
+- "<methodCall>\r\n"
+- "<methodName>sample.add</methodName>\r\n"
+- "<params>\r\n"
+- "<param><value><i4>5</i4></value></param>\r\n"
+- "<param><value><i4>7</i4></value></param>\r\n"
+- "</params>\r\n"
+- "</methodCall>\r\n"
+- );
+-
+-string const sampleAddGoodResponseXml(
+- "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
+- "<methodResponse>\r\n"
+- "<params>\r\n"
+- "<param><value><i4>12</i4></value></param>\r\n"
+- "</params>\r\n"
+- "</methodResponse>\r\n"
+- );
+-
+-
+-string const sampleAddBadCallXml(
+- "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
+- "<methodCall>\r\n"
+- "<methodName>sample.add</methodName>\r\n"
+- "<params>\r\n"
+- "<param><value><i4>5</i4></value></param>\r\n"
+- "</params>\r\n"
+- "</methodCall>\r\n"
+- );
+-
+-string const sampleAddBadResponseXml(
+- "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
+- "<methodResponse>\r\n"
+- "<fault>\r\n"
+- "<value><struct>\r\n"
+- "<member><name>faultCode</name>\r\n"
+- "<value><i4>-501</i4></value></member>\r\n"
+- "<member><name>faultString</name>\r\n"
+- "<value><string>Not enough parameters</string></value></member>\r\n"
+- "</struct></value>\r\n"
+- "</fault>\r\n"
+- "</methodResponse>\r\n"
+- );
+-
+-
+-string const nonexistentMethodCallXml(
+- "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
+- "<methodCall>\r\n"
+- "<methodName>nosuchmethod</methodName>\r\n"
+- "<params>\r\n"
+- "<param><value><i4>5</i4></value></param>\r\n"
+- "<param><value><i4>7</i4></value></param>\r\n"
+- "</params>\r\n"
+- "</methodCall>\r\n"
+- );
+-
+-string const nonexistentMethodYesDefResponseXml(
+- "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
+- "<methodResponse>\r\n"
+- "<params>\r\n"
+- "<param><value><string>no such method: nosuchmethod</string>"
+- "</value></param>\r\n"
+- "</params>\r\n"
+- "</methodResponse>\r\n"
+- );
+-
+-string const nonexistentMethodNoDefResponseXml(
+- "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
+- "<methodResponse>\r\n"
+- "<fault>\r\n"
+- "<value><struct>\r\n"
+- "<member><name>faultCode</name>\r\n"
+- "<value><i4>-506</i4></value></member>\r\n"
+- "<member><name>faultString</name>\r\n"
+- "<value><string>Method 'nosuchmethod' not defined</string></value>"
+- "</member>\r\n"
+- "</struct></value>\r\n"
+- "</fault>\r\n"
+- "</methodResponse>\r\n"
+- );
+-
+-} // namespace
+-
+-
+-class paramListTestSuite : public testSuite {
+-
+-public:
+- virtual string suiteName() {
+- return "paramListTestSuite";
+- }
+- virtual void runtests(unsigned int const) {
+-
+- paramList paramList1;
+- TEST(paramList1.size() == 0);
+-
+- paramList1.add(value_int(7));
+- paramList1.add(value_boolean(true));
+- paramList1.add(value_double(3.14));
+- time_t const timeZero(0);
+- paramList1.add(value_datetime(timeZero));
+- time_t const timeFuture(time(NULL)+100);
+- paramList1.add(value_datetime(timeFuture));
+- paramList1.add(value_string("hello world"));
+- unsigned char bytestringArray[] = {0x10, 0x11, 0x12, 0x13, 0x14};
+- vector<unsigned char>
+- bytestringData(&bytestringArray[0], &bytestringArray[4]);
+- paramList1.add(value_bytestring(bytestringData));
+- vector<value> arrayData;
+- arrayData.push_back(value_int(7));
+- arrayData.push_back(value_double(2.78));
+- arrayData.push_back(value_string("hello world"));
+- paramList1.add(value_array(arrayData));
+- map<string, value> structData;
+- pair<string, value> member("the_integer", value_int(9));
+- structData.insert(member);
+- paramList1.add(value_struct(structData));
+- paramList1.add(value_nil());
+-
+- TEST(paramList1.size() == 10);
+-
+- TEST(paramList1.getInt(0) == 7);
+- TEST(paramList1.getInt(0, 7) == 7);
+- TEST(paramList1.getInt(0, -5, 7) == 7);
+- TEST(paramList1.getBoolean(1) == true);
+- TEST(paramList1.getDouble(2) == 3.14);
+- TEST(paramList1.getDouble(2, 1) == 3.14);
+- TEST(paramList1.getDouble(2, 1, 4) == 3.14);
+- TEST(paramList1.getDatetime_sec(3) == 0);
+- TEST(paramList1.getDatetime_sec(3, paramList::TC_ANY) == timeZero);
+- TEST(paramList1.getDatetime_sec(3, paramList::TC_NO_FUTURE)
+- == timeZero);
+- TEST(paramList1.getDatetime_sec(4, paramList::TC_NO_PAST)
+- == timeFuture);
+- TEST(paramList1.getString(5) == "hello world");
+- TEST(paramList1.getBytestring(6)[0] == 0x10);
+- TEST(paramList1.getArray(7).size() == 3);
+- TEST(paramList1.getArray(7, 3).size() == 3);
+- TEST(paramList1.getArray(7, 1, 3).size() == 3);
+- paramList1.getStruct(8)["the_integer"];
+- paramList1.getNil(9);
+- paramList1.verifyEnd(10);
+-
+- paramList paramList2(5);
+- TEST(paramList2.size() == 0);
+- }
+-};
+-
+-class registryRegMethodTestSuite : public testSuite {
+-
+-public:
+- virtual string suiteName() {
+- return "registryRegMethodTestSuite";
+- }
+- virtual void runtests(unsigned int) {
+-
+- xmlrpc_c::registry myRegistry;
+-
+- myRegistry.addMethod("sample.add",
+- xmlrpc_c::methodPtr(new sampleAddMethod));
+-
+- myRegistry.disableIntrospection();
+- {
+- string response;
+- myRegistry.processCall("", &response);
+- TEST(response == noElementFoundXml);
+- }
+- {
+- string response;
+- myRegistry.processCall(sampleAddGoodCallXml, &response);
+- TEST(response == sampleAddGoodResponseXml);
+- }
+- {
+- string response;
+- myRegistry.processCall(sampleAddBadCallXml, &response);
+- TEST(response == sampleAddBadResponseXml);
+- }
+- }
+-};
+-
+-
+-
+-class registryDefaultMethodTestSuite : public testSuite {
+-
+-public:
+- virtual string suiteName() {
+- return "registryDefaultMethodTestSuite";
+- }
+- virtual void runtests(unsigned int) {
+-
+- xmlrpc_c::registry myRegistry;
+-
+- myRegistry.addMethod("sample.add", methodPtr(new sampleAddMethod));
+-
+- {
+- string response;
+- myRegistry.processCall(sampleAddGoodCallXml, &response);
+- TEST(response == sampleAddGoodResponseXml);
+- }
+- {
+- string response;
+- myRegistry.processCall(nonexistentMethodCallXml, &response);
+- TEST(response == nonexistentMethodNoDefResponseXml);
+- }
+- // We're actually violating the spirit of setDefaultMethod by
+- // doing this to a registry that's already been used, but as long
+- // as it works, it's a convenient way to implement this test.
+- myRegistry.setDefaultMethod(defaultMethodPtr(new nameMethod));
+-
+- {
+- string response;
+- myRegistry.processCall(nonexistentMethodCallXml, &response);
+- TEST(response == nonexistentMethodYesDefResponseXml);
+- }
+- }
+-};
+-
+-
+-
+-class registryTestSuite : public testSuite {
+-
+-public:
+- virtual string suiteName() {
+- return "registryTestSuite";
+- }
+- virtual void runtests(unsigned int const indentation) {
+-
+- registryRegMethodTestSuite().run(indentation+1);
+- registryDefaultMethodTestSuite().run(indentation+1);
+- }
+-};
+-
+-
+-
+-class clientXmlTransportTestSuite : public testSuite {
+-
+-public:
+- virtual string suiteName() {
+- return "clientXmlTransportTestSuite";
+- }
+- virtual void runtests(unsigned int const) {
+-#if MUST_BUILD_CURL_CLIENT
+- clientXmlTransport_curl transportc0;
+- clientXmlTransport_curl transportc1("eth0");
+- clientXmlTransport_curl transportc2("eth0", true);
+- clientXmlTransport_curl transportc3("eth0", true, true);
+-#else
+- EXPECT_ERROR(clientXmlTransport_curl transportc0;);
+- EXPECT_ERROR(clientXmlTransport_curl transportc1("eth0"););
+- EXPECT_ERROR(clientXmlTransport_curl transportc0("eth0", true););
+- EXPECT_ERROR(clientXmlTransport_curl transportc0("eth0", true, true););
+-#endif
+-
+-#if MUST_BUILD_LIBWWW_CLIENT
+- clientXmlTransport_libwww transportl0;
+- clientXmlTransport_libwww transportl1("getbent");
+- clientXmlTransport_libwww transportl2("getbent", "1.0");
+-#else
+- EXPECT_ERROR(clientXmlTransport_libwww transportl0;);
+- EXPECT_ERROR(clientXmlTransport_libwww transportl1("getbent"););
+- EXPECT_ERROR(clientXmlTransport_libwww transportl2("getbent", "1.0"););
+-#endif
+-#if MUST_BUILD_WININET_CLIENT
+- clientXmlTransport_wininet transportw0;
+- clientXmlTransport_wininet transportw1(true);
+-#else
+- EXPECT_ERROR(clientXmlTransport_wininet transportw0;);
+- EXPECT_ERROR(clientXmlTransport_wininet transportw1(true););
+-#endif
+- }
+-};
+-
+-
+-
+-class clientSimpleTestSuite : public testSuite {
+-
+-public:
+- virtual string suiteName() {
+- return "clientSimpleTestSuite";
+- }
+- virtual void runtests(unsigned int const) {
+-
+- clientSimple clientS0;
+- paramList paramList0;
+-
+- value result0;
+-
+- // These will fail because there's no such server
+- EXPECT_ERROR(clientS0.call("http://mf.comm", "biteme", &result0););
+-
+- EXPECT_ERROR(
+- clientS0.call("http://mf.comm", "biteme", "s", &result0, "hard");
+- );
+-
+- EXPECT_ERROR(
+- clientS0.call("http://mf.comm", "biteme", paramList0, &result0);
+- );
+- }
+-};
+-
+-
+-
+-class carriageParm_direct : public carriageParm {
+-public:
+- carriageParm_direct(registry * const registryP) : registryP(registryP) {}
+-
+- registry * registryP;
+-};
+-
+-
+-class clientXmlTransport_direct : public clientXmlTransport {
+-
+-public:
+- void
+- call(xmlrpc_c::carriageParm * const carriageParmP,
+- string const& callXml,
+- string * const responseXmlP) {
+-
+- carriageParm_direct * const parmP =
+- dynamic_cast<carriageParm_direct *>(carriageParmP);
+-
+- if (parmP == NULL)
+- throw(error("Carriage parameter passed to the direct "
+- "transport is not type carriageParm_direct"));
+-
+- parmP->registryP->processCall(callXml, responseXmlP);
+- }
+-};
+-
+-
+-
+-class clientDirectAsyncTestSuite : public testSuite {
+-/*----------------------------------------------------------------------------
+- See clientDirectTestSuite for a description of how we use a
+- clientXmlTransport_direct object to test client functions.
+-
+- The object of this class tests the async client functions. With
+- clientXmlTransport_direct, these are pretty simple because the
+- transport doesn't even implement an asynchronous interface; it
+- relies on the base class' emulation of start() using call().
+-
+- Some day, we should add true asynchronous capability to
+- clientXmlTransport_direct and really test things.
+------------------------------------------------------------------------------*/
+-public:
+- virtual string suiteName() {
+- return "clientDirectAsyncTestSuite";
+- }
+- virtual void runtests(unsigned int const) {
+-
+- registry myRegistry;
+-
+- myRegistry.addMethod("sample.add", methodPtr(new sampleAddMethod));
+-
+- carriageParm_direct carriageParmDirect(&myRegistry);
+- clientXmlTransport_direct transportDirect;
+- client_xml clientDirect(&transportDirect);
+- paramList paramListSampleAdd1;
+- paramListSampleAdd1.add(value_int(5));
+- paramListSampleAdd1.add(value_int(7));
+- paramList paramListSampleAdd2;
+- paramListSampleAdd2.add(value_int(30));
+- paramListSampleAdd2.add(value_int(-10));
+-
+- rpcPtr const rpcSampleAdd1P("sample.add", paramListSampleAdd1);
+- rpcSampleAdd1P->start(&clientDirect, &carriageParmDirect);
+- rpcPtr const rpcSampleAdd2P("sample.add", paramListSampleAdd2);
+- rpcSampleAdd2P->start(&clientDirect, &carriageParmDirect);
+-
+- TEST(rpcSampleAdd1P->isFinished());
+- TEST(rpcSampleAdd1P->isSuccessful());
+- value_int const result1(rpcSampleAdd1P->getResult());
+- TEST(static_cast<int>(result1) == 12);
+-
+- TEST(rpcSampleAdd2P->isFinished());
+- TEST(rpcSampleAdd1P->isSuccessful());
+- value_int const result2(rpcSampleAdd2P->getResult());
+- TEST(static_cast<int>(result2) == 20);
+-
+- EXPECT_ERROR(clientDirect.finishAsync(timeout()););
+- EXPECT_ERROR(clientDirect.finishAsync(timeout(50)););
+- }
+-};
+-
+-
+-
+-class clientDirectTestSuite : public testSuite {
+-/*----------------------------------------------------------------------------
+- The object of this class tests the client facilities by using a
+- special client XML transport defined above and an XML-RPC server we
+- build ourselves and run inline. We build the server out of a
+- xmlrpc_c::registry object and our transport just delivers XML
+- directly to the registry object and gets the response XML from it
+- and delivers that back. There's no network or socket or pipeline or
+- anything -- the transport actually executes the XML-RPC method.
+------------------------------------------------------------------------------*/
+-public:
+- virtual string suiteName() {
+- return "clientDirectTestSuite";
+- }
+- virtual void runtests(unsigned int const indentation) {
+- registry myRegistry;
+-
+- myRegistry.addMethod("sample.add", methodPtr(new sampleAddMethod));
+-
+- carriageParm_direct carriageParmDirect(&myRegistry);
+- clientXmlTransport_direct transportDirect;
+- client_xml clientDirect(&transportDirect);
+- paramList paramListSampleAdd;
+- paramListSampleAdd.add(value_int(5));
+- paramListSampleAdd.add(value_int(7));
+- paramList paramListEmpty;
+- {
+- /* Test a successful RPC */
+- rpcPtr rpcSampleAddP("sample.add", paramListSampleAdd);
+- rpcSampleAddP->call(&clientDirect, &carriageParmDirect);
+- TEST(rpcSampleAddP->isFinished());
+- TEST(rpcSampleAddP->isSuccessful());
+- EXPECT_ERROR(fault fault0(rpcSampleAddP->getFault()););
+- value_int const resultDirect(rpcSampleAddP->getResult());
+- TEST(static_cast<int>(resultDirect) == 12);
+- }
+- {
+- /* Test a failed RPC */
+- rpcPtr const rpcSampleAddP("sample.add", paramListEmpty);
+- rpcSampleAddP->call(&clientDirect, &carriageParmDirect);
+- TEST(rpcSampleAddP->isFinished());
+- TEST(!rpcSampleAddP->isSuccessful());
+- EXPECT_ERROR(value result(rpcSampleAddP->getResult()););
+- fault const fault0(rpcSampleAddP->getFault());
+- TEST(fault0.getCode() == fault::CODE_TYPE);
+- }
+-
+- clientDirectAsyncTestSuite().run(indentation+1);
+- }
+-};
+-
+-
+-
+-class clientTestSuite : public testSuite {
+-
+-public:
+- virtual string suiteName() {
+- return "clientTestSuite";
+- }
+- virtual void runtests(unsigned int const indentation) {
+-
+- clientDirectTestSuite().run(indentation+1);
+-
+- clientXmlTransportTestSuite().run(indentation+1);
+-
+- carriageParm_http0 carriageParm1("http://suckthis.comm");
+- carriageParm_curl0 carriageParm2("http://suckthis.comm");
+- carriageParm_libwww0 carriageParm3("http://suckthis.comm");
+- carriageParm_wininet0 carriageParm4("http://suckthis.comm");
+-
+-#if MUST_BUILD_CURL_CLIENT
+- clientXmlTransport_curl transportc0;
+- client_xml client0(&transportc0);
+- connection connection0(&client0, &carriageParm1);
+-
+- paramList paramList0;
+-
+- rpcPtr rpc0P("blowme", paramList0);
+-
+- // This fails because RPC has not been executed
+- EXPECT_ERROR(value result(rpc0P->getResult()););
+-
+- // This fails because server doesn't exist
+- EXPECT_ERROR(rpc0P->call(&client0, &carriageParm2););
+-
+- rpcPtr rpc1P("blowme", paramList0);
+- // This fails because server doesn't exist
+- EXPECT_ERROR(rpc1P->call(connection0););
+-
+- rpcPtr rpc2P("blowme", paramList0);
+-
+- rpc2P->start(&client0, &carriageParm2);
+-
+- client0.finishAsync(timeout());
+-
+- // This fails because the RPC failed because server doesn't exist
+- EXPECT_ERROR(value result(rpc2P->getResult()););
+-
+- // This fails because the RPC has already been executed
+- EXPECT_ERROR(rpc2P->start(connection0););
+-
+- rpcPtr rpc3P("blowme", paramList0);
+- rpc3P->start(connection0);
+-
+- client0.finishAsync(timeout());
+-
+- // This fails because the RPC failed because server doesn't exist
+- EXPECT_ERROR(value result(rpc3P->getResult()););
+-#endif
+- clientSimpleTestSuite().run(indentation+1);
+- }
+-};
+-
+-//=========================================================================
+-// Test Driver
+-//=========================================================================
+-
+-int
+-main(int argc, char**) {
+-
+- int retval;
+-
+- if (argc-1 > 0) {
+- cout << "Program takes no arguments" << endl;
+- exit(1);
+- }
+-
+- bool testsPassed;
+-
+- try {
+- // Add your test suites here.
+- valueTestSuite().run(0);
+- paramListTestSuite().run(0);
+- registryTestSuite().run(0);
+- clientTestSuite().run(0);
+-
+- testXmlRpcCpp();
+-
+- testsPassed = true;
+- } catch (error thisError) {
+- cout << "Unexpected error thrown: " << thisError.what() << endl;
+- testsPassed = false;
+- } catch (XmlRpcFault& fault) {
+- cout << "Unexpected XML-RPC fault when running test suites." << endl
+- << "Fault #" << fault.getFaultCode()
+- << ": " << fault.getFaultString() << endl;
+- testsPassed = false;
+- } catch (...) {
+- cout << "Unexpected exception when running test suites." << endl;
+- testsPassed = false;
+- }
+-
+- if (testsPassed) {
+- cout << "PASSED" << endl;
+- retval = 0;
+- } else {
+- cout << "FAILED" << endl;
+- retval = 1;
+- }
+- return retval;
+-}
+diff --git a/libs/xmlrpc-c/src/cpp/curl.cpp b/libs/xmlrpc-c/src/cpp/curl.cpp
+index 6181929..5751385 100644
+--- a/libs/xmlrpc-c/src/cpp/curl.cpp
++++ b/libs/xmlrpc-c/src/cpp/curl.cpp
+@@ -127,27 +127,93 @@ carriageParm_curl0Ptr::operator->() const {
+
+
+
+-clientXmlTransport_curl::constrOpt::constrOpt() {
++struct clientXmlTransport_curl::constrOpt_impl {
++
++ constrOpt_impl();
++
++ struct {
++ std::string network_interface;
++ bool no_ssl_verifypeer;
++ bool no_ssl_verifyhost;
++ bool dont_advertise;
++ std::string user_agent;
++ std::string ssl_cert;
++ std::string sslcerttype;
++ std::string sslcertpasswd;
++ std::string sslkey;
++ std::string sslkeytype;
++ std::string sslkeypasswd;
++ std::string sslengine;
++ bool sslengine_default;
++ xmlrpc_sslversion sslversion;
++ std::string cainfo;
++ std::string capath;
++ std::string randomfile;
++ std::string egdsocket;
++ std::string ssl_cipher_list;
++ unsigned int timeout;
++ std::string proxy;
++ unsigned int proxy_auth;
++ unsigned int proxy_port;
++ std::string proxy_userpwd;
++ xmlrpc_httpproxytype proxy_type;
++ } value;
++ struct {
++ bool network_interface;
++ bool no_ssl_verifypeer;
++ bool no_ssl_verifyhost;
++ bool dont_advertise;
++ bool user_agent;
++ bool ssl_cert;
++ bool sslcerttype;
++ bool sslcertpasswd;
++ bool sslkey;
++ bool sslkeytype;
++ bool sslkeypasswd;
++ bool sslengine;
++ bool sslengine_default;
++ bool sslversion;
++ bool cainfo;
++ bool capath;
++ bool randomfile;
++ bool egdsocket;
++ bool ssl_cipher_list;
++ bool timeout;
++ bool proxy;
++ bool proxy_auth;
++ bool proxy_port;
++ bool proxy_userpwd;
++ bool proxy_type;
++ } present;
++};
++
++clientXmlTransport_curl::constrOpt_impl::constrOpt_impl() {
+
+ present.network_interface = false;
+ present.no_ssl_verifypeer = false;
+ present.no_ssl_verifyhost = false;
+- present.user_agent = false;
+- present.ssl_cert = false;
+- present.sslcerttype = false;
+- present.sslcertpasswd = false;
+- present.sslkey = false;
+- present.sslkeytype = false;
+- present.sslkeypasswd = false;
+- present.sslengine = false;
++ present.dont_advertise = false;
++ present.user_agent = false;
++ present.ssl_cert = false;
++ present.sslcerttype = false;
++ present.sslcertpasswd = false;
++ present.sslkey = false;
++ present.sslkeytype = false;
++ present.sslkeypasswd = false;
++ present.sslengine = false;
+ present.sslengine_default = false;
+- present.sslversion = false;
+- present.cainfo = false;
+- present.capath = false;
+- present.randomfile = false;
+- present.egdsocket = false;
+- present.ssl_cipher_list = false;
+- present.timeout = false;
++ present.sslversion = false;
++ present.cainfo = false;
++ present.capath = false;
++ present.randomfile = false;
++ present.egdsocket = false;
++ present.ssl_cipher_list = false;
++ present.timeout = false;
++ present.proxy = false;
++ present.proxy_port = false;
++ present.proxy_auth = false;
++ present.proxy_userpwd = false;
++ present.proxy_type = false;
+ }
+
+
+@@ -155,14 +221,15 @@ clientXmlTransport_curl::constrOpt::constrOpt() {
+ #define DEFINE_OPTION_SETTER(OPTION_NAME, TYPE) \
+ clientXmlTransport_curl::constrOpt & \
+ clientXmlTransport_curl::constrOpt::OPTION_NAME(TYPE const& arg) { \
+- this->value.OPTION_NAME = arg; \
+- this->present.OPTION_NAME = true; \
++ this->implP->value.OPTION_NAME = arg; \
++ this->implP->present.OPTION_NAME = true; \
+ return *this; \
+ }
+
+ DEFINE_OPTION_SETTER(network_interface, string);
+ DEFINE_OPTION_SETTER(no_ssl_verifypeer, bool);
+ DEFINE_OPTION_SETTER(no_ssl_verifyhost, bool);
++DEFINE_OPTION_SETTER(dont_advertise, bool);
+ DEFINE_OPTION_SETTER(user_agent, string);
+ DEFINE_OPTION_SETTER(ssl_cert, string);
+ DEFINE_OPTION_SETTER(sslcerttype, string);
+@@ -179,13 +246,41 @@ DEFINE_OPTION_SETTER(randomfile, string);
+ DEFINE_OPTION_SETTER(egdsocket, string);
+ DEFINE_OPTION_SETTER(ssl_cipher_list, string);
+ DEFINE_OPTION_SETTER(timeout, unsigned int);
++DEFINE_OPTION_SETTER(proxy, string);
++DEFINE_OPTION_SETTER(proxy_port, unsigned int);
++DEFINE_OPTION_SETTER(proxy_auth, unsigned int);
++DEFINE_OPTION_SETTER(proxy_userpwd, string);
++DEFINE_OPTION_SETTER(proxy_type, xmlrpc_httpproxytype);
+
+ #undef DEFINE_OPTION_SETTER
+
++clientXmlTransport_curl::constrOpt::constrOpt() {
++
++ this->implP = new clientXmlTransport_curl::constrOpt_impl();
++}
++
++
++
++clientXmlTransport_curl::constrOpt::~constrOpt() {
++
++ delete(this->implP);
++}
++
++
++
++clientXmlTransport_curl::constrOpt::constrOpt(constrOpt& arg) {
++
++ this->implP = new constrOpt_impl(*arg.implP);
++}
++
++
++
+ #if MUST_BUILD_CURL_CLIENT
+
+ void
+-clientXmlTransport_curl::initialize(constrOpt const& opt) {
++clientXmlTransport_curl::initialize(constrOpt const& optExt) {
++ constrOpt_impl const opt(*optExt.implP);
++
+ struct xmlrpc_curl_xportparms transportParms;
+
+ transportParms.network_interface = opt.present.network_interface ?
+@@ -194,6 +289,8 @@ clientXmlTransport_curl::initialize(constrOpt const& opt) {
+ opt.value.no_ssl_verifypeer : false;
+ transportParms.no_ssl_verifyhost = opt.present.no_ssl_verifyhost ?
+ opt.value.no_ssl_verifyhost : false;
++ transportParms.dont_advertise = opt.present.dont_advertise ?
++ opt.value.dont_advertise : false;
+ transportParms.user_agent = opt.present.user_agent ?
+ opt.value.user_agent.c_str() : NULL;
+ transportParms.ssl_cert = opt.present.ssl_cert ?
+@@ -226,6 +323,16 @@ clientXmlTransport_curl::initialize(constrOpt const& opt) {
+ opt.value.ssl_cipher_list.c_str() : NULL;
+ transportParms.timeout = opt.present.timeout ?
+ opt.value.timeout : 0;
++ transportParms.proxy = opt.present.proxy ?
++ opt.value.proxy.c_str() : NULL;
++ transportParms.proxy_port = opt.present.proxy_port ?
++ opt.value.proxy_port : 0;
++ transportParms.proxy_auth = opt.present.proxy_auth ?
++ opt.value.proxy_auth : XMLRPC_HTTPAUTH_NONE;
++ transportParms.proxy_userpwd = opt.present.proxy_userpwd ?
++ opt.value.proxy_userpwd.c_str() : NULL;
++ transportParms.proxy_type = opt.present.proxy_type ?
++ opt.value.proxy_type : XMLRPC_HTTPPROXY_HTTP;
+
+ this->c_transportOpsP = &xmlrpc_curl_transport_ops;
+
+@@ -233,7 +340,7 @@ clientXmlTransport_curl::initialize(constrOpt const& opt) {
+
+ xmlrpc_curl_transport_ops.create(
+ &env.env_c, 0, "", "",
+- &transportParms, XMLRPC_CXPSIZE(timeout),
++ &transportParms, XMLRPC_CXPSIZE(dont_advertise),
+ &this->c_transportP);
+
+ if (env.env_c.fault_occurred)
+diff --git a/libs/xmlrpc-c/src/cpp/env_wrap.hpp b/libs/xmlrpc-c/src/cpp/env_wrap.hpp
+index 0172f2b..f31cb0e 100644
+--- a/libs/xmlrpc-c/src/cpp/env_wrap.hpp
++++ b/libs/xmlrpc-c/src/cpp/env_wrap.hpp
+@@ -1,11 +1,12 @@
+ #ifndef ENV_INT_HPP_INCLUDED
+ #define ENV_INT_HPP_INCLUDED
+
++#include "xmlrpc-c/c_util.h"
+ #include "xmlrpc-c/util.h"
+
+ namespace xmlrpc_c {
+
+-class env_wrap {
++class XMLRPC_DLLEXPORT env_wrap {
+ /*----------------------------------------------------------------------------
+ A wrapper to assist in using the Xmlrpc-c C libraries in
+ Xmlrpc-c C++ code.
+diff --git a/libs/xmlrpc-c/src/cpp/libwww.cpp b/libs/xmlrpc-c/src/cpp/libwww.cpp
+index 1e2998c..3a2e9a6 100644
+--- a/libs/xmlrpc-c/src/cpp/libwww.cpp
++++ b/libs/xmlrpc-c/src/cpp/libwww.cpp
+@@ -141,7 +141,8 @@ clientXmlTransport_libwww::clientXmlTransport_libwww(
+ }
+
+ #else // MUST_BUILD_LIBWWW_CLIENT
+- clientXmlTransport_libwww::clientXmlTransport_libwww(string, string) {
++ clientXmlTransport_libwww::clientXmlTransport_libwww(string const,
++ string const) {
+
+ throw(error("There is no Libwww client XML transport "
+ "in this XML-RPC client library"));
+diff --git a/libs/xmlrpc-c/src/cpp/packetsocket.cpp b/libs/xmlrpc-c/src/cpp/packetsocket.cpp
+index c984215..28fd09f 100644
+--- a/libs/xmlrpc-c/src/cpp/packetsocket.cpp
++++ b/libs/xmlrpc-c/src/cpp/packetsocket.cpp
+@@ -37,15 +37,15 @@
+
+ All bytes not part of a control word are literal bytes of a packet.
+
+- You can create a packet socket from any file descriptor from which
+- you can read and write a bidirectional character stream. Typically,
+- it's a TCP socket.
++ You can create a packet socket from a POSIX stream socket or a
++ Windows emulation of one.
+
+ One use of the NOP control word is to validate that the connection
+ is still working. You might send one periodically to detect, for
+ example, an unplugged TCP/IP network cable. It's probably better
+ to use the TCP keepalive facility for that.
+ ============================================================================*/
++#include "xmlrpc_config.h"
+
+ #include <cassert>
+ #include <string>
+@@ -54,10 +54,18 @@
+ #include <sstream>
+ #include <cstdio>
+ #include <cstdlib>
+-#include <unistd.h>
++
+ #include <errno.h>
+ #include <fcntl.h>
+-#include <poll.h>
++#if MSVCRT
++# include <winsock2.h>
++# include <io.h>
++#else
++# include <unistd.h>
++# include <poll.h>
++# include <sys/socket.h>
++#endif
++
+ #include <sys/types.h>
+
+ #include "c_util.h"
+@@ -67,10 +75,266 @@ using girerr::throwf;
+
+ #include "xmlrpc-c/packetsocket.hpp"
+
++using namespace std;
+
+ #define ESC 0x1B // ASCII Escape character
+ #define ESC_STR "\x1B"
+
++class XMLRPC_DLLEXPORT socketx {
++
++public:
++ socketx(int const sockFd);
++
++ ~socketx();
++
++ void
++ waitForReadable() const;
++
++ void
++ waitForWritable() const;
++
++ void
++ read(unsigned char * const buffer,
++ size_t const bufferSize,
++ bool * const wouldblockP,
++ size_t * const bytesReadP) const;
++
++ void
++ writeWait(const unsigned char * const data,
++ size_t const size) const;
++private:
++ int fd;
++ bool fdIsBorrowed;
++};
++
++
++
++/* Sockets are similar, but not identical between Unix and Windows.
++ Some Unix socket functions appear to be available on Windows (a
++ Unix compatibility feature), but work only for file descriptor
++ numbers < 32, so we don't use those.
++*/
++
++socketx::socketx(int const sockFd) {
++#if MSVCRT
++ // We don't have any way to duplicate; we'll just have to borrow.
++ this->fdIsBorrowed = true;
++ this->fd = sockFd;
++ u_long iMode(1); // Nonblocking mode yes
++ ioctlsocket(this->fd, FIONBIO, &iMode); // Make socket nonblocking
++#else
++ this->fdIsBorrowed = false;
++
++ int dupRc;
++
++ dupRc = dup(sockFd);
++
++ if (dupRc < 0)
++ throwf("dup() failed. errno=%d (%s)", errno, strerror(errno));
++ else {
++ this->fd = dupRc;
++ fcntl(this->fd, F_SETFL, O_NONBLOCK); // Make socket nonblocking
++ }
++#endif
++}
++
++
++
++socketx::~socketx() {
++
++ if (!this->fdIsBorrowed) {
++#if MSVCRT
++ ::closesocket(SOCKET(this->fd));
++#else
++ close(this->fd);
++#endif
++ }
++}
++
++
++
++void
++socketx::waitForReadable() const {
++ /* Return when there is something to read from the socket
++ (an EOF indication counts as something to read). Also
++ return if there is a signal (handled, of course). Rarely,
++ it is OK to return when there isn't anything to read.
++ */
++#if MSVCRT
++ // poll() is not available; settle for select().
++ // Starting in Windows Vista, there is WSApoll()
++ fd_set rd_set;
++ FD_ZERO(&rd_set);
++ FD_SET(this->fd, &rd_set);
++
++ select(this->fd + 1, &rd_set, 0, 0, 0);
++#else
++ // poll() beats select() because higher file descriptor numbers
++ // work.
++ struct pollfd pollfds[1];
++
++ pollfds[0].fd = this->fd;
++ pollfds[0].events = POLLIN;
++
++ poll(pollfds, ARRAY_SIZE(pollfds), -1);
++#endif
++}
++
++
++
++void
++socketx::waitForWritable() const {
++ /* Return when socket is able to be written to. */
++#if MSVCRT
++ fd_set wr_set;
++ FD_ZERO(&wr_set);
++ FD_SET(this->fd, &wr_set);
++
++ select(this->fd + 1, 0, &wr_set, 0, 0);
++#else
++ struct pollfd pollfds[1];
++
++ pollfds[0].fd = this->fd;
++ pollfds[0].events = POLLOUT;
++
++ poll(pollfds, ARRAY_SIZE(pollfds), -1);
++#endif
++}
++
++
++
++static bool
++wouldBlock() {
++/*----------------------------------------------------------------------------
++ The most recently executed system socket function, which we assume failed,
++ failed because the situation was such that it wanted to block, but the
++ socket had the nonblocking option.
++-----------------------------------------------------------------------------*/
++#if MSVCRT
++ return (WSAGetLastError() == WSAEWOULDBLOCK ||
++ WSAGetLastError() == WSAEINPROGRESS);
++#else
++ /* EWOULDBLOCK and EAGAIN are normally synonyms, but POSIX allows them
++ to be separate and allows the OS to return whichever one it wants
++ for the "would block" condition.
++ */
++ return (errno == EWOULDBLOCK || errno == EAGAIN);
++#endif
++}
++
++
++
++static string
++lastErrorDesc() {
++/*----------------------------------------------------------------------------
++ A description suitable for an error message of why the most recent
++ failed system socket function failed.
++-----------------------------------------------------------------------------*/
++ ostringstream msg;
++#if MSVCRT
++ int const lastError = WSAGetLastError();
++ msg << "winsock error code " << lastError << " "
++ << "(" << strerror(lastError) << ")";
++#else
++ msg << "errno = " << errno << ", (" << strerror(errno);
++#endif
++ return msg.str();
++}
++
++
++
++
++void
++socketx::read(unsigned char * const buffer,
++ size_t const bufferSize,
++ bool * const wouldblockP,
++ size_t * const bytesReadP) const {
++
++ int rc;
++
++ // We've seen a Windows library whose recv() expects a char * buffer
++ // (cf POSIX void *), so we cast.
++
++ rc = recv(this->fd, (char *)buffer, bufferSize, 0);
++
++ if (rc < 0) {
++ if (wouldBlock()) {
++ *wouldblockP = true;
++ *bytesReadP = 0;
++ } else
++ throwf("read() of socket failed with %s", lastErrorDesc().c_str());
++ } else {
++ *wouldblockP = false;
++ *bytesReadP = rc;
++ }
++}
++
++
++
++static void
++writeFd(int const fd,
++ const unsigned char * const data,
++ size_t const size,
++ size_t * const bytesWrittenP) {
++
++ size_t totalBytesWritten;
++ bool full; // File image is "full" for now - won't take any more data
++
++ full = false;
++ totalBytesWritten = 0;
++
++ while (totalBytesWritten < size && !full) {
++ int rc;
++
++ rc = send(fd, (char*)&data[totalBytesWritten],
++ size - totalBytesWritten, 0);
++
++ if (rc < 0) {
++ if (wouldBlock())
++ full = true;
++ else
++ throwf("write() of socket failed with %s",
++ lastErrorDesc().c_str());
++ } else if (rc == 0)
++ throwf("Zero byte short write.");
++ else {
++ size_t const bytesWritten(rc);
++ totalBytesWritten += bytesWritten;
++ }
++ }
++ *bytesWrittenP = totalBytesWritten;
++}
++
++
++
++void
++socketx::writeWait(const unsigned char * const data,
++ size_t const size) const {
++/*----------------------------------------------------------------------------
++ Write the 'size' bytes at 'data' to the socket. Wait as long
++ as it takes for the file image to be able to take all the data.
++-----------------------------------------------------------------------------*/
++ size_t totalBytesWritten;
++
++ // We do the first one blind because it will probably just work
++ // and we don't want to waste the poll() call and buffer arithmetic.
++
++ writeFd(this->fd, data, size, &totalBytesWritten);
++
++ while (totalBytesWritten < size) {
++ this->waitForWritable();
++
++ size_t bytesWritten;
++
++ writeFd(this->fd, &data[totalBytesWritten], size - totalBytesWritten,
++ &bytesWritten);
++
++ totalBytesWritten += bytesWritten;
++ }
++}
++
++
++
+ namespace xmlrpc_c {
+
+
+@@ -86,7 +350,7 @@ packet::initialize(const unsigned char * const data,
+ this->bytes = reinterpret_cast<unsigned char *>(malloc(dataLength));
+
+ if (this->bytes == NULL)
+- throwf("Can't get storage for a %u-byte packet.", dataLength);
++ throwf("Can't get storage for a %u-byte packet", (unsigned)dataLength);
+
+ this->allocSize = dataLength;
+
+@@ -138,7 +402,7 @@ packet::addData(const unsigned char * const data,
+ realloc(this->bytes, neededSize));
+
+ if (this->bytes == NULL)
+- throwf("Can't get storage for a %u-byte packet.", neededSize);
++ throwf("Can't get storage for a %u-byte packet", (unsigned)neededSize);
+
+ memcpy(this->bytes + this->length, data, dataLength);
+
+@@ -166,33 +430,83 @@ packetPtr::operator->() const {
+
+
+
+-packetSocket::packetSocket(int const sockFd) {
+-
+- int dupRc;
+-
+- dupRc = dup(sockFd);
+-
+- if (dupRc < 0)
+- throwf("dup() failed. errno=%d (%s)", errno, strerror(errno));
+- else {
+- this->sockFd = dupRc;
+-
+- this->inEscapeSeq = false;
+- this->inPacket = false;
+-
+- this->escAccum.len = 0;
+-
+- fcntl(this->sockFd, F_SETFL, O_NONBLOCK);
++class packetSocket_impl {
+
+- this->eof = false;
+- }
+-}
++public:
++ packetSocket_impl(int const sockFd);
+
++ void
++ writeWait(packetPtr const& packetP) const;
+
++ void
++ read(bool * const eofP,
++ bool * const gotPacketP,
++ packetPtr * const packetPP);
+
+-packetSocket::~packetSocket() {
++ void
++ readWait(volatile const int * const interruptP,
++ bool * const eofP,
++ bool * const gotPacketP,
++ packetPtr * const packetPP);
+
+- close(this->sockFd);
++private:
++ socketx sock;
++ // The kernel stream socket we use.
++ bool eof;
++ // The packet socket is at end-of-file for reads.
++ // 'readBuffer' is empty and there won't be any more data to fill
++ // it because the underlying stream socket is closed.
++ std::queue<packetPtr> readBuffer;
++ packetPtr packetAccumP;
++ // The receive packet we're currently accumulating; it will join
++ // 'readBuffer' when we've received the whole packet (and we've
++ // seen the END escape sequence so we know we've received it all).
++ // If we're not currently accumulating a packet (haven't seen a
++ // PKT escape sequence), this points to nothing.
++ bool inEscapeSeq;
++ // In our trek through the data read from the underlying stream
++ // socket, we are after an ESC character and before the end of the
++ // escape sequence. 'escAccum' shows what of the escape sequence
++ // we've seen so far.
++ bool inPacket;
++ // We're now receiving packet data from the underlying stream
++ // socket. We've seen a complete PKT escape sequence, but have not
++ // seen a complete END escape sequence since.
++ struct {
++ unsigned char bytes[3];
++ size_t len;
++ } escAccum;
++
++ void
++ takeSomeEscapeSeq(const unsigned char * const buffer,
++ size_t const length,
++ size_t * const bytesTakenP);
++
++ void
++ takeSomePacket(const unsigned char * const buffer,
++ size_t const length,
++ size_t * const bytesTakenP);
++
++ void
++ verifyNothingAccumulated();
++
++ void
++ processBytesRead(const unsigned char * const buffer,
++ size_t const bytesRead);
++
++ void
++ readFromFile();
++};
++
++
++
++packetSocket_impl::packetSocket_impl(int const sockFd) :
++ sock(sockFd) {
++
++ this->inEscapeSeq = false;
++ this->inPacket = false;
++ this->escAccum.len = 0;
++ this->eof = false;
+ }
+
+
+@@ -229,106 +543,27 @@ packetSocket::~packetSocket() {
+ -----------------------------------------------------------------------------*/
+
+
+-static void
+-writeFd(int const fd,
+- const unsigned char * const data,
+- size_t const size,
+- size_t * const bytesWrittenP) {
+-
+- size_t totalBytesWritten;
+- bool full; // File image is "full" for now - won't take any more data
+-
+- full = false;
+- totalBytesWritten = 0;
+-
+- while (totalBytesWritten < size && !full) {
+- ssize_t rc;
+-
+- rc = write(fd, &data[totalBytesWritten], size - totalBytesWritten);
+-
+- if (rc < 0) {
+- if (errno == EAGAIN)
+- full = true;
+- else
+- throwf("write() of socket failed with errno %d (%s)",
+- errno, strerror(errno));
+- } else if (rc == 0)
+- throwf("Zero byte short write.");
+- else {
+- size_t const bytesWritten(rc);
+- totalBytesWritten += bytesWritten;
+- }
+- }
+- *bytesWrittenP = totalBytesWritten;
+-}
+-
+-
+-
+-static void
+-writeFdWait(int const fd,
+- const unsigned char * const data,
+- size_t const size) {
+-/*----------------------------------------------------------------------------
+- Write the 'size' bytes at 'data' to the file image 'fd'. Wait as long
+- as it takes for the file image to be able to take all the data.
+------------------------------------------------------------------------------*/
+- size_t totalBytesWritten;
+-
+- // We do the first one blind because it will probably just work
+- // and we don't want to waste the poll() call and buffer arithmetic.
+-
+- writeFd(fd, data, size, &totalBytesWritten);
+-
+- while (totalBytesWritten < size) {
+- struct pollfd pollfds[1];
+-
+- pollfds[0].fd = fd;
+- pollfds[0].events = POLLOUT;
+-
+- poll(pollfds, ARRAY_SIZE(pollfds), -1);
+-
+- size_t bytesWritten;
+-
+- writeFd(fd, &data[totalBytesWritten], size - totalBytesWritten,
+- &bytesWritten);
+-
+- totalBytesWritten += bytesWritten;
+- }
+-}
+-
+-
+-
+ void
+-packetSocket::writeWait(packetPtr const& packetP) const {
++packetSocket_impl::writeWait(packetPtr const& packetP) const {
+
+ const unsigned char * const packetStart(
+ reinterpret_cast<const unsigned char *>(ESC_STR "PKT"));
+ const unsigned char * const packetEnd(
+ reinterpret_cast<const unsigned char *>(ESC_STR "END"));
+
+- writeFdWait(this->sockFd, packetStart, 4);
+-
+- writeFdWait(this->sockFd, packetP->getBytes(), packetP->getLength());
++ this->sock.writeWait(packetStart, 4);
+
+- writeFdWait(this->sockFd, packetEnd, 4);
+-}
+-
+-
+-
+-static ssize_t
+-libc_read(int const fd,
+- void * const buf,
+- size_t const count) {
++ this->sock.writeWait(packetP->getBytes(), packetP->getLength());
+
+- return read(fd, buf, count);
++ this->sock.writeWait(packetEnd, 4);
+ }
+
+
+
+ void
+-packetSocket::takeSomeEscapeSeq(const unsigned char * const buffer,
+- size_t const length,
+- size_t * const bytesTakenP) {
++packetSocket_impl::takeSomeEscapeSeq(const unsigned char * const buffer,
++ size_t const length,
++ size_t * const bytesTakenP) {
+ /*----------------------------------------------------------------------------
+ Take and process some bytes from the incoming stream 'buffer',
+ which contains 'length' bytes, assuming they are within an escape
+@@ -378,9 +613,9 @@ packetSocket::takeSomeEscapeSeq(const unsigned char * const buffer,
+
+
+ void
+-packetSocket::takeSomePacket(const unsigned char * const buffer,
+- size_t const length,
+- size_t * const bytesTakenP) {
++packetSocket_impl::takeSomePacket(const unsigned char * const buffer,
++ size_t const length,
++ size_t * const bytesTakenP) {
+
+ assert(!this->inEscapeSeq);
+
+@@ -408,7 +643,7 @@ packetSocket::takeSomePacket(const unsigned char * const buffer,
+
+
+ void
+-packetSocket::verifyNothingAccumulated() {
++packetSocket_impl::verifyNothingAccumulated() {
+ /*----------------------------------------------------------------------------
+ Throw an error if there is a partial packet accumulated.
+ -----------------------------------------------------------------------------*/
+@@ -419,14 +654,14 @@ packetSocket::verifyNothingAccumulated() {
+ if (this->inPacket)
+ throwf("Stream socket closed in the middle of a packet "
+ "(%u bytes of packet received; no END marker to mark "
+- "end of packet)", this->packetAccumP->getLength());
++ "end of packet)", (unsigned)this->packetAccumP->getLength());
+ }
+
+
+
+ void
+-packetSocket::processBytesRead(const unsigned char * const buffer,
+- size_t const bytesRead) {
++packetSocket_impl::processBytesRead(const unsigned char * const buffer,
++ size_t const bytesRead) {
+
+ unsigned int cursor; // Cursor into buffer[]
+ cursor = 0;
+@@ -456,7 +691,7 @@ packetSocket::processBytesRead(const unsigned char * const buffer,
+
+
+ void
+-packetSocket::readFromFile() {
++packetSocket_impl::readFromFile() {
+ /*----------------------------------------------------------------------------
+ Read some data from the underlying stream socket. Read as much as is
+ available right now, up to 4K. Update 'this' to reflect the data read.
+@@ -473,19 +708,11 @@ packetSocket::readFromFile() {
+
+ while (this->readBuffer.empty() && !this->eof && !wouldblock) {
+ unsigned char buffer[4096];
+- ssize_t rc;
++ size_t bytesRead;
+
+- rc = libc_read(this->sockFd, buffer, sizeof(buffer));
+-
+- if (rc < 0) {
+- if (errno == EWOULDBLOCK)
+- wouldblock = true;
+- else
+- throwf("read() of socket failed with errno %d (%s)",
+- errno, strerror(errno));
+- } else {
+- size_t const bytesRead(rc);
++ this->sock.read(buffer, sizeof(buffer), &wouldblock, &bytesRead);
+
++ if (!wouldblock) {
+ if (bytesRead == 0) {
+ this->eof = true;
+ this->verifyNothingAccumulated();
+@@ -498,9 +725,9 @@ packetSocket::readFromFile() {
+
+
+ void
+-packetSocket::read(bool * const eofP,
+- bool * const gotPacketP,
+- packetPtr * const packetPP) {
++packetSocket_impl::read(bool * const eofP,
++ bool * const gotPacketP,
++ packetPtr * const packetPP) {
+ /*----------------------------------------------------------------------------
+ Read one packet from the socket, through the internal packet buffer.
+
+@@ -535,10 +762,10 @@ packetSocket::read(bool * const eofP,
+
+
+ void
+-packetSocket::readWait(volatile const int * const interruptP,
+- bool * const eofP,
+- bool * const gotPacketP,
+- packetPtr * const packetPP) {
++packetSocket_impl::readWait(volatile const int * const interruptP,
++ bool * const eofP,
++ bool * const gotPacketP,
++ packetPtr * const packetPP) {
+
+ bool gotPacket;
+ bool eof;
+@@ -547,13 +774,8 @@ packetSocket::readWait(volatile const int * const interruptP,
+ eof = false;
+
+ while (!gotPacket && !eof && !*interruptP) {
+- struct pollfd pollfds[1];
+-
+- pollfds[0].fd = this->sockFd;
+- pollfds[0].events = POLLIN;
+-
+- poll(pollfds, ARRAY_SIZE(pollfds), -1);
+
++ this->sock.waitForReadable();
+ this->read(&eof, &gotPacket, packetPP);
+ }
+
+@@ -563,6 +785,49 @@ packetSocket::readWait(volatile const int * const interruptP,
+
+
+
++packetSocket::packetSocket(int const sockFd) {
++
++ this->implP = new packetSocket_impl(sockFd);
++}
++
++
++
++packetSocket::~packetSocket() {
++
++ delete(this->implP);
++}
++
++
++
++void
++packetSocket::writeWait(packetPtr const& packetP) const {
++
++ implP->writeWait(packetP);
++}
++
++
++
++void
++packetSocket::read(bool * const eofP,
++ bool * const gotPacketP,
++ packetPtr * const packetPP) {
++
++ this->implP->read(eofP, gotPacketP, packetPP);
++}
++
++
++
++void
++packetSocket::readWait(volatile const int * const interruptP,
++ bool * const eofP,
++ bool * const gotPacketP,
++ packetPtr * const packetPP) {
++
++ this->implP->readWait(interruptP, eofP, gotPacketP, packetPP);
++}
++
++
++
+ void
+ packetSocket::readWait(volatile const int * const interruptP,
+ bool * const eofP,
+@@ -570,7 +835,7 @@ packetSocket::readWait(volatile const int * const interruptP,
+
+ bool gotPacket;
+
+- this->readWait(interruptP, eofP, &gotPacket, packetPP);
++ this->implP->readWait(interruptP, eofP, &gotPacket, packetPP);
+
+ if (!gotPacket)
+ throwf("Packet read was interrupted");
+diff --git a/libs/xmlrpc-c/src/cpp/pstream.cpp b/libs/xmlrpc-c/src/cpp/pstream.cpp
+index 6a75160..fd2a31d 100644
+--- a/libs/xmlrpc-c/src/cpp/pstream.cpp
++++ b/libs/xmlrpc-c/src/cpp/pstream.cpp
+@@ -37,9 +37,24 @@ using namespace std;
+ namespace xmlrpc_c {
+
+
+-clientXmlTransport_pstream::constrOpt::constrOpt() {
+
+- present.fd = false;
++struct clientXmlTransport_pstream::constrOpt_impl {
++
++ constrOpt_impl();
++
++ struct {
++ int fd;
++ } value;
++ struct {
++ bool fd;
++ } present;
++};
++
++
++
++clientXmlTransport_pstream::constrOpt_impl::constrOpt_impl() {
++
++ this->present.fd = false;
+ }
+
+
+@@ -47,8 +62,8 @@ clientXmlTransport_pstream::constrOpt::constrOpt() {
+ #define DEFINE_OPTION_SETTER(OPTION_NAME, TYPE) \
+ clientXmlTransport_pstream::constrOpt & \
+ clientXmlTransport_pstream::constrOpt::OPTION_NAME(TYPE const& arg) { \
+- this->value.OPTION_NAME = arg; \
+- this->present.OPTION_NAME = true; \
++ this->implP->value.OPTION_NAME = arg; \
++ this->implP->present.OPTION_NAME = true; \
+ return *this; \
+ }
+
+@@ -58,7 +73,31 @@ DEFINE_OPTION_SETTER(fd, xmlrpc_socket);
+
+
+
+-clientXmlTransport_pstream::clientXmlTransport_pstream(constrOpt const& opt) {
++clientXmlTransport_pstream::constrOpt::constrOpt() {
++
++ this->implP = new clientXmlTransport_pstream::constrOpt_impl();
++}
++
++
++
++clientXmlTransport_pstream::constrOpt::~constrOpt() {
++
++ delete(this->implP);
++}
++
++
++
++clientXmlTransport_pstream::constrOpt::constrOpt(constrOpt& arg) {
++
++ this->implP = new clientXmlTransport_pstream::constrOpt_impl(*arg.implP);
++}
++
++
++
++clientXmlTransport_pstream::clientXmlTransport_pstream(
++ constrOpt const& optExt) {
++
++ constrOpt_impl const opt(*optExt.implP);
+
+ if (!opt.present.fd)
+ throwf("You must provide a 'fd' constructor option.");
+diff --git a/libs/xmlrpc-c/src/cpp/registry.cpp b/libs/xmlrpc-c/src/cpp/registry.cpp
+index 26bfa95..9b3bc3e 100644
+--- a/libs/xmlrpc-c/src/cpp/registry.cpp
++++ b/libs/xmlrpc-c/src/cpp/registry.cpp
+@@ -59,6 +59,24 @@ methodPtr::operator->() const {
+
+
+
++method2::method2() {}
++
++
++
++method2::~method2() {}
++
++
++void
++method2::execute(xmlrpc_c::paramList const& paramList,
++ xmlrpc_c::value * const resultP) {
++
++ callInfo const nullCallInfo;
++
++ execute(paramList, &nullCallInfo, resultP);
++}
++
++
++
+ defaultMethod::~defaultMethod() {}
+
+
+@@ -90,7 +108,32 @@ defaultMethodPtr::get() const {
+
+
+
+-registry::registry() {
++struct registry_impl {
++
++ xmlrpc_registry * c_registryP;
++ // Pointer to the C registry object we use to implement this
++ // object.
++
++ std::list<xmlrpc_c::methodPtr> methodList;
++ // This is a list of all the method objects (actually, pointers
++ // to them). But since the real registry is the C registry object,
++ // all this list is for is to maintain references to the objects
++ // to which the C registry points so that they continue to exist.
++
++ xmlrpc_c::defaultMethodPtr defaultMethodP;
++ // The real identifier of the default method is the C registry
++ // object; this member exists only to maintain a reference to the
++ // object to which the C registry points so that it will continue
++ // to exist.
++
++ registry_impl();
++
++ ~registry_impl();
++};
++
++
++
++registry_impl::registry_impl() {
+
+ env_wrap env;
+
+@@ -101,12 +144,25 @@ registry::registry() {
+
+
+
+-registry::~registry(void) {
++registry_impl::~registry_impl() {
+
+ xmlrpc_registry_free(this->c_registryP);
+ }
+
+
++registry::registry() {
++
++ this->implP = new registry_impl();
++}
++
++
++
++registry::~registry(void) {
++
++ delete(this->implP);
++}
++
++
+
+ registryPtr::registryPtr() {}
+
+@@ -173,7 +229,8 @@ pListFromXmlrpcArray(xmlrpc_value * const arrayP) {
+ static xmlrpc_value *
+ c_executeMethod(xmlrpc_env * const envP,
+ xmlrpc_value * const paramArrayP,
+- void * const methodPtr) {
++ void * const methodPtr,
++ void * const callInfoPtr) {
+ /*----------------------------------------------------------------------------
+ This is a function designed to be called via a C registry to
+ execute an XML-RPC method, but use a C++ method object to do the
+@@ -188,18 +245,25 @@ c_executeMethod(xmlrpc_env * const envP,
+ encounter in processing the result it returns, and turn it into an
+ XML-RPC method failure. This will cause a leak if the execute()
+ method actually created a result, since it will not get destroyed.
++
++ This function is of type 'xmlrpc_method2'.
+ -----------------------------------------------------------------------------*/
+- xmlrpc_c::method * const methodP =
+- static_cast<xmlrpc_c::method *>(methodPtr);
+- xmlrpc_c::paramList const paramList(pListFromXmlrpcArray(paramArrayP));
++ method * const methodP(static_cast<method *>(methodPtr));
++ paramList const paramList(pListFromXmlrpcArray(paramArrayP));
++ callInfo * const callInfoP(static_cast<callInfo *>(callInfoPtr));
+
+ xmlrpc_value * retval;
++ retval = NULL; // silence used-before-set warning
+
+ try {
+- xmlrpc_c::value result;
++ value result;
+
+ try {
+- methodP->execute(paramList, &result);
++ method2 * const method2P(dynamic_cast<method2 *>(methodP));
++ if (method2P)
++ method2P->execute(paramList, callInfoP, &result);
++ else
++ methodP->execute(paramList, &result);
+ } catch (xmlrpc_c::fault const& fault) {
+ xmlrpc_env_set_fault(envP, fault.getCode(),
+ fault.getDescription().c_str());
+@@ -256,6 +320,7 @@ c_executeDefaultMethod(xmlrpc_env * const envP,
+ paramList const paramList(pListFromXmlrpcArray(paramArrayP));
+
+ xmlrpc_value * retval;
++ retval = NULL; // silence used-before-set warning
+
+ try {
+ xmlrpc_c::value result;
+@@ -296,15 +361,22 @@ void
+ registry::addMethod(string const name,
+ methodPtr const methodP) {
+
+- this->methodList.push_back(methodP);
++ this->implP->methodList.push_back(methodP);
+
++ struct xmlrpc_method_info3 methodInfo;
+ env_wrap env;
++
++ methodInfo.methodName = name.c_str();
++ methodInfo.methodFunction = &c_executeMethod;
++ methodInfo.serverInfo = methodP.get();
++ methodInfo.stackSize = 0;
++ string const signatureString(methodP->signature());
++ methodInfo.signatureString = signatureString.c_str();
++ string const help(methodP->help());
++ methodInfo.help = help.c_str();
+
+- xmlrpc_registry_add_method_w_doc(
+- &env.env_c, this->c_registryP, NULL,
+- name.c_str(), &c_executeMethod,
+- (void*) methodP.get(),
+- methodP->signature().c_str(), methodP->help().c_str());
++ xmlrpc_registry_add_method3(&env.env_c, this->implP->c_registryP,
++ &methodInfo);
+
+ throwIfError(env);
+ }
+@@ -314,12 +386,12 @@ registry::addMethod(string const name,
+ void
+ registry::setDefaultMethod(defaultMethodPtr const methodP) {
+
+- this->defaultMethodP = methodP;
++ this->implP->defaultMethodP = methodP;
+
+ env_wrap env;
+
+ xmlrpc_registry_set_default_method(
+- &env.env_c, this->c_registryP,
++ &env.env_c, this->implP->c_registryP,
+ &c_executeDefaultMethod, (void*) methodP.get());
+
+ throwIfError(env);
+@@ -330,7 +402,7 @@ registry::setDefaultMethod(defaultMethodPtr const methodP) {
+ void
+ registry::disableIntrospection() {
+
+- xmlrpc_registry_disable_introspection(this->c_registryP);
++ xmlrpc_registry_disable_introspection(this->implP->c_registryP);
+ }
+
+
+@@ -362,7 +434,7 @@ registry::setShutdown(const registry::shutdown * const shutdownP) {
+
+ void * const context(const_cast<registry::shutdown *>(shutdownP));
+
+- xmlrpc_registry_set_shutdown(this->c_registryP,
++ xmlrpc_registry_set_shutdown(this->implP->c_registryP,
+ &shutdownServer,
+ context);
+ }
+@@ -374,9 +446,49 @@ registry::setDialect(xmlrpc_dialect const dialect) {
+
+ env_wrap env;
+
+- xmlrpc_registry_set_dialect(&env.env_c, this->c_registryP, dialect);
++ xmlrpc_registry_set_dialect(&env.env_c, this->implP->c_registryP, dialect);
++
++ throwIfError(env);
++}
++
++
++
++void
++registry::processCall(string const& callXml,
++ const callInfo * const callInfoP,
++ string * const responseXmlP) const {
++/*----------------------------------------------------------------------------
++ Process an XML-RPC call whose XML is 'callXml'.
++
++ Return the response XML as *responseXmlP.
++
++ If we are unable to execute the call, we throw an error. But if
++ the call executes and the method merely fails in an XML-RPC sense, we
++ don't. In that case, *responseXmlP indicates the failure.
++-----------------------------------------------------------------------------*/
++ env_wrap env;
++ xmlrpc_mem_block * response;
++
++ // For the pure C++ version, this will have to parse 'callXml'
++ // into a method name and parameters, look up the method name in
++ // the registry, call the method's execute() method, then marshall
++ // the result into XML and return it as *responseXmlP. It will
++ // also have to execute system methods (e.g. introspection)
++ // itself. This will be more or less like what
++ // xmlrpc_registry_process_call() does.
++
++ xmlrpc_registry_process_call2(
++ &env.env_c, this->implP->c_registryP,
++ callXml.c_str(), callXml.length(),
++ const_cast<callInfo *>(callInfoP),
++ &response);
+
+ throwIfError(env);
++
++ *responseXmlP = string(XMLRPC_MEMBLOCK_CONTENTS(char, response),
++ XMLRPC_MEMBLOCK_SIZE(char, response));
++
++ xmlrpc_mem_block_free(response);
+ }
+
+
+@@ -405,7 +517,7 @@ registry::processCall(string const& callXml,
+ // xmlrpc_registry_process_call() does.
+
+ output = xmlrpc_registry_process_call(
+- &env.env_c, this->c_registryP, NULL,
++ &env.env_c, this->implP->c_registryP, NULL,
+ callXml.c_str(), callXml.length());
+
+ throwIfError(env);
+@@ -416,12 +528,24 @@ registry::processCall(string const& callXml,
+ xmlrpc_mem_block_free(output);
+ }
+
+-xmlrpc_registry *
+-registry::c_registry() const {
+
+- return this->c_registryP;
++
++#define PROCESS_CALL_STACK_SIZE 256
++ // This is our liberal estimate of how much stack space
++ // registry::processCall() needs, not counting what
++ // the call the to C registry uses.
++
++
++
++size_t
++registry::maxStackSize() const {
++
++ return xmlrpc_registry_max_stackSize(this->implP->c_registryP) +
++ PROCESS_CALL_STACK_SIZE;
+ }
+
++
++
+ } // namespace
+
+
+diff --git a/libs/xmlrpc-c/src/cpp/server_abyss.cpp b/libs/xmlrpc-c/src/cpp/server_abyss.cpp
+index 3501f35..58fdd9b 100644
+--- a/libs/xmlrpc-c/src/cpp/server_abyss.cpp
++++ b/libs/xmlrpc-c/src/cpp/server_abyss.cpp
+@@ -1,10 +1,11 @@
++#include "xmlrpc_config.h"
+ #include <cstdlib>
+ #include <string>
+ #include <memory>
+ #include <signal.h>
+ #include <errno.h>
+ #include <iostream>
+-#ifndef _WIN32
++#if !MSVCRT
+ #include <sys/wait.h>
+ #endif
+
+@@ -14,9 +15,13 @@
+ using girerr::error;
+ using girerr::throwf;
+ #include "xmlrpc-c/base.h"
++#include "xmlrpc-c/util.h"
+ #include "xmlrpc-c/base.hpp"
++#include "xmlrpc-c/abyss.h"
+ #include "xmlrpc-c/server_abyss.h"
+ #include "xmlrpc-c/registry.hpp"
++#include "env_wrap.hpp"
++
+ #include "xmlrpc-c/server_abyss.hpp"
+
+ using namespace std;
+@@ -43,14 +48,13 @@ sigchld(int const ASSERT_ONLY_ARG(signalClass)) {
+ This is a signal handler for a SIGCHLD signal (which informs us that
+ one of our child processes has terminated).
+
+- We respond by reaping the zombie process.
+-
+- Implementation note: In some systems, just setting the signal handler
+- to SIG_IGN (ignore signal) does this. In some, the system does this
+- automatically if the signal is blocked.
++ The only child processes we have are those that belong to the Abyss
++ server (and then only if the Abyss server was configured to use
++ forking as a threading mechanism), so we respond by passing the
++ signal on to the Abyss server. And reaping the dead child.
+ -----------------------------------------------------------------------------*/
+ #ifndef _WIN32
+- /* Reap zombie children until there aren't any more. */
++ // Reap zombie children / report to Abyss until there aren't any more.
+
+ bool zombiesExist;
+ bool error;
+@@ -71,7 +75,8 @@ sigchld(int const ASSERT_ONLY_ARG(signalClass)) {
+ // This is OK - it's a ptrace notification
+ } else
+ error = true;
+- }
++ } else
++ ServerHandleSigchld(pid);
+ }
+ #endif /* _WIN32 */
+ }
+@@ -160,41 +165,78 @@ public:
+
+
+
+-serverAbyss::shutdown::shutdown(serverAbyss * const serverAbyssP) :
+- serverAbyssP(serverAbyssP) {}
+-
+-
+-
+-serverAbyss::shutdown::~shutdown() {}
+-
+-
+-
+-void
+-serverAbyss::shutdown::doit(string const&,
+- void * const) const {
+-
+- this->serverAbyssP->terminate();
+-}
++callInfo_serverAbyss::callInfo_serverAbyss(
++ serverAbyss * const serverAbyssP,
++ TSession * const abyssSessionP) :
++ serverAbyssP(serverAbyssP), abyssSessionP(abyssSessionP) {}
++
++
++
++struct serverAbyss::constrOpt_impl {
++
++ constrOpt_impl();
++
++ struct value {
++ xmlrpc_c::registryPtr registryPtr;
++ const xmlrpc_c::registry * registryP;
++ XMLRPC_SOCKET socketFd;
++ unsigned int portNumber;
++ std::string logFileName;
++ unsigned int keepaliveTimeout;
++ unsigned int keepaliveMaxConn;
++ unsigned int timeout;
++ bool dontAdvertise;
++ std::string uriPath;
++ bool chunkResponse;
++ std::string allowOrigin;
++ unsigned int accessCtlMaxAge;
++ bool serverOwnsSignals;
++ bool expectSigchld;
++ } value;
++ struct {
++ bool registryPtr;
++ bool registryP;
++ bool socketFd;
++ bool portNumber;
++ bool logFileName;
++ bool keepaliveTimeout;
++ bool keepaliveMaxConn;
++ bool timeout;
++ bool dontAdvertise;
++ bool uriPath;
++ bool chunkResponse;
++ bool allowOrigin;
++ bool accessCtlMaxAge;
++ bool serverOwnsSignals;
++ bool expectSigchld;
++ } present;
++};
+
+
+
+-serverAbyss::constrOpt::constrOpt() {
+- present.registryPtr = false;
+- present.registryP = false;
+- present.socketFd = false;
+- present.portNumber = false;
+- present.logFileName = false;
+- present.keepaliveTimeout = false;
+- present.keepaliveMaxConn = false;
+- present.timeout = false;
+- present.dontAdvertise = false;
+- present.uriPath = false;
+- present.chunkResponse = false;
++serverAbyss::constrOpt_impl::constrOpt_impl() {
++ present.registryPtr = false;
++ present.registryP = false;
++ present.socketFd = false;
++ present.portNumber = false;
++ present.logFileName = false;
++ present.keepaliveTimeout = false;
++ present.keepaliveMaxConn = false;
++ present.timeout = false;
++ present.dontAdvertise = false;
++ present.uriPath = false;
++ present.chunkResponse = false;
++ present.allowOrigin = false;
++ present.accessCtlMaxAge = false;
++ present.serverOwnsSignals = false;
++ present.expectSigchld = false;
+
+ // Set default values
+- value.dontAdvertise = false;
+- value.uriPath = string("/RPC2");
+- value.chunkResponse = false;
++ value.dontAdvertise = false;
++ value.uriPath = string("/RPC2");
++ value.chunkResponse = false;
++ value.serverOwnsSignals = true;
++ value.expectSigchld = false;
+ }
+
+
+@@ -202,40 +244,40 @@ serverAbyss::constrOpt::constrOpt() {
+ #define DEFINE_OPTION_SETTER(OPTION_NAME, TYPE) \
+ serverAbyss::constrOpt & \
+ serverAbyss::constrOpt::OPTION_NAME(TYPE const& arg) { \
+- this->value.OPTION_NAME = arg; \
+- this->present.OPTION_NAME = true; \
++ this->implP->value.OPTION_NAME = arg; \
++ this->implP->present.OPTION_NAME = true; \
+ return *this; \
+ }
+
+-DEFINE_OPTION_SETTER(registryPtr, xmlrpc_c::registryPtr);
+-DEFINE_OPTION_SETTER(registryP, const registry *);
+-DEFINE_OPTION_SETTER(socketFd, XMLRPC_SOCKET);
+-DEFINE_OPTION_SETTER(portNumber, unsigned int);
+-DEFINE_OPTION_SETTER(logFileName, string);
+-DEFINE_OPTION_SETTER(keepaliveTimeout, unsigned int);
+-DEFINE_OPTION_SETTER(keepaliveMaxConn, unsigned int);
+-DEFINE_OPTION_SETTER(timeout, unsigned int);
+-DEFINE_OPTION_SETTER(dontAdvertise, bool);
+-DEFINE_OPTION_SETTER(uriPath, string);
+-DEFINE_OPTION_SETTER(chunkResponse, bool);
++DEFINE_OPTION_SETTER(registryPtr, xmlrpc_c::registryPtr);
++DEFINE_OPTION_SETTER(registryP, const registry *);
++DEFINE_OPTION_SETTER(socketFd, XMLRPC_SOCKET);
++DEFINE_OPTION_SETTER(portNumber, unsigned int);
++DEFINE_OPTION_SETTER(logFileName, string);
++DEFINE_OPTION_SETTER(keepaliveTimeout, unsigned int);
++DEFINE_OPTION_SETTER(keepaliveMaxConn, unsigned int);
++DEFINE_OPTION_SETTER(timeout, unsigned int);
++DEFINE_OPTION_SETTER(dontAdvertise, bool);
++DEFINE_OPTION_SETTER(uriPath, string);
++DEFINE_OPTION_SETTER(chunkResponse, bool);
++DEFINE_OPTION_SETTER(allowOrigin, string);
++DEFINE_OPTION_SETTER(accessCtlMaxAge, unsigned int);
++DEFINE_OPTION_SETTER(serverOwnsSignals, bool);
++DEFINE_OPTION_SETTER(expectSigchld, bool);
++
++#undef DEFINE_OPTION_SETTER
+
+
++serverAbyss::constrOpt::constrOpt() {
+
+-void
+-serverAbyss::setAdditionalServerParms(constrOpt const& opt) {
++ this->implP = new serverAbyss::constrOpt_impl();
++}
+
+- /* The following ought to be parameters on ServerCreate(), but it
+- looks like plugging them straight into the TServer structure is
+- the only way to set them.
+- */
+
+- if (opt.present.keepaliveTimeout)
+- ServerSetKeepaliveTimeout(&this->cServer, opt.value.keepaliveTimeout);
+- if (opt.present.keepaliveMaxConn)
+- ServerSetKeepaliveMaxConn(&this->cServer, opt.value.keepaliveMaxConn);
+- if (opt.present.timeout)
+- ServerSetTimeout(&this->cServer, opt.value.timeout);
+- ServerSetAdvertise(&this->cServer, !opt.value.dontAdvertise);
++
++serverAbyss::constrOpt::~constrOpt() {
++
++ delete(this->implP);
+ }
+
+
+@@ -280,10 +322,155 @@ createServer(bool const logFileNameGiven,
+
+
+
++struct serverAbyss_impl {
++ registryPtr regPtr;
++ // This just holds a reference to the registry so that it may
++ // get destroyed when the serverAbyss gets destroyed. If the
++ // creator of the serverAbyss is managing lifetime himself,
++ // this is a null pointer. 'registryP' is what you really use
++ // to access the registry.
++
++ const registry * registryP;
++
++ TServer cServer;
++
++ serverAbyss_impl(serverAbyss::constrOpt_impl const& opt,
++ serverAbyss * const serverAbyssP);
++
++ ~serverAbyss_impl();
++
++ void
++ setAdditionalServerParms(serverAbyss::constrOpt_impl const& opt);
++
++ void
++ setHttpReqHandlers(string const& uriPath,
++ bool const chunkResponse,
++ bool const doHttpAccessControl,
++ string const& allowOrigin,
++ bool const accessCtlExpires,
++ unsigned int const accessCtlMaxAge);
++ void
++ run();
++
++ void
++ processCall(std::string const& call,
++ TSession * const abyssSessionP,
++ std::string * const responseP);
++
++ serverAbyss * const serverAbyssP;
++ // The server for which we are the implementation.
++
++ bool expectSigchld;
++ bool serverOwnsSignals;
++};
++
++
++
++static void
++processXmlrpcCall(xmlrpc_env * const envP,
++ void * const arg,
++ const char * const callXml,
++ size_t const callXmlLen,
++ TSession * const abyssSessionP,
++ xmlrpc_mem_block ** const responseXmlPP) {
++/*----------------------------------------------------------------------------
++ This is an XML-RPC XML call processor, as called by the HTTP request
++ handler of the libxmlrpc_server_abyss C library.
++
++ 'callXml'/'callXmlLen' is the XML text of a supposed XML-RPC call.
++ We execute the RPC and return the XML text of the XML-RPC response
++ as *responseXmlPP.
++
++ 'arg' carries the information that tells us how to do that; e.g.
++ what XML-RPC methods are defined.
++-----------------------------------------------------------------------------*/
++ serverAbyss_impl * const implP(
++ static_cast<serverAbyss_impl *>(arg));
++
++ try {
++ string const call(callXml, callXmlLen);
++
++ string response;
++
++ implP->processCall(call, abyssSessionP, &response);
++
++ xmlrpc_mem_block * responseMbP;
++
++ responseMbP = XMLRPC_MEMBLOCK_NEW(char, envP, 0);
++
++ if (!envP->fault_occurred) {
++ XMLRPC_MEMBLOCK_APPEND(char, envP, responseMbP,
++ response.c_str(), response.length());
++
++ *responseXmlPP = responseMbP;
++ }
++ } catch (exception const& e) {
++ xmlrpc_env_set_fault(envP, XMLRPC_INTERNAL_ERROR, e.what());
++ }
++}
++
++
++
+ void
+-serverAbyss::initialize(constrOpt const& opt) {
++serverAbyss_impl::setAdditionalServerParms(
++ serverAbyss::constrOpt_impl const& opt) {
+
+- const registry * registryP;
++ // The following ought to be parameters on ServerCreate().
++
++ if (opt.present.keepaliveTimeout)
++ ServerSetKeepaliveTimeout(&this->cServer, opt.value.keepaliveTimeout);
++ if (opt.present.keepaliveMaxConn)
++ ServerSetKeepaliveMaxConn(&this->cServer, opt.value.keepaliveMaxConn);
++ if (opt.present.timeout)
++ ServerSetTimeout(&this->cServer, opt.value.timeout);
++ ServerSetAdvertise(&this->cServer, !opt.value.dontAdvertise);
++ if (opt.value.expectSigchld)
++ ServerUseSigchld(&this->cServer);
++}
++
++
++
++void
++serverAbyss_impl::setHttpReqHandlers(string const& uriPath,
++ bool const chunkResponse,
++ bool const doHttpAccessControl,
++ string const& allowOrigin,
++ bool const accessCtlExpires,
++ unsigned int const accessCtlMaxAge) {
++/*----------------------------------------------------------------------------
++ This is a constructor helper. Don't assume *this is complete.
++-----------------------------------------------------------------------------*/
++ env_wrap env;
++ xmlrpc_server_abyss_handler_parms parms;
++
++ parms.xml_processor = &processXmlrpcCall;
++ parms.xml_processor_arg = this;
++ parms.xml_processor_max_stack = this->registryP->maxStackSize();
++ parms.uri_path = uriPath.c_str();
++ parms.chunk_response = chunkResponse;
++ parms.allow_origin = doHttpAccessControl ? allowOrigin.c_str() : NULL;
++ parms.access_ctl_expires = accessCtlExpires;
++ parms.access_ctl_max_age = accessCtlMaxAge;
++
++ xmlrpc_server_abyss_set_handler3(
++ &env.env_c, &this->cServer,
++ &parms, XMLRPC_AHPSIZE(access_ctl_max_age));
++
++ if (env.env_c.fault_occurred)
++ throwf("Failed to register the HTTP handler for XML-RPC "
++ "with the underlying Abyss HTTP server. "
++ "xmlrpc_server_abyss_set_handler3() failed with: %s",
++ env.env_c.fault_string);
++
++ xmlrpc_server_abyss_set_default_handler(&this->cServer);
++}
++
++
++
++serverAbyss_impl::serverAbyss_impl(
++ serverAbyss::constrOpt_impl const& opt,
++ serverAbyss * const serverAbyssP) :
++ serverAbyssP(serverAbyssP) {
+
+ if (!opt.present.registryP && !opt.present.registryPtr)
+ throwf("You must specify the 'registryP' or 'registryPtr' option");
+@@ -292,15 +479,21 @@ serverAbyss::initialize(constrOpt const& opt) {
+ "the 'registryPtr' options");
+ else {
+ if (opt.present.registryP)
+- registryP = opt.value.registryP;
++ this->registryP = opt.value.registryP;
+ else {
+- this->registryPtr = opt.value.registryPtr;
+- registryP = this->registryPtr.get();
++ this->regPtr = opt.value.registryPtr;
++ this->registryP = this->regPtr.get();
+ }
+ }
+ if (opt.present.portNumber && opt.present.socketFd)
+ throwf("You can't specify both portNumber and socketFd options");
+
++ this->serverOwnsSignals = opt.value.serverOwnsSignals;
++
++ if (opt.value.serverOwnsSignals && opt.value.expectSigchld)
++ throwf("You can't specify both expectSigchld "
++ "and serverOwnsSignals options");
++
+ DateInit();
+
+ createServer(opt.present.logFileName, opt.value.logFileName,
+@@ -309,18 +502,16 @@ serverAbyss::initialize(constrOpt const& opt) {
+ &this->cServer);
+
+ try {
+- setAdditionalServerParms(opt);
++ this->setAdditionalServerParms(opt);
++
++ this->setHttpReqHandlers(opt.value.uriPath,
++ opt.value.chunkResponse,
++ opt.present.allowOrigin,
++ opt.value.allowOrigin,
++ opt.present.accessCtlMaxAge,
++ opt.value.accessCtlMaxAge);
++
+
+- // chunked response implementation is incomplete. We must
+- // eventually get away from libxmlrpc_server_abyss and
+- // register our own handler with the Abyss server. At that
+- // time, we'll have some place to pass
+- // opt.value.chunkResponse.
+-
+- xmlrpc_c::server_abyss_set_handlers(&this->cServer,
+- registryP,
+- opt.value.uriPath);
+-
+ if (opt.present.portNumber || opt.present.socketFd)
+ ServerInit(&this->cServer);
+ } catch (...) {
+@@ -331,6 +522,94 @@ serverAbyss::initialize(constrOpt const& opt) {
+
+
+
++serverAbyss_impl::~serverAbyss_impl() {
++
++ ServerFree(&this->cServer);
++}
++
++
++
++static void
++setupSignalsAndRunAbyss(TServer * const abyssServerP) {
++
++ /* We do some pretty ugly stuff for an object method: we set signal
++ handlers, which are process-global.
++
++ One example of where this can be hairy is: Caller has a child
++ process unrelated to the Abyss server. That child dies. We
++ get his death of a child signal and Caller never knows.
++
++ We really expect to be the only thing in the process, at least
++ for the time we're running. If you want the Abyss Server
++ to behave more like an object and own the signals yourself,
++ use runOnce() in a loop instead of run().
++ */
++ signalHandlers oldHandlers;
++
++ setupSignalHandlers(&oldHandlers);
++
++ ServerUseSigchld(abyssServerP);
++
++ ServerRun(abyssServerP);
++
++ restoreSignalHandlers(oldHandlers);
++}
++
++
++
++void
++serverAbyss_impl::run() {
++
++ if (this->serverOwnsSignals)
++ setupSignalsAndRunAbyss(&this->cServer);
++ else {
++ if (this->expectSigchld)
++ ServerUseSigchld(&this->cServer);
++
++ ServerRun(&this->cServer);
++ }
++}
++
++
++
++void
++serverAbyss_impl::processCall(string const& call,
++ TSession * const abyssSessionP,
++ string * const responseP) {
++
++ callInfo_serverAbyss const callInfo(this->serverAbyssP, abyssSessionP);
++
++ this->registryP->processCall(call, &callInfo, responseP);
++}
++
++
++
++serverAbyss::shutdown::shutdown(serverAbyss * const serverAbyssP) :
++ serverAbyssP(serverAbyssP) {}
++
++
++
++serverAbyss::shutdown::~shutdown() {}
++
++
++
++void
++serverAbyss::shutdown::doit(string const&,
++ void * const) const {
++
++ this->serverAbyssP->terminate();
++}
++
++
++
++void
++serverAbyss::initialize(constrOpt const& opt) {
++
++ this->implP = new serverAbyss_impl(*opt.implP, this);
++}
++
++
++
+ serverAbyss::serverAbyss(constrOpt const& opt) {
+
+ initialize(opt);
+@@ -376,7 +655,7 @@ serverAbyss::serverAbyss(
+
+ serverAbyss::~serverAbyss() {
+
+- ServerFree(&this->cServer);
++ delete(this->implP);
+ }
+
+
+@@ -384,83 +663,147 @@ serverAbyss::~serverAbyss() {
+ void
+ serverAbyss::run() {
+
+- /* We do some pretty ugly stuff for an object method: we set signal
+- handlers, which are process-global.
++ this->implP->run();
++}
++
+
+- One example of where this can be hairy is: Caller has a child
+- process unrelated to the Abyss server. That child dies. We
+- get his death of a child signal and Caller never knows.
+
+- We really expect to be the only thing in the process, at least
+- for the time we're running. If you want the Abyss Server
+- to behave more like an object and own the signals yourself,
+- use runOnce() in a loop instead of run().
+- */
+- signalHandlers oldHandlers;
++void
++serverAbyss::runOnce() {
+
+- setupSignalHandlers(&oldHandlers);
++ ServerRunOnce(&this->implP->cServer);
++}
+
+- ServerRun(&this->cServer);
+
+- restoreSignalHandlers(oldHandlers);
++
++void
++serverAbyss::runConn(int const socketFd) {
++
++ ServerRunConn(&this->implP->cServer, socketFd);
+ }
+-
+
+
++
++#ifndef WIN32
+ void
+-serverAbyss::runOnce() {
++serverAbyss::sigchld(pid_t const pid) {
++
++ // There's a hole in the design here, because the Abyss server uses
++ // a process-global list of children (so there can't be more than one
++ // Abyss object in the process), so while this is an object method,
++ // it doesn't really refer to the object at all.
+
+- ServerRunOnce(&this->cServer);
++ // We might conceivably fix Abyss some day, then this method would do
++ // what you expect -- affect only its own object. But forking Abyss is
++ // obsolete anyway, so we just don't worry about it.
++
++ ServerHandleSigchld(pid);
+ }
++#endif
+
+
+
+ void
+-serverAbyss::runConn(int const socketFd) {
++serverAbyss::terminate() {
+
+- ServerRunConn(&this->cServer, socketFd);
++ ServerTerminate(&this->implP->cServer);
+ }
+
+
+
++callInfo_abyss::callInfo_abyss(TSession * const abyssSessionP) :
++ abyssSessionP(abyssSessionP) {}
++
++
++
+ void
+-serverAbyss::terminate() {
++processXmlrpcCall2(xmlrpc_env * const envP,
++ void * const arg,
++ const char * const callXml,
++ size_t const callXmlLen,
++ TSession * const abyssSessionP,
++ xmlrpc_mem_block ** const responseXmlPP) {
++/*----------------------------------------------------------------------------
++ This is an XML-RPC XML call processor, as called by the HTTP request
++ handler of the libxmlrpc_server_abyss C library.
++
++ 'callXml'/'callXmlLen' is the XML text of a supposed XML-RPC call.
++ We execute the RPC and return the XML text of the XML-RPC response
++ as *responseXmlPP.
++
++ 'arg' carries the information that tells us how to do that; e.g.
++ what XML-RPC methods are defined.
++-----------------------------------------------------------------------------*/
++ const registry * const registryP(static_cast<registry *>(arg));
++
++ try {
++ string const call(callXml, callXmlLen);
++ callInfo_abyss const callInfo(abyssSessionP);
+
+- ServerTerminate(&this->cServer);
++ string response;
++
++ registryP->processCall(call, &callInfo, &response);
++
++ xmlrpc_mem_block * responseMbP;
++
++ responseMbP = XMLRPC_MEMBLOCK_NEW(char, envP, response.length());
++
++ if (!envP->fault_occurred) {
++ XMLRPC_MEMBLOCK_APPEND(char, envP, responseMbP,
++ response.c_str(), response.length());
++
++ *responseXmlPP = responseMbP;
++ }
++ } catch (exception const& e) {
++ xmlrpc_env_set_fault(envP, XMLRPC_INTERNAL_ERROR, e.what());
++ }
+ }
+
++
++
++static void
++setHandlers(TServer * const serverP,
++ string const& uriPath,
++ registry const& registry) {
++
++ xmlrpc_server_abyss_set_handler2(
++ serverP, uriPath.c_str(),
++ processXmlrpcCall2,
++ const_cast<xmlrpc_c::registry *>(®istry),
++ registry.maxStackSize(),
++ false);
++
++ xmlrpc_server_abyss_set_default_handler(serverP);
++}
++
++
++
+ void
+-server_abyss_set_handlers(TServer * const srvP,
++server_abyss_set_handlers(TServer * const serverP,
+ registry const& registry,
+ string const& uriPath) {
+
+- xmlrpc_server_abyss_set_handlers2(srvP,
+- uriPath.c_str(),
+- registry.c_registry());
++ setHandlers(serverP, uriPath, registry);
+ }
+
+
+
+ void
+-server_abyss_set_handlers(TServer * const srvP,
++server_abyss_set_handlers(TServer * const serverP,
+ const registry * const registryP,
+ string const& uriPath) {
+
+- xmlrpc_server_abyss_set_handlers2(srvP,
+- uriPath.c_str(),
+- registryP->c_registry());
++ setHandlers(serverP, uriPath, *registryP);
+ }
+
+
+
+ void
+-server_abyss_set_handlers(TServer * const srvP,
++server_abyss_set_handlers(TServer * const serverP,
+ registryPtr const registryPtr,
+ string const& uriPath) {
+
+- xmlrpc_server_abyss_set_handlers2(srvP,
+- uriPath.c_str(),
+- registryPtr->c_registry());
++ setHandlers(serverP, uriPath, *registryPtr.get());
+ }
+
+
+diff --git a/libs/xmlrpc-c/src/cpp/server_pstream.cpp b/libs/xmlrpc-c/src/cpp/server_pstream.cpp
+index 86f2cc9..a1b19f8 100644
+--- a/libs/xmlrpc-c/src/cpp/server_pstream.cpp
++++ b/libs/xmlrpc-c/src/cpp/server_pstream.cpp
+@@ -9,24 +9,27 @@
+ is an Xmlrpc-c invention. It is an almost trivial representation of
+ a sequence of packets on a byte stream.
+
+- You can create a pstream server from any file descriptor from which
+- you can read and write a bidirectional character stream. Typically,
+- it's a TCP socket. Such a server talks to one client its entire life.
+-
+- Some day, we'll also have a version that you create from a "listening"
+- socket, which can talk to multiple clients serially (a client connects,
+- does some RPCs, and disconnects).
+-
+- By Bryan Henderson 07.05.12.
++ By Bryan Henderson 09.03.22
+
+ Contributed to the public domain by its author.
+ =============================================================================*/
+
++#include "xmlrpc_config.h"
++#if MSVCRT
++#ifndef _CRT_SECURE_NO_WARNINGS
++#define _CRT_SECURE_NO_WARNINGS
++#endif
++#include <winsock.h>
++typedef int socklen_t;
++#else
++#include <sys/socket.h>
++#endif
++#include <errno.h>
++#include <cstring>
+ #include <memory>
+
+ #include "xmlrpc-c/girerr.hpp"
+ using girerr::throwf;
+-#include "xmlrpc-c/packetsocket.hpp"
+
+ #include "xmlrpc-c/server_pstream.hpp"
+
+@@ -35,20 +38,52 @@ using namespace std;
+ namespace xmlrpc_c {
+
+
+-serverPstreamConn::constrOpt::constrOpt() {
++struct serverPstream::constrOpt_impl {
++
++ constrOpt_impl();
++
++ struct value {
++ xmlrpc_c::registryPtr registryPtr;
++ const xmlrpc_c::registry * registryP;
++ XMLRPC_SOCKET socketFd;
++ } value;
++ struct {
++ bool registryPtr;
++ bool registryP;
++ bool socketFd;
++ } present;
++};
++
++
++
++serverPstream::constrOpt_impl::constrOpt_impl() {
++
++ this->present.socketFd = false;
++ this->present.registryP = false;
++ this->present.registryPtr = false;
++}
++
++
++
++serverPstream::constrOpt::constrOpt() {
+
+- present.socketFd = false;
+- present.registryP = false;
+- present.registryPtr = false;
++ this->implP = new serverPstream::constrOpt_impl();
++}
++
++
++
++serverPstream::constrOpt::~constrOpt() {
++
++ delete(this->implP);
+ }
+
+
+
+ #define DEFINE_OPTION_SETTER(OPTION_NAME, TYPE) \
+-serverPstreamConn::constrOpt & \
+-serverPstreamConn::constrOpt::OPTION_NAME(TYPE const& arg) { \
+- this->value.OPTION_NAME = arg; \
+- this->present.OPTION_NAME = true; \
++serverPstream::constrOpt & \
++serverPstream::constrOpt::OPTION_NAME(TYPE const& arg) { \
++ this->implP->value.OPTION_NAME = arg; \
++ this->implP->present.OPTION_NAME = true; \
+ return *this; \
+ }
+
+@@ -60,8 +95,63 @@ DEFINE_OPTION_SETTER(registryPtr, xmlrpc_c::registryPtr);
+
+
+
++struct serverPstream_impl {
++
++ serverPstream_impl(serverPstream::constrOpt_impl const& opt);
++
++ ~serverPstream_impl();
++
++ void
++ establishRegistry(serverPstream::constrOpt_impl const& opt);
++
++ // 'registryP' is what we actually use; 'registryHolder' just holds a
++ // reference to 'registryP' so the registry doesn't disappear while
++ // this server exists. But note that if the creator doesn't supply
++ // a registryPtr, 'registryHolder' is just a placeholder variable and
++ // the creator is responsible for making sure the registry doesn't
++ // go anywhere while the server exists.
++
++ registryPtr registryHolder;
++ const registry * registryP;
++
++ XMLRPC_SOCKET listenSocketFd;
++ // The socket on which we accept connections from clients. This comes
++ // to us from the creator, already bound and in listen mode. That
++ // way, this object doesn't have to know anything about socket
++ // addresses or listen parameters such as the maximum connection
++ // backlog size.
++
++ bool termRequested;
++ // User has requested that the run method return ASAP; i.e. that
++ // the server cease servicing RPCs.
++};
++
++
++
++serverPstream_impl::serverPstream_impl(
++ serverPstream::constrOpt_impl const& opt) {
++
++ this->establishRegistry(opt);
++
++ if (!opt.present.socketFd)
++ throwf("You must provide a 'socketFd' constructor option.");
++
++ this->listenSocketFd = opt.value.socketFd;
++
++ this->termRequested = false;
++}
++
++
++
++serverPstream_impl::~serverPstream_impl() {
++
++}
++
++
++
+ void
+-serverPstreamConn::establishRegistry(constrOpt const& opt) {
++serverPstream_impl::establishRegistry(
++ serverPstream::constrOpt_impl const& opt) {
+
+ if (!opt.present.registryP && !opt.present.registryPtr)
+ throwf("You must specify the 'registryP' or 'registryPtr' option");
+@@ -79,109 +169,110 @@ serverPstreamConn::establishRegistry(constrOpt const& opt) {
+ }
+
+
++/*-----------------------------------------------------------------------------
++ serverPstream::shutdown is a derived class of registry::shutdown. You give
++ it to the registry object to allow XML-RPC method 'system.shutdown' to
++-----------------------------------------------------------------------------*/
+
+-void
+-serverPstreamConn::establishPacketSocket(constrOpt const& opt) {
++serverPstream::shutdown::shutdown(serverPstream * const serverPstreamP) :
++ serverPstreamP(serverPstreamP) {}
+
+- if (!opt.present.socketFd)
+- throwf("You must provide a 'socketFd' constructor option.");
+-
+- auto_ptr<packetSocket> packetSocketAP;
+
+- try {
+- auto_ptr<packetSocket> p(new packetSocket(opt.value.socketFd));
+- packetSocketAP = p;
+- } catch (exception const& e) {
+- throwf("Unable to create packet socket out of file descriptor %d. %s",
+- opt.value.socketFd, e.what());
+- }
+- this->packetSocketP = packetSocketAP.get();
+- packetSocketAP.release();
+-}
+
++serverPstream::shutdown::~shutdown() {}
+
+
+-serverPstreamConn::serverPstreamConn(constrOpt const& opt) {
+
+- this->establishRegistry(opt);
++void
++serverPstream::shutdown::doit(string const&,
++ void * const) const {
+
+- this->establishPacketSocket(opt);
++ this->serverPstreamP->terminate();
+ }
++/*---------------------------------------------------------------------------*/
+
+
+
+-serverPstreamConn::~serverPstreamConn() {
++serverPstream::serverPstream(constrOpt const& opt) {
+
+- delete(this->packetSocketP);
++ this->implP = new serverPstream_impl(*opt.implP);
+ }
+
+
+
+-void
+-processCall(const registry * const registryP,
+- packetPtr const& callPacketP,
+- packetPtr * const responsePacketPP) {
++serverPstream::~serverPstream() {
+
+- string const callXml(reinterpret_cast<char *>(callPacketP->getBytes()),
+- callPacketP->getLength());
++ delete(this->implP);
++}
+
+- string responseXml;
+
+- registryP->processCall(callXml, &responseXml);
+
+- *responsePacketPP = packetPtr(new packet(responseXml.c_str(),
+- responseXml.length()));
++void
++serverPstream::runSerial(volatile const int * const interruptP) {
++
++ while (!this->implP->termRequested && !*interruptP) {
++ struct sockaddr peerAddr;
++ socklen_t size = sizeof(peerAddr);
++ int rc;
++
++ rc = accept(this->implP->listenSocketFd, &peerAddr, &size);
++
++ if (!*interruptP) {
++ if (rc < 0)
++ if (errno == EINTR) {
++ // system call was interrupted, but user doesn't want
++ // to interrupt the server, so just keep trying
++ } else
++ throwf("Failed to accept a connection "
++ "on the listening socket. accept() failed "
++ "with errno %d (%s)", errno, strerror(errno));
++ else {
++ int const acceptedFd = rc;
++
++ serverPstreamConn connectionServer(
++ xmlrpc_c::serverPstreamConn::constrOpt()
++ .socketFd(acceptedFd)
++ .registryP(this->implP->registryP));
++
++ callInfo_serverPstream callInfo(this, peerAddr, size);
++
++ connectionServer.run(&callInfo, interruptP);
++ }
++ }
++ }
+ }
+
+
+
+ void
+-serverPstreamConn::runOnce(volatile const int * const interruptP,
+- bool * const eofP) {
+-/*----------------------------------------------------------------------------
+- Get and execute one RPC from the client.
++serverPstream::runSerial() {
+
+- Unless *interruptP gets set nonzero first.
+------------------------------------------------------------------------------*/
+- bool gotPacket;
+- packetPtr callPacketP;
+-
+- try {
+- this->packetSocketP->readWait(interruptP, eofP, &gotPacket,
+- &callPacketP);
+- } catch (exception const& e) {
+- throwf("Error reading a packet from the packet socket. %s",
+- e.what());
+- }
+- if (gotPacket) {
+- packetPtr responsePacketP;
+- try {
+- processCall(this->registryP, callPacketP, &responsePacketP);
+- } catch (exception const& e) {
+- throwf("Error executing received packet as an XML-RPC RPC. %s",
+- e.what());
+- }
+- try {
+- this->packetSocketP->writeWait(responsePacketP);
+- } catch (exception const& e) {
+- throwf("Failed to write the response to the packet socket. %s",
+- e.what());
+- }
+- }
++ int const interrupt(0); // Never interrupt
++
++ this->runSerial(&interrupt);
+ }
+
+
+
+ void
+-serverPstreamConn::runOnce(bool * const eofP) {
+-/*----------------------------------------------------------------------------
+- Get and execute one RPC from the client.
+------------------------------------------------------------------------------*/
+- int const interrupt(0); // Never interrupt
++serverPstream::terminate() {
+
+- this->runOnce(&interrupt, eofP);
++ this->implP->termRequested = true;
+ }
+
+
+
++callInfo_serverPstream::callInfo_serverPstream(
++ serverPstream * const serverP,
++ struct sockaddr const clientAddr,
++ socklen_t const clientAddrSize) :
++
++ serverP(serverP),
++ clientAddr(clientAddr),
++ clientAddrSize(clientAddrSize)
++
++{}
++
++
++
+ } // namespace
+diff --git a/libs/xmlrpc-c/src/cpp/test/Makefile b/libs/xmlrpc-c/src/cpp/test/Makefile
+index ff6750f..ccde8f5 100644
+--- a/libs/xmlrpc-c/src/cpp/test/Makefile
++++ b/libs/xmlrpc-c/src/cpp/test/Makefile
+@@ -17,20 +17,16 @@ all: $(PROGS)
+
+ XMLRPC_C_CONFIG = $(BLDDIR)/xmlrpc-c-config.test
+
+-CXXFLAGS = $(CXXFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
+-
+-LDFLAGS += $(shell $(XMLRPC_C_CONFIG) client --ldadd)
++LIBS := $(shell $(XMLRPC_C_CONFIG) client --ldadd)
+
+ ifeq ($(MUST_BUILD_CURL_CLIENT),yes)
+- LDFLAGS += $(shell curl-config --libs)
++ LIBS += $(shell curl-config --libs)
+ endif
+ ifeq ($(MUST_BUILD_LIBWWW_CLIENT),yes)
+- LDFLAGS += $(shell libwww-config --libs)
++ LIBS += $(shell libwww-config --libs)
+ endif
+
+-LDFLAGS += "-lpthread"
+-
+-LDFLAGS += $(LADD)
++LIBS += -lpthread
+
+ INCLUDES = -Isrcdir/include -I$(BLDDIR) -Isrcdir -Isrcdir/lib/util/include
+
+@@ -42,7 +38,15 @@ Makefile: srcdir
+ include $(SRCDIR)/common.mk
+
+
+-TEST_OBJS = test.o registry.o server_abyss.o server_pstream.o tools.o
++TEST_OBJS = \
++ test.o \
++ base64.o \
++ registry.o \
++ server_abyss.o \
++ server_pstream.o \
++ tools.o \
++ value.o \
++ xml.o \
+
+ ifeq ($(MUST_BUILD_CLIENT),yes)
+ TEST_OBJS += testclient.o
+@@ -69,16 +73,17 @@ TEST_LIBS = \
+ ifneq ($(ENABLE_LIBXML2_BACKEND),yes)
+ # We're using the internal Expat XML parser
+ TEST_LIBS += $(LIBXMLRPC_XMLPARSE_A) $(LIBXMLRPC_XMLTOK_A)
+- LDADD_XML =
++ LIB_XML =
++ registry.o: D_INTERNAL_EXPAT=-DINTERNAL_EXPAT
+ else
+- LDADD_XML = $(shell xml2-config --libs)
++ LIB_XML = $(shell xml2-config --libs)
+ endif
+
+ test: $(TEST_OBJS) $(TEST_LIBS)
+- $(CXXLD) -o $@ $(LDFLAGS) $(LDADD_XML) $^
++ $(CXXLD) -o $@ $(LDFLAGS) $(LADD) $^ $(LIB_XML) $(LIBS)
+
+ %.o:%.cpp
+- $(CXX) -c $(INCLUDES) $(CXXFLAGS) $<
++ $(CXX) -c $(INCLUDES) $(CXXFLAGS_ALL) $(D_INTERNAL_EXPAT) $<
+
+ # Note the difference between 'check' and 'runtests'. 'check' means to check
+ # our own correctness. 'runtests' means to run the tests that check our
+@@ -104,4 +109,4 @@ distclean: clean distclean-common
+ .PHONY: dep
+ dep: dep-common
+
+-include Makefile.depend
++include depend.mk
+diff --git a/libs/xmlrpc-c/src/cpp/test/registry.cpp b/libs/xmlrpc-c/src/cpp/test/registry.cpp
+index 6ca265a..c7e6e42 100644
+--- a/libs/xmlrpc-c/src/cpp/test/registry.cpp
++++ b/libs/xmlrpc-c/src/cpp/test/registry.cpp
+@@ -20,11 +20,19 @@ using namespace xmlrpc_c;
+ using namespace std;
+
+
+-string const xmlPrologue("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
+
++namespace {
++
++static string const
++xmlPrologue("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
++
++static string const
++apacheUrl("http://ws.apache.org/xmlrpc/namespaces/extensions");
++
++static string const
++xmlnsApache("xmlns:ex=\"" + apacheUrl + "\"");
+
+
+-namespace {
+ string const noElementFoundXml(
+ xmlPrologue +
+ "<methodResponse>\r\n"
+@@ -41,6 +49,22 @@ string const noElementFoundXml(
+ "</methodResponse>\r\n"
+ );
+
++string const invalidXMLCall(
++ xmlPrologue +
++ "<methodResponse>\r\n"
++ "<fault>\r\n"
++ "<value><struct>\r\n"
++ "<member><name>faultCode</name>\r\n"
++ "<value><i4>-503</i4></value></member>\r\n"
++ "<member><name>faultString</name>\r\n"
++ "<value><string>Call XML not a proper XML-RPC call. "
++ "Call is not valid XML. XML parsing failed</string></value>"
++ "</member>\r\n"
++ "</struct></value>\r\n"
++ "</fault>\r\n"
++ "</methodResponse>\r\n"
++ );
++
+ string const sampleAddGoodCallXml(
+ xmlPrologue +
+ "<methodCall>\r\n"
+@@ -86,6 +110,24 @@ string const sampleAddBadResponseXml(
+ "</methodResponse>\r\n"
+ );
+
++string const testCallInfoCallXml(
++ xmlPrologue +
++ "<methodCall>\r\n"
++ "<methodName>test.callinfo</methodName>\r\n"
++ "<params>\r\n"
++ "</params>\r\n"
++ "</methodCall>\r\n"
++ );
++
++string const testCallInfoResponseXml(
++ xmlPrologue +
++ "<methodResponse>\r\n"
++ "<params>\r\n"
++ "<param><value><string>this is a test callInfo</string></value>"
++ "</param>\r\n"
++ "</params>\r\n"
++ "</methodResponse>\r\n"
++ );
+
+ string const nonexistentMethodCallXml(
+ xmlPrologue +
+@@ -123,31 +165,30 @@ string const nonexistentMethodNoDefResponseXml(
+ "</methodResponse>\r\n"
+ );
+
+-} // namespace
+
+
+ string const echoI8ApacheCall(
+ xmlPrologue +
+- "<methodCall>\r\n"
++ "<methodCall " + xmlnsApache + ">\r\n"
+ "<methodName>echo</methodName>\r\n"
+ "<params>\r\n"
+- "<param><value><ex.i8>5</ex.i8></value></param>\r\n"
++ "<param><value><ex:i8>5</ex:i8></value></param>\r\n"
+ "</params>\r\n"
+ "</methodCall>\r\n"
+ );
+
+ string const echoI8ApacheResponse(
+ xmlPrologue +
+- "<methodResponse>\r\n"
++ "<methodResponse " + xmlnsApache + ">\r\n"
+ "<params>\r\n"
+- "<param><value><ex.i8>5</ex.i8></value></param>\r\n"
++ "<param><value><ex:i8>5</ex:i8></value></param>\r\n"
+ "</params>\r\n"
+ "</methodResponse>\r\n"
+ );
+
+ string const echoNilApacheCall(
+ xmlPrologue +
+- "<methodCall>\r\n"
++ "<methodCall " + xmlnsApache + ">\r\n"
+ "<methodName>echo</methodName>\r\n"
+ "<params>\r\n"
+ "<param><value><nil/></value></param>\r\n"
+@@ -157,14 +198,26 @@ string const echoNilApacheCall(
+
+ string const echoNilApacheResponse(
+ xmlPrologue +
+- "<methodResponse>\r\n"
++ "<methodResponse " + xmlnsApache + ">\r\n"
+ "<params>\r\n"
+- "<param><value><ex.nil/></value></param>\r\n"
++ "<param><value><ex:nil/></value></param>\r\n"
+ "</params>\r\n"
+ "</methodResponse>\r\n"
+ );
+
+
++class callInfo_test : public callInfo {
++
++public:
++ callInfo_test() : data("this is a test callInfo") {}
++
++ callInfo_test(string const& data) : data(data) {};
++
++ string data;
++};
++
++
++
+ class sampleAddMethod : public method {
+ public:
+ sampleAddMethod() {
+@@ -186,6 +239,51 @@ public:
+
+
+
++class sampleAddMethod2 : public method2 {
++public:
++ sampleAddMethod2() {
++ this->_signature = "i:ii";
++ this->_help = "This method adds two integers together";
++ }
++ void
++ execute(xmlrpc_c::paramList const& paramList,
++ const callInfo * const,
++ value * const retvalP) {
++
++ int const addend(paramList.getInt(0));
++ int const adder(paramList.getInt(1));
++
++ paramList.verifyEnd(2);
++
++ *retvalP = value_int(addend + adder);
++ }
++};
++
++
++
++class testCallInfoMethod : public method2 {
++public:
++ testCallInfoMethod() {
++ this->_signature = "s:";
++ }
++ void
++ execute(xmlrpc_c::paramList const& paramList,
++ const callInfo * const callInfoPtr,
++ value * const retvalP) {
++
++ const callInfo_test * const callInfoP(
++ dynamic_cast<const callInfo_test *>(callInfoPtr));
++
++ TEST(callInfoP != NULL);
++
++ paramList.verifyEnd(0);
++
++ *retvalP = value_string(callInfoP->data);
++ }
++};
++
++
++
+ class nameMethod : public defaultMethod {
+
+ void
+@@ -213,6 +311,22 @@ public:
+
+
+
++static void
++testEmptyXmlDocCall(xmlrpc_c::registry const& myRegistry) {
++
++ string response;
++ myRegistry.processCall("", &response);
++
++#ifdef INTERNAL_EXPAT
++ TEST(response == noElementFoundXml);
++#else
++ // This is what we get with libxml2
++ TEST(response == invalidXMLCall);
++#endif
++}
++
++
++
+ class registryRegMethodTestSuite : public testSuite {
+
+ public:
+@@ -227,11 +341,7 @@ public:
+ xmlrpc_c::methodPtr(new sampleAddMethod));
+
+ myRegistry.disableIntrospection();
+- {
+- string response;
+- myRegistry.processCall("", &response);
+- TEST(response == noElementFoundXml);
+- }
++ testEmptyXmlDocCall(myRegistry);
+ {
+ string response;
+ myRegistry.processCall(sampleAddGoodCallXml, &response);
+@@ -242,6 +352,12 @@ public:
+ myRegistry.processCall(sampleAddBadCallXml, &response);
+ TEST(response == sampleAddBadResponseXml);
+ }
++ {
++ string response;
++ callInfo const callInfo;
++ myRegistry.processCall(sampleAddBadCallXml, &callInfo, &response);
++ TEST(response == sampleAddBadResponseXml);
++ }
+ }
+ };
+
+@@ -284,6 +400,93 @@ public:
+
+
+
++class method2TestSuite : public testSuite {
++
++public:
++ virtual string suiteName() {
++ return "method2TestSuite";
++ }
++ virtual void runtests(unsigned int const) {
++
++ xmlrpc_c::registry myRegistry;
++
++ myRegistry.addMethod("sample.add",
++ xmlrpc_c::methodPtr(new sampleAddMethod2));
++
++ myRegistry.addMethod("test.callinfo",
++ xmlrpc_c::methodPtr(new testCallInfoMethod));
++
++ {
++ string response;
++ myRegistry.processCall(sampleAddGoodCallXml, &response);
++ TEST(response == sampleAddGoodResponseXml);
++ }
++ {
++ string response;
++ myRegistry.processCall(sampleAddBadCallXml, &response);
++ TEST(response == sampleAddBadResponseXml);
++ }
++ {
++ string response;
++ callInfo_test const callInfo;
++ myRegistry.processCall(testCallInfoCallXml, &callInfo, &response);
++ TEST(response == testCallInfoResponseXml);
++ }
++ }
++};
++
++
++
++class dialectTestSuite : public testSuite {
++
++public:
++ virtual string suiteName() {
++ return "dialectTestSuite";
++ }
++ virtual void runtests(unsigned int const) {
++
++ registry myRegistry;
++ string response;
++
++ myRegistry.addMethod("sample.add", methodPtr(new sampleAddMethod));
++ myRegistry.addMethod("echo", methodPtr(new echoMethod));
++
++ myRegistry.setDialect(xmlrpc_dialect_i8);
++
++ myRegistry.setDialect(xmlrpc_dialect_apache);
++
++ myRegistry.processCall(echoI8ApacheCall, &response);
++
++ TEST(response == echoI8ApacheResponse);
++
++ myRegistry.processCall(echoNilApacheCall, &response);
++
++ TEST(response == echoNilApacheResponse);
++
++ EXPECT_ERROR( // invalid dialect
++ myRegistry.setDialect(static_cast<xmlrpc_dialect>(300));
++ );
++ }
++};
++
++
++
++class testShutdown : public xmlrpc_c::registry::shutdown {
++/*----------------------------------------------------------------------------
++ This class is logically local to
++ registryShutdownTestSuite::runtests(), but if we declare it that
++ way, gcc 2.95.3 fails with some bogus messages about undefined
++ references from random functions when we do that.
++-----------------------------------------------------------------------------*/
++public:
++ void doit(string const&,
++ void * const) const {
++
++ }
++};
++
++
++
+ class registryShutdownTestSuite : public testSuite {
+
+ public:
+@@ -294,15 +497,7 @@ public:
+
+ xmlrpc_c::registry myRegistry;
+
+- class myshutdown : public xmlrpc_c::registry::shutdown {
+- public:
+- void doit(string const&,
+- void * const) const {
+-
+- }
+- };
+-
+- myshutdown shutdown;
++ testShutdown shutdown;
+
+ myRegistry.setShutdown(&shutdown);
+ }
+@@ -310,6 +505,10 @@ public:
+
+
+
++} // unnamed namespace
++
++
++
+ string
+ registryTestSuite::suiteName() {
+ return "registryTestSuite";
+@@ -327,32 +526,19 @@ registryTestSuite::runtests(unsigned int const indentation) {
+ }
+
+ registryRegMethodTestSuite().run(indentation+1);
++
+ registryDefaultMethodTestSuite().run(indentation+1);
+
+- registry myRegistry;
+-
+- myRegistry.addMethod("sample.add", methodPtr(new sampleAddMethod));
+- myRegistry.addMethod("echo", methodPtr(new echoMethod));
++ method2TestSuite().run(indentation+1);
+
+- string response;
++ registry myRegistry;
+
+ myRegistry.disableIntrospection();
+
+- myRegistry.setDialect(xmlrpc_dialect_i8);
+-
+- myRegistry.setDialect(xmlrpc_dialect_apache);
++ dialectTestSuite().run(indentation+1);
+
+ registryShutdownTestSuite().run(indentation+1);
+
+- myRegistry.processCall(echoI8ApacheCall, &response);
+-
+- TEST(response == echoI8ApacheResponse);
+-
+- myRegistry.processCall(echoNilApacheCall, &response);
+-
+- TEST(response == echoNilApacheResponse);
++ TEST(myRegistry.maxStackSize() >= 256);
+
+- EXPECT_ERROR( // invalid dialect
+- myRegistry.setDialect(static_cast<xmlrpc_dialect>(300));
+- );
+ }
+diff --git a/libs/xmlrpc-c/src/cpp/test/server_abyss.cpp b/libs/xmlrpc-c/src/cpp/test/server_abyss.cpp
+index 4b236ef..2b50688 100644
+--- a/libs/xmlrpc-c/src/cpp/test/server_abyss.cpp
++++ b/libs/xmlrpc-c/src/cpp/test/server_abyss.cpp
+@@ -10,6 +10,8 @@
+ #include <vector>
+ #include <sstream>
+ #include <memory>
++#include <cstring>
++#include <cstdlib>
+ #include <time.h>
+ #ifdef WIN32
+ #include <winsock.h>
+@@ -17,6 +19,7 @@
+ #include <sys/unistd.h>
+ #include <sys/socket.h>
+ #include <arpa/inet.h>
++ #include <netinet/in.h>
+ #endif
+
+ #include "xmlrpc-c/girerr.hpp"
+@@ -34,6 +37,9 @@ using namespace xmlrpc_c;
+ using namespace std;
+
+
++
++namespace {
++
+ static void
+ closesock(int const fd) {
+ #ifdef WIN32
+@@ -75,7 +81,7 @@ public:
+ closesock(this->fd);
+ }
+
+- int fd;
++ XMLRPC_SOCKET fd;
+ };
+
+
+@@ -259,6 +265,10 @@ public:
+ .timeout(20)
+ .dontAdvertise(true)
+ .uriPath("/xmlrpc")
++ .chunkResponse(true)
++ .allowOrigin("*")
++ .serverOwnsSignals(false)
++ .expectSigchld(true)
+ );
+
+ }
+@@ -274,6 +284,54 @@ public:
+
+
+
++class testCallInfoMethod : public method2 {
++public:
++ void
++ execute(paramList const& paramList,
++ const callInfo * const callInfoPtr,
++ value * const retvalP) {
++
++ const callInfo_serverAbyss * const callInfoP(
++ dynamic_cast<const callInfo_serverAbyss *>(callInfoPtr));
++
++ TEST(callInfoP != NULL);
++
++ paramList.verifyEnd(0);
++
++ TEST(callInfoP->serverAbyssP != NULL);
++ TEST(callInfoP->abyssSessionP != NULL);
++
++ *retvalP = value_nil();
++ }
++};
++
++
++
++class callInfoTestSuite : public testSuite {
++
++public:
++ virtual string suiteName() {
++ return "callInfoTestSuite";
++ }
++ virtual void runtests(unsigned int const) {
++
++ registry myRegistry;
++
++ myRegistry.addMethod("sample.add", methodPtr(new testCallInfoMethod));
++
++ serverAbyss abyssServer(serverAbyss::constrOpt()
++ .registryP(&myRegistry)
++ .portNumber(12345)
++ );
++ }
++};
++
++
++
++} // unnamed namespace
++
++
++
+ string
+ serverAbyssTestSuite::suiteName() {
+ return "serverAbyssTestSuite";
+@@ -289,4 +347,5 @@ serverAbyssTestSuite::runtests(unsigned int const indentation) {
+
+ createTestSuite().run(indentation+1);
+
++ callInfoTestSuite().run(indentation+1);
+ }
+diff --git a/libs/xmlrpc-c/src/cpp/test/server_pstream.cpp b/libs/xmlrpc-c/src/cpp/test/server_pstream.cpp
+index 83b3e88..1d93273 100644
+--- a/libs/xmlrpc-c/src/cpp/test/server_pstream.cpp
++++ b/libs/xmlrpc-c/src/cpp/test/server_pstream.cpp
+@@ -4,16 +4,37 @@
+ Test the pstream server C++ facilities of XML-RPC for C/C++.
+
+ =============================================================================*/
+-#include <unistd.h>
+-#include <sys/socket.h>
+-#include <arpa/inet.h>
++
++#include "xmlrpc_config.h"
++
++#if MSVCRT
++ #include <winsock2.h>
++ #include <io.h>
++#else
++ #include <unistd.h>
++ #include <sys/socket.h>
++ #include <arpa/inet.h>
++#endif
++
+ #include <errno.h>
+ #include <string>
++#include <cstring>
+ #include <fcntl.h>
+
++#include "xmlrpc-c/config.h"
++
++#if MSVCRT
++ int
++ xmlrpc_win32_socketpair(int const domain,
++ int const type,
++ int const protocol,
++ SOCKET socks[2]);
++#endif
++
+ #include "xmlrpc-c/girerr.hpp"
+ using girerr::error;
+ using girerr::throwf;
++#include "xmlrpc-c/sleep_int.h"
+ #include "xmlrpc-c/base.hpp"
+ #include "xmlrpc-c/registry.hpp"
+ #include "xmlrpc-c/server_pstream.hpp"
+@@ -25,6 +46,41 @@ using namespace xmlrpc_c;
+ using namespace std;
+
+
++namespace {
++
++static void
++setNonBlocking(XMLRPC_SOCKET const socket) {
++
++#if MSVCRT
++ u_long iMode = 1;
++ ioctlsocket(socket, FIONBIO, &iMode);
++#else
++ fcntl(socket, F_SETFL, O_NONBLOCK);
++#endif
++}
++
++
++
++#define ESC_STR "\x1B"
++
++
++static string const
++xmlPrologue("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
++
++static string const
++packetStart(ESC_STR "PKT");
++
++static string const
++packetEnd(ESC_STR "END");
++
++
++class callInfo_test : public callInfo {
++public:
++ callInfo_test() : info("this is a test") {}
++ string const info;
++};
++
++
+
+ class sampleAddMethod : public method {
+ public:
+@@ -45,51 +101,542 @@ public:
+ }
+ };
+
++string const sampleAddCallXml(
++ xmlPrologue +
++ "<methodCall>\r\n"
++ "<methodName>sample.add</methodName>\r\n"
++ "<params>\r\n"
++ "<param><value><i4>5</i4></value></param>\r\n"
++ "<param><value><i4>7</i4></value></param>\r\n"
++ "</params>\r\n"
++ "</methodCall>\r\n"
++ );
++
++string const sampleAddResponseXml(
++ xmlPrologue +
++ "<methodResponse>\r\n"
++ "<params>\r\n"
++ "<param><value><i4>12</i4></value></param>\r\n"
++ "</params>\r\n"
++ "</methodResponse>\r\n"
++ );
++
++
++class testCallInfoMethod : public method2 {
++
++public:
++ virtual void
++ execute(paramList const& paramList,
++ const callInfo * const callInfoPtr,
++ value * const retvalP) {
++
++ const callInfo_test * const callInfoP(
++ dynamic_cast<const callInfo_test *>(callInfoPtr));
++
++ TEST(callInfoP != NULL);
++
++ paramList.verifyEnd(0);
++
++ TEST(callInfoP->info == string("this is a test"));
++
++ *retvalP = value_nil();
++ }
++};
++
++string const testCallInfoCallXml(
++ xmlPrologue +
++ "<methodCall>\r\n"
++ "<methodName>test.callinfo</methodName>\r\n"
++ "<params>\r\n"
++ "</params>\r\n"
++ "</methodCall>\r\n"
++ );
++
++string const testCallInfoResponseXml(
++ xmlPrologue +
++ "<methodResponse>\r\n"
++ "<params>\r\n"
++ "<param><value><nil/></value>"
++ "</param>\r\n"
++ "</params>\r\n"
++ "</methodResponse>\r\n"
++ );
++
+
+
+ static void
+-createTestFile(string const& contents,
+- int * const fdP) {
++waitForNetworkTransport() {
++/*----------------------------------------------------------------------------
++ Wait for a message to travel through the network.
++
++ This is part of our hack to allow us to test client/server communication
++ without the bother of a separate thread for each. One party writes
++ to a socket, causing the OS to buffer the message, then the other party
++ reads from the socket, getting the buffered message. We never wait
++ to send or receive, because with only one thread to do both, we would
++ deadlock. Instead, we just count on the buffer being big enough.
++
++ But on some systems, the message doesn't immediately travel like this. It
++ takes action by an independent thread (provided by the OS) to move the
++ message. In particular, we've seen this behavior on Windows (2010.10).
++
++ So we just sleep for a small amount of time to let the message move.
++-----------------------------------------------------------------------------*/
++
++ // xmlrpc_millisecond_sleep() is allowed to return early, and on Windows
++ // it does that in preference to returning late insofar as the clock
++ // resolution doesn't allow returning at the exact time. It is rumored
++ // that Windows clock period may be as long as 40 milliseconds.
++
++ xmlrpc_millisecond_sleep(50);
++}
+
+- string const filename("/tmp/xmlrpc_test_pstream");
+- unlink(filename.c_str());
+- int rc;
+- rc = open(filename.c_str(), O_RDWR | O_CREAT);
+- unlink(filename.c_str());
++
++
++class client {
++/*----------------------------------------------------------------------------
++ This is an object you can use as a client to test a packet stream
++ server.
++
++ You attach the 'serverFd' member to your packet stream server, then
++ call the 'sendCall' method to send a call to your server, then call
++ the 'recvResp' method to get the response.
++
++ Destroying the object closes the connection.
++
++ We rely on typical, though unguaranteed socket function: we need to
++ be able to write 'contents' to the socket in a single write()
++ system call before the other side reads anything -- i.e. the socket
++ has to have a buffer that big. We do this because we're lazy; doing
++ it right would require forking a writer process.
++-----------------------------------------------------------------------------*/
++public:
++
++ client();
+
++ ~client();
++
++ void
++ sendCall(string const& callBytes) const;
++
++ void
++ hangup();
++
++ void
++ recvResp(string * const respBytesP) const;
++
++ int serverFd;
++
++private:
++
++ int clientFd;
++};
++
++
++
++client::client() {
++
++ enum {
++ SERVER = 0,
++ CLIENT = 1,
++ };
++ XMLRPC_SOCKET sockets[2];
++ int rc;
++
++ rc = XMLRPC_SOCKETPAIR(AF_UNIX, SOCK_STREAM, 0, sockets);
++
+ if (rc < 0)
+- throwf("Failed to create file '%s' as a test tool. errno=%d (%s)",
+- filename.c_str(), errno, strerror(errno));
++ throwf("Failed to create UNIX domain stream socket pair "
++ "as test tool. errno=%d (%s)",
++ errno, strerror(errno));
+ else {
+- int const fd(rc);
++ setNonBlocking(sockets[CLIENT]);
+
+- int rc;
+-
+- rc = write(fd, contents.c_str(), contents.length());
+-
+- if (rc < 0)
+- throwf("write() of test file failed, errno=%d (%s)",
+- errno, strerror(errno));
+- else {
+- unsigned int bytesWritten(rc);
+-
+- if (bytesWritten != contents.length())
+- throwf("Short write");
+- else {
+- int rc;
+- rc = lseek(fd, 0, SEEK_SET);
+-
+- if (rc < 0)
+- throwf("lseek(0) of test file failed, errno=%d (%s)",
+- errno, strerror(errno));
+- }
+- }
+- *fdP = fd;
++ this->serverFd = sockets[SERVER];
++ this->clientFd = sockets[CLIENT];
+ }
+ }
+
+
+
++client::~client() {
++
++ XMLRPC_CLOSESOCKET(this->clientFd);
++ XMLRPC_CLOSESOCKET(this->serverFd);
++}
++
++
++
++void
++client::sendCall(string const& packetBytes) const {
++
++ int rc;
++
++ rc = send(this->clientFd, packetBytes.c_str(), packetBytes.length(), 0);
++
++ waitForNetworkTransport();
++
++ if (rc < 0)
++ throwf("send() of test data to socket failed, errno=%d (%s)",
++ errno, strerror(errno));
++ else {
++ unsigned int bytesWritten(rc);
++
++ if (bytesWritten != packetBytes.length())
++ throwf("Short write to socket");
++ }
++}
++
++
++
++void
++client::hangup() {
++
++ // Closing the socket (close()) would be a better simulation of the
++ // real world, and easier, but we shut down just the client->server
++ // half of the socket and remain open to receive an RPC response.
++ // That's because this test program is lazy and does the client and
++ // server in the same thread, depending on socket buffering on the
++ // receive side to provide parallelism. We need to be able to do the
++ // following sequence:
++ //
++ // - Client sends call
++ // - Client hangs up
++ // - Server gets call
++ // - Server sends response
++ // - Client gets response
++ // - Server notices hangup
++
++ shutdown(this->clientFd, 1); // Shutdown for transmission only
++}
++
++
++
++void
++client::recvResp(string * const packetBytesP) const {
++
++ char buffer[4096];
++ int rc;
++
++ waitForNetworkTransport();
++
++ rc = recv(this->clientFd, buffer, sizeof(buffer), 0);
++
++ if (rc < 0)
++ throwf("recv() from socket failed, errno=%d (%s)",
++ errno, strerror(errno));
++ else {
++ unsigned int bytesReceived(rc);
++
++ *packetBytesP = string(buffer, bytesReceived);
++ }
++}
++
++
++
++static void
++testEmptyStream(registry const& myRegistry) {
++/*----------------------------------------------------------------------------
++ Here we send the pstream server an empty stream; i.e. we close the
++ socket from the client end without sending anything.
++
++ This should cause the server to recognize EOF.
++-----------------------------------------------------------------------------*/
++
++ client client;
++
++ serverPstreamConn server(serverPstreamConn::constrOpt()
++ .registryP(&myRegistry)
++ .socketFd(client.serverFd));
++
++ client.hangup();
++
++ bool eof;
++ server.runOnce(&eof);
++
++ TEST(eof);
++}
++
++
++
++static void
++testBrokenPacket(registry const& myRegistry) {
++/*----------------------------------------------------------------------------
++ Here we send a stream that is not a legal packetsocket stream: it
++ doesn't have any control word.
++-----------------------------------------------------------------------------*/
++ client client;
++
++ serverPstreamConn server(serverPstreamConn::constrOpt()
++ .registryP(&myRegistry)
++ .socketFd(client.serverFd));
++
++ client.sendCall("junk");
++ client.hangup();
++
++ bool eof;
++
++ EXPECT_ERROR(
++ server.runOnce(&eof);
++ );
++}
++
++
++
++static void
++testEmptyPacket(registry const& myRegistry) {
++/*----------------------------------------------------------------------------
++ Here we send the pstream server one empty packet. It should respond
++ with one packet, being an XML-RPC fault response complaining that the
++ call is not valid XML.
++-----------------------------------------------------------------------------*/
++ client client;
++
++ serverPstreamConn server(serverPstreamConn::constrOpt()
++ .registryP(&myRegistry)
++ .socketFd(client.serverFd));
++
++ client.sendCall(packetStart + packetEnd);
++
++ bool eof;
++ server.runOnce(&eof);
++
++ TEST(!eof);
++
++ string response;
++ client.recvResp(&response);
++
++ // We ought to validate that the response is a complaint about
++ // the empty call
++
++ client.hangup();
++
++ server.runOnce(&eof);
++
++ TEST(eof);
++}
++
++
++
++static void
++testCallInfo(client * const clientP,
++ serverPstreamConn * const serverP) {
++
++ string const testCallInfoCallStream(
++ packetStart + testCallInfoCallXml + packetEnd
++ );
++
++ string const testCallInfoResponseStream(
++ packetStart + testCallInfoResponseXml + packetEnd
++ );
++
++ clientP->sendCall(testCallInfoCallStream);
++
++ callInfo_test callInfo;
++ int nointerrupt(0);
++ bool eof;
++ serverP->runOnce(&callInfo, &nointerrupt, &eof);
++
++ TEST(!eof);
++
++ string response;
++ clientP->recvResp(&response);
++
++ TEST(response == testCallInfoResponseStream);
++}
++
++
++
++static void
++testNormalCall(registry const& myRegistry) {
++
++ string const sampleAddGoodCallStream(
++ packetStart + sampleAddCallXml + packetEnd
++ );
++
++ string const sampleAddGoodResponseStream(
++ packetStart + sampleAddResponseXml + packetEnd
++ );
++
++ client client;
++
++ serverPstreamConn server(serverPstreamConn::constrOpt()
++ .registryP(&myRegistry)
++ .socketFd(client.serverFd));
++
++ client.sendCall(sampleAddGoodCallStream);
++
++ bool eof;
++
++ int interrupt(1);
++ server.runOnce(&interrupt, &eof); // returns without reading socket
++ TEST(!eof);
++
++ server.runOnce(&eof);
++
++ TEST(!eof);
++
++ string response;
++ client.recvResp(&response);
++
++ TEST(response == sampleAddGoodResponseStream);
++
++ testCallInfo(&client, &server);
++
++ client.hangup();
++
++ server.runOnce(&eof);
++
++ TEST(eof);
++}
++
++
++
++static void
++testNoWaitCall(registry const& myRegistry) {
++
++ string const sampleAddGoodCallStream(
++ packetStart +
++ xmlPrologue +
++ "<methodCall>\r\n"
++ "<methodName>sample.add</methodName>\r\n"
++ "<params>\r\n"
++ "<param><value><i4>5</i4></value></param>\r\n"
++ "<param><value><i4>7</i4></value></param>\r\n"
++ "</params>\r\n"
++ "</methodCall>\r\n" +
++ packetEnd
++ );
++
++
++ string const sampleAddGoodResponseStream(
++ packetStart +
++ xmlPrologue +
++ "<methodResponse>\r\n"
++ "<params>\r\n"
++ "<param><value><i4>12</i4></value></param>\r\n"
++ "</params>\r\n"
++ "</methodResponse>\r\n" +
++ packetEnd
++ );
++
++ client client;
++
++ serverPstreamConn server(serverPstreamConn::constrOpt()
++ .registryP(&myRegistry)
++ .socketFd(client.serverFd));
++
++ bool eof;
++ bool gotOne;
++ string response;
++
++ server.runOnceNoWait(&eof, &gotOne);
++
++ TEST(!eof);
++ TEST(!gotOne);
++
++ server.runOnceNoWait(&eof);
++
++ TEST(!eof);
++
++ client.sendCall(sampleAddGoodCallStream);
++
++ server.runOnceNoWait(&eof, &gotOne);
++
++ TEST(!eof);
++ TEST(gotOne);
++
++ client.recvResp(&response);
++
++ TEST(response == sampleAddGoodResponseStream);
++
++ client.sendCall(sampleAddGoodCallStream);
++
++ server.runOnce(&eof);
++
++ TEST(!eof);
++ client.recvResp(&response);
++ TEST(response == sampleAddGoodResponseStream);
++
++ client.hangup();
++
++ server.runOnce(&eof);
++
++ TEST(eof);
++}
++
++
++
++static void
++testMultiRpcRunNoRpc(registry const& myRegistry) {
++
++ client client;
++
++ serverPstreamConn server(serverPstreamConn::constrOpt()
++ .registryP(&myRegistry)
++ .socketFd(client.serverFd));
++
++ client.hangup();
++
++ server.run();
++}
++
++
++
++static void
++testMultiRpcRunOneRpc(registry const& myRegistry) {
++
++ string const sampleAddGoodCallStream(
++ packetStart +
++ xmlPrologue +
++ "<methodCall>\r\n"
++ "<methodName>sample.add</methodName>\r\n"
++ "<params>\r\n"
++ "<param><value><i4>5</i4></value></param>\r\n"
++ "<param><value><i4>7</i4></value></param>\r\n"
++ "</params>\r\n"
++ "</methodCall>\r\n" +
++ packetEnd
++ );
++
++
++ string const sampleAddGoodResponseStream(
++ packetStart +
++ xmlPrologue +
++ "<methodResponse>\r\n"
++ "<params>\r\n"
++ "<param><value><i4>12</i4></value></param>\r\n"
++ "</params>\r\n"
++ "</methodResponse>\r\n" +
++ packetEnd
++ );
++
++ client client;
++
++ serverPstreamConn server(serverPstreamConn::constrOpt()
++ .registryP(&myRegistry)
++ .socketFd(client.serverFd));
++
++
++ client.sendCall(sampleAddGoodCallStream);
++ client.hangup();
++
++ int interrupt;
++
++ interrupt = 1;
++ server.run(&interrupt); // Returns without reading socket
++
++ interrupt = 0;
++ server.run(&interrupt); // Does the buffered RPC
++
++ string response;
++ client.recvResp(&response);
++
++ TEST(response == sampleAddGoodResponseStream);
++}
++
++
++
+ class serverPstreamConnTestSuite : public testSuite {
+
+ public:
+@@ -97,14 +644,12 @@ public:
+ return "serverPstreamConnTestSuite";
+ }
+ virtual void runtests(unsigned int const) {
+- int const devNullFd(open("/dev/null", 0));
+-
+- if (devNullFd < 0)
+- throwf("Failed to open /dev/null, needed for test.");
+-
+ registry myRegistry;
+
+- myRegistry.addMethod("sample.add", methodPtr(new sampleAddMethod));
++ myRegistry.addMethod("sample.add",
++ methodPtr(new sampleAddMethod));
++ myRegistry.addMethod("test.callinfo",
++ methodPtr(new testCallInfoMethod));
+
+ registryPtr myRegistryP(new registry);
+
+@@ -125,43 +670,140 @@ public:
+ .registryP(&myRegistry));
+ );
+
+- EXPECT_ERROR( // No such file descriptor
+- serverPstreamConn server(serverPstreamConn::constrOpt()
+- .registryP(&myRegistry)
+- .socketFd(37));
+- );
++ testEmptyStream(myRegistry);
++
++ testBrokenPacket(myRegistry);
++
++ testEmptyPacket(myRegistry);
++
++ testNormalCall(myRegistry);
++
++ testNoWaitCall(myRegistry);
++
++ testMultiRpcRunNoRpc(myRegistry);
++
++ testMultiRpcRunOneRpc(myRegistry);
++ }
++};
++
++
++
++static void
++testMultiConnInterrupt(registry const& myRegistry) {
++
++ // We use a nonexistent file descriptor, but the server won't
++ // ever access it, so it won't know.
++
++ serverPstream server(serverPstream::constrOpt()
++ .registryP(&myRegistry)
++ .socketFd(37));
++
++ int interrupt(1); // interrupt immediately
++
++ server.runSerial(&interrupt);
++}
++
++
++
++class derivedServer : public xmlrpc_c::serverPstream {
++public:
++ derivedServer(serverPstream::constrOpt const& constrOpt) :
++ serverPstream(constrOpt),
++ info("this is my derived server") {}
++
++ string const info;
++};
++
++
++
++class multiTestCallInfoMethod : public method2 {
++
++// The test isn't sophisticated enough actually to do an RPC, so this
++// code never runs. We just want to see if it compiles.
++
++public:
++ virtual void
++ execute(paramList const& paramList,
++ const callInfo * const callInfoPtr,
++ value * const retvalP) {
++
++ const callInfo_serverPstream * const callInfoP(
++ dynamic_cast<const callInfo_serverPstream *>(callInfoPtr));
++
++ TEST(callInfoP != NULL);
+
+- {
+- serverPstreamConn server(serverPstreamConn::constrOpt()
+- .registryP(&myRegistry)
+- .socketFd(devNullFd));
++ paramList.verifyEnd(0);
+
+- bool eof;
+- server.runOnce(&eof);
+- TEST(eof);
+- }
+- {
+- int fd;
+- createTestFile("junk", &fd);
++ derivedServer * const derivedServerP(
++ dynamic_cast<derivedServer *>(callInfoP->serverP));
+
+- serverPstreamConn server(serverPstreamConn::constrOpt()
+- .registryP(&myRegistry)
+- .socketFd(fd));
++ TEST(derivedServerP->info == string("this is my derived server"));
++
++ TEST(callInfoP->clientAddr.sa_family == AF_INET);
++ TEST(callInfoP->clientAddrSize >= sizeof(struct sockaddr_in));
++
++ *retvalP = value_nil();
++ }
++};
++
++static void
++testMultiConnCallInfo() {
++
++ registry myRegistry;
++
++ myRegistry.addMethod("testCallInfo",
++ methodPtr(new multiTestCallInfoMethod));
++
++ derivedServer server(serverPstream::constrOpt()
++ .registryP(&myRegistry)
++ .socketFd(37));
++}
++
++
++
++class multiConnServerTestSuite : public testSuite {
++
++public:
++ virtual string suiteName() {
++ return "multiConnServerTestSuite";
++ }
++ virtual void runtests(unsigned int const) {
++ registry myRegistry;
++
++ myRegistry.addMethod("sample.add",
++ methodPtr(new sampleAddMethod));
++
++ registryPtr myRegistryP(new registry);
++
++ myRegistryP->addMethod("sample.add", methodPtr(new sampleAddMethod));
++
++ EXPECT_ERROR( // Empty options
++ serverPstream::constrOpt opt;
++ serverPstream server(opt);
++ );
+
+- bool eof;
++ EXPECT_ERROR( // No registry
++ serverPstream server(serverPstream::constrOpt()
++ .socketFd(3));
++ );
+
+- EXPECT_ERROR( // EOF in the middle of a packet
+- server.runOnce(&eof);
+- );
+- close(fd);
+- }
++ EXPECT_ERROR( // No socket fd
++ serverPstream server(serverPstream::constrOpt()
++ .registryP(&myRegistry));
++ );
++
++ testMultiConnInterrupt(myRegistry);
+
+- close(devNullFd);
++ testMultiConnCallInfo();
+ }
+ };
+
+
+
++} // unnamed namespace
++
++
++
+ string
+ serverPstreamTestSuite::suiteName() {
+ return "serverPstreamTestSuite";
+@@ -173,5 +815,6 @@ serverPstreamTestSuite::runtests(unsigned int const indentation) {
+
+ serverPstreamConnTestSuite().run(indentation + 1);
+
++ multiConnServerTestSuite().run(indentation + 1);
+ }
+
+diff --git a/libs/xmlrpc-c/src/cpp/test/test.cpp b/libs/xmlrpc-c/src/cpp/test/test.cpp
+index c92653f..e632595 100644
+--- a/libs/xmlrpc-c/src/cpp/test/test.cpp
++++ b/libs/xmlrpc-c/src/cpp/test/test.cpp
+@@ -4,6 +4,7 @@
+ #include <vector>
+ #include <sstream>
+ #include <memory>
++#include <cstring>
+ #include <time.h>
+
+ #include "xmlrpc-c/girerr.hpp"
+@@ -13,6 +14,9 @@ using girerr::error;
+ #include "xmlrpc-c/oldcppwrapper.hpp"
+ #include "xmlrpc-c/registry.hpp"
+
++#include "base64.hpp"
++#include "xml.hpp"
++#include "value.hpp"
+ #include "testclient.hpp"
+ #include "registry.hpp"
+ #include "server_abyss.hpp"
+@@ -189,7 +193,7 @@ void test_value (void) {
+ XmlRpcValue::makeArray().getArray();
+ XmlRpcValue::makeStruct().getStruct();
+
+- // Test Base64 values.
++ // Test byte string values.
+ const unsigned char *b64_data;
+ size_t b64_len;
+ XmlRpcValue val6 = XmlRpcValue::makeBase64((unsigned char*) "a\0\0b", 4);
+@@ -216,7 +220,7 @@ void test_value (void) {
+ TEST(strct.structSize() == 2);
+ TEST(strct.structHasKey("bar"));
+ TEST(!strct.structHasKey("nosuch"));
+- for (size_t i = 0; i < strct.structSize(); i++) {
++ for (int i = 0; i < (int)strct.structSize(); ++i) {
+ string key;
+ XmlRpcValue value;
+ strct.structGetKeyAndValue(i, key, value);
+@@ -240,285 +244,66 @@ testXmlRpcCpp() {
+
+
+
+-class intTestSuite : public testSuite {
+-public:
+- virtual string suiteName() {
+- return "intTestSuite";
+- }
+- virtual void runtests(unsigned int const) {
+- value_int int1(7);
+- TEST(static_cast<int>(int1) == 7);
+- value_int int2(-7);
+- TEST(static_cast<int>(int2) == -7);
+- value val1(int1);
+- TEST(val1.type() == value::TYPE_INT);
+- value_int int3(val1);
+- TEST(static_cast<int>(int3) == 7);
+- try {
+- value_int int4(value_double(3.7));
+- TEST_FAILED("invalid cast double-int suceeded");
+- } catch (error) {}
+- }
+-};
+-
+-
+-
+-class doubleTestSuite : public testSuite {
+-public:
+- virtual string suiteName() {
+- return "doubleTestSuite";
+- }
+- virtual void runtests(unsigned int const) {
+- value_double double1(3.14);
+- TEST(static_cast<double>(double1) == 3.14);
+- value val1(double1);
+- TEST(val1.type() == value::TYPE_DOUBLE);
+- value_double double2(val1);
+- TEST(static_cast<double>(double2) == 3.14);
+- try {
+- value_double double4(value_int(4));
+- TEST_FAILED("invalid cast int-double suceeded");
+- } catch (error) {}
+- }
+-};
+-
+-
+-
+-class booleanTestSuite : public testSuite {
+-public:
+- virtual string suiteName() {
+- return "booleanTestSuite";
+- }
+- virtual void runtests(unsigned int const) {
+- value_boolean boolean1(true);
+- TEST(static_cast<bool>(boolean1) == true);
+- value_boolean boolean2(false);
+- TEST(static_cast<bool>(boolean2) == false);
+- value val1(boolean1);
+- TEST(val1.type() == value::TYPE_BOOLEAN);
+- value_boolean boolean3(val1);
+- TEST(static_cast<bool>(boolean3) == true);
+- try {
+- value_boolean boolean4(value_int(4));
+- TEST_FAILED("invalid cast int-boolean suceeded");
+- } catch (error) {}
+- }
+-};
+-
+-
+-
+-class datetimeTestSuite : public testSuite {
+-public:
+- virtual string suiteName() {
+- return "datetimeTestSuite";
+- }
+- virtual void runtests(unsigned int const) {
+- time_t const testTime(900684535);
+- value_datetime datetime1("19980717T14:08:55");
+- TEST(static_cast<time_t>(datetime1) == testTime);
+- value_datetime datetime2(testTime);
+- TEST(static_cast<time_t>(datetime2) == testTime);
+- value val1(datetime1);
+- TEST(val1.type() == value::TYPE_DATETIME);
+- value_datetime datetime3(val1);
+- TEST(static_cast<time_t>(datetime3) == testTime);
+- try {
+- value_datetime datetime4(value_int(4));
+- TEST_FAILED("invalid cast int-datetime suceeded");
+- } catch (error) {}
+- }
+-};
+-
+-
+-
+-class stringTestSuite : public testSuite {
+-public:
+- virtual string suiteName() {
+- return "stringTestSuite";
+- }
+- virtual void runtests(unsigned int const) {
+- value_string string1("hello world");
+- TEST(static_cast<string>(string1) == "hello world");
+- value_string string2("embedded\0null");
+- TEST(static_cast<string>(string2) == "embedded\0null");
+- value val1(string1);
+- TEST(val1.type() == value::TYPE_STRING);
+- value_string string3(val1);
+- TEST(static_cast<string>(string3) == "hello world");
+- try {
+- value_string string4(value_int(4));
+- TEST_FAILED("invalid cast int-string succeeded");
+- } catch (error) {}
+- value_string string5("hello world", value_string::nlCode_all);
+- TEST(static_cast<string>(string5) == "hello world");
+- value_string string6("hello\nthere\rworld\r\n\n",
+- value_string::nlCode_all);
+- TEST(static_cast<string>(string6) == "hello\nthere\nworld\n\n");
+- TEST(string6.crlfValue() == "hello\r\nthere\r\nworld\r\n\r\n");
+- value_string string7("hello\nthere\rworld\r\n\n",
+- value_string::nlCode_lf);
+- TEST(static_cast<string>(string7) == "hello\nthere\rworld\r\n\n");
+- }
+-};
+-
+-
+-
+-class bytestringTestSuite : public testSuite {
+-public:
+- virtual string suiteName() {
+- return "bytestringTestSuite";
+- }
+- virtual void runtests(unsigned int const) {
+- unsigned char bytestringArray[] = {0x10, 0x11, 0x12, 0x13, 0x14};
+- vector<unsigned char>
+- bytestringData(&bytestringArray[0], &bytestringArray[4]);
+- value_bytestring bytestring1(bytestringData);
+-
+- vector<unsigned char> const dataReadBack1(
+- bytestring1.vectorUcharValue());
+- TEST(dataReadBack1 == bytestringData);
+- value val1(bytestring1);
+- TEST(val1.type() == value::TYPE_BYTESTRING);
+- value_bytestring bytestring2(val1);
+- vector<unsigned char> const dataReadBack2(
+- bytestring2.vectorUcharValue());
+- TEST(dataReadBack2 == bytestringData);
+- try {
+- value_bytestring bytestring4(value_int(4));
+- TEST_FAILED("invalid cast int-bytestring suceeded");
+- } catch (error) {}
+- }
+-};
+-
+-
+-
+-class nilTestSuite : public testSuite {
+-public:
+- virtual string suiteName() {
+- return "nilTestSuite";
+- }
+- virtual void runtests(unsigned int const) {
+- value_nil nil1;
+- value val1(nil1);
+- TEST(val1.type() == value::TYPE_NIL);
+- value_nil nil2(val1);
+- try {
+- value_nil nil4(value_int(4));
+- TEST_FAILED("invalid cast int-nil suceeded");
+- } catch (error) {}
+- }
+-};
+-
+-
+-
+-class i8TestSuite : public testSuite {
+-public:
+- virtual string suiteName() {
+- return "i8TestSuite";
+- }
+- virtual void runtests(unsigned int const) {
+- value_i8 int1(7);
+- TEST(static_cast<xmlrpc_int64>(int1) == 7);
+- value_i8 int2(-7);
+- TEST(static_cast<xmlrpc_int64>(int2) == -7);
+- value_i8 int5(1ull << 40);
+- TEST(static_cast<xmlrpc_int64>(int5) == (1ull << 40));
+- value val1(int1);
+- TEST(val1.type() == value::TYPE_I8);
+- value_i8 int3(val1);
+- TEST(static_cast<xmlrpc_int64>(int3) == 7);
+- try {
+- value_i8 int4(value_double(3.7));
+- TEST_FAILED("invalid cast double-i8 suceeded");
+- } catch (error) {}
+- }
+-};
+-
+-
+-
+-class structTestSuite : public testSuite {
+-public:
+- virtual string suiteName() {
+- return "structTestSuite";
+- }
+- virtual void runtests(unsigned int const) {
+- map<string, value> structData;
+- pair<string, value> member("the_integer", value_int(9));
+- structData.insert(member);
+-
+- value_struct struct1(structData);
+-
+- map<string, value> dataReadBack(struct1);
+-
+- TEST(static_cast<int>(value_int(dataReadBack["the_integer"])) == 9);
+-
+- value val1(struct1);
+- TEST(val1.type() == value::TYPE_STRUCT);
+- value_struct struct2(val1);
+- try {
+- value_struct struct4(value_int(4));
+- TEST_FAILED("invalid cast int-struct suceeded");
+- } catch (error) {}
+- }
+-};
+-
+-
+-
+-class arrayTestSuite : public testSuite {
+-public:
+- virtual string suiteName() {
+- return "arrayTestSuite";
+- }
+- virtual void runtests(unsigned int const) {
+- vector<value> arrayData;
+- arrayData.push_back(value_int(7));
+- arrayData.push_back(value_double(2.78));
+- arrayData.push_back(value_string("hello world"));
+- value_array array1(arrayData);
+-
+- TEST(array1.size() == 3);
+- vector<value> dataReadBack1(array1.vectorValueValue());
+- TEST(dataReadBack1[0].type() == value::TYPE_INT);
+- TEST(static_cast<int>(value_int(dataReadBack1[0])) == 7);
+- TEST(dataReadBack1[1].type() == value::TYPE_DOUBLE);
+- TEST(static_cast<double>(value_double(dataReadBack1[1])) == 2.78);
+- TEST(dataReadBack1[2].type() == value::TYPE_STRING);
+- TEST(static_cast<string>(value_string(dataReadBack1[2])) ==
+- "hello world");
+-
+- value val1(array1);
+- TEST(val1.type() == value::TYPE_ARRAY);
+- value_array array2(val1);
+- TEST(array2.size() == 3);
+- try {
+- value_array array4(value_int(4));
+- TEST_FAILED("invalid cast int-array suceeded");
+- } catch (error) {}
+- }
+-};
++static void
++buildParamListWithAdd(paramList * const paramListP,
++ time_t const timeFuture) {
++
++ paramListP->add(value_int(7));
++ paramListP->add(value_boolean(true)).add(value_double(3.14));
++ time_t const timeZero(0);
++ paramListP->add(value_datetime(timeZero));
++ paramListP->add(value_datetime(timeFuture));
++ paramListP->add(value_string("hello world"));
++ unsigned char bytestringArray[] = {0x10, 0x11, 0x12, 0x13, 0x14};
++ vector<unsigned char>
++ bytestringData(&bytestringArray[0], &bytestringArray[4]);
++ paramListP->add(value_bytestring(bytestringData));
++ vector<value> arrayData;
++ arrayData.push_back(value_int(7));
++ arrayData.push_back(value_double(2.78));
++ arrayData.push_back(value_string("hello world"));
++ paramListP->add(value_array(arrayData));
++ map<string, value> structData;
++ pair<string, value> member("the_integer", value_int(9));
++ structData.insert(member);
++ paramListP->add(value_struct(structData));
++ paramListP->add(value_nil());
++ paramListP->add(value_i8((xmlrpc_int64)UINT_MAX + 1));
++}
+
+
+
+-class valueTestSuite : public testSuite {
++static void
++verifyParamList(paramList const& paramList,
++ time_t const timeFuture) {
++
++ TEST(paramList.size() == 11);
++
++ TEST(paramList.getInt(0) == 7);
++ TEST(paramList.getInt(0, 7) == 7);
++ TEST(paramList.getInt(0, -5, 7) == 7);
++ TEST(paramList.getBoolean(1) == true);
++ TEST(paramList.getDouble(2) == 3.14);
++ TEST(paramList.getDouble(2, 1) == 3.14);
++ TEST(paramList.getDouble(2, 1, 4) == 3.14);
++ time_t const timeZero(0);
++ TEST(paramList.getDatetime_sec(3) == timeZero);
++ TEST(paramList.getDatetime_sec(3, paramList::TC_ANY) == timeZero);
++ TEST(paramList.getDatetime_sec(3, paramList::TC_NO_FUTURE)
++ == timeZero);
++ TEST(paramList.getDatetime_sec(4, paramList::TC_NO_PAST)
++ == timeFuture);
++ TEST(paramList.getString(5) == "hello world");
++ TEST(paramList.getBytestring(6)[0] == 0x10);
++ TEST(paramList.getArray(7).size() == 3);
++ TEST(paramList.getArray(7, 3).size() == 3);
++ TEST(paramList.getArray(7, 1, 3).size() == 3);
++ paramList.getStruct(8)["the_integer"];
++ paramList.getNil(9);
++ TEST(paramList.getI8(10) == (xmlrpc_int64)UINT_MAX + 1);
++ paramList.verifyEnd(11);
++}
+
+-public:
+- virtual string suiteName() {
+- return "valueTestSuite";
+- }
+- virtual void runtests(unsigned int const indentation) {
+-
+- intTestSuite().run(indentation+1);
+- doubleTestSuite().run(indentation+1);
+- booleanTestSuite().run(indentation+1);
+- datetimeTestSuite().run(indentation+1);
+- stringTestSuite().run(indentation+1);
+- bytestringTestSuite().run(indentation+1);
+- nilTestSuite().run(indentation+1);
+- i8TestSuite().run(indentation+1);
+- structTestSuite().run(indentation+1);
+- arrayTestSuite().run(indentation+1);
+- }
+-};
+
+
+ class paramListTestSuite : public testSuite {
+@@ -529,60 +314,24 @@ public:
+ }
+ virtual void runtests(unsigned int const) {
+
++ time_t const timeFuture(time(NULL)+100);
++
+ paramList paramList1;
+ TEST(paramList1.size() == 0);
+
+- paramList1.add(value_int(7));
+- paramList1.add(value_boolean(true));
+- paramList1.add(value_double(3.14));
+- time_t const timeZero(0);
+- paramList1.add(value_datetime(timeZero));
+- time_t const timeFuture(time(NULL)+100);
+- paramList1.add(value_datetime(timeFuture));
+- paramList1.add(value_string("hello world"));
+- unsigned char bytestringArray[] = {0x10, 0x11, 0x12, 0x13, 0x14};
+- vector<unsigned char>
+- bytestringData(&bytestringArray[0], &bytestringArray[4]);
+- paramList1.add(value_bytestring(bytestringData));
+- vector<value> arrayData;
+- arrayData.push_back(value_int(7));
+- arrayData.push_back(value_double(2.78));
+- arrayData.push_back(value_string("hello world"));
+- paramList1.add(value_array(arrayData));
+- map<string, value> structData;
+- pair<string, value> member("the_integer", value_int(9));
+- structData.insert(member);
+- paramList1.add(value_struct(structData));
+- paramList1.add(value_nil());
+- paramList1.add(value_i8((xmlrpc_int64)UINT_MAX + 1));
+-
+- TEST(paramList1.size() == 11);
+-
+- TEST(paramList1.getInt(0) == 7);
+- TEST(paramList1.getInt(0, 7) == 7);
+- TEST(paramList1.getInt(0, -5, 7) == 7);
+- TEST(paramList1.getBoolean(1) == true);
+- TEST(paramList1.getDouble(2) == 3.14);
+- TEST(paramList1.getDouble(2, 1) == 3.14);
+- TEST(paramList1.getDouble(2, 1, 4) == 3.14);
+- TEST(paramList1.getDatetime_sec(3) == 0);
+- TEST(paramList1.getDatetime_sec(3, paramList::TC_ANY) == timeZero);
+- TEST(paramList1.getDatetime_sec(3, paramList::TC_NO_FUTURE)
+- == timeZero);
+- TEST(paramList1.getDatetime_sec(4, paramList::TC_NO_PAST)
+- == timeFuture);
+- TEST(paramList1.getString(5) == "hello world");
+- TEST(paramList1.getBytestring(6)[0] == 0x10);
+- TEST(paramList1.getArray(7).size() == 3);
+- TEST(paramList1.getArray(7, 3).size() == 3);
+- TEST(paramList1.getArray(7, 1, 3).size() == 3);
+- paramList1.getStruct(8)["the_integer"];
+- paramList1.getNil(9);
+- TEST(paramList1.getI8(10) == (xmlrpc_int64)UINT_MAX + 1);
+- paramList1.verifyEnd(11);
++ buildParamListWithAdd(¶mList1, timeFuture);
++
++ verifyParamList(paramList1, timeFuture);
+
+ paramList paramList2(5);
+ TEST(paramList2.size() == 0);
++
++ paramList2.addc(7);
++ paramList2.addc(true).addc(3.14);
++ TEST(paramList2.size() == 3);
++ TEST(paramList2.getInt(0) == 7);
++ TEST(paramList2.getBoolean(1) == true);
++ TEST(paramList2.getDouble(2) == 3.14);
+ }
+ };
+
+@@ -604,13 +353,13 @@ main(int argc, char**) {
+
+ try {
+ // Add your test suites here.
++ base64TestSuite().run(0);
++ xmlTestSuite().run(0);
+ valueTestSuite().run(0);
+ paramListTestSuite().run(0);
+ registryTestSuite().run(0);
+ serverAbyssTestSuite().run(0);
+-#ifndef WIN32
+ serverPstreamTestSuite().run(0);
+-#endif
+ clientTestSuite().run(0);
+
+ testXmlRpcCpp();
+diff --git a/libs/xmlrpc-c/src/cpp/test/testclient.cpp b/libs/xmlrpc-c/src/cpp/test/testclient.cpp
+index 6eadf8d..f8a2b3a 100644
+--- a/libs/xmlrpc-c/src/cpp/test/testclient.cpp
++++ b/libs/xmlrpc-c/src/cpp/test/testclient.cpp
+@@ -32,10 +32,12 @@ using namespace std;
+
+
+
++namespace {
++
+ class sampleAddMethod : public method {
+ public:
+ sampleAddMethod() {
+- this->_signature = "ii";
++ this->_signature = "i:ii";
+ this->_help = "This method adds two integers together";
+ }
+ void
+@@ -78,7 +80,15 @@ public:
+
+
+ class clientXmlTransport_direct : public clientXmlTransport {
++/*----------------------------------------------------------------------------
++ Though this fills the shoes of a client XML transport, it's really a
++ simulation, because it doesn't transport anything anywhere. The call()
++ method, which is supposed to transport a call to a server and then
++ transport the response back, actually just executes the method itself.
+
++ Part of a carriage parameter for a transport of this class is the handle
++ of a method registry, so the transport knows how to execute the method.
++-----------------------------------------------------------------------------*/
+ public:
+ void
+ call(xmlrpc_c::carriageParm * const carriageParmP,
+@@ -158,6 +168,64 @@ public:
+
+
+
++class MyRpc : public rpc {
++
++public:
++ MyRpc(std::string const methodName,
++ paramList const& paramList) :
++ rpc(methodName, paramList) {}
++
++ void
++ progress(struct xmlrpc_progress_data const& data) const {
++
++ // The way the tests are currently written, this never actually
++ // runs; we're just testing for ability to compile.
++
++ cout << "Progress of " << this << ": "
++ << data.call.total << " "
++ << data.call.now << " "
++ << data.response.total << " "
++ << data.response.now
++ << endl;
++ }
++};
++
++
++
++class clientDerivedRpcTestSuite : public testSuite {
++/*----------------------------------------------------------------------------
++ The object of this class tests the ability to derive a class
++ from xmlrpc_c::rpc in order to override certain methods.
++-----------------------------------------------------------------------------*/
++public:
++ virtual string suiteName() {
++ return "clientDerivedRpcTestSuite";
++ }
++ virtual void runtests(unsigned int const ) {
++ registry myRegistry;
++
++ myRegistry.addMethod("sample.add", methodPtr(new sampleAddMethod));
++
++ carriageParm_direct carriageParmDirect(&myRegistry);
++ clientXmlTransport_direct transportDirect;
++ client_xml clientDirect(&transportDirect);
++ paramList paramListSampleAdd;
++ paramListSampleAdd.add(value_int(5));
++ paramListSampleAdd.add(value_int(7));
++ {
++ /* Test a successful RPC */
++ rpcPtr rpcSampleAddP(new MyRpc("sample.add", paramListSampleAdd));
++ rpcSampleAddP->call(&clientDirect, &carriageParmDirect);
++ TEST(rpcSampleAddP->isFinished());
++ TEST(rpcSampleAddP->isSuccessful());
++ value_int const resultDirect(rpcSampleAddP->getResult());
++ TEST(static_cast<int>(resultDirect) == 12);
++ }
++ }
++};
++
++
++
+ class clientDirectTestSuite : public testSuite {
+ /*----------------------------------------------------------------------------
+ The object of this class tests the client facilities by using a
+@@ -241,6 +309,8 @@ public:
+ // Same as above
+
+ clientDirectAsyncTestSuite().run(indentation+1);
++
++ clientDerivedRpcTestSuite().run(indentation+1);
+ }
+ };
+
+@@ -263,6 +333,7 @@ public:
+ .network_interface("eth0")
+ .no_ssl_verifypeer(true)
+ .no_ssl_verifyhost(true)
++ .dont_advertise(true)
+ .user_agent("my user agent")
+ .ssl_cert("/etc/sslcert")
+ .sslcerttype("PEM")
+@@ -278,6 +349,10 @@ public:
+ .randomfile("/dev/random")
+ .egdsocket("/tmp/egdsocket")
+ .ssl_cipher_list("RC4-SHA:DEFAULT")
++ .proxy("example.com")
++ .proxy_port(8080)
++ .proxy_userpwd("password")
++ .proxy_type(XMLRPC_HTTPPROXY_SOCKS5)
+ );
+
+ clientXmlTransport_curl transport5(
+@@ -831,6 +906,10 @@ public:
+
+
+
++} // unnamed namespace
++
++
++
+ string
+ clientTestSuite::suiteName() {
+ return "clientTestSuite";
+diff --git a/libs/xmlrpc-c/src/cpp/value.cpp b/libs/xmlrpc-c/src/cpp/value.cpp
+index 6dcba93..3af785c 100644
+--- a/libs/xmlrpc-c/src/cpp/value.cpp
++++ b/libs/xmlrpc-c/src/cpp/value.cpp
+@@ -64,6 +64,22 @@ public:
+ this->valueP = xmlrpc_datetime_new_sec(&env.env_c, cppvalue);
+ throwIfError(env);
+ }
++#if XMLRPC_HAVE_TIMEVAL
++ cDatetimeValueWrapper(struct timeval const cppvalue) {
++ env_wrap env;
++
++ this->valueP = xmlrpc_datetime_new_timeval(&env.env_c, cppvalue);
++ throwIfError(env);
++ }
++#endif
++#if XMLRPC_HAVE_TIMESPEC
++ cDatetimeValueWrapper(struct timespec const cppvalue) {
++ env_wrap env;
++
++ this->valueP = xmlrpc_datetime_new_timespec(&env.env_c, cppvalue);
++ throwIfError(env);
++ }
++#endif
+ ~cDatetimeValueWrapper() {
+ xmlrpc_DECREF(this->valueP);
+ }
+@@ -93,13 +109,13 @@ public:
+
+ namespace xmlrpc_c {
+
+-value::value() {
++value::value() { // default constructor
+ this->cValueP = NULL;
+ }
+
+
+
+-value::value(xmlrpc_value * const valueP) { // default constructor
++value::value(xmlrpc_value * const valueP) {
+
+ this->instantiate(valueP);
+ }
+@@ -135,7 +151,7 @@ value::~value() {
+ bool
+ value::isInstantiated() const {
+ /*----------------------------------------------------------------------------
+- Return whether the value is actually a value, as opposed to a placeholder
++ Return whether the object is actually a value, as opposed to a placeholder
+ variable waiting to be assigned a value.
+ -----------------------------------------------------------------------------*/
+ return (this->cValueP != NULL);
+@@ -144,6 +160,20 @@ value::isInstantiated() const {
+
+
+ void
++value::validateInstantiated() const { // private
++/*----------------------------------------------------------------------------
++ Throw an exception if the object is just a placeholder, rather than an
++ actual XML-RPC value.
++-----------------------------------------------------------------------------*/
++ if (!this->cValueP)
++ throw(error("Reference to xmlrpc_c::value that has not been "
++ "instantiated. (xmlrpc_c::value::isInstantiated may be "
++ "useful in diagnosing)"));
++}
++
++
++
++void
+ value::instantiate(xmlrpc_value * const valueP) {
+
+ xmlrpc_INCREF(valueP);
+@@ -168,6 +198,8 @@ value::appendToCArray(xmlrpc_value * const arrayP) const {
+ /*----------------------------------------------------------------------------
+ Append this value to the C array 'arrayP'.
+ ----------------------------------------------------------------------------*/
++ this->validateInstantiated();
++
+ env_wrap env;
+
+ xmlrpc_array_append_item(&env.env_c, arrayP, this->cValueP);
+@@ -183,6 +215,8 @@ value::addToCStruct(xmlrpc_value * const structP,
+ /*----------------------------------------------------------------------------
+ Add this value to the C array 'arrayP' with key 'key'.
+ ----------------------------------------------------------------------------*/
++ this->validateInstantiated();
++
+ env_wrap env;
+
+ xmlrpc_struct_set_value_n(&env.env_c, structP,
+@@ -196,8 +230,11 @@ value::addToCStruct(xmlrpc_value * const structP,
+
+ value::type_t
+ value::type() const {
++
++ this->validateInstantiated();
++
+ /* You'd think we could just cast from xmlrpc_type to
+- value:type_t, but Gcc warns if we do that. So we have to do this
++ value::type_t, but Gcc warns if we do that. So we have to do this
+ even messier union nonsense.
+ */
+ union {
+@@ -212,6 +249,15 @@ value::type() const {
+
+
+
++ostream& operator<<(ostream& out, value::type_t const& type) {
++
++ string typeName;
++
++ return out << string(xmlrpc_type_name((xmlrpc_type)type));
++}
++
++
++
+ value_int::value_int(int const cppvalue) {
+
+ class cWrapper {
+@@ -249,6 +295,8 @@ value_int::value_int(xmlrpc_c::value const baseValue) {
+
+ value_int::operator int() const {
+
++ this->validateInstantiated();
++
+ int retval;
+ env_wrap env;
+
+@@ -260,6 +308,14 @@ value_int::operator int() const {
+
+
+
++int
++value_int::cvalue() const {
++
++ return static_cast<int>(*this);
++}
++
++
++
+ value_double::value_double(double const cppvalue) {
+
+ class cWrapper {
+@@ -295,6 +351,8 @@ value_double::value_double(xmlrpc_c::value const baseValue) {
+
+ value_double::operator double() const {
+
++ this->validateInstantiated();
++
+ double retval;
+
+ env_wrap env;
+@@ -307,6 +365,14 @@ value_double::operator double() const {
+
+
+
++double
++value_double::cvalue() const {
++
++ return static_cast<double>(*this);
++}
++
++
++
+ value_boolean::value_boolean(bool const cppvalue) {
+
+ class cWrapper {
+@@ -331,8 +397,21 @@ value_boolean::value_boolean(bool const cppvalue) {
+
+
+
++value_boolean::value_boolean(xmlrpc_c::value const baseValue) {
++
++ if (baseValue.type() != xmlrpc_c::value::TYPE_BOOLEAN)
++ throw(error("Not boolean type. See type() method"));
++ else {
++ this->instantiate(baseValue.cValueP);
++ }
++}
++
++
++
+ value_boolean::operator bool() const {
+
++ this->validateInstantiated();
++
+ xmlrpc_bool retval;
+
+ env_wrap env;
+@@ -345,13 +424,10 @@ value_boolean::operator bool() const {
+
+
+
+-value_boolean::value_boolean(xmlrpc_c::value const baseValue) {
++bool
++value_boolean::cvalue() const {
+
+- if (baseValue.type() != xmlrpc_c::value::TYPE_BOOLEAN)
+- throw(error("Not boolean type. See type() method"));
+- else {
+- this->instantiate(baseValue.cValueP);
+- }
++ return static_cast<bool>(*this);
+ }
+
+
+@@ -393,7 +469,7 @@ value_datetime::value_datetime(time_t const cppvalue) {
+ #if XMLRPC_HAVE_TIMEVAL
+ value_datetime::value_datetime(struct timeval const& cppvalue) {
+
+- cDatetimeValueWrapper wrapper(cppvalue.tv_sec);
++ cDatetimeValueWrapper wrapper(cppvalue);
+
+ this->instantiate(wrapper.valueP);
+ }
+@@ -404,7 +480,7 @@ value_datetime::value_datetime(struct timeval const& cppvalue) {
+ #if XMLRPC_HAVE_TIMESPEC
+ value_datetime::value_datetime(struct timespec const& cppvalue) {
+
+- cDatetimeValueWrapper wrapper(cppvalue.tv_sec);
++ cDatetimeValueWrapper wrapper(cppvalue);
+
+ this->instantiate(wrapper.valueP);
+ }
+@@ -425,6 +501,8 @@ value_datetime::value_datetime(xmlrpc_c::value const baseValue) {
+
+ value_datetime::operator time_t() const {
+
++ this->validateInstantiated();
++
+ time_t retval;
+ env_wrap env;
+
+@@ -436,6 +514,50 @@ value_datetime::operator time_t() const {
+
+
+
++#if XMLRPC_HAVE_TIMEVAL
++
++value_datetime::operator timeval() const {
++
++ this->validateInstantiated();
++
++ struct timeval retval;
++ env_wrap env;
++
++ xmlrpc_read_datetime_timeval(&env.env_c, this->cValueP, &retval);
++ throwIfError(env);
++
++ return retval;
++}
++#endif
++
++
++
++#if XMLRPC_HAVE_TIMESPEC
++
++value_datetime::operator timespec() const {
++
++ this->validateInstantiated();
++
++ struct timespec retval;
++ env_wrap env;
++
++ xmlrpc_read_datetime_timespec(&env.env_c, this->cValueP, &retval);
++ throwIfError(env);
++
++ return retval;
++}
++#endif
++
++
++
++time_t
++value_datetime::cvalue() const {
++
++ return static_cast<time_t>(*this);
++}
++
++
++
+ class cNewStringWrapper {
+ public:
+ xmlrpc_value * valueP;
+@@ -517,6 +639,8 @@ value_string::crlfValue() const {
+ }
+ };
+
++ this->validateInstantiated();
++
+ cWrapper wrapper(this->cValueP);
+
+ return string(wrapper.str, wrapper.length);
+@@ -526,7 +650,7 @@ value_string::crlfValue() const {
+
+ value_string::operator string() const {
+
+- env_wrap env;
++ this->validateInstantiated();
+
+ cStringWrapper adapter(this->cValueP);
+
+@@ -535,6 +659,14 @@ value_string::operator string() const {
+
+
+
++std::string
++value_string::cvalue() const {
++
++ return static_cast<std::string>(*this);
++}
++
++
++
+ value_bytestring::value_bytestring(
+ vector<unsigned char> const& cppvalue) {
+
+@@ -561,6 +693,17 @@ value_bytestring::value_bytestring(
+
+
+
++value_bytestring::value_bytestring(xmlrpc_c::value const baseValue) {
++
++ if (baseValue.type() != xmlrpc_c::value::TYPE_BYTESTRING)
++ throw(error("Not byte string type. See type() method"));
++ else {
++ this->instantiate(baseValue.cValueP);
++ }
++}
++
++
++
+ vector<unsigned char>
+ value_bytestring::vectorUcharValue() const {
+
+@@ -580,6 +723,8 @@ value_bytestring::vectorUcharValue() const {
+ }
+ };
+
++ this->validateInstantiated();
++
+ cWrapper wrapper(this->cValueP);
+
+ return vector<unsigned char>(&wrapper.contents[0],
+@@ -588,9 +733,19 @@ value_bytestring::vectorUcharValue() const {
+
+
+
++vector<unsigned char>
++value_bytestring::cvalue() const {
++
++ return this->vectorUcharValue();
++}
++
++
++
+ size_t
+ value_bytestring::length() const {
+
++ this->validateInstantiated();
++
+ env_wrap env;
+ size_t length;
+
+@@ -602,17 +757,6 @@ value_bytestring::length() const {
+
+
+
+-value_bytestring::value_bytestring(xmlrpc_c::value const baseValue) {
+-
+- if (baseValue.type() != xmlrpc_c::value::TYPE_BYTESTRING)
+- throw(error("Not byte string type. See type() method"));
+- else {
+- this->instantiate(baseValue.cValueP);
+- }
+-}
+-
+-
+-
+ value_array::value_array(vector<xmlrpc_c::value> const& cppvalue) {
+
+ class cWrapper {
+@@ -655,6 +799,8 @@ value_array::value_array(xmlrpc_c::value const baseValue) {
+ vector<xmlrpc_c::value>
+ value_array::vectorValueValue() const {
+
++ this->validateInstantiated();
++
+ env_wrap env;
+
+ unsigned int arraySize;
+@@ -693,9 +839,19 @@ value_array::vectorValueValue() const {
+
+
+
++vector<xmlrpc_c::value>
++value_array::cvalue() const {
++
++ return this->vectorValueValue();
++}
++
++
++
+ size_t
+ value_array::size() const {
+
++ this->validateInstantiated();
++
+ env_wrap env;
+ unsigned int arraySize;
+
+@@ -752,6 +908,8 @@ value_struct::value_struct(xmlrpc_c::value const baseValue) {
+
+ value_struct::operator map<string, xmlrpc_c::value>() const {
+
++ this->validateInstantiated();
++
+ env_wrap env;
+ unsigned int structSize;
+
+@@ -796,6 +954,14 @@ value_struct::operator map<string, xmlrpc_c::value>() const {
+
+
+
++map<string, xmlrpc_c::value>
++value_struct::cvalue() const {
++
++ return static_cast<map<string, xmlrpc_c::value> >(*this);
++}
++
++
++
+ value_nil::value_nil() {
+
+ class cWrapper {
+@@ -831,6 +997,14 @@ value_nil::value_nil(xmlrpc_c::value const baseValue) {
+
+
+
++void *
++value_nil::cvalue() const {
++
++ return NULL;
++}
++
++
++
+ value_i8::value_i8(xmlrpc_int64 const cppvalue) {
+
+ class cWrapper {
+@@ -868,6 +1042,8 @@ value_i8::value_i8(xmlrpc_c::value const baseValue) {
+
+ value_i8::operator xmlrpc_int64() const {
+
++ this->validateInstantiated();
++
+ xmlrpc_int64 retval;
+ env_wrap env;
+
+@@ -879,4 +1055,12 @@ value_i8::operator xmlrpc_int64() const {
+
+
+
++xmlrpc_int64
++value_i8::cvalue() const {
++
++ return static_cast<xmlrpc_int64>(*this);
++}
++
++
++
+ } // namespace
+diff --git a/libs/xmlrpc-c/src/cpp/xml.cpp b/libs/xmlrpc-c/src/cpp/xml.cpp
+index 9c57bf3..79802b9 100644
+--- a/libs/xmlrpc-c/src/cpp/xml.cpp
++++ b/libs/xmlrpc-c/src/cpp/xml.cpp
+@@ -21,14 +21,38 @@ class cValueWrapper {
+ /*----------------------------------------------------------------------------
+ Use an object of this class to set up to remove a reference to an
+ xmlrpc_value object (a C object with manual reference management)
+- at then end of a scope -- even if the scope ends with a throw.
++ at the end of a scope -- even if the scope ends with a throw.
+ -----------------------------------------------------------------------------*/
+ public:
+- xmlrpc_value * valueP;
++ xmlrpc_value * const valueP;
+ cValueWrapper(xmlrpc_value * valueP) : valueP(valueP) {}
+ ~cValueWrapper() { xmlrpc_DECREF(valueP); }
+ };
+
++
++
++class cStringWrapper {
++public:
++ const char * const cString;
++ cStringWrapper(const char * const cString) : cString(cString) {}
++ ~cStringWrapper() { xmlrpc_strfree(cString); }
++};
++
++
++
++class memblockWrapper {
++ xmlrpc_mem_block * const memblockP;
++public:
++ memblockWrapper(xmlrpc_mem_block * const memblockP) :
++ memblockP(memblockP) {}
++
++ ~memblockWrapper() {
++ XMLRPC_MEMBLOCK_FREE(char, memblockP);
++ }
++};
++
++
++
+ xmlrpc_value *
+ cArrayFromParamList(paramList const& paramList) {
+
+@@ -53,6 +77,42 @@ cArrayFromParamList(paramList const& paramList) {
+ return paramArrayP;
+ }
+
++
++
++paramList const
++paramListFromCArray(xmlrpc_value * const cArrayP) {
++
++ paramList retval;
++ env_wrap env;
++
++ unsigned int const nParam(xmlrpc_array_size(&env.env_c, cArrayP));
++
++ if (!env.env_c.fault_occurred) {
++ for (unsigned int i = 0;
++ i < nParam && !env.env_c.fault_occurred;
++ ++i) {
++
++ xmlrpc_value * cParamP;
++
++ xmlrpc_array_read_item(&env.env_c, cArrayP, i, &cParamP);
++
++ if (!env.env_c.fault_occurred) {
++
++ cValueWrapper const paramAuto(cParamP);
++ // Causes xmlrpc_DECREF(cParamP) at end of scope
++
++ retval.add(cParamP);
++ }
++ }
++ }
++ if (env.env_c.fault_occurred)
++ throw(error(env.env_c.fault_string));
++
++ return retval;
++}
++
++
++
+ } // namespace
+
+
+@@ -71,17 +131,6 @@ generateCall(string const& methodName,
+
+ Use dialect 'dialect' of XML-RPC.
+ -----------------------------------------------------------------------------*/
+- class memblockWrapper {
+- xmlrpc_mem_block * const memblockP;
+- public:
+- memblockWrapper(xmlrpc_mem_block * const memblockP) :
+- memblockP(memblockP) {}
+-
+- ~memblockWrapper() {
+- XMLRPC_MEMBLOCK_FREE(char, memblockP);
+- }
+- };
+-
+ xmlrpc_mem_block * callXmlMP;
+ env_wrap env;
+
+@@ -118,6 +167,86 @@ generateCall(string const& methodName,
+
+
+ void
++parseCall(string const& callXml,
++ string * const methodNameP,
++ paramList * const paramListP) {
++
++ env_wrap env;
++ const char * c_methodName;
++ xmlrpc_value * c_paramArrayP;
++
++ xmlrpc_parse_call(&env.env_c, callXml.c_str(), callXml.size(),
++ &c_methodName, &c_paramArrayP);
++
++ if (env.env_c.fault_occurred)
++ throw(error(env.env_c.fault_string));
++ else {
++ cValueWrapper const paramListAuto(c_paramArrayP);
++ // Causes XMLRPC_decref(c_paramArrayP) at end of scope
++ cStringWrapper const methodNameAuto(c_methodName);
++ // Causes xmlrpc_strfree(c_methodName) at end of scope
++
++ *paramListP = paramListFromCArray(c_paramArrayP);
++ *methodNameP = string(c_methodName);
++ }
++}
++
++
++
++void
++generateResponse(rpcOutcome const& outcome,
++ xmlrpc_dialect const dialect,
++ string * const respXmlP) {
++/*----------------------------------------------------------------------------
++ Generate the XML for an XML-RPC resp, given the RPC outcome.
++
++ Use dialect 'dialect' of XML-RPC.
++-----------------------------------------------------------------------------*/
++ xmlrpc_mem_block * respXmlMP;
++ env_wrap env;
++
++ respXmlMP = XMLRPC_MEMBLOCK_NEW(char, &env.env_c, 0);
++ if (!env.env_c.fault_occurred) {
++ memblockWrapper respXmlAuto(respXmlMP);
++ // Makes respXmlMP get freed at end of scope
++
++ if (outcome.succeeded()) {
++ cValueWrapper cResult(outcome.getResult().cValue());
++
++ xmlrpc_serialize_response2(&env.env_c, respXmlMP,
++ cResult.valueP, dialect);
++
++ *respXmlP = string(XMLRPC_MEMBLOCK_CONTENTS(char, respXmlMP),
++ XMLRPC_MEMBLOCK_SIZE(char, respXmlMP));
++ } else {
++ env_wrap cFault;
++
++ xmlrpc_env_set_fault(&cFault.env_c, outcome.getFault().getCode(),
++ outcome.getFault().getDescription().c_str());
++
++ xmlrpc_serialize_fault(&env.env_c, respXmlMP, &cFault.env_c);
++
++ *respXmlP = string(XMLRPC_MEMBLOCK_CONTENTS(char, respXmlMP),
++ XMLRPC_MEMBLOCK_SIZE(char, respXmlMP));
++ }
++ }
++ if (env.env_c.fault_occurred)
++ throw(error(env.env_c.fault_string));
++}
++
++
++
++void
++generateResponse(rpcOutcome const& outcome,
++ string * const respXmlP) {
++
++ generateResponse(outcome, xmlrpc_dialect_i8, respXmlP);
++
++}
++
++
++
++void
+ parseResponse(string const& responseXml,
+ rpcOutcome * const outcomeP) {
+ /*----------------------------------------------------------------------------
+diff --git a/libs/xmlrpc-c/src/double.c b/libs/xmlrpc-c/src/double.c
+index 1968d40..f96728b 100644
+--- a/libs/xmlrpc-c/src/double.c
++++ b/libs/xmlrpc-c/src/double.c
+@@ -3,6 +3,7 @@
+ #include <float.h>
+
+ #include "xmlrpc-c/util.h"
++#include "xmlrpc-c/util_int.h"
+
+ #include "double.h"
+
+@@ -34,8 +35,8 @@ bufferConcat(buffer * const bufferP,
+
+ if (bufferP->bytes) {
+ if (bufferP->next >= bufferP->end) {
+- unsigned int const oldSize = bufferP->end - bufferP->bytes;
+- unsigned int const newSize = oldSize + 64;
++ size_t const oldSize = bufferP->end - bufferP->bytes;
++ size_t const newSize = oldSize + 64;
+ bufferP->bytes = realloc(bufferP->bytes, newSize);
+ bufferP->next = bufferP->bytes + oldSize;
+ bufferP->end = bufferP->bytes + newSize;
+@@ -58,6 +59,23 @@ digitChar(unsigned int const digitValue) {
+
+
+
++static unsigned int
++leadDigit(double const arg,
++ double const precision) {
++/*----------------------------------------------------------------------------
++ Assuming 'arg' has one digit before the decimal point (which may be zero),
++ return that digit.
++
++ We assume the precision of 'arg' is plus or minus 'precision', and bias our
++ estimation of the first digit up. We do that bias in order to bias toward
++ shorter decimal ciphers: It's cleaner to consider 2.9999999 to be 3 than to
++ consider 3 to be 2.999999.
++-----------------------------------------------------------------------------*/
++ return MIN(9, (unsigned int)(arg + precision));
++}
++
++
++
+ static void
+ floatWhole(double const value,
+ buffer * const formattedP,
+@@ -88,7 +106,8 @@ floatWhole(double const value,
+ */
+ leastValue = 0;
+ } else
+- leastValue = (unsigned int)(value - nonLeastAmount * 10);
++ leastValue = leadDigit(value - nonLeastAmount * 10,
++ nonLeastPrecision * 10);
+
+ bufferConcat(formattedP, digitChar(leastValue));
+
+@@ -120,7 +139,7 @@ floatFractionPart(double const value,
+ unsigned int digitValue;
+
+ d *= 10;
+- digitValue = (unsigned int) d;
++ digitValue = leadDigit(d, precision);
+
+ d -= digitValue;
+
+@@ -154,7 +173,7 @@ floatFraction(double const value,
+ precision = DBL_EPSILON;
+
+ while (d > precision) {
+- unsigned int const digitValue = (unsigned int) d;
++ unsigned int const digitValue = leadDigit(d, precision);
+
+ bufferConcat(formattedP, digitChar(digitValue));
+
+diff --git a/libs/xmlrpc-c/src/method.c b/libs/xmlrpc-c/src/method.c
+index cf58b26..467bbbe 100644
+--- a/libs/xmlrpc-c/src/method.c
++++ b/libs/xmlrpc-c/src/method.c
+@@ -10,6 +10,8 @@
+ Contributed to the public domain by its author.
+ =========================================================================*/
+
++#define _XOPEN_SOURCE 600 /* Make sure strdup() is in <string.h> */
++
+ #include "xmlrpc_config.h"
+
+ #include <assert.h>
+@@ -57,6 +59,7 @@ translateTypeSpecifierToName(xmlrpc_env * const envP,
+ "Method registry contains invalid signature "
+ "data. It contains the type specifier '%c'",
+ typeSpecifier);
++ *typeNameP = NULL; /* quiet compiler warning */
+ }
+ }
+
+@@ -175,9 +178,8 @@ parseOneSignature(xmlrpc_env * const envP,
+ }
+ if (envP->fault_occurred)
+ free(signatureP);
+- else
+- *signaturePP = signatureP;
+ }
++ *signaturePP = signatureP;
+ }
+
+
+@@ -210,7 +212,7 @@ listSignatures(xmlrpc_env * const envP,
+ cursorP = &sigListString[0];
+
+ while (!envP->fault_occurred && *cursorP != '\0') {
+- struct xmlrpc_signature * signatureP = NULL;
++ struct xmlrpc_signature * signatureP;
+
+ parseOneSignature(envP, cursorP, &signatureP, &cursorP);
+
+@@ -293,6 +295,8 @@ makeSignatureList(xmlrpc_env * const envP,
+ if (env.fault_occurred)
+ xmlrpc_faultf(envP, "Can't interpret signature string '%s'. %s",
+ signatureString, env.fault_string);
++
++ xmlrpc_env_clean(&env);
+ }
+
+
+@@ -304,6 +308,7 @@ xmlrpc_methodCreate(xmlrpc_env * const envP,
+ void * const userData,
+ const char * const signatureString,
+ const char * const helpText,
++ size_t const stackSize,
+ xmlrpc_methodInfo ** const methodPP) {
+
+ xmlrpc_methodInfo * methodP;
+@@ -319,12 +324,15 @@ xmlrpc_methodCreate(xmlrpc_env * const envP,
+ methodP->methodFnType1 = methodFnType1;
+ methodP->methodFnType2 = methodFnType2;
+ methodP->userData = userData;
+- methodP->helpText = strdup(helpText);
++ methodP->helpText = xmlrpc_strdupsol(helpText);
++ methodP->stackSize = stackSize;
+
+ makeSignatureList(envP, signatureString, &methodP->signatureListP);
+
+- if (envP->fault_occurred)
++ if (envP->fault_occurred) {
++ xmlrpc_strfree(methodP->helpText);
+ free(methodP);
++ }
+
+ *methodPP = methodP;
+ }
+diff --git a/libs/xmlrpc-c/src/method.h b/libs/xmlrpc-c/src/method.h
+index 2ceca75..f1d56cb 100644
+--- a/libs/xmlrpc-c/src/method.h
++++ b/libs/xmlrpc-c/src/method.h
+@@ -65,6 +65,10 @@ typedef struct {
+ /* The method function, if it's type 2. Null if it's not */
+ void * userData;
+ /* Passed to method function */
++ size_t stackSize;
++ /* Amount of stack space 'methodFnType1' or 'methodFnType2' uses.
++ Zero means unspecified.
++ */
+ struct xmlrpc_signatureList * signatureListP;
+ /* Stuff returned by system method system.methodSignature.
+ Empty list doesn't mean there are no valid forms of calling the
+@@ -92,6 +96,7 @@ xmlrpc_methodCreate(xmlrpc_env * const envP,
+ void * const userData,
+ const char * const signatureString,
+ const char * const helpText,
++ size_t const stackSize,
+ xmlrpc_methodInfo ** const methodPP);
+
+ void
+diff --git a/libs/xmlrpc-c/src/parse_value.c b/libs/xmlrpc-c/src/parse_value.c
+index a00b2a1..b40cf47 100644
+--- a/libs/xmlrpc-c/src/parse_value.c
++++ b/libs/xmlrpc-c/src/parse_value.c
+@@ -13,8 +13,10 @@
+ #include "xmlrpc-c/base.h"
+ #include "xmlrpc-c/base_int.h"
+ #include "xmlrpc-c/string_int.h"
++#include "xmlrpc-c/string_number.h"
+ #include "xmlrpc-c/util.h"
+ #include "xmlrpc-c/xmlparser.h"
++#include "parse_datetime.h"
+
+ #include "parse_value.h"
+
+@@ -72,12 +74,12 @@ parseArray(xmlrpc_env * const envP,
+
+ arrayP = xmlrpc_array_new(envP);
+ if (!envP->fault_occurred) {
+- unsigned int const childCount = xml_element_children_size(arrayElemP);
++ size_t const childCount = xml_element_children_size(arrayElemP);
+
+ if (childCount != 1)
+ setParseFault(envP,
+ "<array> element has %u children. Only one <data> "
+- "makes sense.", childCount);
++ "makes sense.", (unsigned int)childCount);
+ else {
+ xml_element * const dataElemP =
+ xml_element_children(arrayElemP)[0];
+@@ -111,11 +113,11 @@ parseName(xmlrpc_env * const envP,
+ xml_element * const nameElemP,
+ xmlrpc_value ** const valuePP) {
+
+- unsigned int const childCount = xml_element_children_size(nameElemP);
++ size_t const childCount = xml_element_children_size(nameElemP);
+
+ if (childCount > 0)
+ setParseFault(envP, "<name> element has %u children. "
+- "Should have none.", childCount);
++ "Should have none.", (unsigned int)childCount);
+ else {
+ const char * const cdata = xml_element_cdata(nameElemP);
+ size_t const cdataSize = xml_element_cdata_size(nameElemP);
+@@ -181,12 +183,12 @@ parseMember(xmlrpc_env * const envP,
+ xmlrpc_value ** const keyPP,
+ xmlrpc_value ** const valuePP) {
+
+- unsigned int const childCount = xml_element_children_size(memberP);
++ size_t const childCount = xml_element_children_size(memberP);
+
+ if (childCount != 2)
+ setParseFault(envP,
+ "<member> element has %u children. Only one <name> and "
+- "one <value> make sense.", childCount);
++ "one <value> make sense.", (unsigned int)childCount);
+ else {
+ xml_element * nameElemP = NULL;
+
+@@ -302,12 +304,12 @@ parseInt(xmlrpc_env * const envP,
+ /* Look for out-of-range errors which didn't produce ERANGE. */
+ if (i < XMLRPC_INT32_MIN)
+ setParseFault(envP,
+- "<int> value %d is below the range allowed "
++ "<int> value %ld is below the range allowed "
+ "by XML-RPC (minimum is %d)",
+ i, XMLRPC_INT32_MIN);
+ else if (i > XMLRPC_INT32_MAX)
+ setParseFault(envP,
+- "<int> value %d is above the range allowed "
++ "<int> value %ld is above the range allowed "
+ "by XML-RPC (maximum is %d)",
+ i, XMLRPC_INT32_MAX);
+ else {
+@@ -581,39 +583,20 @@ parseI8(xmlrpc_env * const envP,
+ "<i8> content '%s' starts with white space", str);
+ else {
+ xmlrpc_int64 i;
+- char * tail;
++ xmlrpc_env env;
+
+- errno = 0;
+- i = strtoll(str, &tail, 10);
++ xmlrpc_env_init(&env);
+
+- if (errno == ERANGE)
+- setParseFault(envP, "<i8> XML element value '%s' represents a "
+- "number beyond the range that "
+- "XML-RPC allows (%d - %d)", str,
+- XMLRPC_INT64_MIN, XMLRPC_INT64_MAX);
+- else if (errno != 0)
+- setParseFault(envP, "unexpected error parsing <i8> XML element "
+- "value '%s'. strtoll() failed with errno %d (%s)",
+- str, errno, strerror(errno));
+- else {
+- /* Look for out-of-range errors which didn't produce ERANGE. */
+- if (i < XMLRPC_INT64_MIN)
+- setParseFault(envP, "<i8> value %d is below the range allowed "
+- "by XML-RPC (minimum is %d)",
+- i, XMLRPC_INT64_MIN);
+- else if (i > XMLRPC_INT64_MAX)
+- setParseFault(envP, "<i8> value %d is above the range allowed "
+- "by XML-RPC (maximum is %d)",
+- i, XMLRPC_INT64_MAX);
+- else {
+- if (tail[0] != '\0')
+- setParseFault(envP,
+- "<i8> value '%s' contains non-numerical "
+- "junk: '%s'", str, tail);
+- else
+- *valuePP = xmlrpc_i8_new(envP, i);
+- }
+- }
++ xmlrpc_parse_int64(&env, str, &i);
++
++ if (env.fault_occurred)
++ setParseFault(envP, "<i8> XML element value '%s' is invalid "
++ "because it does not represent "
++ "a 64 bit integer. %s", env.fault_string);
++ else
++ *valuePP = xmlrpc_i8_new(envP, i);
++
++ xmlrpc_env_clean(&env);
+ }
+ }
+
+@@ -640,33 +623,39 @@ parseSimpleValueCdata(xmlrpc_env * const envP,
+ UTF-8 multibyte sequences or NUL characters. So will most of the
+ others.
+
+- The "ex.XXX" element names are what the Apache XML-RPC facility
+- uses: http://ws.apache.org/xmlrpc/types.html. i1 and i2 are just
+- from my imagination.
++ The "ex:XXX" element names are what the Apache XML-RPC facility
++ uses: http://ws.apache.org/xmlrpc/types.html. (Technically, it
++ isn't "ex" but an arbitrary prefix that identifies a namespace
++ declared earlier in the XML document -- this is an XML thing.
++ But we aren't nearly sophisticated enough to use real XML
++ namespaces, so we exploit the fact that XML-RPC actually uses
++ "ex").
++
++ "i1" and "i2" are just from my imagination.
+ */
+
+ if (xmlrpc_streq(elementName, "int") ||
+ xmlrpc_streq(elementName, "i4") ||
+ xmlrpc_streq(elementName, "i1") ||
+ xmlrpc_streq(elementName, "i2") ||
+- xmlrpc_streq(elementName, "ex.i1") ||
+- xmlrpc_streq(elementName, "ex.i2"))
++ xmlrpc_streq(elementName, "ex:i1") ||
++ xmlrpc_streq(elementName, "ex:i2"))
+ parseInt(envP, cdata, valuePP);
+ else if (xmlrpc_streq(elementName, "boolean"))
+ parseBoolean(envP, cdata, valuePP);
+ else if (xmlrpc_streq(elementName, "double"))
+ parseDouble(envP, cdata, valuePP);
+ else if (xmlrpc_streq(elementName, "dateTime.iso8601"))
+- *valuePP = xmlrpc_datetime_new_str(envP, cdata);
++ xmlrpc_parseDatetime(envP, cdata, valuePP);
+ else if (xmlrpc_streq(elementName, "string"))
+ *valuePP = xmlrpc_string_new_lp(envP, cdataLength, cdata);
+ else if (xmlrpc_streq(elementName, "base64"))
+ parseBase64(envP, cdata, cdataLength, valuePP);
+ else if (xmlrpc_streq(elementName, "nil") ||
+- xmlrpc_streq(elementName, "ex.nil"))
++ xmlrpc_streq(elementName, "ex:nil"))
+ *valuePP = xmlrpc_nil_new(envP);
+ else if (xmlrpc_streq(elementName, "i8") ||
+- xmlrpc_streq(elementName, "ex.i8"))
++ xmlrpc_streq(elementName, "ex:i8"))
+ parseI8(envP, cdata, valuePP);
+ else
+ setParseFault(envP, "Unknown value type -- XML element is named "
+@@ -680,13 +669,13 @@ parseSimpleValue(xmlrpc_env * const envP,
+ xml_element * const elemP,
+ xmlrpc_value ** const valuePP) {
+
+- unsigned int const childCount = xml_element_children_size(elemP);
++ size_t childCount = xml_element_children_size(elemP);
+
+ if (childCount > 0)
+ setParseFault(envP, "The child of a <value> element "
+ "is neither <array> nor <struct>, "
+ "but has %u child elements of its own.",
+- childCount);
++ (unsigned int)childCount);
+ else {
+ const char * const elemName = xml_element_name(elemP);
+ const char * const cdata = xml_element_cdata(elemP);
+@@ -724,7 +713,7 @@ xmlrpc_parseValue(xmlrpc_env * const envP,
+ "<%s> element where <value> expected",
+ xml_element_name(elemP));
+ else {
+- unsigned int const childCount = xml_element_children_size(elemP);
++ size_t const childCount = xml_element_children_size(elemP);
+
+ if (childCount == 0) {
+ /* We have no type element, so treat the value as a string. */
+@@ -733,7 +722,8 @@ xmlrpc_parseValue(xmlrpc_env * const envP,
+ *valuePP = xmlrpc_string_new_lp(envP, cdata_size, cdata);
+ } else if (childCount > 1)
+ setParseFault(envP, "<value> has %u child elements. "
+- "Only zero or one make sense.", childCount);
++ "Only zero or one make sense.",
++ (unsigned int)childCount);
+ else {
+ /* We should have a type tag inside our value tag. */
+ xml_element * const childP = xml_element_children(elemP)[0];
+@@ -749,3 +739,6 @@ xmlrpc_parseValue(xmlrpc_env * const envP,
+ }
+ }
+ }
++
++
++
+diff --git a/libs/xmlrpc-c/src/registry.c b/libs/xmlrpc-c/src/registry.c
+index e7eddd3..b67944a 100644
+--- a/libs/xmlrpc-c/src/registry.c
++++ b/libs/xmlrpc-c/src/registry.c
+@@ -36,6 +36,19 @@ unsigned int const xmlrpc_server_version_minor = XMLRPC_VERSION_MINOR;
+ unsigned int const xmlrpc_server_version_point = XMLRPC_VERSION_POINT;
+
+
++
++void
++xmlrpc_server_version(unsigned int * const majorP,
++ unsigned int * const minorP,
++ unsigned int * const pointP) {
++
++ *majorP = XMLRPC_VERSION_MAJOR;
++ *minorP = XMLRPC_VERSION_MINOR;
++ *pointP = XMLRPC_VERSION_POINT;
++}
++
++
++
+ xmlrpc_registry *
+ xmlrpc_registry_new(xmlrpc_env * const envP) {
+
+@@ -86,7 +99,8 @@ registryAddMethod(xmlrpc_env * const envP,
+ xmlrpc_method2 method2,
+ const char * const signatureString,
+ const char * const help,
+- void * const userData) {
++ void * const userData,
++ size_t const stackSize) {
+
+ const char * const helpString =
+ help ? help : "No help is available for this method.";
+@@ -99,7 +113,7 @@ registryAddMethod(xmlrpc_env * const envP,
+ XMLRPC_ASSERT(method1 != NULL || method2 != NULL);
+
+ xmlrpc_methodCreate(envP, method1, method2, userData,
+- signatureString, helpString, &methodP);
++ signatureString, helpString, stackSize, &methodP);
+
+ if (!envP->fault_occurred) {
+ xmlrpc_methodListAdd(envP, registryP->methodListP, methodName,
+@@ -126,7 +140,7 @@ xmlrpc_registry_add_method_w_doc(
+ XMLRPC_ASSERT(host == NULL);
+
+ registryAddMethod(envP, registryP, methodName, method, NULL,
+- signatureString, help, serverInfo);
++ signatureString, help, serverInfo, 0);
+ }
+
+
+@@ -156,7 +170,21 @@ xmlrpc_registry_add_method2(xmlrpc_env * const envP,
+ void * const serverInfo) {
+
+ registryAddMethod(envP, registryP, methodName, NULL, method,
+- signatureString, help, serverInfo);
++ signatureString, help, serverInfo, 0);
++}
++
++
++
++void
++xmlrpc_registry_add_method3(
++ xmlrpc_env * const envP,
++ xmlrpc_registry * const registryP,
++ const struct xmlrpc_method_info3 * const infoP) {
++
++ registryAddMethod(envP, registryP, infoP->methodName, NULL,
++ infoP->methodFunction,
++ infoP->signatureString, infoP->help, infoP->serverInfo,
++ infoP->stackSize);
+ }
+
+
+@@ -182,6 +210,43 @@ xmlrpc_registry_set_default_method(
+
+
+
++/* This is our guess at what a method function requires when the user
++ doesn't say.
++*/
++#define METHOD_FUNCTION_STACK 128*1024
++
++
++
++static size_t
++methodStackSize(const xmlrpc_methodInfo * const methodP) {
++
++ return methodP->stackSize ==
++ 0 ? METHOD_FUNCTION_STACK : methodP->stackSize;
++}
++
++
++
++size_t
++xmlrpc_registry_max_stackSize(xmlrpc_registry * const registryP) {
++/*----------------------------------------------------------------------------
++ Return the maximum amount of stack required by the methods in registry
++ *registryP.
++
++ If there are no methods, return 0.
++-----------------------------------------------------------------------------*/
++ xmlrpc_methodNode * p;
++ size_t stackSize;
++
++ for (p = registryP->methodListP->firstMethodP, stackSize = 0;
++ p;
++ p = p->nextP) {
++
++ stackSize = MAX(stackSize, methodStackSize(p->methodP));
++ }
++ return stackSize;
++}
++
++
+
+ void
+ xmlrpc_registry_set_preinvoke_method(
+diff --git a/libs/xmlrpc-c/src/system_method.c b/libs/xmlrpc-c/src/system_method.c
+index e1f77c0..ad13878 100644
+--- a/libs/xmlrpc-c/src/system_method.c
++++ b/libs/xmlrpc-c/src/system_method.c
+@@ -287,6 +287,64 @@ static struct systemMethodReg const methodListMethods = {
+
+
+ /*=========================================================================
++ system.methodExist
++==========================================================================*/
++
++static void
++determineMethodExistence(xmlrpc_env * const envP,
++ const char * const methodName,
++ xmlrpc_registry * const registryP,
++ xmlrpc_value ** const existsPP) {
++
++ xmlrpc_methodInfo * methodP;
++
++ xmlrpc_methodListLookupByName(registryP->methodListP, methodName,
++ &methodP);
++
++ *existsPP = xmlrpc_bool_new(envP, !!methodP);
++}
++
++
++
++static xmlrpc_value *
++system_methodExist(xmlrpc_env * const envP,
++ xmlrpc_value * const paramArrayP,
++ void * const serverInfo,
++ void * const callInfo ATTR_UNUSED) {
++
++ xmlrpc_registry * const registryP = serverInfo;
++
++ xmlrpc_value * retvalP;
++
++ const char * methodName;
++
++ XMLRPC_ASSERT_ENV_OK(envP);
++ XMLRPC_ASSERT_VALUE_OK(paramArrayP);
++ XMLRPC_ASSERT_PTR_OK(serverInfo);
++
++ xmlrpc_decompose_value(envP, paramArrayP, "(s)", &methodName);
++
++ if (!envP->fault_occurred) {
++ determineMethodExistence(envP, methodName, registryP, &retvalP);
++
++ xmlrpc_strfree(methodName);
++ }
++
++ return retvalP;
++}
++
++
++
++static struct systemMethodReg const methodMethodExist = {
++ "system.methodExist",
++ &system_methodExist,
++ "s:b",
++ "Tell whether a method by a specified name exists on this server",
++};
++
++
++
++/*=========================================================================
+ system.methodHelp
+ =========================================================================*/
+
+@@ -327,7 +385,7 @@ system_methodHelp(xmlrpc_env * const envP,
+ XMLRPC_ASSERT_ENV_OK(envP);
+ XMLRPC_ASSERT_VALUE_OK(paramArrayP);
+ XMLRPC_ASSERT_PTR_OK(serverInfo);
+-
++
+ xmlrpc_decompose_value(envP, paramArrayP, "(s)", &methodName);
+
+ if (!envP->fault_occurred) {
+@@ -338,9 +396,9 @@ system_methodHelp(xmlrpc_env * const envP,
+ "for security reasons");
+ else
+ getHelpString(envP, methodName, registryP, &retvalP);
+- }
+
+- xmlrpc_strfree(methodName);
++ xmlrpc_strfree(methodName);
++ }
+
+ return retvalP;
+ }
+@@ -409,8 +467,8 @@ buildSignatureValue(xmlrpc_env * const envP,
+
+ if (envP->fault_occurred)
+ xmlrpc_DECREF(sigValueP);
+- else
+- *sigValuePP = sigValueP;
++
++ *sigValuePP = sigValueP;
+ }
+
+
+@@ -471,6 +529,15 @@ getSignatureList(xmlrpc_env * const envP,
+
+
+
++/* Microsoft Visual C in debug mode produces code that complains about
++ returning an undefined value from system_methodSignature(). It's a bogus
++ complaint, because this function is defined to return nothing meaningful
++ those cases. So we disable the check.
++*/
++#pragma runtime_checks("u", off)
++
++
++
+ static xmlrpc_value *
+ system_methodSignature(xmlrpc_env * const envP,
+ xmlrpc_value * const paramArrayP,
+@@ -487,8 +554,6 @@ system_methodSignature(xmlrpc_env * const envP,
+ XMLRPC_ASSERT_VALUE_OK(paramArrayP);
+ XMLRPC_ASSERT_PTR_OK(serverInfo);
+
+- retvalP = NULL; /* quiet compiler unset variable warning */
+-
+ xmlrpc_env_init(&env);
+
+ /* Turn our arguments into something more useful. */
+@@ -522,10 +587,14 @@ system_methodSignature(xmlrpc_env * const envP,
+
+
+
++#pragma runtime_checks("u", restore)
++
++
++
+ static struct systemMethodReg const methodMethodSignature = {
+ "system.methodSignature",
+ &system_methodSignature,
+- "s:s",
++ "A:s",
+ "Given the name of a method, return an array of legal signatures. "
+ "Each signature is an array of strings. The first item of each signature "
+ "is the return type, and any others items are parameter types.",
+@@ -556,8 +625,6 @@ system_shutdown(xmlrpc_env * const envP,
+
+ xmlrpc_env_init(&env);
+
+- retvalP = NULL; /* quiet compiler warning */
+-
+ /* Turn our arguments into something more useful. */
+ xmlrpc_decompose_value(&env, paramArrayP, "(s)", &comment);
+ if (env.fault_occurred)
+@@ -607,9 +674,9 @@ static struct systemMethodReg const methodShutdown = {
+ =========================================================================*/
+
+ static void
+-getCapabilities(xmlrpc_env * const envP,
+- xmlrpc_registry * const registryP ATTR_UNUSED,
+- xmlrpc_value ** const capabilitiesPP) {
++constructCapabilities(xmlrpc_env * const envP,
++ xmlrpc_registry * const registryP ATTR_UNUSED,
++ xmlrpc_value ** const capabilitiesPP) {
+
+ *capabilitiesPP =
+ xmlrpc_build_value(
+@@ -648,12 +715,13 @@ system_capabilities(xmlrpc_env * const envP,
+ envP, XMLRPC_INDEX_ERROR,
+ "There are no parameters. You supplied %u", paramCount);
+ else
+- getCapabilities(envP, registryP, &retvalP);
++ constructCapabilities(envP, registryP, &retvalP);
+
+ return retvalP;
+ }
+
+
++
+ static struct systemMethodReg const methodCapabilities = {
+ "system.capabilities",
+ &system_capabilities,
+@@ -664,6 +732,72 @@ static struct systemMethodReg const methodCapabilities = {
+
+
+
++/*=========================================================================
++ system.getCapabilities
++=========================================================================*/
++
++/* This implements a standard.
++ See http://tech.groups.yahoo.com/group/xml-rpc/message/2897 .
++*/
++
++static void
++listCapabilities(xmlrpc_env * const envP,
++ xmlrpc_registry * const registryP ATTR_UNUSED,
++ xmlrpc_value ** const capabilitiesPP) {
++
++ *capabilitiesPP =
++ xmlrpc_build_value(
++ envP, "{s:{s:s,s:i}}",
++ "introspect",
++ "specUrl",
++ "http://xmlrpc-c.sourceforge.net/xmlrpc-c/introspection.html",
++ "specVersion",
++ 1
++ );
++}
++
++
++
++static xmlrpc_value *
++system_getCapabilities(xmlrpc_env * const envP,
++ xmlrpc_value * const paramArrayP,
++ void * const serverInfo,
++ void * const callInfo ATTR_UNUSED) {
++
++ xmlrpc_registry * const registryP = serverInfo;
++
++ xmlrpc_value * retvalP;
++
++ unsigned int paramCount;
++
++ XMLRPC_ASSERT_ENV_OK(envP);
++ XMLRPC_ASSERT_VALUE_OK(paramArrayP);
++ XMLRPC_ASSERT_PTR_OK(serverInfo);
++
++ paramCount = xmlrpc_array_size(envP, paramArrayP);
++
++ if (paramCount > 0)
++ xmlrpc_env_set_fault_formatted(
++ envP, XMLRPC_INDEX_ERROR,
++ "There are no parameters. You supplied %u", paramCount);
++ else
++ listCapabilities(envP, registryP, &retvalP);
++
++ return retvalP;
++}
++
++
++
++static struct systemMethodReg const methodGetCapabilities = {
++ "system.getCapabilities",
++ &system_getCapabilities,
++ "S:",
++ "Return the list of standard capabilities of XML-RPC server. "
++ "See http://tech.groups.yahoo.com/group/xml-rpc/message/2897"
++};
++
++
++
+ /*============================================================================
+ Installer of system methods
+ ============================================================================*/
+@@ -699,12 +833,15 @@ xmlrpc_installSystemMethods(xmlrpc_env * const envP,
+ if (!envP->fault_occurred)
+ registerSystemMethod(envP, registryP, methodListMethods);
+
+- if (!envP->fault_occurred)
+- registerSystemMethod(envP, registryP, methodMethodSignature);
++ if (!envP->fault_occurred)
++ registerSystemMethod(envP, registryP, methodMethodExist);
+
+ if (!envP->fault_occurred)
+ registerSystemMethod(envP, registryP, methodMethodHelp);
+
++ if (!envP->fault_occurred)
++ registerSystemMethod(envP, registryP, methodMethodSignature);
++
+ if (!envP->fault_occurred)
+ registerSystemMethod(envP, registryP, methodMulticall);
+
+@@ -713,6 +850,9 @@ xmlrpc_installSystemMethods(xmlrpc_env * const envP,
+
+ if (!envP->fault_occurred)
+ registerSystemMethod(envP, registryP, methodCapabilities);
++
++ if (!envP->fault_occurred)
++ registerSystemMethod(envP, registryP, methodGetCapabilities);
+ }
+
+
+diff --git a/libs/xmlrpc-c/src/test/.cvsignore b/libs/xmlrpc-c/src/test/.cvsignore
+deleted file mode 100644
+index b5e32d3..0000000
+--- a/libs/xmlrpc-c/src/test/.cvsignore
++++ /dev/null
+@@ -1,3 +0,0 @@
+-Makefile
+-test
+-cgitest1
+diff --git a/libs/xmlrpc-c/src/test/Makefile b/libs/xmlrpc-c/src/test/Makefile
+index 946a377..0215902 100644
+--- a/libs/xmlrpc-c/src/test/Makefile
++++ b/libs/xmlrpc-c/src/test/Makefile
+@@ -19,7 +19,7 @@ LDADD_CGI_SERVER = \
+
+ default: all
+
+-INCLUDES = -I$(BLDDIR) -I $(SRCDIR)/include -I$(SRCDIR)/lib/util/include \
++INCLUDES = -I$(BLDDIR) -Isrcdir/include -Isrcdir/lib/util/include \
+
+ PROGS = test cgitest1
+
+@@ -28,6 +28,7 @@ all: $(PROGS)
+ LDFLAGS = $(LADD)
+
+ TEST_OBJS = \
++ testtool.o \
+ test.o \
+ abyss.o \
+ cgi.o \
+@@ -37,6 +38,7 @@ TEST_OBJS = \
+ serialize_value.o \
+ server_abyss.o \
+ value.o \
++ value_datetime.o \
+ xml_data.o \
+
+ ifeq ($(MUST_BUILD_CLIENT),yes)
+@@ -49,6 +51,11 @@ endif
+
+ include $(SRCDIR)/common.mk
+
++# This 'common.mk' dependency makes sure the symlinks get built before
++# this make file is used for anything.
++
++$(SRCDIR)/common.mk: srcdir blddir
++
+ test: \
+ $(XMLRPC_C_CONFIG) \
+ $(TEST_OBJS) $(LIBXMLRPC_A) $(LIBXMLRPC_UTIL_A) \
+@@ -59,16 +66,16 @@ test: \
+ $(CCLD) -o $@ $(LDFLAGS) \
+ $(TEST_OBJS) $(LDADD_CLIENT) $(LDADD_ABYSS_SERVER) $(CASPRINTF)
+
+-cgitest1:%:%.o $(LIBXMLRPC_SERVER_A) $(LIBXMLRPC_SERVER_CGI_A) \
+- $(LIBXMLRPC_A) $(LIBXMLRPC_UTIL_A) $(LIBXMLRPC_XML)
+- $(CCLD) -o $@ $< $(LDFLAGS) $(LDADD_CGI_SERVER)
++CGITEST1_OBJS = cgitest1.o testtool.o
+
+-CFLAGS = $(CFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
++cgitest1: $(CGITEST1_OBJS) $(LIBXMLRPC_SERVER_A) $(LIBXMLRPC_SERVER_CGI_A) \
++ $(LIBXMLRPC_A) $(LIBXMLRPC_UTIL_A) $(LIBXMLRPC_XML)
++ $(CCLD) -o $@ $(CGITEST1_OBJS) $(LDFLAGS) $(LDADD_CGI_SERVER)
+
+ OBJS = $(TEST_OBJS) cgitest1.o
+
+ $(OBJS):%.o:%.c
+- $(CC) -c $(INCLUDES) $(CFLAGS) $<
++ $(CC) -c $(INCLUDES) $(CFLAGS_ALL) $<
+
+ # Note the difference between 'check' and 'runtests'. 'check' means to check
+ # our own correctness. 'runtests' means to run the tests that check our
+@@ -94,4 +101,4 @@ distclean: clean distclean-common
+ .PHONY: dep
+ dep: dep-common
+
+-include Makefile.depend
++include depend.mk
+diff --git a/libs/xmlrpc-c/src/test/abyss.c b/libs/xmlrpc-c/src/test/abyss.c
+index 1e39f51..b86eaa8 100644
+--- a/libs/xmlrpc-c/src/test/abyss.c
++++ b/libs/xmlrpc-c/src/test/abyss.c
+@@ -15,11 +15,12 @@
+ #include "xmlrpc_config.h"
+
+ #include "int.h"
++#include "casprintf.h"
+ #include "xmlrpc-c/base.h"
+ #include "xmlrpc-c/server.h"
+ #include "xmlrpc-c/abyss.h"
+
+-#include "test.h"
++#include "testtool.h"
+
+ #include "abyss.h"
+
+@@ -87,7 +88,7 @@ chanSwitchCreate(uint16_t const portNumber,
+
+ static void
+ channelCreateFd(int const fd,
+- TChannel ** const channelPP,
++ TChannel ** const channelPP,
+ const char ** const errorP) {
+
+ #ifdef WIN32
+@@ -104,7 +105,7 @@ channelCreateFd(int const fd,
+ static void
+ testChanSwitchOsSocket(void) {
+
+- int rc;
++ XMLRPC_SOCKET rc;
+
+ rc = socket(AF_INET, SOCK_STREAM, 0);
+ if (rc < 0) {
+@@ -165,7 +166,7 @@ testChanSwitch(void) {
+ static void
+ testChannel(void) {
+
+- int rc;
++ XMLRPC_SOCKET rc;
+
+ rc = socket(AF_INET, SOCK_STREAM, 0);
+ if (rc < 0) {
+@@ -183,6 +184,8 @@ testChannel(void) {
+ TEST(error);
+
+ TEST(strstr(error, "not in connected"));
++
++ strfree(error);
+ }
+ }
+
+@@ -191,7 +194,7 @@ testChannel(void) {
+ static void
+ testOsSocket(void) {
+
+- int rc;
++ XMLRPC_SOCKET rc;
+
+ rc = socket(AF_INET, SOCK_STREAM, 0);
+ if (rc < 0) {
+diff --git a/libs/xmlrpc-c/src/test/cgi.c b/libs/xmlrpc-c/src/test/cgi.c
+index 52c0c08..18dfa9b 100644
+--- a/libs/xmlrpc-c/src/test/cgi.c
++++ b/libs/xmlrpc-c/src/test/cgi.c
+@@ -5,7 +5,7 @@
+
+ #include "xmlrpc_config.h"
+
+-#include "test.h"
++#include "testtool.h"
+ #include "cgi.h"
+
+ static const char cgiResponse1[] =
+diff --git a/libs/xmlrpc-c/src/test/cgitest1.c b/libs/xmlrpc-c/src/test/cgitest1.c
+index 7ce6909..ce758b1 100644
+--- a/libs/xmlrpc-c/src/test/cgitest1.c
++++ b/libs/xmlrpc-c/src/test/cgitest1.c
+@@ -16,7 +16,7 @@
+ #include "xmlrpc-c/server.h"
+ #include "xmlrpc-c/server_cgi.h"
+
+-#include "test.h"
++#include "testtool.h"
+
+
+ int total_tests;
+diff --git a/libs/xmlrpc-c/src/test/client.c b/libs/xmlrpc-c/src/test/client.c
+index 140ffc0..e3b8bc7 100644
+--- a/libs/xmlrpc-c/src/test/client.c
++++ b/libs/xmlrpc-c/src/test/client.c
+@@ -10,10 +10,30 @@
+ #include "xmlrpc-c/client.h"
+ #include "xmlrpc-c/transport.h"
+
+-#include "test.h"
++#include "bool.h"
++#include "testtool.h"
+ #include "client.h"
+
+
++
++static void
++testVersion(void) {
++
++ unsigned int major, minor, point;
++
++ xmlrpc_client_version(&major, &minor, &point);
++
++#ifndef WIN32
++ /* xmlrpc_client_version_major, etc. are not exported from a Windows DLL */
++
++ TEST(major = xmlrpc_client_version_major);
++ TEST(minor = xmlrpc_client_version_minor);
++ TEST(point = xmlrpc_client_version_point);
++#endif
++}
++
++
++
+ static void
+ testGlobalConst(void) {
+
+@@ -38,6 +58,22 @@ testGlobalConst(void) {
+
+
+
++static xmlrpc_progress_fn myProgress;
++
++static void
++myProgress(void * const userHandle,
++ struct xmlrpc_progress_data const data) {
++
++ printf("Progress of %p: %f, %f, %f, %f\n",
++ userHandle,
++ data.call.total,
++ data.call.now,
++ data.response.total,
++ data.response.now);
++}
++
++
++
+ static void
+ testCreateCurlParms(void) {
+
+@@ -78,6 +114,33 @@ testCreateCurlParms(void) {
+ TEST_NO_FAULT(&env);
+ xmlrpc_client_destroy(clientP);
+
++ curlTransportParms1.ssl_cert = NULL;
++ curlTransportParms1.sslcerttype = NULL;
++ curlTransportParms1.sslcertpasswd = NULL;
++ curlTransportParms1.sslkey = NULL;
++ curlTransportParms1.sslkeytype = NULL;
++ curlTransportParms1.sslkeypasswd = NULL;
++ curlTransportParms1.sslengine = NULL;
++ curlTransportParms1.sslengine_default = false;
++ curlTransportParms1.sslversion = XMLRPC_SSLVERSION_DEFAULT;
++ curlTransportParms1.cainfo = NULL;
++ curlTransportParms1.capath = NULL;
++ curlTransportParms1.randomfile = NULL;
++ curlTransportParms1.egdsocket = NULL;
++ curlTransportParms1.ssl_cipher_list = NULL;
++ curlTransportParms1.timeout = 0;
++ curlTransportParms1.dont_advertise = 1;
++ curlTransportParms1.proxy = NULL;
++ curlTransportParms1.proxy_port = 0;
++ curlTransportParms1.proxy_type = XMLRPC_HTTPPROXY_HTTP;
++ curlTransportParms1.proxy_auth = XMLRPC_HTTPAUTH_NONE;
++ clientParms1.transportparm_size = XMLRPC_CXPSIZE(proxy_auth);
++ xmlrpc_client_create(&env, 0, "testprog", "1.0",
++ &clientParms1, XMLRPC_CPSIZE(transportparm_size),
++ &clientP);
++ TEST_NO_FAULT(&env);
++ xmlrpc_client_destroy(clientP);
++
+ xmlrpc_env_clean(&env);
+ #endif /* MUST_BUILD_CURL_CLIENT */
+ }
+@@ -113,6 +176,8 @@ testCreateSeparateXport(void) {
+ &clientP);
+ TEST_NO_FAULT(&env);
+
++ xmlrpc_client_destroy(clientP);
++
+ clientParms1.transport = "curl";
+ clientParms1.transportparmsP = &curlTransportParms1;
+ clientParms1.transportparm_size = 0;
+@@ -124,6 +189,8 @@ testCreateSeparateXport(void) {
+ &clientP);
+ TEST_NO_FAULT(&env);
+
++ xmlrpc_client_destroy(clientP);
++
+ clientParms1.transportP = transportP;
+ xmlrpc_client_create(&env, 0, "", "",
+ &clientParms1, XMLRPC_CPSIZE(transportP),
+@@ -150,6 +217,8 @@ testCreateSeparateXport(void) {
+
+ TEST_NO_FAULT(&env);
+
++ xmlrpc_client_destroy(clientP);
++
+ xmlrpc_curl_transport_ops.destroy(transportP);
+
+ xmlrpc_env_clean(&env);
+@@ -202,8 +271,9 @@ testCreateDestroy(void) {
+ clientParms1.transportOpsP = NULL;
+ clientParms1.transportP = NULL;
+ clientParms1.dialect = xmlrpc_dialect_apache;
++ clientParms1.progressFn = &myProgress;
+ xmlrpc_client_create(&env, 0, "testprog", "1.0",
+- &clientParms1, XMLRPC_CPSIZE(dialect),
++ &clientParms1, XMLRPC_CPSIZE(progressFn),
+ &clientP);
+ TEST_NO_FAULT(&env);
+ xmlrpc_client_destroy(clientP);
+@@ -420,9 +490,11 @@ test_client(void) {
+
+ printf("Running client tests.");
+
++ testVersion();
+ testGlobalConst();
+ testCreateDestroy();
+ testInitCleanup();
++ printf("\n");
+ testServerInfo();
+ testSynchCall();
+
+diff --git a/libs/xmlrpc-c/src/test/method_registry.c b/libs/xmlrpc-c/src/test/method_registry.c
+index da8d304..91fa700 100644
+--- a/libs/xmlrpc-c/src/test/method_registry.c
++++ b/libs/xmlrpc-c/src/test/method_registry.c
+@@ -10,7 +10,7 @@
+ #include "xmlrpc-c/base.h"
+ #include "xmlrpc-c/server.h"
+
+-#include "test.h"
++#include "testtool.h"
+ #include "xml_data.h"
+ #include "method_registry.h"
+
+@@ -26,6 +26,25 @@
+ static const char * const barHelp = "This is the help for Method test.bar.";
+
+
++
++static void
++testVersion(void) {
++
++ unsigned int major, minor, point;
++
++ xmlrpc_server_version(&major, &minor, &point);
++
++#ifndef WIN32
++ /* xmlrpc_server_version_major, etc. are not exported from a Windows DLL */
++
++ TEST(major = xmlrpc_server_version_major);
++ TEST(minor = xmlrpc_server_version_minor);
++ TEST(point = xmlrpc_server_version_point);
++#endif
++}
++
++
++
+ static xmlrpc_value *
+ test_foo(xmlrpc_env * const envP,
+ xmlrpc_value * const paramArrayP,
+@@ -297,6 +316,8 @@ test_system_methodSignature(xmlrpc_registry * const registryP) {
+ TEST_NO_FAULT(&env);
+ TEST(streq(type0, "int"));
+ TEST(streq(type1, "int"));
++ strfree(type0);
++ strfree(type1);
+ xmlrpc_DECREF(resultP);
+ xmlrpc_DECREF(argArrayP);
+
+@@ -310,7 +331,7 @@ test_signature(void) {
+
+ xmlrpc_env env;
+ xmlrpc_registry * registryP;
+- uint i;
++ unsigned int i;
+
+ xmlrpc_env_init(&env);
+
+@@ -409,16 +430,19 @@ static const char * const expectedMethodName[] = {
+ The list we expect back from system.listMethods.
+ -----------------------------------------------------------------------------*/
+ "system.listMethods",
+- "system.methodSignature",
++ "system.methodExist",
+ "system.methodHelp",
++ "system.methodSignature",
+ "system.multicall",
+ "system.shutdown",
+ "system.capabilities",
++ "system.getCapabilities",
+ "test.foo",
+ "test.bar"
+ };
+
+
++
+ static void
+ test_system_listMethods(xmlrpc_registry * const registryP) {
+ /*----------------------------------------------------------------------------
+@@ -427,7 +451,7 @@ test_system_listMethods(xmlrpc_registry * const registryP) {
+ xmlrpc_env env;
+ xmlrpc_value * resultP;
+ xmlrpc_value * argArrayP;
+- const char * methodName[8];
++ const char * methodName[ARRAY_SIZE(expectedMethodName)];
+ unsigned int size;
+ unsigned int i;
+
+@@ -449,13 +473,16 @@ test_system_listMethods(xmlrpc_registry * const registryP) {
+
+ TEST(size == ARRAY_SIZE(expectedMethodName));
+
+- xmlrpc_decompose_value(&env, resultP, "(ssssssss)",
++ xmlrpc_decompose_value(&env, resultP, "(ssssssssss)",
+ &methodName[0], &methodName[1],
+ &methodName[2], &methodName[3],
+ &methodName[4], &methodName[5],
+- &methodName[6], &methodName[7]);
++ &methodName[6], &methodName[7],
++ &methodName[8], &methodName[9]);
++
++ TEST_NO_FAULT(&env);
+
+- for (i = 0; i < ARRAY_SIZE(methodName); ++i) {
++ for (i = 0; i < ARRAY_SIZE(expectedMethodName); ++i) {
+ TEST(streq(methodName[i], expectedMethodName[i]));
+ strfree(methodName[i]);
+ }
+@@ -472,18 +499,70 @@ test_system_listMethods(xmlrpc_registry * const registryP) {
+
+
+ static void
+-test_system_methodHelp(xmlrpc_registry * const registryP) {
++test_system_methodExist(xmlrpc_registry * const registryP) {
+ /*----------------------------------------------------------------------------
+- Test system.methodHelp
++ Test system.methodExist
+ -----------------------------------------------------------------------------*/
+ xmlrpc_env env;
+ xmlrpc_value * resultP;
+ xmlrpc_value * argArrayP;
+- const char * helpString;
++ xmlrpc_bool exists;
+
+ xmlrpc_env_init(&env);
+
+- printf(" Running system.methodHelp tests.");
++ printf(" Running system.methodExist tests.");
++
++ argArrayP = xmlrpc_build_value(&env, "(s)", "test.foo");
++ TEST_NO_FAULT(&env);
++
++ doRpc(&env, registryP, "system.methodExist", argArrayP, NULL, &resultP);
++ TEST_NO_FAULT(&env);
++
++ TEST(xmlrpc_value_type(resultP) == XMLRPC_TYPE_BOOL);
++
++ xmlrpc_read_bool(&env, resultP, &exists);
++ TEST_NO_FAULT(&env);
++
++ TEST(exists);
++
++ xmlrpc_DECREF(resultP);
++
++ xmlrpc_DECREF(argArrayP);
++
++
++ argArrayP = xmlrpc_build_value(&env, "(s)", "nosuchmethod");
++ TEST_NO_FAULT(&env);
++
++ doRpc(&env, registryP, "system.methodExist", argArrayP, NULL, &resultP);
++ TEST_NO_FAULT(&env);
++
++ TEST(xmlrpc_value_type(resultP) == XMLRPC_TYPE_BOOL);
++
++ xmlrpc_read_bool(&env, resultP, &exists);
++ TEST_NO_FAULT(&env);
++
++ TEST(!exists);
++
++ xmlrpc_DECREF(resultP);
++
++ xmlrpc_DECREF(argArrayP);
++
++ xmlrpc_env_clean(&env);
++
++ printf("\n");
++}
++
++
++
++static void
++testNoHelp(xmlrpc_registry * const registryP) {
++
++ xmlrpc_env env;
++ xmlrpc_value * resultP;
++ xmlrpc_value * argArrayP;
++ const char * helpString;
++
++ xmlrpc_env_init(&env);
+
+ argArrayP = xmlrpc_build_value(&env, "(s)", "test.foo");
+ TEST_NO_FAULT(&env);
+@@ -498,10 +577,26 @@ test_system_methodHelp(xmlrpc_registry * const registryP) {
+
+ TEST(streq(helpString, "No help is available for this method."));
+
++ strfree(helpString);
++
+ xmlrpc_DECREF(resultP);
+
+ xmlrpc_DECREF(argArrayP);
+
++ xmlrpc_env_clean(&env);
++}
++
++
++
++static void
++testExistentHelp(xmlrpc_registry * const registryP) {
++
++ xmlrpc_env env;
++ xmlrpc_value * resultP;
++ xmlrpc_value * argArrayP;
++ const char * helpString;
++
++ xmlrpc_env_init(&env);
+
+ argArrayP = xmlrpc_build_value(&env, "(s)", "test.bar");
+ TEST_NO_FAULT(&env);
+@@ -516,11 +611,31 @@ test_system_methodHelp(xmlrpc_registry * const registryP) {
+
+ TEST(streq(helpString, barHelp));
+
++ strfree(helpString);
++
+ xmlrpc_DECREF(resultP);
+
+ xmlrpc_DECREF(argArrayP);
+
+ xmlrpc_env_clean(&env);
++}
++
++
++
++static void
++test_system_methodHelp(xmlrpc_registry * const registryP) {
++/*----------------------------------------------------------------------------
++ Test system.methodHelp
++-----------------------------------------------------------------------------*/
++ xmlrpc_env env;
++
++ xmlrpc_env_init(&env);
++
++ printf(" Running system.methodHelp tests.");
++
++ testNoHelp(registryP);
++
++ testExistentHelp(registryP);
+
+ printf("\n");
+ }
+@@ -560,6 +675,53 @@ test_system_capabilities(xmlrpc_registry * const registryP) {
+ TEST(streq(facility, "xmlrpc-c"));
+ TEST(protocol_version == 2);
+
++ strfree(facility);
++
++ xmlrpc_DECREF(resultP);
++
++ xmlrpc_DECREF(argArrayP);
++
++ xmlrpc_env_clean(&env);
++
++ printf("\n");
++}
++
++
++
++static void
++test_system_getCapabilities(xmlrpc_registry * const registryP) {
++/*----------------------------------------------------------------------------
++ Test system.getCapabilities
++-----------------------------------------------------------------------------*/
++ xmlrpc_env env;
++ xmlrpc_value * resultP;
++ xmlrpc_value * argArrayP;
++ const char * specUrl;
++ int specVersion;
++
++ xmlrpc_env_init(&env);
++
++ printf(" Running system.getCapabilities tests.");
++
++ argArrayP = xmlrpc_array_new(&env);
++ TEST_NO_FAULT(&env);
++
++ doRpc(&env, registryP, "system.getCapabilities", argArrayP, NULL,
++ &resultP);
++ TEST_NO_FAULT(&env);
++
++ xmlrpc_decompose_value(&env, resultP, "{s:{s:s,s:i,*},*}",
++ "introspect",
++ "specUrl", &specUrl,
++ "specVersion", &specVersion);
++ TEST_NO_FAULT(&env);
++
++ TEST(streq(specUrl,
++ "http://xmlrpc-c.sourceforge.net/xmlrpc-c/introspection.html"));
++ TEST(specVersion == 1);
++
++ strfree(specUrl);
++
+ xmlrpc_DECREF(resultP);
+
+ xmlrpc_DECREF(argArrayP);
+@@ -629,11 +791,12 @@ test_system_multicall(xmlrpc_registry * const registryP) {
+ TEST_NO_FAULT(&env);
+ TEST(foo1_result == 42);
+ TEST(bar_code == 123);
+- TEST(strcmp(bar_string, "Test fault") == 0);
++ TEST(streq(bar_string, "Test fault"));
+ TEST(nosuch_code == XMLRPC_NO_SUCH_METHOD_ERROR);
+ TEST(foo2_result == 42);
+ xmlrpc_DECREF(multiP);
+ free(bar_string);
++ free(nosuch_string);
+
+
+ /* Now for some invalid multi calls */
+@@ -737,7 +900,7 @@ testCall(xmlrpc_registry * const registryP) {
+ doRpc(&env2, registryP, "test.bar", argArrayP, BAR_CALLINFO, &valueP);
+ TEST(env2.fault_occurred);
+ TEST(env2.fault_code == 123);
+- TEST(env2.fault_string && strcmp(env2.fault_string, "Test fault") == 0);
++ TEST(env2.fault_string && streq(env2.fault_string, "Test fault"));
+ xmlrpc_env_clean(&env2);
+
+ /* Call a non-existant method and check the result. */
+@@ -813,11 +976,11 @@ test_apache_dialect(void) {
+
+ char const expectedResp[] =
+ XML_PROLOGUE
+- "<methodResponse>\r\n"
++ "<methodResponse " XMLNS_APACHE ">\r\n"
+ "<params>\r\n"
+ "<param><value><array><data>\r\n"
+- "<value><ex.i8>8</ex.i8></value>\r\n"
+- "<value><ex.nil/></value>\r\n"
++ "<value><ex:i8>8</ex:i8></value>\r\n"
++ "<value><ex:nil/></value>\r\n"
+ "</data></array></value></param>\r\n"
+ "</params>\r\n"
+ "</methodResponse>\r\n";
+@@ -891,6 +1054,8 @@ test_method_registry(void) {
+
+ xmlrpc_env_init(&env);
+
++ testVersion();
++
+ printf("Running method registry tests.");
+
+ /* Create a new registry. */
+@@ -932,10 +1097,14 @@ test_method_registry(void) {
+
+ test_system_listMethods(registryP);
+
++ test_system_methodExist(registryP);
++
+ test_system_methodHelp(registryP);
+
+ test_system_capabilities(registryP);
+
++ test_system_getCapabilities(registryP);
++
+ test_signature();
+
+ test_disable_introspection();
+diff --git a/libs/xmlrpc-c/src/test/parse_xml.c b/libs/xmlrpc-c/src/test/parse_xml.c
+index ff98ab2..0f3237d 100644
+--- a/libs/xmlrpc-c/src/test/parse_xml.c
++++ b/libs/xmlrpc-c/src/test/parse_xml.c
+@@ -8,7 +8,7 @@
+ #include "xmlrpc-c/base.h"
+ #include "xmlrpc-c/xmlparser.h"
+
+-#include "test.h"
++#include "testtool.h"
+ #include "xml_data.h"
+ #include "parse_xml.h"
+
+@@ -74,7 +74,7 @@ char const xmldata[] =
+ "<param><value><i2>10</i2></value></param>\r\n"
+ "<param><value><i4>10</i4></value></param>\r\n"
+ "<param><value><i8>10</i8></value></param>\r\n"
+- "<param><value><ex.i8>10</ex.i8></value></param>\r\n"
++ "<param><value><ex:i8>10</ex:i8></value></param>\r\n"
+ "<param><value><double>10</double></value></param>\r\n"
+ "<param><value><double>10.1</double></value></param>\r\n"
+ "<param><value><double>-10.1</double></value></param>\r\n"
+@@ -152,9 +152,12 @@ char const xmldata[] =
+ "<param><value><boolean>1</boolean></value></param>\r\n"
+ "<param><value><dateTime.iso8601>19980717T14:08:55</dateTime.iso8601>"
+ "</value></param>\r\n"
++ "<param><value>"
++ "<dateTime.iso8601>19980717T14:08:55.123456</dateTime.iso8601>"
++ "</value></param>\r\n"
+ "<param><value><base64>YmFzZTY0IGRhdGE=</base64></value></param>\r\n"
+ "<param><value><nil/></value></param>\r\n"
+- "<param><value><ex.nil/></value></param>\r\n"
++ "<param><value><ex:nil/></value></param>\r\n"
+ "</params>\r\n"
+ "</methodCall>\r\n";
+
+@@ -164,7 +167,8 @@ char const xmldata[] =
+ int arraySize;
+ const char * str_hello;
+ xmlrpc_bool b_false, b_true;
+- const char * datetime;
++ const char * datetime_sec;
++ const char * datetime_usec;
+ unsigned char * b64_data;
+ size_t b64_len;
+
+@@ -177,24 +181,27 @@ char const xmldata[] =
+ arraySize = xmlrpc_array_size(&env, paramArrayP);
+ TEST_NO_FAULT(&env);
+
+- TEST(arraySize == 7);
++ TEST(arraySize == 8);
+
+ xmlrpc_decompose_value(
+- &env, paramArrayP, "(sbb86nn)",
+- &str_hello, &b_false, &b_true, &datetime, &b64_data, &b64_len);
++ &env, paramArrayP, "(sbb886nn)",
++ &str_hello, &b_false, &b_true, &datetime_sec, &datetime_usec,
++ &b64_data, &b64_len);
+
+ TEST_NO_FAULT(&env);
+
+ TEST(streq(str_hello, "hello"));
+ TEST(!b_false);
+ TEST(b_true);
+- TEST(streq(datetime, "19980717T14:08:55"));
++ TEST(streq(datetime_sec, "19980717T14:08:55"));
++ TEST(streq(datetime_usec, "19980717T14:08:55.123456"));
+ TEST(b64_len == 11);
+ TEST(memcmp(b64_data, "base64 data", b64_len) == 0);
+
+ free(b64_data);
+ strfree(str_hello);
+- strfree(datetime);
++ strfree(datetime_sec);
++ strfree(datetime_usec);
+ xmlrpc_DECREF(paramArrayP);
+ strfree(methodName);
+
+@@ -496,7 +503,7 @@ testParseFaultResponse(void) {
+
+
+ static void
+-test_parse_xml_call(void) {
++testParseXmlCall(void) {
+
+ xmlrpc_env env;
+ const char *method_name;
+@@ -547,6 +554,38 @@ test_parse_xml_call(void) {
+
+
+
++static void
++testParseXmlValue(void) {
++
++ const char * const xmlInt7 = "<value><int>7</int ></value>";
++ const char * const xmlBadVal1 = "hello";
++ const char * const xmlBadVal2 = "<junk/>";
++
++ xmlrpc_value * valueP;
++
++ xmlrpc_env env;
++
++ xmlrpc_env_init(&env);
++
++ xmlrpc_parse_value_xml(&env, xmlInt7, strlen(xmlInt7), &valueP);
++
++ TEST_NO_FAULT(&env);
++
++ xmlrpc_DECREF(valueP);
++
++ xmlrpc_parse_value_xml(&env, xmlBadVal1, strlen(xmlBadVal1), &valueP);
++ TEST_FAULT(&env, XMLRPC_PARSE_ERROR);
++ xmlrpc_env_clean(&env);
++
++ xmlrpc_env_init(&env);
++ xmlrpc_parse_value_xml(&env, xmlBadVal2, strlen(xmlBadVal2), &valueP);
++ TEST_FAULT(&env, XMLRPC_PARSE_ERROR);
++
++ xmlrpc_env_clean(&env);
++}
++
++
++
+ void
+ test_parse_xml(void) {
+
+@@ -557,7 +596,8 @@ test_parse_xml(void) {
+ testParseGoodResponse();
+ testParseFaultResponse();
+ testParseBadResponse();
+- test_parse_xml_call();
++ testParseXmlCall();
++ testParseXmlValue();
+ printf("\n");
+ printf("XML parsing tests done.\n");
+ }
+diff --git a/libs/xmlrpc-c/src/test/req_out_of_order.xml b/libs/xmlrpc-c/src/test/req_out_of_order.xml
+deleted file mode 100644
+index 8b078a4..0000000
+--- a/libs/xmlrpc-c/src/test/req_out_of_order.xml
++++ /dev/null
+@@ -1,12 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<methodCall>
+- <params>
+- <param>
+- <value><int>2</int></value>
+- </param>
+- <param>
+- <value><int>2</int></value>
+- </param>
+- </params>
+- <methodName>add</methodName>
+-</methodCall>
+diff --git a/libs/xmlrpc-c/src/test/req_value_name.xml b/libs/xmlrpc-c/src/test/req_value_name.xml
+deleted file mode 100644
+index b55d4f0..0000000
+--- a/libs/xmlrpc-c/src/test/req_value_name.xml
++++ /dev/null
+@@ -1,14 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<methodCall>
+- <methodName>foo</methodName>
+- <params>
+- <param>
+- <value><struct>
+- <member>
+- <value><i4>0</i4></value>
+- <name>child elements reversed!</name>
+- </member>
+- </struct></value>
+- </param>
+- </params>
+-</methodCall>
+diff --git a/libs/xmlrpc-c/src/test/sample_add_call.xml b/libs/xmlrpc-c/src/test/sample_add_call.xml
+deleted file mode 100644
+index b11336a..0000000
+--- a/libs/xmlrpc-c/src/test/sample_add_call.xml
++++ /dev/null
+@@ -1,8 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>\r
+-<methodCall>\r
+-<methodName>sample.add</methodName>\r
+-<params>\r
+-<param><value><i4>5</i4></value></param>\r
+-<param><value><i4>7</i4></value></param>\r
+-</params>\r
+-</methodCall>\r
+diff --git a/libs/xmlrpc-c/src/test/serialize.c b/libs/xmlrpc-c/src/test/serialize.c
+index 74fe86c..275aa78 100644
+--- a/libs/xmlrpc-c/src/test/serialize.c
++++ b/libs/xmlrpc-c/src/test/serialize.c
+@@ -6,7 +6,7 @@
+
+ #include "xmlrpc-c/base.h"
+
+-#include "test.h"
++#include "testtool.h"
+ #include "xml_data.h"
+ #include "girstring.h"
+ #include "serialize_value.h"
+@@ -176,8 +176,8 @@ test_serialize_apache_value(void) {
+ char const serializedData[] =
+ "<value><array><data>\r\n"
+ "<value><i4>7</i4></value>\r\n"
+- "<value><ex.i8>8</ex.i8></value>\r\n"
+- "<value><ex.nil/></value>\r\n"
++ "<value><ex:i8>8</ex:i8></value>\r\n"
++ "<value><ex:nil/></value>\r\n"
+ "</data></array></value>";
+
+ xmlrpc_env env;
+@@ -214,7 +214,7 @@ test_serialize_apache_params(void) {
+ char const serializedData[] =
+ "<params>\r\n"
+ "<param><value><i4>7</i4></value></param>\r\n"
+- "<param><value><ex.i8>8</ex.i8></value></param>\r\n"
++ "<param><value><ex:i8>8</ex:i8></value></param>\r\n"
+ "</params>\r\n";
+
+ xmlrpc_env env;
+@@ -251,9 +251,9 @@ test_serialize_apache_response(void) {
+
+ char const serializedData[] =
+ XML_PROLOGUE
+- "<methodResponse>\r\n"
++ "<methodResponse " XMLNS_APACHE ">\r\n"
+ "<params>\r\n"
+- "<param><value><ex.i8>8</ex.i8></value></param>\r\n"
++ "<param><value><ex:i8>8</ex:i8></value></param>\r\n"
+ "</params>\r\n"
+ "</methodResponse>\r\n";
+
+diff --git a/libs/xmlrpc-c/src/test/serialize_value.c b/libs/xmlrpc-c/src/test/serialize_value.c
+index 3a59253..a8d17a3 100644
+--- a/libs/xmlrpc-c/src/test/serialize_value.c
++++ b/libs/xmlrpc-c/src/test/serialize_value.c
+@@ -6,7 +6,7 @@
+
+ #include "xmlrpc-c/base.h"
+
+-#include "test.h"
++#include "testtool.h"
+ #include "girstring.h"
+
+ #include "serialize_value.h"
+@@ -173,6 +173,7 @@ test_serialize_double(void) {
+ testOneDouble(1);
+ testOneDouble(0.3);
+ testOneDouble(4.9);
++ testOneDouble(9.9999999);
+ testOneDouble(-8);
+ testOneDouble(-.7);
+ testOneDouble(-2.5);
+diff --git a/libs/xmlrpc-c/src/test/server_abyss.c b/libs/xmlrpc-c/src/test/server_abyss.c
+index 11e1476..24a8233 100644
+--- a/libs/xmlrpc-c/src/test/server_abyss.c
++++ b/libs/xmlrpc-c/src/test/server_abyss.c
+@@ -1,5 +1,6 @@
+ #include "unistdx.h"
+ #include <stdio.h>
++#include "bool.h"
+
+ #include "xmlrpc_config.h"
+
+@@ -8,16 +9,32 @@
+ #include "xmlrpc-c/abyss.h"
+ #include "xmlrpc-c/server_abyss.h"
+
+-#include "test.h"
++#include "testtool.h"
+
+ #include "server_abyss.h"
+
+
++static xmlrpc_call_processor myXmlProcessor;
++
++static void
++myXmlProcessor(xmlrpc_env * const envP ATTR_UNUSED,
++ void * const processorArg ATTR_UNUSED,
++ const char * const callXml ATTR_UNUSED,
++ size_t const callXmlLen ATTR_UNUSED,
++ TSession * const abyssSessionP ATTR_UNUSED,
++ xmlrpc_mem_block ** const responseXmlPP ATTR_UNUSED) {
++
++ printf("XML processor running\n");
++}
++
++
++
+ static void
+ testSetHandlers(TServer * const abyssServerP) {
+
+ xmlrpc_env env;
+ xmlrpc_registry * registryP;
++ xmlrpc_server_abyss_handler_parms parms;
+
+ xmlrpc_env_init(&env);
+
+@@ -25,11 +42,32 @@ testSetHandlers(TServer * const abyssServerP) {
+ TEST_NO_FAULT(&env);
+ TEST(registryP != NULL);
+
++ parms.xml_processor = &myXmlProcessor;
++ parms.xml_processor_arg = NULL;
++ parms.xml_processor_max_stack = 512;
++ parms.uri_path = "/RPC6";
++ parms.chunk_response = true;
++ parms.allow_origin = "*";
++
++ xmlrpc_server_abyss_set_handler3(
++ &env, abyssServerP, &parms, XMLRPC_AHPSIZE(xml_processor_arg));
++ TEST_FAULT(&env, XMLRPC_INTERNAL_ERROR); /* Parms too short */
++ xmlrpc_server_abyss_set_handler3(
++ &env, abyssServerP, &parms, XMLRPC_AHPSIZE(allow_origin));
++ TEST_NO_FAULT(&env);
++
++ xmlrpc_server_abyss_set_handler2(abyssServerP, "/RPC5",
++ &myXmlProcessor, NULL, 512, true);
++
+ xmlrpc_server_abyss_set_handler(&env, abyssServerP, "/RPC3", registryP);
+ TEST_NO_FAULT(&env);
+
+ xmlrpc_server_abyss_set_handlers2(abyssServerP, "/RPC4", registryP);
+
++ xmlrpc_server_abyss_set_handlers(abyssServerP, registryP);
++
++ xmlrpc_server_abyss_set_default_handler(abyssServerP);
++
+ xmlrpc_registry_free(registryP);
+
+ {
+@@ -57,6 +95,7 @@ testServerParms(void) {
+ parms.dont_advertise = TRUE;
+ parms.uri_path = "/RPC9";
+ parms.chunk_response = TRUE;
++ parms.allow_origin = "*";
+ };
+
+
+@@ -108,6 +147,8 @@ testObject(void) {
+ xmlrpc_server_abyss_restore_sig(oldHandlersP);
+ TEST_NO_FAULT(&env);
+
++ free(oldHandlersP);
++
+ xmlrpc_server_abyss_destroy(serverP);
+
+ xmlrpc_registry_free(registryP);
+diff --git a/libs/xmlrpc-c/src/test/test.c b/libs/xmlrpc-c/src/test/test.c
+index 1b9c2d3..d7d0d9c 100644
+--- a/libs/xmlrpc-c/src/test/test.c
++++ b/libs/xmlrpc-c/src/test/test.c
+@@ -17,9 +17,10 @@
+
+ #include "xmlrpc-c/base.h"
+ #include "xmlrpc-c/server.h"
++#include "xmlrpc-c/string_int.h"
+
+ #include "bool.h"
+-#include "test.h"
++#include "testtool.h"
+ #include "value.h"
+ #include "serialize.h"
+ #include "parse_xml.h"
+@@ -76,8 +77,26 @@ static int test_int_array_3[8] = {1, 2, 3, 4, 5, 6, 7, 8};
+ **=========================================================================
+ */
+
+-static void test_env(void)
+-{
++static void
++testVersion(void) {
++
++ unsigned int major, minor, point;
++
++ xmlrpc_version(&major, &minor, &point);
++
++#ifndef WIN32
++ /* xmlrpc_version_major, etc. are not exported from a Windows DLL */
++
++ TEST(major = xmlrpc_version_major);
++ TEST(minor = xmlrpc_version_minor);
++ TEST(point = xmlrpc_version_point);
++#endif
++}
++
++
++
++static void
++testEnv(void) {
+ xmlrpc_env env, env2;
+
+ /* Test xmlrpc_env_init. */
+@@ -91,19 +110,19 @@ static void test_env(void)
+ TEST(env.fault_occurred);
+ TEST(env.fault_code == 1);
+ TEST(env.fault_string != test_string_1);
+- TEST(strcmp(env.fault_string, test_string_1) == 0);
++ TEST(xmlrpc_streq(env.fault_string, test_string_1));
+
+ /* Change an existing fault. */
+ xmlrpc_env_set_fault(&env, 2, test_string_2);
+ TEST(env.fault_occurred);
+ TEST(env.fault_code == 2);
+- TEST(strcmp(env.fault_string, test_string_2) == 0);
++ TEST(xmlrpc_streq(env.fault_string, test_string_2));
+
+ /* Set a fault with a format string. */
+ xmlrpc_env_set_fault_formatted(&env, 3, "a%s%d", "bar", 9);
+ TEST(env.fault_occurred);
+ TEST(env.fault_code == 3);
+- TEST(strcmp(env.fault_string, "abar9") == 0);
++ TEST(xmlrpc_streq(env.fault_string, "abar9"));
+
+ /* Test cleanup code (with help from memprof). */
+ xmlrpc_env_clean(&env);
+@@ -113,8 +132,10 @@ static void test_env(void)
+ xmlrpc_env_clean(&env2);
+ }
+
+-static void test_mem_block (void)
+-{
++
++
++static void
++testMemBlock(void) {
+ xmlrpc_env env;
+ xmlrpc_mem_block* block;
+
+@@ -141,7 +162,7 @@ static void test_mem_block (void)
+ xmlrpc_mem_block_resize(&env, block, 10000);
+ TEST_NO_FAULT(&env);
+ TEST(xmlrpc_mem_block_size(block) == 10000);
+- TEST(strcmp(xmlrpc_mem_block_contents(block), test_string_1) == 0);
++ TEST(xmlrpc_streq(xmlrpc_mem_block_contents(block), test_string_1));
+
+ /* Test cleanup code (with help from memprof). */
+ xmlrpc_mem_block_free(block);
+@@ -190,6 +211,8 @@ static void test_mem_block (void)
+ xmlrpc_env_clean(&env);
+ }
+
++
++
+ static char *(base64_triplets[]) = {
+ "", "", "\r\n",
+ "a", "YQ==", "YQ==\r\n",
+@@ -204,8 +227,11 @@ static char *(base64_triplets[]) = {
+ "ZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVo=\r\n",
+ NULL};
+
++
++
+ static void
+-test_base64_conversion(void) {
++testBase64Conversion(void) {
++
+ xmlrpc_env env;
+ char ** triplet;
+
+@@ -280,8 +306,9 @@ test_base64_conversion(void) {
+
+
+
+-static void test_bounds_checks (void)
+-{
++static void
++testBoundsChecks(void) {
++
+ xmlrpc_env env;
+ xmlrpc_value *array;
+ int i1, i2, i3, i4;
+@@ -310,8 +337,9 @@ static void test_bounds_checks (void)
+
+
+
+-static void test_nesting_limit (void)
+-{
++static void
++testNestingLimit(void) {
++
+ xmlrpc_env env;
+ xmlrpc_value *val;
+
+@@ -346,7 +374,7 @@ static void test_nesting_limit (void)
+
+
+ static void
+-test_xml_size_limit(void) {
++testXmlSizeLimit(void) {
+
+ xmlrpc_env env;
+ const char * methodName;
+@@ -395,12 +423,13 @@ test_xml_size_limit(void) {
+ ** We use these files to test strange-but-legal encodings, illegal-but-
+ ** allowed-by-Xmlrpc-c encodings, etc.
+ */
+-#ifdef WIN32
+-/* usually compiled in 'Windows' folder */
+-#define TESTDATA_DIR ".." DIRECTORY_SEPARATOR "bin" DIRECTORY_SEPARATOR "data"
+-#else
++
++/* The test program is designed to be run with the 'test' source directory
++ (which also contains the test program itself) as the current
++ directory. Except on Windows, where the Bin directory (which also contains
++ the test program itself) is supposed to be the current directory.
++*/
+ #define TESTDATA_DIR "data"
+-#endif
+
+ static const char * goodRequests[] = {
+ TESTDATA_DIR DIRECTORY_SEPARATOR "req_out_of_order.xml",
+@@ -649,9 +678,8 @@ test_utf8_coding(void) {
+ TEST_NO_FAULT(&env);
+ TEST(output != NULL);
+ TEST(strlen(utf8) == XMLRPC_TYPED_MEM_BLOCK_SIZE(char, output));
+- TEST(0 ==
+- strncmp(utf8, XMLRPC_TYPED_MEM_BLOCK_CONTENTS(char, output),
+- strlen(utf8)));
++ TEST(xmlrpc_strneq(utf8, XMLRPC_TYPED_MEM_BLOCK_CONTENTS(char, output),
++ strlen(utf8)));
+ xmlrpc_mem_block_free(output);
+ }
+
+@@ -713,18 +741,19 @@ main(int argc,
+ fprintf(stderr, "There are no arguments.\n");
+ retval = 1;
+ } else {
+- test_env();
+- test_mem_block();
+- test_base64_conversion();
++ testVersion();
++ testEnv();
++ testMemBlock();
++ testBase64Conversion();
+ printf("\n");
+ test_value();
+- test_bounds_checks();
++ testBoundsChecks();
+ printf("\n");
+ test_serialize();
+ test_parse_xml();
+ test_method_registry();
+- test_nesting_limit();
+- test_xml_size_limit();
++ testNestingLimit();
++ testXmlSizeLimit();
+ testSampleFiles();
+ printf("\n");
+ test_server_cgi_maybe();
+diff --git a/libs/xmlrpc-c/src/test/test.h b/libs/xmlrpc-c/src/test/test.h
+deleted file mode 100644
+index 70a8371..0000000
+--- a/libs/xmlrpc-c/src/test/test.h
++++ /dev/null
+@@ -1,109 +0,0 @@
+-#include <stdlib.h>
+-#include <stdio.h>
+-#include <math.h>
+-
+-#include "xmlrpc_config.h"
+-#include "xmlrpc-c/util.h"
+-#include "xmlrpc-c/util_int.h"
+-
+-extern int total_tests;
+-extern int total_failures;
+-
+-
+-/* This is a good place to set a breakpoint. */
+-static __inline__ void
+-test_failure(const char * const file,
+- unsigned int const line,
+- const char * const label,
+- const char * const statement) {
+-
+- ++total_failures;
+- printf("\n%s:%u: test failure: %s (%s)\n", file, line, label, statement);
+- abort();
+-}
+-
+-
+-
+-#define TEST(statement) \
+-do { \
+- ++total_tests; \
+- if ((statement)) { \
+- printf("."); \
+- } else { \
+- test_failure(__FILE__, __LINE__, "expected", #statement); \
+- } \
+- } while (0)
+-
+-#define TEST_NO_FAULT(env) \
+- do { \
+- ++total_tests; \
+- if (!(env)->fault_occurred) { \
+- printf("."); \
+- } else { \
+- test_failure(__FILE__, __LINE__, "fault occurred", \
+- (env)->fault_string); \
+- } \
+- } while (0)
+-
+-#define TEST_EPSILON 1E-5
+-
+-#define FORCENONZERO(x) (MAX(fabs(x), TEST_EPSILON))
+-
+-#define FLOATEQUAL(comparand, comparator) \
+- ((fabs((comparand)-(comparator)))/FORCENONZERO(comparand) < TEST_EPSILON)
+-#define TESTFLOATEQUAL(comparand, comparator) \
+- TEST(FLOATEQUAL(comparand, comparator))
+-
+-static __inline__ void
+-test_fault(xmlrpc_env * const envP,
+- int const expectedCode,
+- const char * const fileName,
+- unsigned int const lineNumber) {
+-
+- ++total_tests;
+-
+- if (!envP->fault_occurred)
+- test_failure(fileName, lineNumber, "no fault occurred", "");
+- else if (envP->fault_code != expectedCode)
+- test_failure(fileName, lineNumber, "wrong fault occurred",
+- envP->fault_string);
+- else
+- printf(".");
+-
+- xmlrpc_env_clean(envP);
+- xmlrpc_env_init(envP);
+-}
+-
+-
+-#define TEST_FAULT(envP, code) \
+- do { test_fault(envP, code, __FILE__, __LINE__); } while(0)
+-
+-;
+-
+-
+-static __inline__ void
+-test_null_string(const char * const string,
+- const char * const fileName,
+- unsigned int const lineNumber) {
+-
+- ++total_tests;
+-
+- if (string != NULL)
+- test_failure(fileName, lineNumber, "string not null", string);
+- else
+- printf(".");
+-}
+-
+-
+-#define TEST_NULL_STRING(string) \
+- do { test_null_string(string, __FILE__, __LINE__); } while(0)
+-
+-;
+-
+-#define TEST_ERROR(reason) \
+-do { \
+- printf("Unable to test at %s/%u. %s", __FILE__, __LINE__, reason); \
+- abort(); \
+- } while (0)
+-
+-;
+diff --git a/libs/xmlrpc-c/src/test/value.c b/libs/xmlrpc-c/src/test/value.c
+index bda938c..6ed6c47 100644
+--- a/libs/xmlrpc-c/src/test/value.c
++++ b/libs/xmlrpc-c/src/test/value.c
+@@ -13,7 +13,9 @@
+ #include "xmlrpc-c/base.h"
+ #include "xmlrpc-c/string_int.h"
+
+-#include "test.h"
++#include "testtool.h"
++#include "value_datetime.h"
++
+ #include "value.h"
+
+
+@@ -158,197 +160,6 @@ test_value_double(void) {
+
+
+
+-static void
+-test_value_datetime_varytime(const char * const datestring,
+- time_t const datetime) {
+-
+- xmlrpc_value * v;
+- xmlrpc_env env;
+- const char * ds;
+- time_t dt;
+-
+- xmlrpc_env_init(&env);
+-
+- v = xmlrpc_datetime_new_str(&env, datestring);
+- TEST_NO_FAULT(&env);
+- TEST(XMLRPC_TYPE_DATETIME == xmlrpc_value_type(v));
+-
+- xmlrpc_read_datetime_sec(&env, v, &dt);
+- TEST_NO_FAULT(&env);
+- TEST(dt == datetime);
+-
+- xmlrpc_DECREF(v);
+-
+- v = xmlrpc_datetime_new_sec(&env, datetime);
+- TEST_NO_FAULT(&env);
+- TEST(XMLRPC_TYPE_DATETIME == xmlrpc_value_type(v));
+-
+- xmlrpc_read_datetime_str(&env, v, &ds);
+- TEST_NO_FAULT(&env);
+- TEST(streq(ds, datestring));
+- strfree(ds);
+-
+- xmlrpc_DECREF(v);
+-
+- xmlrpc_env_clean(&env);
+-}
+-
+-
+-
+-static void
+-test_value_datetime_not_unix(const char * const datestring) {
+-
+- xmlrpc_value * v;
+- xmlrpc_env env;
+- time_t dt;
+-
+- xmlrpc_env_init(&env);
+-
+- v = xmlrpc_datetime_new_str(&env, datestring);
+- TEST_NO_FAULT(&env);
+-
+- xmlrpc_read_datetime_sec(&env, v, &dt);
+- TEST_FAULT(&env, XMLRPC_INTERNAL_ERROR);
+-
+- xmlrpc_DECREF(v);
+-
+- xmlrpc_env_clean(&env);
+-}
+-
+-
+-
+-static void
+-test_value_datetime_invalid(const char * const datestring) {
+-
+- /* Ideally, xmlrpc_datetime_new_str() would fail on these, but
+- the code doesn't implement that today. However,
+- xmlrpc_read_datetime_sec() does catch many cases, so we
+- use that.
+-
+- Note that xmlrpc_read_datetime_sec() doesn't catch them all.
+- Sometimes it just returns garbage, e.g. returns July 1 for
+- June 31.
+- */
+-
+- xmlrpc_value * v;
+- xmlrpc_env env;
+- time_t dt;
+-
+- xmlrpc_env_init(&env);
+-
+- v = xmlrpc_datetime_new_str(&env, datestring);
+- TEST_NO_FAULT(&env);
+-
+- xmlrpc_read_datetime_sec(&env, v, &dt);
+- TEST_FAULT(&env, XMLRPC_PARSE_ERROR);
+-
+- xmlrpc_DECREF(v);
+-
+- xmlrpc_env_clean(&env);
+-}
+-
+-
+-
+-static void
+-test_build_decomp_datetime(void) {
+-
+- const char * datestring = "19980717T14:08:55";
+- time_t const datetime = 900684535;
+-
+- xmlrpc_env env;
+- xmlrpc_value * v;
+- time_t dt;
+- const char * ds;
+-
+- xmlrpc_env_init(&env);
+-
+- v = xmlrpc_build_value(&env, "t", datetime);
+- TEST_NO_FAULT(&env);
+- TEST(v != NULL);
+- TEST(xmlrpc_value_type(v) == XMLRPC_TYPE_DATETIME);
+-
+- dt = 0;
+- xmlrpc_read_datetime_sec(&env, v, &dt);
+- TEST(dt == datetime);
+-
+- dt = 0;
+- xmlrpc_decompose_value(&env, v, "t", &dt);
+- xmlrpc_DECREF(v);
+- TEST_NO_FAULT(&env);
+- TEST(dt == datetime);
+-
+- v = xmlrpc_int_new(&env, 9);
+- TEST_NO_FAULT(&env);
+- xmlrpc_decompose_value(&env, v, "t", &dt);
+- TEST_FAULT(&env, XMLRPC_TYPE_ERROR);
+- xmlrpc_env_clean(&env);
+- xmlrpc_env_init(&env);
+- xmlrpc_decompose_value(&env, v, "8", &ds);
+- TEST_FAULT(&env, XMLRPC_TYPE_ERROR);
+- xmlrpc_env_clean(&env);
+- xmlrpc_env_init(&env);
+- xmlrpc_DECREF(v);
+-
+- v = xmlrpc_build_value(&env, "8", datestring);
+- TEST_NO_FAULT(&env);
+- TEST(v != NULL);
+- TEST(xmlrpc_value_type(v) == XMLRPC_TYPE_DATETIME);
+- xmlrpc_decompose_value(&env, v, "8", &ds);
+- xmlrpc_DECREF(v);
+- TEST_NO_FAULT(&env);
+- TEST(streq(ds, datestring));
+- strfree(ds);
+-
+- xmlrpc_env_clean(&env);
+-}
+-
+-
+-
+-static void
+-test_value_datetime(void) {
+-
+- const char * datestring = "19980717T14:08:55";
+- time_t const datetime = 900684535;
+-
+- xmlrpc_env env;
+-
+- xmlrpc_env_init(&env);
+-
+- TEST(streq(xmlrpc_type_name(XMLRPC_TYPE_DATETIME), "DATETIME"));
+-
+- /* Valid datetime, generated from XML-RPC string */
+-
+- test_value_datetime_varytime(datestring, datetime);
+-
+- /* Leap years */
+- test_value_datetime_varytime("20000229T23:59:59", 951868799);
+- test_value_datetime_varytime("20000301T00:00:00", 951868800);
+- test_value_datetime_varytime("20010228T23:59:59", 983404799);
+- test_value_datetime_varytime("20010301T00:00:00", 983404800);
+- test_value_datetime_varytime("20040229T23:59:59", 1078099199);
+- test_value_datetime_varytime("20040301T00:00:00", 1078099200);
+-
+- /* Datetimes that can't be represented as time_t */
+- test_value_datetime_not_unix("19691231T23:59:59");
+-
+- /* Invalid datetimes */
+- /* Note that the code today does a pretty weak job of validating datetimes,
+- so we test only the validation that we know is implemented.
+- */
+- test_value_datetime_invalid("19700101T25:00:00");
+- test_value_datetime_invalid("19700101T10:61:01");
+- test_value_datetime_invalid("19700101T10:59:61");
+- test_value_datetime_invalid("19700001T10:00:00");
+- test_value_datetime_invalid("19701301T10:00:00");
+- test_value_datetime_invalid("19700132T10:00:00");
+-
+- test_build_decomp_datetime();
+-
+- xmlrpc_env_clean(&env);
+-}
+-
+-
+-
+ static xmlrpc_value *
+ test_string_new_va(xmlrpc_env * const envP,
+ const char * const format,
+@@ -711,7 +522,7 @@ test_value_string_wide_build(void) {
+ xmlrpc_env_init(&env);
+
+ /* Build with build_value w# */
+- valueP = xmlrpc_build_value(&env, "w#", wcs_data, 3);
++ valueP = xmlrpc_build_value(&env, "w#", wcs_data, (size_t)3);
+ TEST_NO_FAULT(&env);
+ TEST(valueP != NULL);
+
+@@ -849,7 +660,7 @@ test_value_string_wide(void) {
+ TEST(str != NULL);
+ TEST(len == 4);
+ TEST(str[len] == '\0');
+- TEST(0 == strncmp(str, utf8_data, len));
++ TEST(xmlrpc_strneq(str, utf8_data, len));
+ free((void*)str);
+ }
+
+@@ -952,7 +763,7 @@ test_value_base64(void) {
+ TEST_NO_FAULT(&env);
+ TEST(len == sizeof(data2));
+ TEST(memeq(data, data1, sizeof(data2)));
+- strfree(data);
++ free((void *)data);
+
+ xmlrpc_env_clean(&env);
+ }
+@@ -992,6 +803,7 @@ test_value_array(void) {
+ xmlrpc_value *v;
+ xmlrpc_env env;
+ size_t len;
++ xmlrpc_value * itemP;
+
+ /* Basic array-building test. */
+
+@@ -1005,6 +817,16 @@ test_value_array(void) {
+ len = xmlrpc_array_size(&env, v);
+ TEST_NO_FAULT(&env);
+ TEST(len == 0);
++
++ itemP = xmlrpc_int_new(&env, 7);
++ TEST_NO_FAULT(&env);
++ xmlrpc_array_append_item(&env, v, itemP);
++ TEST_NO_FAULT(&env);
++ len = xmlrpc_array_size(&env, v);
++ TEST_NO_FAULT(&env);
++ TEST(len == 1);
++ xmlrpc_DECREF(itemP);
++
+ xmlrpc_DECREF(v);
+
+ v = xmlrpc_build_value(&env, "()");
+@@ -1234,20 +1056,48 @@ test_value_array_nil(void) {
+
+
+ static void
++destroyMyCptr(void * const context,
++ void * const objectP) {
++/*----------------------------------------------------------------------------
++ This is a xmlrpc_cptr_dtor_fn.
++-----------------------------------------------------------------------------*/
++ int * const destroyConfirmationP = context;
++ int * const objectIntP = objectP;
++
++ *destroyConfirmationP = *objectIntP;
++}
++
++
++
++static void
+ test_value_cptr(void) {
+
++ int destroyConfirmation;
++
+ xmlrpc_value * v;
+ xmlrpc_env env;
+ void * ptr;
+-
+- /* Test C pointer storage using 'p'.
+- We don't have cleanup functions (yet).
+- */
++ int myObject;
+
+ xmlrpc_env_init(&env);
+
+ TEST(streq(xmlrpc_type_name(XMLRPC_TYPE_C_PTR), "C_PTR"));
+
++ myObject = 7;
++
++ v = xmlrpc_cptr_new(&env, &myObject);
++ TEST_NO_FAULT(&env);
++ TEST(xmlrpc_value_type(v) == XMLRPC_TYPE_C_PTR);
++ xmlrpc_DECREF(v);
++
++ v = xmlrpc_cptr_new_dtor(&env, &myObject,
++ &destroyMyCptr, &destroyConfirmation);
++ TEST_NO_FAULT(&env);
++ TEST(xmlrpc_value_type(v) == XMLRPC_TYPE_C_PTR);
++ destroyConfirmation = 3;
++ xmlrpc_DECREF(v);
++ TEST(destroyConfirmation == 7); // the destructor has set this
++
+ v = xmlrpc_build_value(&env, "p", (void*) 0x00000017);
+ TEST_NO_FAULT(&env);
+ TEST(XMLRPC_TYPE_C_PTR == xmlrpc_value_type(v));
+@@ -1273,7 +1123,7 @@ test_value_nil(void) {
+
+ v = xmlrpc_nil_new(&env);
+ TEST_NO_FAULT(&env);
+- TEST(XMLRPC_TYPE_NIL == xmlrpc_value_type(v));
++ TEST(xmlrpc_value_type(v) == XMLRPC_TYPE_NIL);
+ xmlrpc_DECREF(v);
+
+ v = xmlrpc_build_value(&env, "n");
+@@ -1465,7 +1315,7 @@ test_value_parse_value(void) {
+
+ valueP = xmlrpc_build_value(&env, "(idb8ss#6(i){s:i}np(i))",
+ 7, 3.14, (xmlrpc_bool)1, datestring,
+- "hello world", "a\0b", 3,
++ "hello world", "a\0b", (size_t)3,
+ "base64 data", strlen("base64 data"),
+ 15, "member9", 9, &valueP, -5);
+
+@@ -1610,7 +1460,7 @@ test_struct_get_element(xmlrpc_value * const structP,
+
+ static void
+ testStructReadout(xmlrpc_value * const structP,
+- size_t const expectedSize) {
++ unsigned int const expectedSize) {
+
+ xmlrpc_env env;
+ xmlrpc_value * keyP;
+@@ -1753,6 +1603,10 @@ test_struct_decompose(xmlrpc_value * const testStructP) {
+ "foo", &sval,
+ "bar", &ival);
+ TEST_NO_FAULT(&env);
++ TEST(ival == 1);
++ TEST(!bval);
++ TEST(streq(sval, "Hello!"));
++ free(sval);
+
+ /* First value of wrong type */
+ xmlrpc_decompose_value(&env, testStructP, "{s:b,s:i,*}",
+diff --git a/libs/xmlrpc-c/src/test/xml_data.h b/libs/xmlrpc-c/src/test/xml_data.h
+index 4b34238..89b5e49 100644
+--- a/libs/xmlrpc-c/src/test/xml_data.h
++++ b/libs/xmlrpc-c/src/test/xml_data.h
+@@ -3,6 +3,9 @@
+
+ #define XML_PROLOGUE "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
+
++#define APACHE_URL "http://ws.apache.org/xmlrpc/namespaces/extensions"
++#define XMLNS_APACHE "xmlns:ex=\"" APACHE_URL "\""
++
+ extern char const serialized_data[];
+
+ extern char const serialized_call[];
+diff --git a/libs/xmlrpc-c/src/trace.c b/libs/xmlrpc-c/src/trace.c
+index 53d54f3..bb65945 100644
+--- a/libs/xmlrpc-c/src/trace.c
++++ b/libs/xmlrpc-c/src/trace.c
+@@ -36,7 +36,7 @@ nextLineSize(const char * const string,
+ void
+ xmlrpc_traceXml(const char * const label,
+ const char * const xml,
+- unsigned int const xmlLength) {
++ size_t const xmlLength) {
+
+ if (getenv("XMLRPC_TRACE_XML")) {
+ size_t cursor; /* Index into xml[] */
+@@ -60,3 +60,4 @@ xmlrpc_traceXml(const char * const label,
+ }
+ }
+
++
+diff --git a/libs/xmlrpc-c/src/version.c b/libs/xmlrpc-c/src/version.c
+index c286966..07a2d43 100644
+--- a/libs/xmlrpc-c/src/version.c
++++ b/libs/xmlrpc-c/src/version.c
+@@ -5,3 +5,14 @@
+ unsigned int const xmlrpc_version_major = XMLRPC_VERSION_MAJOR;
+ unsigned int const xmlrpc_version_minor = XMLRPC_VERSION_MINOR;
+ unsigned int const xmlrpc_version_point = XMLRPC_VERSION_POINT;
++
++void
++xmlrpc_version(unsigned int * const majorP,
++ unsigned int * const minorP,
++ unsigned int * const pointP) {
++
++ *majorP = XMLRPC_VERSION_MAJOR;
++ *minorP = XMLRPC_VERSION_MINOR;
++ *pointP = XMLRPC_VERSION_POINT;
++}
++
+diff --git a/libs/xmlrpc-c/src/xmlrpc_array.c b/libs/xmlrpc-c/src/xmlrpc_array.c
+index a474546..0de210e 100644
+--- a/libs/xmlrpc-c/src/xmlrpc_array.c
++++ b/libs/xmlrpc-c/src/xmlrpc_array.c
+@@ -7,6 +7,7 @@
+
+ #include "xmlrpc_config.h"
+
++#include <assert.h>
+ #include <stddef.h>
+ #include <stdlib.h>
+
+@@ -24,7 +25,7 @@ xmlrpc_abort_if_array_bad(xmlrpc_value * const arrayP) {
+ else if (arrayP->_type != XMLRPC_TYPE_ARRAY)
+ abort();
+ else {
+- unsigned int const arraySize =
++ size_t const arraySize =
+ XMLRPC_MEMBLOCK_SIZE(xmlrpc_value*, &arrayP->_block);
+ xmlrpc_value ** const contents =
+ XMLRPC_MEMBLOCK_CONTENTS(xmlrpc_value*, &arrayP->_block);
+@@ -32,7 +33,7 @@ xmlrpc_abort_if_array_bad(xmlrpc_value * const arrayP) {
+ if (contents == NULL)
+ abort();
+ else {
+- unsigned int index;
++ size_t index;
+
+ for (index = 0; index < arraySize; ++index) {
+ xmlrpc_value * const itemP = contents[index];
+@@ -53,12 +54,12 @@ xmlrpc_destroyArrayContents(xmlrpc_value * const arrayP) {
+ Dispose of the contents of an array (but not the array value itself).
+ The value is not valid after this.
+ -----------------------------------------------------------------------------*/
+- unsigned int const arraySize =
++ size_t const arraySize =
+ XMLRPC_MEMBLOCK_SIZE(xmlrpc_value*, &arrayP->_block);
+ xmlrpc_value ** const contents =
+ XMLRPC_MEMBLOCK_CONTENTS(xmlrpc_value*, &arrayP->_block);
+
+- unsigned int index;
++ size_t index;
+
+ XMLRPC_ASSERT_ARRAY_OK(arrayP);
+
+@@ -73,25 +74,27 @@ xmlrpc_destroyArrayContents(xmlrpc_value * const arrayP) {
+
+
+ int
+-xmlrpc_array_size(xmlrpc_env * const env,
+- const xmlrpc_value * const array) {
++xmlrpc_array_size(xmlrpc_env * const envP,
++ const xmlrpc_value * const arrayP) {
+
+ int retval;
+
+- /* Suppress a compiler warning about uninitialized variables. */
+- retval = 0;
++ XMLRPC_ASSERT_ENV_OK(envP);
++ XMLRPC_ASSERT_VALUE_OK(arrayP);
+
+- XMLRPC_ASSERT_ENV_OK(env);
+- XMLRPC_ASSERT_VALUE_OK(array);
+- XMLRPC_TYPE_CHECK(env, array, XMLRPC_TYPE_ARRAY);
++ if (arrayP->_type != XMLRPC_TYPE_ARRAY) {
++ xmlrpc_env_set_fault_formatted(
++ envP, XMLRPC_TYPE_ERROR, "Value is not an array");
++ retval = -1;
++ } else {
++ size_t const size =
++ XMLRPC_MEMBLOCK_SIZE(xmlrpc_value *, &arrayP->_block);
+
+- retval = XMLRPC_TYPED_MEM_BLOCK_SIZE(xmlrpc_value*, &array->_block);
++ assert((size_t)(int)(size) == size);
+
+- cleanup:
+- if (env->fault_occurred)
+- return -1;
+- else
+- return retval;
++ retval = (int)size;
++ }
++ return retval;
+ }
+
+
+diff --git a/libs/xmlrpc-c/src/xmlrpc_base64.c b/libs/xmlrpc-c/src/xmlrpc_base64.c
+index 2f54377..30f0c02 100644
+--- a/libs/xmlrpc-c/src/xmlrpc_base64.c
++++ b/libs/xmlrpc-c/src/xmlrpc_base64.c
+@@ -36,6 +36,7 @@
+
+ #include "xmlrpc_config.h"
+
++#include "bool.h"
+ #include "xmlrpc-c/base.h"
+
+ #define CRLF "\015\012"
+@@ -89,178 +90,190 @@ static char table_a2b_base64[] = {
+ #define BASE64_MAXBIN 57 /* Max binary chunk size (76 char line) */
+ #define BASE64_LINE_SZ 128 /* Buffer size for a single line. */
+
+-static unsigned char table_b2a_base64[] =
++static unsigned char const table_b2a_base64[] =
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+
++
++
+ static xmlrpc_mem_block *
+-xmlrpc_base64_encode_internal (xmlrpc_env *env,
+- unsigned char *bin_data,
+- size_t bin_len,
+- int want_newlines)
+-{
+- size_t chunk_start, chunk_left;
+- unsigned char *ascii_data;
++base64Encode(xmlrpc_env * const envP,
++ const unsigned char * const binData,
++ size_t const binLen,
++ bool const wantNewlines) {
++
++ size_t chunkStart, chunkLeft;
++ unsigned char * asciiData;
+ int leftbits;
+- unsigned char this_ch;
++ unsigned char thisCh;
+ unsigned int leftchar;
+- xmlrpc_mem_block *output;
+- unsigned char line_buffer[BASE64_LINE_SZ];
++ xmlrpc_mem_block * outputP;
++ unsigned char lineBuffer[BASE64_LINE_SZ];
++ const unsigned char * cursor;
+
+ /* Create a block to hold our lines when we finish them. */
+- output = xmlrpc_mem_block_new(env, 0);
+- XMLRPC_FAIL_IF_FAULT(env);
++ outputP = xmlrpc_mem_block_new(envP, 0);
++ XMLRPC_FAIL_IF_FAULT(envP);
+
+ /* Deal with empty data blocks gracefully. Yuck. */
+- if (bin_len == 0) {
+- if (want_newlines)
+- XMLRPC_TYPED_MEM_BLOCK_APPEND(char, env, output, CRLF, 2);
++ if (binLen == 0) {
++ if (wantNewlines)
++ XMLRPC_MEMBLOCK_APPEND(char, envP, outputP, CRLF, 2);
+ goto cleanup;
+ }
+
+ /* Process our binary data in line-sized chunks. */
+- for (chunk_start=0; chunk_start < bin_len; chunk_start += BASE64_MAXBIN) {
++ for (chunkStart = 0, cursor = &binData[0];
++ chunkStart < binLen;
++ chunkStart += BASE64_MAXBIN) {
+
+ /* Set up our per-line state. */
+- ascii_data = &line_buffer[0];
+- chunk_left = bin_len - chunk_start;
+- if (chunk_left > BASE64_MAXBIN)
+- chunk_left = BASE64_MAXBIN;
++ asciiData = &lineBuffer[0];
++ chunkLeft = binLen - chunkStart;
++ if (chunkLeft > BASE64_MAXBIN)
++ chunkLeft = BASE64_MAXBIN;
+ leftbits = 0;
+ leftchar = 0;
+
+- for(; chunk_left > 0; chunk_left--, bin_data++) {
++ for(; chunkLeft > 0; --chunkLeft, ++cursor) {
+ /* Shift the data into our buffer */
+- leftchar = (leftchar << 8) | *bin_data;
++ leftchar = (leftchar << 8) | *cursor;
+ leftbits += 8;
+
+ /* See if there are 6-bit groups ready */
+ while (leftbits >= 6) {
+- this_ch = (leftchar >> (leftbits-6)) & 0x3f;
++ thisCh = (leftchar >> (leftbits-6)) & 0x3f;
+ leftbits -= 6;
+- *ascii_data++ = table_b2a_base64[this_ch];
++ *asciiData++ = table_b2a_base64[thisCh];
+ }
+ }
+ if (leftbits == 2) {
+- *ascii_data++ = table_b2a_base64[(leftchar&3) << 4];
+- *ascii_data++ = BASE64_PAD;
+- *ascii_data++ = BASE64_PAD;
++ *asciiData++ = table_b2a_base64[(leftchar&3) << 4];
++ *asciiData++ = BASE64_PAD;
++ *asciiData++ = BASE64_PAD;
+ } else if (leftbits == 4) {
+- *ascii_data++ = table_b2a_base64[(leftchar&0xf) << 2];
+- *ascii_data++ = BASE64_PAD;
++ *asciiData++ = table_b2a_base64[(leftchar&0xf) << 2];
++ *asciiData++ = BASE64_PAD;
+ }
+
+ /* Append a courtesy CRLF. */
+- if (want_newlines) {
+- *ascii_data++ = CR;
+- *ascii_data++ = LF;
++ if (wantNewlines) {
++ *asciiData++ = CR;
++ *asciiData++ = LF;
+ }
+
+ /* Save our line. */
+- XMLRPC_TYPED_MEM_BLOCK_APPEND(char, env, output, line_buffer,
+- ascii_data - &line_buffer[0]);
+- XMLRPC_FAIL_IF_FAULT(env);
++ XMLRPC_MEMBLOCK_APPEND(char, envP, outputP, lineBuffer,
++ asciiData - &lineBuffer[0]);
++ XMLRPC_FAIL_IF_FAULT(envP);
+ }
+
+ cleanup:
+- if (env->fault_occurred) {
+- if (output)
+- xmlrpc_mem_block_free(output);
++ if (envP->fault_occurred) {
++ if (outputP)
++ xmlrpc_mem_block_free(outputP);
+ return NULL;
+ }
+- return output;
++ return outputP;
+ }
+
+
++
+ xmlrpc_mem_block *
+-xmlrpc_base64_encode (xmlrpc_env *env, unsigned char *bin_data, size_t bin_len)
+-{
+- return xmlrpc_base64_encode_internal(env, bin_data, bin_len, 1);
++xmlrpc_base64_encode(xmlrpc_env * const envP,
++ const unsigned char * const binData,
++ size_t const binLen) {
++
++ return base64Encode(envP, binData, binLen, true);
+ }
+
+
++
+ xmlrpc_mem_block *
+-xmlrpc_base64_encode_without_newlines (xmlrpc_env *env,
+- unsigned char *bin_data,
+- size_t bin_len)
+-{
+- return xmlrpc_base64_encode_internal(env, bin_data, bin_len, 0);
++xmlrpc_base64_encode_without_newlines(xmlrpc_env * const envP,
++ const unsigned char * const binData,
++ size_t const binLen) {
++
++ return base64Encode(envP, binData, binLen, false);
+ }
+
+
++
+ xmlrpc_mem_block *
+-xmlrpc_base64_decode (xmlrpc_env * const env,
+- const char * const ascii_data,
+- size_t const ascii_len) {
++xmlrpc_base64_decode(xmlrpc_env * const envP,
++ const char * const asciiData,
++ size_t const acsiiLen) {
+
+- unsigned char *bin_data;
++ unsigned char * binData;
+ int leftbits;
+- unsigned char this_ch;
++ unsigned char thisCh;
+ unsigned int leftchar;
+ size_t npad;
+- size_t bin_len, buffer_size;
+- xmlrpc_mem_block *output;
+- const char * next_char;
+- size_t remaining_len;
++ size_t binLen, bufferSize;
++ xmlrpc_mem_block * outputP;
++ const char * nextCharP;
++ size_t remainingLen;
+
+ /* Create a block to hold our chunks when we finish them.
+ ** We overestimate the size now, and fix it later. */
+- buffer_size = ((ascii_len+3)/4)*3;
+- output = xmlrpc_mem_block_new(env, buffer_size);
+- XMLRPC_FAIL_IF_FAULT(env);
++ bufferSize = ((acsiiLen + 3) / 4) * 3;
++ outputP = xmlrpc_mem_block_new(envP, bufferSize);
++ XMLRPC_FAIL_IF_FAULT(envP);
+
+ /* Set up our decoder state. */
+ leftbits = 0;
+ leftchar = 0;
+ npad = 0;
+- bin_data = XMLRPC_TYPED_MEM_BLOCK_CONTENTS(unsigned char, output);
+- bin_len = 0;
++ binData = XMLRPC_MEMBLOCK_CONTENTS(unsigned char, outputP);
++ binLen = 0;
+
+- for (remaining_len = ascii_len, next_char = ascii_data;
+- remaining_len > 0;
+- --remaining_len, ++next_char) {
++ for (remainingLen = acsiiLen, nextCharP = asciiData;
++ remainingLen > 0;
++ --remainingLen, ++nextCharP) {
+
+ /* Skip some punctuation. */
+- this_ch = (*next_char & 0x7f);
+- if ( this_ch == '\r' || this_ch == '\n' || this_ch == ' ' )
++ thisCh = (*nextCharP & 0x7f);
++ if (thisCh == '\r' || thisCh == '\n' || thisCh == ' ')
+ continue;
+- if ( this_ch == BASE64_PAD )
+- npad++;
+- this_ch = table_a2b_base64[(*next_char) & 0x7f];
++ if (thisCh == BASE64_PAD)
++ ++npad;
++ thisCh = table_a2b_base64[(*nextCharP) & 0x7f];
+
+ /* XXX - We just throw away invalid characters. Is this right? */
+- if ( this_ch == (unsigned char) -1 ) continue;
++ if (thisCh == (unsigned char) -1)
++ continue;
+
+- /* Shift it in on the low end, and see if there's
+- ** a byte ready for output. */
+- leftchar = (leftchar << 6) | (this_ch);
++ /* Shift it in on the low end, and see if there's a byte ready for
++ output.
++ */
++ leftchar = (leftchar << 6) | (thisCh);
+ leftbits += 6;
+- if ( leftbits >= 8 ) {
++ if (leftbits >= 8) {
+ leftbits -= 8;
+- XMLRPC_ASSERT(bin_len < buffer_size);
+- *bin_data++ = (leftchar >> leftbits) & 0xFF;
++ XMLRPC_ASSERT(binLen < bufferSize);
++ *binData++ = (leftchar >> leftbits) & 0xFF;
+ leftchar &= ((1 << leftbits) - 1);
+- bin_len++;
++ ++binLen;
+ }
+ }
+
+ /* Check that no bits are left. */
+- if ( leftbits )
+- XMLRPC_FAIL(env, XMLRPC_PARSE_ERROR, "Incorrect Base64 padding");
++ if (leftbits)
++ XMLRPC_FAIL(envP, XMLRPC_PARSE_ERROR, "Incorrect Base64 padding");
+
+ /* Check to make sure we have a sane amount of padding. */
+- if (npad > bin_len || npad > 2)
+- XMLRPC_FAIL(env, XMLRPC_PARSE_ERROR, "Malformed Base64 data");
++ if (npad > binLen || npad > 2)
++ XMLRPC_FAIL(envP, XMLRPC_PARSE_ERROR, "Malformed Base64 data");
+
+ /* Remove any padding and set the correct size. */
+- bin_len -= npad;
+- XMLRPC_TYPED_MEM_BLOCK_RESIZE(char, env, output, bin_len);
+- XMLRPC_ASSERT(!env->fault_occurred);
+-
+- cleanup:
+- if (env->fault_occurred) {
+- if (output)
+- xmlrpc_mem_block_free(output);
++ binLen -= npad;
++ XMLRPC_MEMBLOCK_RESIZE(char, envP, outputP, binLen);
++ XMLRPC_ASSERT(!envP->fault_occurred);
++
++ cleanup:
++ if (envP->fault_occurred) {
++ if (outputP)
++ xmlrpc_mem_block_free(outputP);
+ return NULL;
+ }
+- return output;
++ return outputP;
+ }
+diff --git a/libs/xmlrpc-c/src/xmlrpc_build.c b/libs/xmlrpc-c/src/xmlrpc_build.c
+index 19e2a55..b44f471 100644
+--- a/libs/xmlrpc-c/src/xmlrpc_build.c
++++ b/libs/xmlrpc-c/src/xmlrpc_build.c
+@@ -17,16 +17,6 @@
+ #include "xmlrpc-c/string_int.h"
+
+
+-/*=========================================================================
+-** Creating XML-RPC values.
+-**=========================================================================
+-** Build new XML-RPC values from a format string. This code is heavily
+-** inspired by Py_BuildValue from Python 1.5.2. In particular, our
+-** particular abuse of the va_list data type is copied from the equivalent
+-** Python code in modsupport.c. Since Python is portable, our code should
+-** (in theory) also be portable.
+-*/
+-
+
+ static void
+ getString(xmlrpc_env * const envP,
+@@ -35,11 +25,11 @@ getString(xmlrpc_env * const envP,
+ xmlrpc_value ** const valPP) {
+
+ const char * str;
+- unsigned int len;
++ size_t len;
+
+ str = (const char*) va_arg(argsP->v, char*);
+- if (**formatP == '#') {
+- (*formatP)++;
++ if (*(*formatP) == '#') {
++ ++(*formatP);
+ len = (size_t) va_arg(argsP->v, size_t);
+ } else
+ len = strlen(str);
+@@ -399,10 +389,12 @@ xmlrpc_build_value(xmlrpc_env * const envP,
+
+ if (!envP->fault_occurred) {
+ if (*suffix != '\0')
+- xmlrpc_env_set_fault_formatted(
+- envP, XMLRPC_INTERNAL_ERROR, "Junk after the argument "
+- "specifier: '%s'. There must be exactly one arument.",
+- suffix);
++ xmlrpc_faultf(envP, "Junk after the format specifier: '%s'. "
++ "The format string must describe exactly "
++ "one XML-RPC value "
++ "(but it might be a compound value "
++ "such as an array)",
++ suffix);
+
+ if (envP->fault_occurred)
+ xmlrpc_DECREF(retval);
+diff --git a/libs/xmlrpc-c/src/xmlrpc_builddecomp.c b/libs/xmlrpc-c/src/xmlrpc_builddecomp.c
+deleted file mode 100644
+index e770652..0000000
+--- a/libs/xmlrpc-c/src/xmlrpc_builddecomp.c
++++ /dev/null
+@@ -1,973 +0,0 @@
+-/* Copyright information is at end of file */
+-
+-#include "xmlrpc_config.h"
+-
+-#include <stddef.h>
+-#include <stdlib.h>
+-#include <stdarg.h>
+-#include <string.h>
+-
+-#include "bool.h"
+-#include "xmlrpc-c/base.h"
+-#include "xmlrpc-c/base_int.h"
+-
+-/* Borrowed from Python 1.5.2.
+-** MPW pushes 'extended' for float and double types with varargs */
+-#ifdef MPW
+-typedef extended va_double;
+-#else
+-typedef double va_double;
+-#endif
+-
+-/* Borrowed from Python 1.5.2.
+-** Python copies its va_list objects before using them in certain
+-** tricky fashions. We don't why Python does this, but since we're
+-** abusing our va_list objects in a similar fashion, we'll copy them
+-** too. */
+-#if VA_LIST_IS_ARRAY
+-#define VA_LIST_COPY(dest,src) memcpy((dest), (src), sizeof(va_list))
+-#else
+-#if __sun
+-#define VA_LIST_COPY(dest,src) va_copy((dest),(src))
+-#else
+-#define VA_LIST_COPY(dest,src) ((dest) = (src))
+-#endif
+-#endif
+-
+-/*=========================================================================
+-** Creating XML-RPC values.
+-**=========================================================================
+-** Build new XML-RPC values from a format string. This code is heavily
+-** inspired by Py_BuildValue from Python 1.5.2. In particular, our
+-** particular abuse of the va_list data type is copied from the equivalent
+-** Python code in modsupport.c. Since Python is portable, our code should
+-** (in theory) also be portable.
+-*/
+-
+-
+-static void
+-getString(xmlrpc_env * const envP,
+- const char ** const formatP,
+- va_list * const args,
+- xmlrpc_value ** const valPP) {
+-
+- const char * str;
+- unsigned int len;
+-
+- str = (const char*) va_arg(*args, char*);
+- if (**formatP == '#') {
+- (*formatP)++;
+- len = (size_t) va_arg(*args, size_t);
+- } else
+- len = strlen(str);
+-
+- *valPP = xmlrpc_string_new_lp(envP, len, str);
+-}
+-
+-
+-
+-#ifdef HAVE_UNICODE_WCHAR
+-static void
+-mkWideString(xmlrpc_env * const envP,
+- wchar_t * const wcs,
+- size_t const wcs_len,
+- xmlrpc_value ** const valPP) {
+-
+- xmlrpc_value * valP;
+- char *contents;
+- wchar_t *wcs_contents;
+- int block_is_inited;
+- xmlrpc_mem_block *utf8_block;
+- char *utf8_contents;
+- size_t utf8_len;
+-
+- /* Error-handling preconditions. */
+- valP = NULL;
+- utf8_block = NULL;
+- block_is_inited = 0;
+-
+- /* Initialize our XML-RPC value. */
+- valP = (xmlrpc_value*) malloc(sizeof(xmlrpc_value));
+- XMLRPC_FAIL_IF_NULL(valP, envP, XMLRPC_INTERNAL_ERROR,
+- "Could not allocate memory for wide string");
+- valP->_refcount = 1;
+- valP->_type = XMLRPC_TYPE_STRING;
+-
+- /* More error-handling preconditions. */
+- valP->_wcs_block = NULL;
+-
+- /* Build our wchar_t block first. */
+- valP->_wcs_block =
+- XMLRPC_TYPED_MEM_BLOCK_NEW(wchar_t, envP, wcs_len + 1);
+- XMLRPC_FAIL_IF_FAULT(envP);
+- wcs_contents =
+- XMLRPC_TYPED_MEM_BLOCK_CONTENTS(wchar_t, valP->_wcs_block);
+- memcpy(wcs_contents, wcs, wcs_len * sizeof(wchar_t));
+- wcs_contents[wcs_len] = '\0';
+-
+- /* Convert the wcs block to UTF-8. */
+- utf8_block = xmlrpc_wcs_to_utf8(envP, wcs_contents, wcs_len + 1);
+- XMLRPC_FAIL_IF_FAULT(envP);
+- utf8_contents = XMLRPC_TYPED_MEM_BLOCK_CONTENTS(char, utf8_block);
+- utf8_len = XMLRPC_TYPED_MEM_BLOCK_SIZE(char, utf8_block);
+-
+- /* XXX - We need an extra memcopy to initialize _block. */
+- XMLRPC_TYPED_MEM_BLOCK_INIT(char, envP, &valP->_block, utf8_len);
+- XMLRPC_FAIL_IF_FAULT(envP);
+- block_is_inited = 1;
+- contents = XMLRPC_TYPED_MEM_BLOCK_CONTENTS(char, &valP->_block);
+- memcpy(contents, utf8_contents, utf8_len);
+-
+- cleanup:
+- if (utf8_block)
+- xmlrpc_mem_block_free(utf8_block);
+- if (envP->fault_occurred) {
+- if (valP) {
+- if (valP->_wcs_block)
+- xmlrpc_mem_block_free(valP->_wcs_block);
+- if (block_is_inited)
+- xmlrpc_mem_block_clean(&valP->_block);
+- free(valP);
+- }
+- }
+- *valPP = valP;
+-}
+-#endif /* HAVE_UNICODE_WCHAR */
+-
+-
+-
+-static void
+-getWideString(xmlrpc_env * const envP,
+- const char ** const formatP,
+- va_list * const args,
+- xmlrpc_value ** const valPP) {
+-#ifdef HAVE_UNICODE_WCHAR
+-
+- wchar_t *wcs;
+- size_t len;
+-
+- wcs = (wchar_t*) va_arg(*args, wchar_t*);
+- if (**formatP == '#') {
+- (*formatP)++;
+- len = (size_t) va_arg(*args, size_t);
+- } else
+- len = wcslen(wcs);
+-
+- mkWideString(envP, wcs, len, valPP);
+-
+-#endif /* HAVE_UNICODE_WCHAR */
+-}
+-
+-
+-
+-static void
+-getBase64(xmlrpc_env * const envP,
+- va_list * const args,
+- xmlrpc_value ** const valPP) {
+-
+- unsigned char * value;
+- size_t length;
+-
+- value = (unsigned char*) va_arg(*args, unsigned char*);
+- length = (size_t) va_arg(*args, size_t);
+-
+- *valPP = xmlrpc_base64_new(envP, length, value);
+-}
+-
+-
+-
+-static void
+-getValue(xmlrpc_env * const envP,
+- const char** const format,
+- va_list * args,
+- xmlrpc_value ** const valPP);
+-
+-
+-
+-static void
+-getArray(xmlrpc_env * const envP,
+- const char ** const formatP,
+- char const delimiter,
+- va_list * const args,
+- xmlrpc_value ** const arrayPP) {
+-
+- xmlrpc_value * arrayP;
+-
+- arrayP = xmlrpc_array_new(envP);
+-
+- /* Add items to the array until we hit our delimiter. */
+-
+- while (**formatP != delimiter && !envP->fault_occurred) {
+-
+- xmlrpc_value * itemP;
+-
+- if (**formatP == '\0')
+- xmlrpc_env_set_fault(
+- envP, XMLRPC_INTERNAL_ERROR,
+- "format string ended before closing ')'.");
+- else {
+- getValue(envP, formatP, args, &itemP);
+- if (!envP->fault_occurred) {
+- xmlrpc_array_append_item(envP, arrayP, itemP);
+- xmlrpc_DECREF(itemP);
+- }
+- }
+- }
+- if (envP->fault_occurred)
+- xmlrpc_DECREF(arrayP);
+-
+- *arrayPP = arrayP;
+-}
+-
+-
+-
+-static void
+-getStructMember(xmlrpc_env * const envP,
+- const char ** const formatP,
+- va_list * const args,
+- xmlrpc_value ** const keyPP,
+- xmlrpc_value ** const valuePP) {
+-
+-
+- /* Get the key */
+- getValue(envP, formatP, args, keyPP);
+- if (!envP->fault_occurred) {
+- if (**formatP != ':')
+- xmlrpc_env_set_fault(
+- envP, XMLRPC_INTERNAL_ERROR,
+- "format string does not have ':' after a "
+- "structure member key.");
+- else {
+- /* Skip over colon that separates key from value */
+- (*formatP)++;
+-
+- /* Get the value */
+- getValue(envP, formatP, args, valuePP);
+- }
+- if (envP->fault_occurred)
+- xmlrpc_DECREF(*keyPP);
+- }
+-}
+-
+-
+-
+-static void
+-getStruct(xmlrpc_env * const envP,
+- const char ** const formatP,
+- char const delimiter,
+- va_list * const args,
+- xmlrpc_value ** const structPP) {
+-
+- xmlrpc_value * structP;
+-
+- structP = xmlrpc_struct_new(envP);
+- if (!envP->fault_occurred) {
+- while (**formatP != delimiter && !envP->fault_occurred) {
+- xmlrpc_value * keyP;
+- xmlrpc_value * valueP;
+-
+- getStructMember(envP, formatP, args, &keyP, &valueP);
+-
+- if (!envP->fault_occurred) {
+- if (**formatP == ',')
+- (*formatP)++; /* Skip over the comma */
+- else if (**formatP == delimiter) {
+- /* End of the line */
+- } else
+- xmlrpc_env_set_fault(
+- envP, XMLRPC_INTERNAL_ERROR,
+- "format string does not have ',' or ')' after "
+- "a structure member");
+-
+- if (!envP->fault_occurred)
+- /* Add the new member to the struct. */
+- xmlrpc_struct_set_value_v(envP, structP, keyP, valueP);
+-
+- xmlrpc_DECREF(valueP);
+- xmlrpc_DECREF(keyP);
+- }
+- }
+- if (envP->fault_occurred)
+- xmlrpc_DECREF(structP);
+- }
+- *structPP = structP;
+-}
+-
+-
+-
+-static void
+-mkArrayFromVal(xmlrpc_env * const envP,
+- xmlrpc_value * const value,
+- xmlrpc_value ** const valPP) {
+-
+- if (xmlrpc_value_type(value) != XMLRPC_TYPE_ARRAY)
+- xmlrpc_env_set_fault(envP, XMLRPC_INTERNAL_ERROR,
+- "Array format ('A'), non-array xmlrpc_value");
+- else
+- xmlrpc_INCREF(value);
+-
+- *valPP = value;
+-}
+-
+-
+-
+-static void
+-mkStructFromVal(xmlrpc_env * const envP,
+- xmlrpc_value * const value,
+- xmlrpc_value ** const valPP) {
+-
+- if (xmlrpc_value_type(value) != XMLRPC_TYPE_STRUCT)
+- xmlrpc_env_set_fault(envP, XMLRPC_INTERNAL_ERROR,
+- "Struct format ('S'), non-struct xmlrpc_value");
+- else
+- xmlrpc_INCREF(value);
+-
+- *valPP = value;
+-}
+-
+-
+-
+-static void
+-getValue(xmlrpc_env * const envP,
+- const char** const formatP,
+- va_list * const args,
+- xmlrpc_value ** const valPP) {
+-/*----------------------------------------------------------------------------
+- Get the next value from the list. *formatP points to the specifier
+- for the next value in the format string (i.e. to the type code
+- character) and we move *formatP past the whole specifier for the
+- next value. We read the required arguments from 'args'. We return
+- the value as *valPP with a reference to it.
+-
+- For example, if *formatP points to the "i" in the string "sis",
+- we read one argument from 'args' and return as *valP an integer whose
+- value is the argument we read. We advance *formatP to point to the
+- last 's' and advance 'args' to point to the argument that belongs to
+- that 's'.
+------------------------------------------------------------------------------*/
+- char const formatChar = *(*formatP)++;
+-
+- switch (formatChar) {
+- case 'i':
+- *valPP =
+- xmlrpc_int_new(envP, (xmlrpc_int32) va_arg(*args, xmlrpc_int32));
+- break;
+-
+- case 'b':
+- *valPP =
+- xmlrpc_bool_new(envP, (xmlrpc_bool) va_arg(*args, xmlrpc_bool));
+- break;
+-
+- case 'd':
+- *valPP =
+- xmlrpc_double_new(envP, (double) va_arg(*args, va_double));
+- break;
+-
+- case 's':
+- getString(envP, formatP, args, valPP);
+- break;
+-
+- case 'w':
+- getWideString(envP, formatP, args, valPP);
+- break;
+-
+- /* The code 't' is reserved for a better, time_t based
+- implementation of dateTime conversion.
+- */
+- case '8':
+- *valPP =
+- xmlrpc_datetime_new_str(envP, (char*) va_arg(*args, char*));
+- break;
+-
+- case '6':
+- getBase64(envP, args, valPP);
+- break;
+-
+- case 'n':
+- *valPP =
+- xmlrpc_nil_new(envP);
+- break;
+-
+- case 'p':
+- /* We might someday want to use the code 'p!' to read in a
+- cleanup function for this pointer.
+- */
+- *valPP =
+- xmlrpc_cptr_new(envP, (void*) va_arg(*args, void*));
+- break;
+-
+- case 'A':
+- mkArrayFromVal(envP, (xmlrpc_value*) va_arg(*args, xmlrpc_value*),
+- valPP);
+- break;
+-
+- case 'S':
+- mkStructFromVal(envP, (xmlrpc_value*) va_arg(*args, xmlrpc_value*),
+- valPP);
+- break;
+-
+- case 'V':
+- *valPP = (xmlrpc_value*) va_arg(*args, xmlrpc_value*);
+- xmlrpc_INCREF(*valPP);
+- break;
+-
+- case '(':
+- getArray(envP, formatP, ')', args, valPP);
+- if (!envP->fault_occurred) {
+- XMLRPC_ASSERT(**formatP == ')');
+- (*formatP)++; /* Skip over closing parenthesis */
+- }
+- break;
+-
+- case '{':
+- getStruct(envP, formatP, '}', args, valPP);
+- if (!envP->fault_occurred) {
+- XMLRPC_ASSERT(**formatP == '}');
+- (*formatP)++; /* Skip over closing brace */
+- }
+- break;
+-
+- default: {
+- const char * const badCharacter = xmlrpc_makePrintableChar(formatChar);
+- xmlrpc_env_set_fault_formatted(
+- envP, XMLRPC_INTERNAL_ERROR,
+- "Unexpected character '%s' in format string", badCharacter);
+- xmlrpc_strfree(badCharacter);
+- }
+- }
+-}
+-
+-
+-
+-void
+-xmlrpc_build_value_va(xmlrpc_env * const envP,
+- const char * const format,
+- va_list args,
+- xmlrpc_value ** const valPP,
+- const char ** const tailP) {
+-
+- const char * formatCursor;
+- va_list args_copy;
+-
+- XMLRPC_ASSERT_ENV_OK(envP);
+- XMLRPC_ASSERT(format != NULL);
+-
+- if (strlen(format) == 0)
+- xmlrpc_env_set_fault_formatted(
+- envP, XMLRPC_INTERNAL_ERROR, "Format string is empty.");
+- else {
+- formatCursor = &format[0];
+- VA_LIST_COPY(args_copy, args);
+- getValue(envP, &formatCursor, &args_copy, valPP);
+-
+- if (!envP->fault_occurred)
+- XMLRPC_ASSERT_VALUE_OK(*valPP);
+-
+- *tailP = formatCursor;
+- }
+-}
+-
+-
+-
+-xmlrpc_value *
+-xmlrpc_build_value(xmlrpc_env * const envP,
+- const char * const format,
+- ...) {
+-
+- va_list args;
+- xmlrpc_value* retval;
+- const char * suffix;
+-
+- va_start(args, format);
+- xmlrpc_build_value_va(envP, format, args, &retval, &suffix);
+- va_end(args);
+-
+- if (!envP->fault_occurred) {
+- if (*suffix != '\0')
+- xmlrpc_env_set_fault_formatted(
+- envP, XMLRPC_INTERNAL_ERROR, "Junk after the argument "
+- "specifier: '%s'. There must be exactly one arument.",
+- suffix);
+-
+- if (envP->fault_occurred)
+- xmlrpc_DECREF(retval);
+- }
+- return retval;
+-}
+-
+-
+-
+-
+-
+-/*=========================================================================
+-** Parsing XML-RPC values.
+-**=========================================================================
+-** Parse an XML-RPC value based on a format string. This code is heavily
+-** inspired by Py_BuildValue from Python 1.5.2.
+-*/
+-
+-/* Prototype for recursive invocation: */
+-
+-static void
+-decomposeValue(xmlrpc_env * const env,
+- xmlrpc_value * const val,
+- const char ** const format,
+- va_list * args,
+- xmlrpc_bool const oldstyleMemMgmt);
+-
+-
+-
+-static void
+-parsearray(xmlrpc_env * const env,
+- const xmlrpc_value * const array,
+- const char ** const format,
+- char const delimiter,
+- va_list * args,
+- xmlrpc_bool const oldstyleMemMgmt) {
+-
+- int size, i;
+- xmlrpc_value *item;
+-
+- /* Fetch the array size. */
+- size = xmlrpc_array_size(env, array);
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- /* Loop over the items in the array. */
+- for (i = 0; i < size; i++) {
+- /* Bail out if the caller didn't care about the rest of the items. */
+- if (**format == '*')
+- break;
+-
+- item = xmlrpc_array_get_item(env, array, i);
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- XMLRPC_ASSERT(**format != '\0');
+- if (**format == delimiter)
+- XMLRPC_FAIL(env, XMLRPC_INDEX_ERROR, "Too many items in array");
+- decomposeValue(env, item, format, args, oldstyleMemMgmt);
+- XMLRPC_FAIL_IF_FAULT(env);
+- }
+- if (**format == '*')
+- (*format)++;
+- if (**format != delimiter)
+- XMLRPC_FAIL(env, XMLRPC_INDEX_ERROR, "Not enough items in array");
+-
+- cleanup:
+- return;
+-}
+-
+-
+-
+-static void
+-parsestruct(xmlrpc_env * const env,
+- xmlrpc_value * const strct,
+- const char ** const format,
+- char const delimiter,
+- va_list * args,
+- xmlrpc_bool const oldstyleMemMgmt) {
+-
+- xmlrpc_value *key, *value;
+- char *keystr;
+- size_t keylen;
+-
+- /* Set up error handling preconditions. */
+- key = NULL;
+-
+- /* Build the members of our struct. */
+- while (**format != '*' && **format != delimiter && **format != '\0') {
+-
+- /* Get our key, and skip over the ':' character. Notice the
+- ** sudden call to getValue--we're going in the opposite direction. */
+- getValue(env, format, args, &key);
+- XMLRPC_FAIL_IF_FAULT(env);
+- XMLRPC_ASSERT(**format == ':');
+- (*format)++;
+-
+- /* Look up the value for our key. */
+- xmlrpc_parse_value(env, key, "s#", &keystr, &keylen);
+- XMLRPC_FAIL_IF_FAULT(env);
+- value = xmlrpc_struct_get_value_n(env, strct, keystr, keylen);
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- /* Get our value, and skip over the ',' character (if present). */
+- decomposeValue(env, value, format, args, oldstyleMemMgmt);
+- XMLRPC_FAIL_IF_FAULT(env);
+- XMLRPC_ASSERT(**format == ',' || **format == delimiter);
+- if (**format == ',')
+- (*format)++;
+-
+- /* Release our reference, and restore our invariant. */
+- xmlrpc_DECREF(key);
+- key = NULL;
+- }
+- if (**format == '*') {
+- (*format)++;
+- if (**format != delimiter && **format != '\0')
+- XMLRPC_FAIL(env, XMLRPC_INTERNAL_ERROR,
+- "* can appear only at the end "
+- "of a structure format specifier");
+- } else {
+- /* Here we're supposed to fail if he didn't extract all the
+- members. But we don't know how to determine whether he
+- specified all the members, so we always fail.
+- */
+- XMLRPC_FAIL(env, XMLRPC_INTERNAL_ERROR, "You must specify '*' as the "
+- "last member of a structure in a format specifier "
+- "used for parsing an xmlrpc_value");
+- }
+- XMLRPC_ASSERT(**format == delimiter || **format == '\0');
+-
+-cleanup:
+- if (key)
+- xmlrpc_DECREF(key);
+-}
+-
+-
+-static void
+-readString(xmlrpc_env * const envP,
+- const xmlrpc_value * const valueP,
+- const char ** const stringValueP,
+- xmlrpc_bool const oldstyleMemMgmt) {
+-
+- if (oldstyleMemMgmt) {
+- xmlrpc_read_string_old(envP, valueP, stringValueP);
+- } else
+- xmlrpc_read_string(envP, valueP, stringValueP);
+-}
+-
+-
+-
+-static void
+-readStringLp(xmlrpc_env * const envP,
+- const xmlrpc_value * const valueP,
+- size_t * const lengthP,
+- const char ** const stringValueP,
+- xmlrpc_bool const oldstyleMemMgmt) {
+-
+- if (oldstyleMemMgmt) {
+- xmlrpc_read_string_lp_old(envP, valueP, lengthP, stringValueP);
+- } else
+- xmlrpc_read_string_lp(envP, valueP, lengthP, stringValueP);
+-}
+-
+-
+-
+-#ifdef HAVE_UNICODE_WCHAR
+-static void
+-readStringW(xmlrpc_env * const envP,
+- xmlrpc_value * const valueP,
+- const wchar_t ** const stringValueP,
+- xmlrpc_bool const oldstyleMemMgmt) {
+-
+- if (oldstyleMemMgmt) {
+- xmlrpc_read_string_w_old(envP, valueP, stringValueP);
+- } else
+- xmlrpc_read_string_w(envP, valueP, stringValueP);
+-}
+-
+-
+-
+-static void
+-readStringWLp(xmlrpc_env * const envP,
+- xmlrpc_value * const valueP,
+- size_t * const lengthP,
+- const wchar_t ** const stringValueP,
+- xmlrpc_bool const oldstyleMemMgmt) {
+-
+- if (oldstyleMemMgmt) {
+- xmlrpc_read_string_w_lp_old(envP, valueP, lengthP, stringValueP);
+- } else
+- xmlrpc_read_string_w_lp(envP, valueP, lengthP, stringValueP);
+-}
+-#endif
+-
+-
+-static void
+-readDatetimeStr(xmlrpc_env * const envP,
+- const xmlrpc_value * const valueP,
+- const char ** const stringValueP,
+- xmlrpc_bool const oldstyleMemMgmt) {
+-
+- if (oldstyleMemMgmt)
+- xmlrpc_read_datetime_str_old(envP, valueP, stringValueP);
+- else
+- xmlrpc_read_datetime_str(envP, valueP, stringValueP);
+-}
+-
+-
+-
+-static void
+-readBase64(xmlrpc_env * const envP,
+- const xmlrpc_value * const valueP,
+- size_t * const lengthP,
+- const unsigned char ** const byteStringValueP,
+- xmlrpc_bool const oldstyleMemMgmt) {
+-
+- if (oldstyleMemMgmt)
+- xmlrpc_read_base64_old(envP, valueP, lengthP, byteStringValueP);
+- else
+- xmlrpc_read_base64(envP, valueP, lengthP, byteStringValueP);
+-}
+-
+-
+-
+-static void
+-decomposeValue(xmlrpc_env * const envP,
+- xmlrpc_value * const valueP,
+- const char ** const format,
+- va_list * args,
+- xmlrpc_bool const oldstyleMemMgmt) {
+-
+- char formatSpecChar;
+-
+- formatSpecChar = *(*format)++;
+-
+- switch (formatSpecChar) {
+- case 'i': {
+- xmlrpc_int32 * const int32ptr =
+- (xmlrpc_int32*) va_arg(*args, xmlrpc_int32*);
+- xmlrpc_read_int(envP, valueP, int32ptr);
+- }
+- break;
+-
+- case 'b': {
+- xmlrpc_bool * const boolptr =
+- (xmlrpc_bool*) va_arg(*args, xmlrpc_bool*);
+- xmlrpc_read_bool(envP, valueP, boolptr);
+- }
+- break;
+-
+- case 'd': {
+- double * const doubleptr = (double*) va_arg(*args, double*);
+- xmlrpc_read_double(envP, valueP, doubleptr);
+- }
+- break;
+-
+- case '8': {
+- /* The code 't' is reserved for a better, time_t based
+- implementation of dateTime conversion.
+- */
+- const char ** const strptr = (const char**) va_arg(*args, char**);
+- readDatetimeStr(envP, valueP, strptr, oldstyleMemMgmt);
+- }
+- break;
+-
+- case 's': {
+- const char ** const strptr = (const char**) va_arg(*args, char**);
+- if (**format == '#') {
+- size_t * const sizeptr = (size_t*) va_arg(*args, size_t**);
+- (*format)++;
+-
+- readStringLp(envP, valueP, sizeptr, strptr, oldstyleMemMgmt);
+- } else
+- readString(envP, valueP, strptr, oldstyleMemMgmt);
+- }
+- break;
+-
+- case 'w': {
+-#ifdef HAVE_UNICODE_WCHAR
+- const wchar_t ** const wcsptr =
+- (const wchar_t**) va_arg(*args, wchar_t**);
+- if (**format == '#') {
+- size_t * const sizeptr = (size_t*) va_arg(*args, size_t**);
+- (*format)++;
+- readStringWLp(envP, valueP, sizeptr, wcsptr, oldstyleMemMgmt);
+- } else
+- readStringW(envP, valueP, wcsptr, oldstyleMemMgmt);
+-#else
+- xmlrpc_env_set_fault_formatted(
+- envP, XMLRPC_INTERNAL_ERROR,
+- "This XML-RPC For C/C++ library was built without Unicode "
+- "wide character capability. 'w' isn't available.");
+-#endif /* HAVE_UNICODE_WCHAR */
+- }
+- break;
+-
+- case '6': {
+- const unsigned char ** const binptr =
+- (const unsigned char**) va_arg(*args, unsigned char**);
+- size_t * const sizeptr = (size_t*) va_arg(*args, size_t**);
+- readBase64(envP, valueP, sizeptr, binptr, oldstyleMemMgmt);
+- }
+- break;
+-
+- case 'n': {
+- xmlrpc_read_nil(envP, valueP);
+- }
+- break;
+-
+- case 'p': {
+- void ** const voidptrptr = (void**) va_arg(*args, void**);
+- xmlrpc_read_cptr(envP, valueP, voidptrptr);
+- }
+- break;
+-
+- case 'V': {
+- xmlrpc_value ** const valptr =
+- (xmlrpc_value**) va_arg(*args, xmlrpc_value**);
+- *valptr = valueP;
+- if (!oldstyleMemMgmt)
+- xmlrpc_INCREF(valueP);
+- }
+- break;
+-
+- case 'A':
+- if (xmlrpc_value_type(valueP) != XMLRPC_TYPE_ARRAY)
+- xmlrpc_env_set_fault_formatted(
+- envP, XMLRPC_TYPE_ERROR, "Non-array type supplied for "
+- "'A' specifier");
+- else {
+- xmlrpc_value ** const valptr =
+- (xmlrpc_value**) va_arg(*args, xmlrpc_value**);
+- *valptr = valueP;
+- if (!oldstyleMemMgmt)
+- xmlrpc_INCREF(valueP);
+- }
+- break;
+-
+- case 'S':
+- if (xmlrpc_value_type(valueP) != XMLRPC_TYPE_STRUCT)
+- xmlrpc_env_set_fault_formatted(
+- envP, XMLRPC_TYPE_ERROR, "Non-struct type supplied for "
+- "'S' specifier");
+- else {
+- xmlrpc_value ** const valptr =
+- (xmlrpc_value**) va_arg(*args, xmlrpc_value**);
+- *valptr = valueP;
+- if (!oldstyleMemMgmt)
+- xmlrpc_INCREF(valueP);
+- }
+- break;
+-
+- case '(':
+- if (xmlrpc_value_type(valueP) != XMLRPC_TYPE_ARRAY)
+- xmlrpc_env_set_fault_formatted(
+- envP, XMLRPC_TYPE_ERROR, "Non-array type supplied for "
+- "'()' specifier");
+- else {
+- parsearray(envP, valueP, format, ')', args, oldstyleMemMgmt);
+- (*format)++;
+- }
+- break;
+-
+- case '{':
+- if (xmlrpc_value_type(valueP) != XMLRPC_TYPE_STRUCT)
+- xmlrpc_env_set_fault_formatted(
+- envP, XMLRPC_TYPE_ERROR, "Non-struct type supplied for "
+- "'{}' specifier");
+- else {
+- parsestruct(envP, valueP, format, '}', args, oldstyleMemMgmt);
+- (*format)++;
+- }
+- break;
+-
+- default:
+- xmlrpc_env_set_fault_formatted(
+- envP, XMLRPC_INTERNAL_ERROR, "Invalid format character '%c'",
+- formatSpecChar);
+- }
+-}
+-
+-
+-
+-void
+-xmlrpc_decompose_value_va(xmlrpc_env * const envP,
+- xmlrpc_value * const value,
+- const char * const format,
+- va_list args) {
+-
+- const char *format_copy;
+- va_list args_copy;
+-
+- XMLRPC_ASSERT_ENV_OK(envP);
+- XMLRPC_ASSERT_VALUE_OK(value);
+- XMLRPC_ASSERT(format != NULL);
+-
+- format_copy = format;
+- VA_LIST_COPY(args_copy, args);
+- decomposeValue(envP, value, &format_copy, &args_copy, FALSE);
+- if (!envP->fault_occurred) {
+- XMLRPC_ASSERT(*format_copy == '\0');
+- }
+-}
+-
+-
+-
+-void
+-xmlrpc_decompose_value(xmlrpc_env * const envP,
+- xmlrpc_value * const value,
+- const char * const format,
+- ...) {
+-
+- va_list args;
+-
+- va_start(args, format);
+- xmlrpc_decompose_value_va(envP, value, format, args);
+- va_end(args);
+-}
+-
+-
+-
+-void
+-xmlrpc_parse_value_va(xmlrpc_env * const envP,
+- xmlrpc_value * const value,
+- const char * const format,
+- va_list args) {
+-
+- const char *format_copy;
+- va_list args_copy;
+-
+- XMLRPC_ASSERT_ENV_OK(envP);
+- XMLRPC_ASSERT_VALUE_OK(value);
+- XMLRPC_ASSERT(format != NULL);
+-
+- format_copy = format;
+- VA_LIST_COPY(args_copy, args);
+- decomposeValue(envP, value, &format_copy, &args_copy, TRUE);
+- if (!envP->fault_occurred) {
+- XMLRPC_ASSERT(*format_copy == '\0');
+- }
+-}
+-
+-
+-
+-void
+-xmlrpc_parse_value(xmlrpc_env * const envP,
+- xmlrpc_value * const value,
+- const char * const format,
+- ...) {
+-
+- va_list args;
+-
+- va_start(args, format);
+- xmlrpc_parse_value_va(envP, value, format, args);
+- va_end(args);
+-}
+-
+-
+-
+-/* Copyright (C) 2001 by First Peer, Inc. All rights reserved.
+-** Copyright (C) 2001 by Eric Kidd. All rights reserved.
+-**
+-** Redistribution and use in source and binary forms, with or without
+-** modification, are permitted provided that the following conditions
+-** are met:
+-** 1. Redistributions of source code must retain the above copyright
+-** notice, this list of conditions and the following disclaimer.
+-** 2. Redistributions in binary form must reproduce the above copyright
+-** notice, this list of conditions and the following disclaimer in the
+-** documentation and/or other materials provided with the distribution.
+-** 3. The name of the author may not be used to endorse or promote products
+-** derived from this software without specific prior written permission.
+-**
+-** THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+-** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+-** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+-** ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+-** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+-** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+-** OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+-** HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+-** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+-** OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+-** SUCH DAMAGE. */
+diff --git a/libs/xmlrpc-c/src/xmlrpc_client.c b/libs/xmlrpc-c/src/xmlrpc_client.c
+index 88f3dcf..e87c6f3 100644
+--- a/libs/xmlrpc-c/src/xmlrpc_client.c
++++ b/libs/xmlrpc-c/src/xmlrpc_client.c
+@@ -1,5 +1,7 @@
+ /* Copyright information is at end of file */
+
++#define _XOPEN_SOURCE 600 /* Make sure strdup() is in <string.h> */
++
+ #include "xmlrpc_config.h"
+
+ #undef PACKAGE
+@@ -40,6 +42,7 @@ struct xmlrpc_client {
+ struct xmlrpc_client_transport * transportP;
+ struct xmlrpc_client_transport_ops transportOps;
+ xmlrpc_dialect dialect;
++ xmlrpc_progress_fn * progressFn;
+ };
+
+
+@@ -54,17 +57,21 @@ struct xmlrpc_call_info {
+ storage, and we need to keep this info in our own.
+ */
+
++ void * userHandle;
++ /* This is a handle for this call that is meaningful to our
++ user.
++ */
++ xmlrpc_progress_fn * progressFn;
+ struct {
+- /* This are arguments to pass to the completion function. It
++ /* These are arguments to pass to the completion function. It
+ doesn't make sense to use them for anything else. In fact, it
+ really doesn't make sense for them to be arguments to the
+ completion function, but they are historically. */
+ const char * serverUrl;
+ const char * methodName;
+ xmlrpc_value * paramArrayP;
+- void * userData;
+ } completionArgs;
+- xmlrpc_response_handler completionFn;
++ xmlrpc_response_handler * completionFn;
+
+
+ /* The serialized XML data passed to this call. We keep this around
+@@ -187,6 +194,17 @@ unsigned int const xmlrpc_client_version_major = XMLRPC_VERSION_MAJOR;
+ unsigned int const xmlrpc_client_version_minor = XMLRPC_VERSION_MINOR;
+ unsigned int const xmlrpc_client_version_point = XMLRPC_VERSION_POINT;
+
++void
++xmlrpc_client_version(unsigned int * const majorP,
++ unsigned int * const minorP,
++ unsigned int * const pointP) {
++
++ *majorP = XMLRPC_VERSION_MAJOR;
++ *minorP = XMLRPC_VERSION_MINOR;
++ *pointP = XMLRPC_VERSION_POINT;
++}
++
++
+
+ /*=========================================================================
+ Client Create/Destroy
+@@ -201,15 +219,15 @@ getTransportOps(
+ if (false) {
+ }
+ #if MUST_BUILD_WININET_CLIENT
+- else if (strcmp(transportName, "wininet") == 0)
++ else if (xmlrpc_streq(transportName, "wininet"))
+ *opsPP = &xmlrpc_wininet_transport_ops;
+ #endif
+ #if MUST_BUILD_CURL_CLIENT
+- else if (strcmp(transportName, "curl") == 0)
++ else if (xmlrpc_streq(transportName, "curl"))
+ *opsPP = &xmlrpc_curl_transport_ops;
+ #endif
+ #if MUST_BUILD_LIBWWW_CLIENT
+- else if (strcmp(transportName, "libwww") == 0)
++ else if (xmlrpc_streq(transportName, "libwww"))
+ *opsPP = &xmlrpc_libwww_transport_ops;
+ #endif
+ else
+@@ -334,6 +352,7 @@ clientCreate(
+ const struct xmlrpc_client_transport_ops * const transportOpsP,
+ struct xmlrpc_client_transport * const transportP,
+ xmlrpc_dialect const dialect,
++ xmlrpc_progress_fn * const progressFn,
+ xmlrpc_client ** const clientPP) {
+
+ XMLRPC_ASSERT_PTR_OK(transportOpsP);
+@@ -360,6 +379,7 @@ clientCreate(
+ clientP->transportOps = *transportOpsP;
+ clientP->transportP = transportP;
+ clientP->dialect = dialect;
++ clientP->progressFn = progressFn;
+
+ *clientPP = clientP;
+ }
+@@ -370,15 +390,16 @@ clientCreate(
+
+ static void
+ createTransportAndClient(
+- xmlrpc_env * const envP,
+- const char * const transportName,
+- const void * const transportparmsP,
+- size_t const transportparmSize,
+- int const flags,
+- const char * const appname,
+- const char * const appversion,
+- xmlrpc_dialect const dialect,
+- xmlrpc_client ** const clientPP) {
++ xmlrpc_env * const envP,
++ const char * const transportName,
++ const void * const transportparmsP,
++ size_t const transportparmSize,
++ int const flags,
++ const char * const appname,
++ const char * const appversion,
++ xmlrpc_dialect const dialect,
++ xmlrpc_progress_fn * const progressFn,
++ xmlrpc_client ** const clientPP) {
+
+ const struct xmlrpc_client_transport_ops * transportOpsP;
+
+@@ -395,7 +416,7 @@ createTransportAndClient(
+ bool const myTransportTrue = true;
+
+ clientCreate(envP, myTransportTrue, transportOpsP, transportP,
+- dialect, clientPP);
++ dialect, progressFn, clientPP);
+
+ if (envP->fault_occurred)
+ transportOpsP->destroy(transportP);
+@@ -429,11 +450,15 @@ xmlrpc_client_create(xmlrpc_env * const envP,
+ const struct xmlrpc_client_transport_ops * transportOpsP;
+ xmlrpc_client_transport * transportP;
+ xmlrpc_dialect dialect;
+-
++ xmlrpc_progress_fn * progressFn;
++
+ getTransportInfo(envP, clientparmsP, parmSize, &transportName,
+ &transportparms, &transportOpsP, &transportP);
+
+ getDialectFromClientParms(clientparmsP, parmSize, &dialect);
++
++ progressFn = parmSize >= XMLRPC_CPSIZE(progressFn) ?
++ clientparmsP->progressFn : NULL;
+
+ if (!envP->fault_occurred) {
+ if (transportName)
+@@ -441,11 +466,13 @@ xmlrpc_client_create(xmlrpc_env * const envP,
+ transportparms.parmsP,
+ transportparms.size,
+ flags, appname, appversion, dialect,
++ progressFn,
+ clientPP);
+ else {
+ bool myTransportFalse = false;
+ clientCreate(envP, myTransportFalse,
+- transportOpsP, transportP, dialect, clientPP);
++ transportOpsP, transportP, dialect, progressFn,
++ clientPP);
+ }
+ }
+ }
+@@ -607,58 +634,139 @@ xmlrpc_client_call2(xmlrpc_env * const envP,
+
+
+ static void
+-clientCall2f_va(xmlrpc_env * const envP,
+- xmlrpc_client * const clientP,
+- const char * const serverUrl,
+- const char * const methodName,
+- const char * const format,
+- xmlrpc_value ** const resultPP,
+- va_list args) {
+-
+- xmlrpc_value * argP;
+- xmlrpc_env argenv;
+- const char * suffix;
++computeParamArray(xmlrpc_env * const envP,
++ const char * const format,
++ va_list args,
++ xmlrpc_value ** const paramArrayPP) {
++/*----------------------------------------------------------------------------
++ 'format' and 'args' specify the parameter list of an RPC, in the form
++ of an XML-RPC array value, with one element per RPC parameter.
+
+- XMLRPC_ASSERT_ENV_OK(envP);
+- XMLRPC_ASSERT_PTR_OK(serverUrl);
+- XMLRPC_ASSERT_PTR_OK(methodName);
+- XMLRPC_ASSERT_PTR_OK(format);
+- XMLRPC_ASSERT_PTR_OK(resultPP);
++ 'format' is an XML-RPC value format string, e.g. "(ii{s:i,s:i})".
++ 'args' is the list of substitution values for that string
++ (6 values in this example, 4 integers and 2 strings).
++
++ We return the XML-RPC value 'format' and 'args' represent, but throw an
++ error if they don't validly specify a single array.
+
+- /* Build our argument value. */
+- xmlrpc_env_init(&argenv);
+- xmlrpc_build_value_va(&argenv, format, args, &argP, &suffix);
+- if (argenv.fault_occurred)
++ Note that it is a common user error to specify the format string as a
++ single or string of argument types, instead of as an array of argument
++ types. E.g. "i" or "ii" instead of "(i)" and "(ii)". So we try
++ especially hard to give an informative message for that case.
++-----------------------------------------------------------------------------*/
++ xmlrpc_env env;
++ xmlrpc_value * paramArrayP;
++ const char * suffix;
++ /* Stuff left over in format string after parameter array
++ specification.
++ */
++
++ xmlrpc_env_init(&env);
++ xmlrpc_build_value_va(&env, format, args, ¶mArrayP, &suffix);
++ if (env.fault_occurred)
+ xmlrpc_env_set_fault_formatted(
+- envP, argenv.fault_code, "Invalid RPC arguments. "
+- "The format argument must indicate a single array, and the "
++ envP, env.fault_code, "Invalid RPC arguments. "
++ "The format argument must indicate a single array (each element "
++ "of which is one argument to the XML-RPC call), and the "
+ "following arguments must correspond to that format argument. "
+ "The failure is: %s",
+- argenv.fault_string);
++ env.fault_string);
+ else {
+- XMLRPC_ASSERT_VALUE_OK(argP);
++ XMLRPC_ASSERT_VALUE_OK(paramArrayP);
+
+ if (*suffix != '\0')
+- xmlrpc_faultf(envP, "Junk after the argument specifier: '%s'. "
+- "There must be exactly one argument.",
++ xmlrpc_faultf(envP,
++ "Junk after the parameter array specifier: '%s'. "
++ "The format string must specify exactly one value: "
++ "an array of RPC parameters",
+ suffix);
+ else {
+- xmlrpc_server_info * serverInfoP;
++ if (xmlrpc_value_type(paramArrayP) != XMLRPC_TYPE_ARRAY)
++ xmlrpc_faultf(
++ envP,
++ "You must specify the parameter list as an "
++ "XML-RPC array value, "
++ "each element of which is a parameter of the RPC. "
++ "But your format string specifies an XML-RPC %s, not "
++ "an array",
++ xmlrpc_type_name(xmlrpc_value_type(paramArrayP)));
++ }
++ if (env.fault_occurred)
++ xmlrpc_DECREF(paramArrayP);
++ else
++ *paramArrayPP = paramArrayP;
++ }
++ xmlrpc_env_clean(&env);
++}
++
++
++
++void
++xmlrpc_client_call_server2_va(xmlrpc_env * const envP,
++ struct xmlrpc_client * const clientP,
++ const xmlrpc_server_info * const serverInfoP,
++ const char * const methodName,
++ const char * const format,
++ va_list args,
++ xmlrpc_value ** const resultPP) {
++
++ /* This function exists only for use by the global client function
++ xmlrpc_client_call_server().
++ */
++
++ xmlrpc_value * paramArrayP;
++ /* The XML-RPC parameter list array */
++
++ computeParamArray(envP, format, args, ¶mArrayP);
++
++ if (!envP->fault_occurred) {
++ xmlrpc_client_call2(envP, clientP,
++ serverInfoP, methodName, paramArrayP,
++ resultPP);
++
++ xmlrpc_DECREF(paramArrayP);
++ }
++}
++
++
++
++void
++xmlrpc_client_call2f_va(xmlrpc_env * const envP,
++ xmlrpc_client * const clientP,
++ const char * const serverUrl,
++ const char * const methodName,
++ const char * const format,
++ xmlrpc_value ** const resultPP,
++ va_list args) {
+
+- serverInfoP = xmlrpc_server_info_new(envP, serverUrl);
++ xmlrpc_value * paramArrayP;
++ /* The XML-RPC parameter list array */
++
++ XMLRPC_ASSERT_ENV_OK(envP);
++ XMLRPC_ASSERT_PTR_OK(clientP);
++ XMLRPC_ASSERT_PTR_OK(serverUrl);
++ XMLRPC_ASSERT_PTR_OK(methodName);
++ XMLRPC_ASSERT_PTR_OK(format);
++ XMLRPC_ASSERT_PTR_OK(resultPP);
++
++ computeParamArray(envP, format, args, ¶mArrayP);
++
++ if (!envP->fault_occurred) {
++ xmlrpc_server_info * serverInfoP;
++
++ serverInfoP = xmlrpc_server_info_new(envP, serverUrl);
+
+- if (!envP->fault_occurred) {
+- /* Perform the actual XML-RPC call. */
+- xmlrpc_client_call2(envP, clientP,
+- serverInfoP, methodName, argP, resultPP);
+- if (!envP->fault_occurred)
+- XMLRPC_ASSERT_VALUE_OK(*resultPP);
+- xmlrpc_server_info_free(serverInfoP);
+- }
++ if (!envP->fault_occurred) {
++ /* Perform the actual XML-RPC call. */
++ xmlrpc_client_call2(envP, clientP,
++ serverInfoP, methodName, paramArrayP,
++ resultPP);
++ if (!envP->fault_occurred)
++ XMLRPC_ASSERT_VALUE_OK(*resultPP);
++ xmlrpc_server_info_free(serverInfoP);
+ }
+- xmlrpc_DECREF(argP);
++ xmlrpc_DECREF(paramArrayP);
+ }
+- xmlrpc_env_clean(&argenv);
+ }
+
+
+@@ -674,9 +782,11 @@ xmlrpc_client_call2f(xmlrpc_env * const envP,
+
+ va_list args;
+
++ XMLRPC_ASSERT_PTR_OK(format);
++
+ va_start(args, format);
+- clientCall2f_va(envP, clientP, serverUrl,
+- methodName, format, resultPP, args);
++ xmlrpc_client_call2f_va(envP, clientP, serverUrl,
++ methodName, format, resultPP, args);
+ va_end(args);
+ }
+
+@@ -693,10 +803,15 @@ callInfoSetCompletion(xmlrpc_env * const envP,
+ const char * const methodName,
+ xmlrpc_value * const paramArrayP,
+ xmlrpc_response_handler completionFn,
+- void * const userData) {
+-
++ xmlrpc_progress_fn progressFn,
++ void * const userHandle) {
++/*----------------------------------------------------------------------------
++ Set the members of callinfo structure *callInfoP that are used for
++ the completion and progress calls from the transport to us.
++-----------------------------------------------------------------------------*/
+ callInfoP->completionFn = completionFn;
+- callInfoP->completionArgs.userData = userData;
++ callInfoP->progressFn = progressFn;
++ callInfoP->userHandle = userHandle;
+ callInfoP->completionArgs.serverUrl = strdup(serverUrl);
+ if (callInfoP->completionArgs.serverUrl == NULL)
+ xmlrpc_faultf(envP, "Couldn't get memory to store server URL");
+@@ -722,7 +837,8 @@ callInfoCreate(xmlrpc_env * const envP,
+ xmlrpc_dialect const dialect,
+ const char * const serverUrl,
+ xmlrpc_response_handler completionFn,
+- void * const userData,
++ xmlrpc_progress_fn progressFn,
++ void * const userHandle,
+ struct xmlrpc_call_info ** const callInfoPP) {
+ /*----------------------------------------------------------------------------
+ Create a call_info object. A call_info object represents an XML-RPC
+@@ -744,21 +860,17 @@ callInfoCreate(xmlrpc_env * const envP,
+ makeCallXml(envP, methodName, paramArrayP, dialect, &callXmlP);
+
+ if (!envP->fault_occurred) {
+- xmlrpc_traceXml("XML-RPC CALL",
+- XMLRPC_MEMBLOCK_CONTENTS(char, callXmlP),
+- XMLRPC_MEMBLOCK_SIZE(char, callXmlP));
+-
+ callInfoP->serialized_xml = callXmlP;
+
+- *callInfoPP = callInfoP;
+-
+ callInfoSetCompletion(envP, callInfoP, serverUrl, methodName,
+- paramArrayP, completionFn, userData);
++ paramArrayP,
++ completionFn, progressFn, userHandle);
+
+ if (envP->fault_occurred)
+ free(callInfoP);
+ }
+ }
++ *callInfoPP = callInfoP;
+ }
+
+
+@@ -804,6 +916,15 @@ xmlrpc_client_event_loop_finish_timeout(xmlrpc_client * const clientP,
+
+
+
++/* Microsoft Visual C in debug mode produces code that complains about
++ passing an undefined value of 'resultP' to xmlrpc_parse_response2().
++ It's a bogus complaint, because this function knows in those cases
++ that the value of 'resultP' is meaningless. So we disable the check.
++*/
++#pragma runtime_checks("u", off)
++
++
++
+ static void
+ asynchComplete(struct xmlrpc_call_info * const callInfoP,
+ xmlrpc_mem_block * const responseXmlP,
+@@ -825,8 +946,6 @@ asynchComplete(struct xmlrpc_call_info * const callInfoP,
+
+ xmlrpc_env_init(&env);
+
+- resultP = NULL; /* Just to quiet compiler warning */
+-
+ if (transportEnv.fault_occurred)
+ xmlrpc_env_set_fault_formatted(
+ &env, transportEnv.fault_code,
+@@ -855,7 +974,7 @@ asynchComplete(struct xmlrpc_call_info * const callInfoP,
+ (*callInfoP->completionFn)(callInfoP->completionArgs.serverUrl,
+ callInfoP->completionArgs.methodName,
+ callInfoP->completionArgs.paramArrayP,
+- callInfoP->completionArgs.userData,
++ callInfoP->userHandle,
+ &env, resultP);
+
+ if (!env.fault_occurred)
+@@ -868,14 +987,32 @@ asynchComplete(struct xmlrpc_call_info * const callInfoP,
+
+
+
++#pragma runtime_checks("u", restore)
++
++
++
++static void
++progress(struct xmlrpc_call_info * const callInfoP,
++ struct xmlrpc_progress_data const progressData) {
++
++ /* We wouldn't have asked the transport to call our progress
++ function if we didn't have a user progress function to call:
++ */
++ assert(callInfoP->progressFn);
++
++ callInfoP->progressFn(callInfoP->userHandle, progressData);
++}
++
++
++
+ void
+-xmlrpc_client_start_rpc(xmlrpc_env * const envP,
+- struct xmlrpc_client * const clientP,
+- xmlrpc_server_info * const serverInfoP,
+- const char * const methodName,
+- xmlrpc_value * const argP,
+- xmlrpc_response_handler completionFn,
+- void * const userData) {
++xmlrpc_client_start_rpc(xmlrpc_env * const envP,
++ struct xmlrpc_client * const clientP,
++ const xmlrpc_server_info * const serverInfoP,
++ const char * const methodName,
++ xmlrpc_value * const paramArrayP,
++ xmlrpc_response_handler completionFn,
++ void * const userHandle) {
+
+ struct xmlrpc_call_info * callInfoP;
+
+@@ -883,18 +1020,25 @@ xmlrpc_client_start_rpc(xmlrpc_env * const envP,
+ XMLRPC_ASSERT_PTR_OK(clientP);
+ XMLRPC_ASSERT_PTR_OK(serverInfoP);
+ XMLRPC_ASSERT_PTR_OK(methodName);
+- XMLRPC_ASSERT_VALUE_OK(argP);
++ XMLRPC_ASSERT_VALUE_OK(paramArrayP);
+
+- callInfoCreate(envP, methodName, argP, clientP->dialect,
+- serverInfoP->serverUrl, completionFn, userData,
++ callInfoCreate(envP, methodName, paramArrayP, clientP->dialect,
++ serverInfoP->serverUrl,
++ completionFn, clientP->progressFn, userHandle,
+ &callInfoP);
+
+- if (!envP->fault_occurred)
++ if (!envP->fault_occurred) {
++ xmlrpc_traceXml(
++ "XML-RPC CALL",
++ XMLRPC_MEMBLOCK_CONTENTS(char, callInfoP->serialized_xml),
++ XMLRPC_MEMBLOCK_SIZE(char, callInfoP->serialized_xml));
++
+ clientP->transportOps.send_request(
+ envP, clientP->transportP, serverInfoP,
+ callInfoP->serialized_xml,
+- &asynchComplete, callInfoP);
+-
++ &asynchComplete, clientP->progressFn ? &progress : NULL,
++ callInfoP);
++ }
+ if (envP->fault_occurred)
+ callInfoDestroy(callInfoP);
+ else {
+@@ -904,47 +1048,84 @@ xmlrpc_client_start_rpc(xmlrpc_env * const envP,
+
+
+
++void
++xmlrpc_client_start_rpcf_server_va(
++ xmlrpc_env * const envP,
++ xmlrpc_client * const clientP,
++ const xmlrpc_server_info * const serverInfoP,
++ const char * const methodName,
++ xmlrpc_response_handler responseHandler,
++ void * const userHandle,
++ const char * const format,
++ va_list args) {
++
++ xmlrpc_value * paramArrayP;
++ /* The XML-RPC parameter list array */
++
++ XMLRPC_ASSERT_ENV_OK(envP);
++ XMLRPC_ASSERT_PTR_OK(clientP);
++ XMLRPC_ASSERT_PTR_OK(serverInfoP);
++ XMLRPC_ASSERT_PTR_OK(methodName);
++ XMLRPC_ASSERT_PTR_OK(format);
++
++ computeParamArray(envP, format, args, ¶mArrayP);
++
++ if (!envP->fault_occurred) {
++ xmlrpc_client_start_rpc(envP, clientP,
++ serverInfoP, methodName, paramArrayP,
++ responseHandler, userHandle);
++
++ xmlrpc_DECREF(paramArrayP);
++ }
++}
++
++
++
++void
++xmlrpc_client_start_rpcf_va(xmlrpc_env * const envP,
++ xmlrpc_client * const clientP,
++ const char * const serverUrl,
++ const char * const methodName,
++ xmlrpc_response_handler responseHandler,
++ void * const userHandle,
++ const char * const format,
++ va_list args) {
++
++ xmlrpc_server_info * serverInfoP;
++
++ serverInfoP = xmlrpc_server_info_new(envP, serverUrl);
++ if (!envP->fault_occurred) {
++ xmlrpc_client_start_rpcf_server_va(
++ envP, clientP,
++ serverInfoP, methodName,
++ responseHandler, userHandle,
++ format, args);
++
++ xmlrpc_server_info_free(serverInfoP);
++ }
++}
++
++
++
+ void
+ xmlrpc_client_start_rpcf(xmlrpc_env * const envP,
+ xmlrpc_client * const clientP,
+ const char * const serverUrl,
+ const char * const methodName,
+ xmlrpc_response_handler responseHandler,
+- void * const userData,
++ void * const userHandle,
+ const char * const format,
+ ...) {
+
+ va_list args;
+- xmlrpc_value * paramArrayP;
+- const char * suffix;
+
+- XMLRPC_ASSERT_PTR_OK(serverUrl);
+ XMLRPC_ASSERT_PTR_OK(format);
+
+- /* Build our argument array. */
+ va_start(args, format);
+- xmlrpc_build_value_va(envP, format, args, ¶mArrayP, &suffix);
++ xmlrpc_client_start_rpcf_va(envP, clientP, serverUrl, methodName,
++ responseHandler,
++ userHandle, format, args);
+ va_end(args);
+- if (!envP->fault_occurred) {
+- if (*suffix != '\0')
+- xmlrpc_faultf(envP, "Junk after the argument "
+- "specifier: '%s'. "
+- "There must be exactly one arument.",
+- suffix);
+- else {
+- xmlrpc_server_info * serverInfoP;
+-
+- serverInfoP = xmlrpc_server_info_new(envP, serverUrl);
+- if (!envP->fault_occurred) {
+- xmlrpc_client_start_rpc(
+- envP, clientP,
+- serverInfoP, methodName, paramArrayP,
+- responseHandler, userData);
+- }
+- xmlrpc_server_info_free(serverInfoP);
+- }
+- xmlrpc_DECREF(paramArrayP);
+- }
+ }
+
+
+diff --git a/libs/xmlrpc-c/src/xmlrpc_client_global.c b/libs/xmlrpc-c/src/xmlrpc_client_global.c
+index 7beba14..362b99f 100644
+--- a/libs/xmlrpc-c/src/xmlrpc_client_global.c
++++ b/libs/xmlrpc-c/src/xmlrpc_client_global.c
+@@ -122,38 +122,6 @@ xmlrpc_client_transport_call(
+
+
+
+-static void
+-clientCall_va(xmlrpc_env * const envP,
+- const xmlrpc_server_info * const serverInfoP,
+- const char * const methodName,
+- const char * const format,
+- va_list args,
+- xmlrpc_value ** const resultPP) {
+-
+- validateGlobalClientExists(envP);
+- if (!envP->fault_occurred) {
+- xmlrpc_value * paramArrayP;
+- const char * suffix;
+-
+- xmlrpc_build_value_va(envP, format, args, ¶mArrayP, &suffix);
+-
+- if (!envP->fault_occurred) {
+- if (*suffix != '\0')
+- xmlrpc_faultf(envP, "Junk after the argument "
+- "specifier: '%s'. "
+- "There must be exactly one arument.",
+- suffix);
+- else
+- xmlrpc_client_call2(envP, globalClientP, serverInfoP,
+- methodName, paramArrayP, resultPP);
+-
+- xmlrpc_DECREF(paramArrayP);
+- }
+- }
+-}
+-
+-
+-
+ xmlrpc_value *
+ xmlrpc_client_call(xmlrpc_env * const envP,
+ const char * const serverUrl,
+@@ -162,21 +130,19 @@ xmlrpc_client_call(xmlrpc_env * const envP,
+ ...) {
+
+ xmlrpc_value * resultP;
+-
+- xmlrpc_server_info * serverInfoP;
+
+- serverInfoP = xmlrpc_server_info_new(envP, serverUrl);
+-
++ validateGlobalClientExists(envP);
++
+ if (!envP->fault_occurred) {
+ va_list args;
++
+ va_start(args, format);
+
+- clientCall_va(envP, serverInfoP, methodName, format, args, &resultP);
++ xmlrpc_client_call2f_va(envP, globalClientP, serverUrl,
++ methodName, format, &resultP, args);
+
+ va_end(args);
+- xmlrpc_server_info_free(serverInfoP);
+ }
+-
+ return resultP;
+ }
+
+@@ -184,18 +150,24 @@ xmlrpc_client_call(xmlrpc_env * const envP,
+
+ xmlrpc_value *
+ xmlrpc_client_call_server(xmlrpc_env * const envP,
+- const xmlrpc_server_info * const serverP,
++ const xmlrpc_server_info * const serverInfoP,
+ const char * const methodName,
+ const char * const format,
+ ...) {
+
+- va_list args;
+ xmlrpc_value * resultP;
+
+- va_start(args, format);
+- clientCall_va(envP, serverP, methodName, format, args, &resultP);
+- va_end(args);
++ validateGlobalClientExists(envP);
++
++ if (!envP->fault_occurred) {
++ va_list args;
++
++ va_start(args, format);
+
++ xmlrpc_client_call_server2_va(envP, globalClientP, serverInfoP,
++ methodName, format, args, &resultP);
++ va_end(args);
++ }
+ return resultP;
+ }
+
+@@ -300,25 +272,16 @@ xmlrpc_client_call_asynch(const char * const serverUrl,
+ validateGlobalClientExists(&env);
+
+ if (!env.fault_occurred) {
+- xmlrpc_value * paramArrayP;
+- const char * suffix;
+ va_list args;
+-
++
+ va_start(args, format);
+- xmlrpc_build_value_va(&env, format, args, ¶mArrayP, &suffix);
+- va_end(args);
+
+- if (!env.fault_occurred) {
+- if (*suffix != '\0')
+- xmlrpc_faultf(&env, "Junk after the argument "
+- "specifier: '%s'. "
+- "There must be exactly one arument.",
+- suffix);
+- else
+- xmlrpc_client_call_asynch_params(
+- serverUrl, methodName, responseHandler, userData,
+- paramArrayP);
+- }
++ xmlrpc_client_start_rpcf_va(&env, globalClientP,
++ serverUrl, methodName,
++ responseHandler, userData,
++ format, args);
++
++ va_end(args);
+ }
+ if (env.fault_occurred)
+ (*responseHandler)(serverUrl, methodName, NULL, userData, &env, NULL);
+@@ -364,28 +327,21 @@ xmlrpc_client_call_server_asynch(xmlrpc_server_info * const serverInfoP,
+ ...) {
+
+ xmlrpc_env env;
+- xmlrpc_value * paramArrayP;
+- const char * suffix;
+- va_list args;
+-
+- xmlrpc_env_init(&env);
+
+- va_start(args, format);
+- xmlrpc_build_value_va(&env, format, args, ¶mArrayP, &suffix);
+- va_end(args);
++ validateGlobalClientExists(&env);
+
+ if (!env.fault_occurred) {
+- if (*suffix != '\0')
+- xmlrpc_faultf(&env, "Junk after the argument "
+- "specifier: '%s'. "
+- "There must be exactly one arument.",
+- suffix);
+- else
+- xmlrpc_client_call_server_asynch_params(
+- serverInfoP, methodName, responseHandler, userData,
+- paramArrayP);
+-
+- xmlrpc_DECREF(paramArrayP);
++ va_list args;
++
++ xmlrpc_env_init(&env);
++
++ va_start(args, format);
++
++ xmlrpc_client_start_rpcf_server_va(
++ &env, globalClientP, serverInfoP, methodName,
++ responseHandler, userData, format, args);
++
++ va_end(args);
+ }
+ if (env.fault_occurred)
+ (*responseHandler)(serverInfoP->serverUrl, methodName, NULL,
+diff --git a/libs/xmlrpc-c/src/xmlrpc_data.c b/libs/xmlrpc-c/src/xmlrpc_data.c
+index 28827fe..9330c12 100644
+--- a/libs/xmlrpc-c/src/xmlrpc_data.c
++++ b/libs/xmlrpc-c/src/xmlrpc_data.c
+@@ -14,6 +14,17 @@
+ #include "xmlrpc-c/base_int.h"
+
+
++
++static void
++destroyCptr(xmlrpc_value * const valueP) {
++
++ if (valueP->_value.cptr.dtor)
++ valueP->_value.cptr.dtor(valueP->_value.cptr.dtorContext,
++ valueP->_value.cptr.objectP);
++}
++
++
++
+ static void
+ destroyValue(xmlrpc_value * const valueP) {
+
+@@ -29,7 +40,7 @@ destroyValue(xmlrpc_value * const valueP) {
+ break;
+
+ case XMLRPC_TYPE_DATETIME:
+- xmlrpc_mem_block_clean(&valueP->_block);
++ xmlrpc_destroyDatetime(valueP);
+ break;
+
+ case XMLRPC_TYPE_STRING:
+@@ -49,6 +60,7 @@ destroyValue(xmlrpc_value * const valueP) {
+ break;
+
+ case XMLRPC_TYPE_C_PTR:
++ destroyCptr(valueP);
+ break;
+
+ case XMLRPC_TYPE_NIL:
+@@ -220,9 +232,9 @@ xmlrpc_read_base64(xmlrpc_env * const envP,
+
+ byteStringValue = malloc(size);
+ if (byteStringValue == NULL)
+- xmlrpc_env_set_fault_formatted(
+- envP, XMLRPC_INTERNAL_ERROR, "Unable to allocate %u bytes "
+- "for byte string.", size);
++ xmlrpc_faultf(envP,
++ "Unable to allocate %u bytes for byte string.",
++ (unsigned)size);
+ else {
+ memcpy(byteStringValue, contents, size);
+ *byteStringValueP = (const unsigned char *)byteStringValue;
+@@ -269,7 +281,7 @@ xmlrpc_read_cptr(xmlrpc_env * const envP,
+
+ validateType(envP, valueP, XMLRPC_TYPE_C_PTR);
+ if (!envP->fault_occurred)
+- *ptrValueP = valueP->_value.c_ptr;
++ *ptrValueP = valueP->_value.cptr.objectP;
+ }
+
+
+@@ -431,13 +443,26 @@ xmlrpc_value *
+ xmlrpc_cptr_new(xmlrpc_env * const envP,
+ void * const value) {
+
++ return xmlrpc_cptr_new_dtor(envP, value, NULL, NULL);
++}
++
++
++
++xmlrpc_value *
++xmlrpc_cptr_new_dtor(xmlrpc_env * const envP,
++ void * const value,
++ xmlrpc_cptr_dtor_fn const dtor,
++ void * const dtorContext) {
++
+ xmlrpc_value * valP;
+
+ xmlrpc_createXmlrpcValue(envP, &valP);
+
+ if (!envP->fault_occurred) {
+ valP->_type = XMLRPC_TYPE_C_PTR;
+- valP->_value.c_ptr = value;
++ valP->_value.cptr.objectP = value;
++ valP->_value.cptr.dtor = dtor;
++ valP->_value.cptr.dtorContext = dtorContext;
+ }
+ return valP;
+ }
+diff --git a/libs/xmlrpc-c/src/xmlrpc_datetime.c b/libs/xmlrpc-c/src/xmlrpc_datetime.c
+index 832f4fb..a36925f 100644
+--- a/libs/xmlrpc-c/src/xmlrpc_datetime.c
++++ b/libs/xmlrpc-c/src/xmlrpc_datetime.c
+@@ -1,34 +1,30 @@
+ #include "xmlrpc_config.h"
+
++#define _XOPEN_SOURCE 600 /* Make sure strdup() is in <string.h> */
++
+ #include <time.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <ctype.h>
+ #include <assert.h>
++#include <stdio.h>
+ #if MSVCRT
+ #include <windows.h>
+ #endif
+
+ #include "bool.h"
++#include "mallocvar.h"
+
++#include "xmlrpc-c/c_util.h"
+ #include "xmlrpc-c/base.h"
+ #include "xmlrpc-c/base_int.h"
+ #include "xmlrpc-c/string_int.h"
+ #include "xmlrpc-c/time_int.h"
+
+
+-/* Future work: the XMLRPC_TYPE_DATETIME xmlrpc_value should store the
+- datetime as something computation-friendly, not as a string. The
+- XML-RPC XML parser should parse the string value and reject the XML if
+- it isn't valid.
+-
+- But this file should remain the authority on datetimes, so the XML
+- parser and builder should call on routines in here to do that.
+-
+- time_t won't work because it can't represent times before 1970 or
+- after 2038. We need to figure out something better.
+-*/
+-
++#if HAVE_REGEX
++#include <regex.h>
++#endif
+
+ #if MSVCRT
+
+@@ -112,19 +108,65 @@ validateDatetimeType(xmlrpc_env * const envP,
+
+
+ void
++xmlrpc_read_datetime(xmlrpc_env * const envP,
++ const xmlrpc_value * const valueP,
++ xmlrpc_datetime * const dtP) {
++
++ validateDatetimeType(envP, valueP);
++ if (!envP->fault_occurred) {
++ *dtP = valueP->_value.dt;
++ }
++}
++
++
++
++void
+ xmlrpc_read_datetime_str(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ const char ** const stringValueP) {
+-
++/*----------------------------------------------------------------------------
++ This exists for backward compatibility. No normal modern program would
++ want to see a datetime value in this format. Note that the format isn't
++ even ISO 8601 -- it's a bizarre hybrid of two ISO 8601 formats.
++
++ Do not extend this.
++
++ This exists because Xmlrpc-c was at one time lazy and this was the only way
++ to extract the value. An xmlrpc_value in those days represented a datetime
++ with the actual XML-RPC wire format of a datetime, and this function simply
++ returned a copy of it.
++-----------------------------------------------------------------------------*/
+ validateDatetimeType(envP, valueP);
+ if (!envP->fault_occurred) {
+- const char * const contents =
+- XMLRPC_MEMBLOCK_CONTENTS(char, &valueP->_block);
+- *stringValueP = strdup(contents);
+- if (*stringValueP == NULL)
+- xmlrpc_env_set_fault_formatted(
+- envP, XMLRPC_INTERNAL_ERROR, "Unable to allocate space "
+- "for datetime string");
++ time_t secs;
++ unsigned int usecs;
++
++ xmlrpc_read_datetime_usec(envP, valueP, &secs, &usecs);
++
++ if (!envP->fault_occurred) {
++ struct tm brokenTime;
++ char dtString[64];
++
++ xmlrpc_gmtime(secs, &brokenTime);
++
++ /* Note that this format is NOT ISO 8601 -- it's a bizarre
++ hybrid of two ISO 8601 formats.
++ */
++ strftime(dtString, sizeof(dtString), "%Y%m%dT%H:%M:%S",
++ &brokenTime);
++
++ if (usecs != 0) {
++ char usecString[64];
++ assert(usecs < 1000000);
++ snprintf(usecString, sizeof(usecString), ".%06u", usecs);
++ STRSCAT(dtString, usecString);
++ }
++
++ *stringValueP = strdup(dtString);
++ if (*stringValueP == NULL)
++ xmlrpc_faultf(envP,
++ "Unable to allocate memory for datetime string");
++ }
+ }
+ }
+
+@@ -134,23 +176,164 @@ void
+ xmlrpc_read_datetime_str_old(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ const char ** const stringValueP) {
++
++ assert(valueP->_cache);
+
+ validateDatetimeType(envP, valueP);
+ if (!envP->fault_occurred) {
+- *stringValueP = XMLRPC_MEMBLOCK_CONTENTS(char, &valueP->_block);
++ const char ** const readBufferP = valueP->_cache;
++
++ if (!*readBufferP)
++ /* Nobody's asked for the internal buffer before. Set it up. */
++ xmlrpc_read_datetime_str(envP, valueP, readBufferP);
++
++ *stringValueP = *readBufferP;
++ }
++}
++
++
++
++void
++xmlrpc_read_datetime_usec(xmlrpc_env * const envP,
++ const xmlrpc_value * const valueP,
++ time_t * const secsP,
++ unsigned int * const usecsP) {
++
++ validateDatetimeType(envP, valueP);
++
++ if (!envP->fault_occurred) {
++ if (valueP->_value.dt.Y < 1970)
++ xmlrpc_faultf(envP, "Year (%u) is too early to represent as "
++ "a standard Unix time",
++ valueP->_value.dt.Y);
++ else {
++ struct tm brokenTime;
++ const char * error;
++
++ brokenTime.tm_sec = valueP->_value.dt.s;
++ brokenTime.tm_min = valueP->_value.dt.m;
++ brokenTime.tm_hour = valueP->_value.dt.h;
++ brokenTime.tm_mday = valueP->_value.dt.D;
++ brokenTime.tm_mon = valueP->_value.dt.M - 1;
++ brokenTime.tm_year = valueP->_value.dt.Y - 1900;
++
++ xmlrpc_timegm(&brokenTime, secsP, &error);
++
++ if (error) {
++ /* Ideally, this wouldn't be possible - it wouldn't be
++ possible to create an xmlrpc_value that doesn't actually
++ represent a real datetime. But today, we're lazy and
++ don't fully validate incoming XML-RPC <dateTime.iso8601>
++ elements, and we also have the legacy
++ xmlrpc_datetime_new_str() constructor to which the user
++ may feed garbage.
++
++ We should tighten that up and then simply assert here that
++ xmlrpc_timegm() succeeded.
++ */
++ xmlrpc_env_set_fault_formatted(envP, XMLRPC_PARSE_ERROR,
++ "A datetime received in an XML-RPC message "
++ "or generated with legacy Xmlrpc-c facilities "
++ "does not validly describe a datetime. %s",
++ error);
++ xmlrpc_strfree(error);
++ } else
++ *usecsP = valueP->_value.dt.u;
++ }
+ }
+ }
+
+
+
++void
++xmlrpc_read_datetime_sec(xmlrpc_env * const envP,
++ const xmlrpc_value * const valueP,
++ time_t * const timeValueP) {
++
++ unsigned int usecs;
++
++ xmlrpc_read_datetime_usec(envP, valueP, timeValueP, &usecs);
++}
++
++
++
++#if XMLRPC_HAVE_TIMEVAL
++
++void
++xmlrpc_read_datetime_timeval(xmlrpc_env * const envP,
++ const xmlrpc_value * const valueP,
++ struct timeval * const timeValueP) {
++
++ time_t secs;
++ unsigned int usecs;
++
++ xmlrpc_read_datetime_usec(envP, valueP, &secs, &usecs);
++
++ timeValueP->tv_sec = secs;
++ timeValueP->tv_usec = usecs;
++}
++#endif
++
++
++
++#if XMLRPC_HAVE_TIMESPEC
++
++void
++xmlrpc_read_datetime_timespec(xmlrpc_env * const envP,
++ const xmlrpc_value * const valueP,
++ struct timespec * const timeValueP) {
++
++ time_t secs;
++ unsigned int usecs;
++
++ xmlrpc_read_datetime_usec(envP, valueP, &secs, &usecs);
++
++ timeValueP->tv_sec = secs;
++ timeValueP->tv_nsec = usecs * 1000;
++}
++#endif
++
++
++
++xmlrpc_value *
++xmlrpc_datetime_new(xmlrpc_env * const envP,
++ xmlrpc_datetime const dt) {
++
++ xmlrpc_value * valP;
++
++ const char ** readBufferP;
++
++ MALLOCVAR(readBufferP);
++
++ if (!readBufferP)
++ xmlrpc_faultf(envP, "Couldn't get memory for the cache part of the "
++ "XML-RPC datetime value object");
++
++ else {
++ *readBufferP = NULL;
++
++ xmlrpc_createXmlrpcValue(envP, &valP);
++
++ if (!envP->fault_occurred) {
++ valP->_type = XMLRPC_TYPE_DATETIME;
++
++ valP->_value.dt = dt;
++
++ valP->_cache = readBufferP;
++ }
++ if (envP->fault_occurred)
++ free(readBufferP);
++ }
++ return valP;
++}
++
++
++
+ static void
+-parseDateNumbers(const char * const t,
+- unsigned int * const YP,
+- unsigned int * const MP,
+- unsigned int * const DP,
+- unsigned int * const hP,
+- unsigned int * const mP,
+- unsigned int * const sP) {
++parseDatetimeString(const char * const datetimeString,
++ xmlrpc_datetime * const dtP) {
++
++ size_t const dtStrlen = strlen(datetimeString);
+
+ char year[4+1];
+ char month[2+1];
+@@ -159,177 +342,219 @@ parseDateNumbers(const char * const t,
+ char minute[2+1];
+ char second[2+1];
+
+- assert(strlen(t) == 17);
++ /* Because we require input to be valid: */
++ assert(dtStrlen >= 17 && dtStrlen != 18 && dtStrlen <= 24);
+
+- year[0] = t[ 0];
+- year[1] = t[ 1];
+- year[2] = t[ 2];
+- year[3] = t[ 3];
++ year[0] = datetimeString[ 0];
++ year[1] = datetimeString[ 1];
++ year[2] = datetimeString[ 2];
++ year[3] = datetimeString[ 3];
+ year[4] = '\0';
+
+- month[0] = t[ 4];
+- month[1] = t[ 5];
++ month[0] = datetimeString[ 4];
++ month[1] = datetimeString[ 5];
+ month[2] = '\0';
+
+- day[0] = t[ 6];
+- day[1] = t[ 7];
++ day[0] = datetimeString[ 6];
++ day[1] = datetimeString[ 7];
+ day[2] = '\0';
+
+- assert(t[ 8] == 'T');
++ assert(datetimeString[ 8] == 'T');
+
+- hour[0] = t[ 9];
+- hour[1] = t[10];
++ hour[0] = datetimeString[ 9];
++ hour[1] = datetimeString[10];
+ hour[2] = '\0';
+
+- assert(t[11] == ':');
++ assert(datetimeString[11] == ':');
+
+- minute[0] = t[12];
+- minute[1] = t[13];
++ minute[0] = datetimeString[12];
++ minute[1] = datetimeString[13];
+ minute[2] = '\0';
+
+- assert(t[14] == ':');
++ assert(datetimeString[14] == ':');
+
+- second[0] = t[15];
+- second[1] = t[16];
++ second[0] = datetimeString[15];
++ second[1] = datetimeString[16];
+ second[2] = '\0';
+
+- *YP = atoi(year);
+- *MP = atoi(month);
+- *DP = atoi(day);
+- *hP = atoi(hour);
+- *mP = atoi(minute);
+- *sP = atoi(second);
++ if (dtStrlen > 17) {
++ size_t const pad = 24 - dtStrlen;
++ size_t i;
++
++ dtP->u = atoi(&datetimeString[18]);
++ for (i = 0; i < pad; ++i)
++ dtP->u *= 10;
++ } else
++ dtP->u = 0;
++
++ dtP->Y = atoi(year);
++ dtP->M = atoi(month);
++ dtP->D = atoi(day);
++ dtP->h = atoi(hour);
++ dtP->m = atoi(minute);
++ dtP->s = atoi(second);
++}
++
++
++
++static void
++validateFirst17(xmlrpc_env * const envP,
++ const char * const dt) {
++/*----------------------------------------------------------------------------
++ Assuming 'dt' is at least 17 characters long, validate that the first
++ 17 characters are a valid XML-RPC datetime, e.g.
++ "20080628T16:35:02"
++-----------------------------------------------------------------------------*/
++ unsigned int i;
++
++ for (i = 0; i < 8 && !envP->fault_occurred; ++i)
++ if (!isdigit(dt[i]))
++ xmlrpc_faultf(envP, "Not a digit: '%c'", dt[i]);
++
++ if (dt[8] != 'T')
++ xmlrpc_faultf(envP, "9th character is '%c', not 'T'", dt[8]);
++ if (!isdigit(dt[9]))
++ xmlrpc_faultf(envP, "Not a digit: '%c'", dt[9]);
++ if (!isdigit(dt[10]))
++ xmlrpc_faultf(envP, "Not a digit: '%c'", dt[10]);
++ if (dt[11] != ':')
++ xmlrpc_faultf(envP, "Not a colon: '%c'", dt[11]);
++ if (!isdigit(dt[12]))
++ xmlrpc_faultf(envP, "Not a digit: '%c'", dt[12]);
++ if (!isdigit(dt[13]))
++ xmlrpc_faultf(envP, "Not a digit: '%c'", dt[13]);
++ if (dt[14] != ':')
++ xmlrpc_faultf(envP, "Not a colon: '%c'", dt[14]);
++ if (!isdigit(dt[15]))
++ xmlrpc_faultf(envP, "Not a digit: '%c'", dt[15]);
++ if (!isdigit(dt[16]))
++ xmlrpc_faultf(envP, "Not a digit: '%c'", dt[16]);
++}
++
++
++
++static void
++validateFractionalSeconds(xmlrpc_env * const envP,
++ const char * const dt) {
++/*----------------------------------------------------------------------------
++ Validate the fractional seconds part of the XML-RPC datetime string
++ 'dt', if any. That's the decimal point and everything following
++ it.
++-----------------------------------------------------------------------------*/
++ if (strlen(dt) > 17) {
++ if (dt[17] != '.') {
++ xmlrpc_faultf(envP, "'%c' where only a period is valid", dt[17]);
++ } else {
++ if (dt[18] == '\0')
++ xmlrpc_faultf(envP, "Nothing after decimal point");
++ else {
++ unsigned int i;
++ for (i = 18; dt[i] != '\0' && !envP->fault_occurred; ++i) {
++ if (!isdigit(dt[i]))
++ xmlrpc_faultf(envP,
++ "Non-digit in fractional seconds: '%c'",
++ dt[i]);
++ }
++ }
++ }
++ }
+ }
+
+
+
+ static void
+ validateFormat(xmlrpc_env * const envP,
+- const char * const t) {
++ const char * const dt) {
+
+- if (strlen(t) != 17)
+- xmlrpc_faultf(envP, "%u characters instead of 15.", strlen(t));
+- else if (t[8] != 'T')
+- xmlrpc_faultf(envP, "9th character is '%c', not 'T'", t[8]);
++ if (strlen(dt) < 17)
++ xmlrpc_faultf(envP,
++ "Invalid length of %u of datetime string. "
++ "Must be at least 17 characters",
++ (unsigned)strlen(dt));
+ else {
+- unsigned int i;
+-
+- for (i = 0; i < 8 && !envP->fault_occurred; ++i)
+- if (!isdigit(t[i]))
+- xmlrpc_faultf(envP, "Not a digit: '%c'", t[i]);
+-
+- if (!isdigit(t[9]))
+- xmlrpc_faultf(envP, "Not a digit: '%c'", t[9]);
+- if (!isdigit(t[10]))
+- xmlrpc_faultf(envP, "Not a digit: '%c'", t[10]);
+- if (t[11] != ':')
+- xmlrpc_faultf(envP, "Not a colon: '%c'", t[11]);
+- if (!isdigit(t[12]))
+- xmlrpc_faultf(envP, "Not a digit: '%c'", t[12]);
+- if (!isdigit(t[13]))
+- xmlrpc_faultf(envP, "Not a digit: '%c'", t[13]);
+- if (t[14] != ':')
+- xmlrpc_faultf(envP, "Not a colon: '%c'", t[14]);
+- if (!isdigit(t[15]))
+- xmlrpc_faultf(envP, "Not a digit: '%c'", t[15]);
+- if (!isdigit(t[16]))
+- xmlrpc_faultf(envP, "Not a digit: '%c'", t[16]);
++ validateFirst17(envP, dt);
++
++ if (!envP->fault_occurred)
++ validateFractionalSeconds(envP, dt);
+ }
+-}
++}
+
+
+
+-static void
+-parseDatetime(xmlrpc_env * const envP,
+- const char * const t,
+- time_t * const timeValueP) {
+-/*----------------------------------------------------------------------------
+- Parse a time in the format stored in an xmlrpc_value and return the
+- time that it represents.
++/* Microsoft Visual C in debug mode produces code that complains about
++ returning an undefined value from xmlrpc_datetime_new_str(). It's a bogus
++ complaint, because this function is defined to return nothing meaningful
++ those cases. So we disable the check.
++*/
++#pragma runtime_checks("u", off)
+
+- t[] is the input time string. We return the result as *timeValueP.
+
+- Example of the format we parse: "19980717T14:08:55"
+- Note that this is not quite ISO 8601. It's a bizarre combination of
+- two ISO 8601 formats.
+
+- The input is capable of representing datetimes that cannot be expressed
+- as a time_t. In that case, we fail, with fault code
+- XMLRPC_INTERNAL_ERROR.
++xmlrpc_value *
++xmlrpc_datetime_new_str(xmlrpc_env * const envP,
++ const char * const datetimeString) {
++/*----------------------------------------------------------------------------
++ This exists only for backward compatibility. Originally, this was the
++ only way to create a datetime XML-RPC value, because we had a really
++ lazy implementation of XML-RPC serialization and parsing (basically, the
++ user did it!).
+
+- And of course the input may not validly represent a datetime at all.
+- In that case too, we fail with fault code XMLRPC_PARSE_ERROR.
++ Do not extend this. The user should use more normal C representations
++ of datetimes.
+ -----------------------------------------------------------------------------*/
+- validateFormat(envP, t);
++ xmlrpc_value * retval;
+
++ validateFormat(envP, datetimeString);
+ if (!envP->fault_occurred) {
+- unsigned int Y, M, D, h, m, s;
+-
+- parseDateNumbers(t, &Y, &M, &D, &h, &m, &s);
+-
+- if (Y < 1970)
+- xmlrpc_env_set_fault(envP, XMLRPC_INTERNAL_ERROR,
+- "Year is too early to represent as "
+- "a standard Unix time");
+- else {
+- struct tm brokenTime;
+- const char * error;
+-
+- brokenTime.tm_sec = s;
+- brokenTime.tm_min = m;
+- brokenTime.tm_hour = h;
+- brokenTime.tm_mday = D;
+- brokenTime.tm_mon = M - 1;
+- brokenTime.tm_year = Y - 1900;
+-
+- xmlrpc_timegm(&brokenTime, timeValueP, &error);
++ xmlrpc_datetime dt;
+
+- if (error) {
+- xmlrpc_env_set_fault(envP, XMLRPC_PARSE_ERROR, error);
+- xmlrpc_strfree(error);
+- }
+- }
++ parseDatetimeString(datetimeString, &dt);
++
++ /* Note that parseDatetimeString() can generate an invalid datetime
++ value, e.g. Hour 25 or February 30. Ideally, we would catch that
++ here, but due to laziness, we simply accept the possibility of
++ invalid xmlrpc_datetime in xmlrpc_value and whoever uses the the
++ xmlrpc_value has to deal with it.
++ */
++ retval = xmlrpc_datetime_new(envP, dt);
+ }
++
++ return retval;
+ }
+
+
+
+-void
+-xmlrpc_read_datetime_sec(xmlrpc_env * const envP,
+- const xmlrpc_value * const valueP,
+- time_t * const timeValueP) {
+-
+- validateDatetimeType(envP, valueP);
+- if (!envP->fault_occurred)
+- parseDatetime(envP,
+- XMLRPC_MEMBLOCK_CONTENTS(char, &valueP->_block),
+- timeValueP);
+-}
++#pragma runtime_checks("u", restore)
+
+
+
+ xmlrpc_value *
+-xmlrpc_datetime_new_str(xmlrpc_env * const envP,
+- const char * const value) {
++xmlrpc_datetime_new_usec(xmlrpc_env * const envP,
++ time_t const secs,
++ unsigned int const usecs) {
+
+- xmlrpc_value * valP;
++ xmlrpc_value * valueP;
+
+- xmlrpc_createXmlrpcValue(envP, &valP);
++ if (usecs >= 1000000)
++ xmlrpc_faultf(envP, "Number of fractional microseconds must be less "
++ "than one million. You specified %u", usecs);
++ else {
++ struct tm brokenTime;
++ xmlrpc_datetime dt;
+
+- if (!envP->fault_occurred) {
+- valP->_type = XMLRPC_TYPE_DATETIME;
++ xmlrpc_gmtime(secs, &brokenTime);
+
+- XMLRPC_TYPED_MEM_BLOCK_INIT(
+- char, envP, &valP->_block, strlen(value) + 1);
+- if (!envP->fault_occurred) {
+- char * const contents =
+- XMLRPC_TYPED_MEM_BLOCK_CONTENTS(char, &valP->_block);
+- strcpy(contents, value);
+- }
+- if (envP->fault_occurred)
+- free(valP);
++ dt.s = brokenTime.tm_sec;
++ dt.m = brokenTime.tm_min;
++ dt.h = brokenTime.tm_hour;
++ dt.D = brokenTime.tm_mday;
++ dt.M = brokenTime.tm_mon + 1;
++ dt.Y = 1900 + brokenTime.tm_year;
++ dt.u = usecs;
++
++ valueP = xmlrpc_datetime_new(envP, dt);
+ }
+- return valP;
++ return valueP;
+ }
+
+
+@@ -338,34 +563,42 @@ xmlrpc_value *
+ xmlrpc_datetime_new_sec(xmlrpc_env * const envP,
+ time_t const value) {
+
+- xmlrpc_value * valP;
+-
+- xmlrpc_createXmlrpcValue(envP, &valP);
++ return xmlrpc_datetime_new_usec(envP, value, 0);
++}
+
+- if (!envP->fault_occurred) {
+- struct tm brokenTime;
+- char timeString[64];
+-
+- valP->_type = XMLRPC_TYPE_DATETIME;
+
+- xmlrpc_gmtime(value, &brokenTime);
+-
+- /* Note that this format is NOT ISO 8601 -- it's a bizarre
+- hybrid of two ISO 8601 formats.
+- */
+- strftime(timeString, sizeof(timeString), "%Y%m%dT%H:%M:%S",
+- &brokenTime);
+-
+- XMLRPC_TYPED_MEM_BLOCK_INIT(
+- char, envP, &valP->_block, strlen(timeString) + 1);
+- if (!envP->fault_occurred) {
+- char * const contents =
+- XMLRPC_TYPED_MEM_BLOCK_CONTENTS(char, &valP->_block);
+-
+- strcpy(contents, timeString);
+- }
+- if (envP->fault_occurred)
+- free(valP);
+- }
+- return valP;
++
++#if XMLRPC_HAVE_TIMEVAL
++
++xmlrpc_value *
++xmlrpc_datetime_new_timeval(xmlrpc_env * const envP,
++ struct timeval const value) {
++
++ return xmlrpc_datetime_new_usec(envP, value.tv_sec, value.tv_usec);
++}
++#endif
++
++
++
++#if XMLRPC_HAVE_TIMESPEC
++
++xmlrpc_value *
++xmlrpc_datetime_new_timespec(xmlrpc_env * const envP,
++ struct timespec const value) {
++
++ return xmlrpc_datetime_new_usec(envP, value.tv_sec, value.tv_nsec/1000);
++}
++#endif
++
++
++
++void
++xmlrpc_destroyDatetime(xmlrpc_value * const datetimeP) {
++
++ const char ** const readBufferP = datetimeP->_cache;
++
++ if (*readBufferP)
++ xmlrpc_strfree(*readBufferP);
++
++ free(datetimeP->_cache);
+ }
+diff --git a/libs/xmlrpc-c/src/xmlrpc_decompose.c b/libs/xmlrpc-c/src/xmlrpc_decompose.c
+index eeb3414..6323a26 100644
+--- a/libs/xmlrpc-c/src/xmlrpc_decompose.c
++++ b/libs/xmlrpc-c/src/xmlrpc_decompose.c
+@@ -712,7 +712,7 @@ buildArrayDecompBranch(xmlrpc_env * const envP,
+ if (itemCnt >= ARRAY_SIZE(decompNodeP->store.Tarray.itemArray))
+ xmlrpc_faultf(envP, "Too many array items in format string. "
+ "The most items you can have for an array in "
+- "a format string is %u.",
++ "a format string is %u.", (unsigned)
+ ARRAY_SIZE(decompNodeP->store.Tarray.itemArray));
+ else {
+ struct decompTreeNode * itemNodeP;
+@@ -850,7 +850,7 @@ buildStructDecompBranch(xmlrpc_env * const envP,
+ xmlrpc_faultf(envP,
+ "Too many structure members in format string. "
+ "The most members you can specify in "
+- "a format string is %u.",
++ "a format string is %u.", (unsigned)
+ ARRAY_SIZE(decompNodeP->store.Tstruct.mbrArray));
+ else {
+ struct mbrDecomp * const mbrP =
+@@ -1059,9 +1059,8 @@ createDecompTree(xmlrpc_env * const envP,
+
+ if (envP->fault_occurred)
+ destroyDecompTree(decompRootP);
+- else
+- *decompRootPP = decompRootP;
+ }
++ *decompRootPP = decompRootP;
+ }
+
+
+diff --git a/libs/xmlrpc-c/src/xmlrpc_expat.c b/libs/xmlrpc-c/src/xmlrpc_expat.c
+index 9e6c37e..7b51d3e 100644
+--- a/libs/xmlrpc-c/src/xmlrpc_expat.c
++++ b/libs/xmlrpc-c/src/xmlrpc_expat.c
+@@ -108,27 +108,28 @@ xml_element_new (xmlrpc_env * const env,
+ ** Blow away an existing element & all of its child elements.
+ */
+ void
+-xml_element_free(xml_element * const elem) {
++xml_element_free(xml_element * const elemP) {
+
+- xmlrpc_mem_block *children;
+- int size, i;
+- xml_element **contents;
++ xmlrpc_mem_block * childrenP;
++ size_t size, i;
++ xml_element ** contents;
+
+- XMLRPC_ASSERT_ELEM_OK(elem);
++ XMLRPC_ASSERT_ELEM_OK(elemP);
+
+- free(elem->_name);
+- elem->_name = XMLRPC_BAD_POINTER;
+- xmlrpc_mem_block_clean(&elem->_cdata);
++ free(elemP->_name);
++ elemP->_name = XMLRPC_BAD_POINTER;
++ XMLRPC_MEMBLOCK_CLEAN(xml_element *, &elemP->_cdata);
+
+ /* Deallocate all of our children recursively. */
+- children = &elem->_children;
+- contents = XMLRPC_TYPED_MEM_BLOCK_CONTENTS(xml_element*, children);
+- size = XMLRPC_TYPED_MEM_BLOCK_SIZE(xml_element*, children);
+- for (i = 0; i < size; i++)
++ childrenP = &elemP->_children;
++ contents = XMLRPC_MEMBLOCK_CONTENTS(xml_element *, childrenP);
++ size = XMLRPC_MEMBLOCK_SIZE(xml_element *, childrenP);
++ for (i = 0; i < size; ++i)
+ xml_element_free(contents[i]);
+
+- xmlrpc_mem_block_clean(&elem->_children);
+- free(elem);
++ XMLRPC_MEMBLOCK_CLEAN(xml_element *, &elemP->_children);
++
++ free(elemP);
+ }
+
+
+@@ -374,9 +375,8 @@ createParser(xmlrpc_env * const envP,
+ xmlrpc_XML_SetCharacterDataHandler(
+ parser,
+ (XML_CharacterDataHandler) characterData);
+-
+- *parserP = parser;
+ }
++ *parserP = parser;
+ }
+
+
+diff --git a/libs/xmlrpc-c/src/xmlrpc_libxml2.c b/libs/xmlrpc-c/src/xmlrpc_libxml2.c
+index 9cba719..3df6231 100644
+--- a/libs/xmlrpc-c/src/xmlrpc_libxml2.c
++++ b/libs/xmlrpc-c/src/xmlrpc_libxml2.c
+@@ -240,8 +240,10 @@ typedef struct {
+ */
+
+ static void
+-start_element (void *user_data, const xmlChar *name, const xmlChar **attrs)
+-{
++start_element(void * const user_data,
++ const xmlChar * const name,
++ const xmlChar ** const attrs ATTR_UNUSED) {
++
+ parse_context *context;
+ xml_element *elem, *new_current;
+
+@@ -281,9 +283,12 @@ start_element (void *user_data, const xmlChar *name, const xmlChar **attrs)
+ }
+ }
+
++
++
+ static void
+-end_element (void *user_data, const xmlChar *name)
+-{
++end_element(void * const user_data,
++ const xmlChar * const name ATTR_UNUSED) {
++
+ parse_context *context;
+
+ XMLRPC_ASSERT(user_data != NULL && name != NULL);
+@@ -295,7 +300,7 @@ end_element (void *user_data, const xmlChar *name)
+ /* XXX - I think expat enforces these facts, but I want to be sure.
+ ** If one of these assertion ever fails, it should be replaced by a
+ ** non-assertion runtime error check. */
+- XMLRPC_ASSERT(strcmp(name, context->current->_name) == 0);
++ XMLRPC_ASSERT(xmlrpc_streq(name, context->current->_name));
+ XMLRPC_ASSERT(context->current->_parent != NULL ||
+ context->current == context->root);
+
+diff --git a/libs/xmlrpc-c/src/xmlrpc_parse.c b/libs/xmlrpc-c/src/xmlrpc_parse.c
+index 43d9d54..848bfcd 100644
+--- a/libs/xmlrpc-c/src/xmlrpc_parse.c
++++ b/libs/xmlrpc-c/src/xmlrpc_parse.c
+@@ -1,5 +1,7 @@
+ /* Copyright information is at end of file. */
+
++#define _XOPEN_SOURCE 600 /* Make sure strdup() is in <string.h> */
++
+ #include "xmlrpc_config.h"
+
+ #include <stddef.h>
+@@ -32,6 +34,19 @@
+ invoke XMLRPC_FAIL if something looks wrong.
+ */
+
++static void
++setParseFault(xmlrpc_env * const envP,
++ const char * const format,
++ ...) {
++
++ va_list args;
++ va_start(args, format);
++ xmlrpc_set_fault_formatted_v(envP, XMLRPC_PARSE_ERROR, format, args);
++ va_end(args);
++}
++
++
++
+ #define CHECK_NAME(env,elem,name) \
+ do \
+ if (!xmlrpc_streq((name), xml_element_name(elem))) \
+@@ -44,41 +59,29 @@
+ do \
+ if (xml_element_children_size(elem) != (count)) \
+ XMLRPC_FAIL3(env, XMLRPC_PARSE_ERROR, \
+- "Expected <%s> to have %d children, found %d", \
++ "Expected <%s> to have %u children, found %u", \
+ xml_element_name(elem), (count), \
+- xml_element_children_size(elem)); \
++ (unsigned)xml_element_children_size(elem)); \
+ while (0)
+
+ static xml_element *
+-get_child_by_name (xmlrpc_env *env, xml_element *parent, char *name)
+-{
+- size_t child_count, i;
+- xml_element **children;
+-
+- children = xml_element_children(parent);
+- child_count = xml_element_children_size(parent);
+- for (i = 0; i < child_count; i++) {
+- if (xmlrpc_streq(xml_element_name(children[i]), name))
+- return children[i];
+- }
+-
+- xmlrpc_env_set_fault_formatted(env, XMLRPC_PARSE_ERROR,
+- "Expected <%s> to have child <%s>",
+- xml_element_name(parent), name);
+- return NULL;
+-}
++getChildByName (xmlrpc_env * const envP,
++ xml_element * const parentP,
++ const char * const name) {
+
++ size_t const childCount = xml_element_children_size(parentP);
++ xml_element ** const childrenP = xml_element_children(parentP);
+
++ unsigned int i;
+
+-static void
+-setParseFault(xmlrpc_env * const envP,
+- const char * const format,
+- ...) {
+-
+- va_list args;
+- va_start(args, format);
+- xmlrpc_set_fault_formatted_v(envP, XMLRPC_PARSE_ERROR, format, args);
+- va_end(args);
++ for (i = 0; i < childCount; ++i) {
++ if (xmlrpc_streq(xml_element_name(childrenP[i]), name))
++ return childrenP[i];
++ }
++
++ setParseFault(envP, "Expected <%s> to have child <%s>",
++ xml_element_name(parentP), name);
++ return NULL;
+ }
+
+
+@@ -94,10 +97,11 @@ static xmlrpc_value *
+ convert_params(xmlrpc_env * const envP,
+ const xml_element * const elemP) {
+ /*----------------------------------------------------------------------------
+- Convert an XML element representing a list of parameters (i.e. a
+- <params> element) to an xmlrpc_value of type array. Note that an
+- array is normally represented in XML by a <value> element. We use
+- type xmlrpc_value to represent the parameter list just for convenience.
++ Convert an XML element representing a list of parameters (i.e. a <params>
++ element) to an xmlrpc_value of type array. Note that an xmlrpc_value is
++ normally represented in XML by a <value> element, not a <params> element.
++ We use type xmlrpc_value to represent the parameter list just for
++ convenience.
+ -----------------------------------------------------------------------------*/
+ xmlrpc_value *array, *item;
+ int size, i;
+@@ -120,7 +124,8 @@ convert_params(xmlrpc_env * const envP,
+ size = xml_element_children_size(elemP);
+ params = xml_element_children(elemP);
+ for (i = 0; i < size; ++i) {
+- unsigned int const maxNest = xmlrpc_limit_get(XMLRPC_NESTING_LIMIT_ID);
++ unsigned int const maxNest = (unsigned int)
++ xmlrpc_limit_get(XMLRPC_NESTING_LIMIT_ID);
+
+ param = params[i];
+ CHECK_NAME(envP, param, "param");
+@@ -155,7 +160,7 @@ convert_params(xmlrpc_env * const envP,
+ static void
+ parseCallXml(xmlrpc_env * const envP,
+ const char * const xmlData,
+- size_t const xmlLen,
++ size_t const xmlDataLen,
+ xml_element ** const callElemPP) {
+ /*----------------------------------------------------------------------------
+ Parse the XML of an XML-RPC call.
+@@ -164,7 +169,7 @@ parseCallXml(xmlrpc_env * const envP,
+ xmlrpc_env env;
+
+ xmlrpc_env_init(&env);
+- xml_parse(&env, xmlData, xmlLen, &callElemP);
++ xml_parse(&env, xmlData, xmlDataLen, &callElemP);
+ if (env.fault_occurred)
+ xmlrpc_env_set_fault_formatted(
+ envP, env.fault_code, "Call is not valid XML. %s",
+@@ -176,12 +181,11 @@ parseCallXml(xmlrpc_env * const envP,
+ "Instead, we have a <%s> element.",
+ xml_element_name(callElemP));
+
+- if (!envP->fault_occurred)
+- *callElemPP = callElemP;
+-
+ if (envP->fault_occurred)
+ xml_element_free(callElemP);
+ }
++ *callElemPP = callElemP;
++
+ xmlrpc_env_clean(&env);
+ }
+
+@@ -229,7 +233,7 @@ parseCallChildren(xmlrpc_env * const envP,
+
+ XMLRPC_ASSERT(xmlrpc_streq(xml_element_name(callElemP), "methodCall"));
+
+- nameElemP = get_child_by_name(envP, callElemP, "methodName");
++ nameElemP = getChildByName(envP, callElemP, "methodName");
+
+ if (!envP->fault_occurred) {
+ parseMethodNameElement(envP, nameElemP, methodNameP);
+@@ -239,7 +243,7 @@ parseCallChildren(xmlrpc_env * const envP,
+ if (callChildCount > 1) {
+ xml_element * paramsElemP;
+
+- paramsElemP = get_child_by_name(envP, callElemP, "params");
++ paramsElemP = getChildByName(envP, callElemP, "params");
+
+ if (!envP->fault_occurred)
+ *paramArrayPP = convert_params(envP, paramsElemP);
+@@ -272,7 +276,7 @@ parseCallChildren(xmlrpc_env * const envP,
+ void
+ xmlrpc_parse_call(xmlrpc_env * const envP,
+ const char * const xmlData,
+- size_t const xmlLen,
++ size_t const xmlDataLen,
+ const char ** const methodNameP,
+ xmlrpc_value ** const paramArrayPP) {
+ /*----------------------------------------------------------------------------
+@@ -290,14 +294,14 @@ xmlrpc_parse_call(xmlrpc_env * const envP,
+ from creating an enormous memory block, so you should try to
+ enforce it *before* reading any data off the network.
+ */
+- if (xmlLen > xmlrpc_limit_get(XMLRPC_XML_SIZE_LIMIT_ID))
++ if (xmlDataLen > xmlrpc_limit_get(XMLRPC_XML_SIZE_LIMIT_ID))
+ xmlrpc_env_set_fault_formatted(
+ envP, XMLRPC_LIMIT_EXCEEDED_ERROR,
+ "XML-RPC request too large. Max allowed is %u bytes",
+- xmlrpc_limit_get(XMLRPC_XML_SIZE_LIMIT_ID));
++ (unsigned)xmlrpc_limit_get(XMLRPC_XML_SIZE_LIMIT_ID));
+ else {
+ xml_element * callElemP;
+- parseCallXml(envP, xmlData, xmlLen, &callElemP);
++ parseCallXml(envP, xmlData, xmlDataLen, &callElemP);
+ if (!envP->fault_occurred) {
+ parseCallChildren(envP, callElemP, methodNameP, paramArrayPP);
+
+@@ -399,7 +403,7 @@ parseFaultElement(xmlrpc_env * const envP,
+ int * const faultCodeP,
+ const char ** const faultStringP) {
+
+- unsigned int const maxRecursion =
++ unsigned int const maxRecursion = (unsigned int)
+ xmlrpc_limit_get(XMLRPC_NESTING_LIMIT_ID);
+
+ XMLRPC_ASSERT(xmlrpc_streq(xml_element_name(faultElement), "fault"));
+@@ -533,7 +537,7 @@ xmlrpc_parse_response2(xmlrpc_env * const envP,
+ If the XML text is not a valid response or something prevents us from
+ parsing it, return a description of the error as *envP and nothing else.
+ -----------------------------------------------------------------------------*/
+- xml_element * response;
++ xml_element * responseEltP;
+
+ XMLRPC_ASSERT_ENV_OK(envP);
+ XMLRPC_ASSERT(xmlData != NULL);
+@@ -547,27 +551,29 @@ xmlrpc_parse_response2(xmlrpc_env * const envP,
+ envP, XMLRPC_LIMIT_EXCEEDED_ERROR,
+ "XML-RPC response too large. Our limit is %u characters. "
+ "We got %u characters",
+- xmlrpc_limit_get(XMLRPC_XML_SIZE_LIMIT_ID), xmlDataLen);
++ (unsigned)xmlrpc_limit_get(XMLRPC_XML_SIZE_LIMIT_ID),
++ (unsigned)xmlDataLen);
+ else {
+ xmlrpc_env env;
+ xmlrpc_env_init(&env);
+
+- xml_parse(&env, xmlData, xmlDataLen, &response);
++ xml_parse(&env, xmlData, xmlDataLen, &responseEltP);
+
+ if (env.fault_occurred)
+ setParseFault(envP, "Not valid XML. %s", env.fault_string);
+ else {
+ /* Pick apart and verify our structure. */
+- if (xmlrpc_streq(xml_element_name(response), "methodResponse")) {
+- parseMethodResponseElt(envP, response,
++ if (xmlrpc_streq(xml_element_name(responseEltP),
++ "methodResponse")) {
++ parseMethodResponseElt(envP, responseEltP,
+ resultPP, faultCodeP, faultStringP);
+ } else
+ setParseFault(envP, "XML-RPC response must consist of a "
+ "<methodResponse> element. "
+ "This has a <%s> instead.",
+- xml_element_name(response));
++ xml_element_name(responseEltP));
+
+- xml_element_free(response);
++ xml_element_free(responseEltP);
+ }
+ xmlrpc_env_clean(&env);
+ }
+@@ -607,6 +613,57 @@ xmlrpc_parse_response(xmlrpc_env * const envP,
+
+
+
++void
++xmlrpc_parse_value_xml(xmlrpc_env * const envP,
++ const char * const xmlData,
++ size_t const xmlDataLen,
++ xmlrpc_value ** const valuePP) {
++/*----------------------------------------------------------------------------
++ Compute the xmlrpc_value represented by the XML document 'xmlData' (of
++ length 'xmlDataLen' characters), which must consist of a single <value>
++ element. Return that xmlrpc_value.
++
++ We call convert_array() and convert_struct(), which may ultimately
++ call us recursively. Don't recurse any more than 'maxRecursion'
++ times.
++
++ This isn't generally useful in XML-RPC programs, because such programs
++ parse a whole XML-RPC call or response document, and never see the XML text
++ of just a <value> element. But a program may do some weird form of XML-RPC
++ processing or just borrow Xmlrpc-c's value serialization facilities for
++ something unrelated to XML-RPC. In any case, it makes sense to have an
++ inverse of xmlrpc_serialize_value2(), which generates XML text from an
++ xmlrpc_value.
++-----------------------------------------------------------------------------*/
++ xmlrpc_env env;
++
++ xml_element * valueEltP;
++
++ XMLRPC_ASSERT_ENV_OK(envP);
++ XMLRPC_ASSERT(xmlData != NULL);
++
++ xmlrpc_env_init(&env);
++
++ xml_parse(&env, xmlData, xmlDataLen, &valueEltP);
++
++ if (env.fault_occurred) {
++ setParseFault(envP, "Not valid XML. %s", env.fault_string);
++ } else {
++ if (xmlrpc_streq(xml_element_name(valueEltP), "value")) {
++ unsigned int const maxRecursion = (unsigned int)
++ xmlrpc_limit_get(XMLRPC_NESTING_LIMIT_ID);
++ xmlrpc_parseValue(envP, maxRecursion, valueEltP, valuePP);
++ } else
++ setParseFault(envP, "XML-RPC value XML document must consist of "
++ "a <value> element. This has a <%s> instead.",
++ xml_element_name(valueEltP));
++ xml_element_free(valueEltP);
++ }
++ xmlrpc_env_clean(&env);
++}
++
++
++
+ /* Copyright (C) 2001 by First Peer, Inc. All rights reserved.
+ **
+ ** Redistribution and use in source and binary forms, with or without
+diff --git a/libs/xmlrpc-c/src/xmlrpc_registry.c b/libs/xmlrpc-c/src/xmlrpc_registry.c
+deleted file mode 100644
+index d320019..0000000
+--- a/libs/xmlrpc-c/src/xmlrpc_registry.c
++++ /dev/null
+@@ -1,830 +0,0 @@
+-/* Copyright (C) 2001 by First Peer, Inc. All rights reserved.
+-** Copyright (C) 2001 by Eric Kidd. All rights reserved.
+-** Copyright (C) 2001 by Luke Howard. All rights reserved.
+-**
+-** Redistribution and use in source and binary forms, with or without
+-** modification, are permitted provided that the following conditions
+-** are met:
+-** 1. Redistributions of source code must retain the above copyright
+-** notice, this list of conditions and the following disclaimer.
+-** 2. Redistributions in binary form must reproduce the above copyright
+-** notice, this list of conditions and the following disclaimer in the
+-** documentation and/or other materials provided with the distribution.
+-** 3. The name of the author may not be used to endorse or promote products
+-** derived from this software without specific prior written permission.
+-**
+-** THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+-** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+-** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+-** ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+-** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+-** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+-** OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+-** HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+-** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+-** OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+-** SUCH DAMAGE. */
+-
+-#include "xmlrpc_config.h"
+-
+-#include <stdlib.h>
+-#include <string.h>
+-
+-#include "xmlrpc-c/base.h"
+-#include "xmlrpc-c/server.h"
+-#include "xmlrpc-c/base_int.h"
+-
+-/*=========================================================================
+-** XML-RPC Server Method Registry
+-**=========================================================================
+-** A method registry maintains a list of functions, and handles
+-** dispatching. To build an XML-RPC server, just add a communications
+-** protocol. :-)
+-*/
+-
+-static void
+-install_system_methods (xmlrpc_env *env, xmlrpc_registry *registry);
+-
+-xmlrpc_registry *
+-xmlrpc_registry_new(xmlrpc_env *env) {
+-
+- xmlrpc_value *methods;
+- xmlrpc_registry *registry;
+- int registry_valid;
+-
+- XMLRPC_ASSERT_ENV_OK(env);
+-
+- /* Error-handling preconditions. */
+- methods = NULL;
+- registry = NULL;
+- registry_valid = 0;
+-
+- /* Allocate our memory. */
+- methods = xmlrpc_struct_new(env);
+- XMLRPC_FAIL_IF_FAULT(env);
+- registry = (xmlrpc_registry*) malloc(sizeof(xmlrpc_registry));
+- XMLRPC_FAIL_IF_NULL(registry, env, XMLRPC_INTERNAL_ERROR,
+- "Could not allocate memory for registry");
+-
+- /* Set everything up. */
+- registry->_introspection_enabled = 1;
+- registry->_methods = methods;
+- registry->_default_method = NULL;
+- registry->_preinvoke_method = NULL;
+- registry_valid = 1;
+-
+- /* Install our system methods. */
+- install_system_methods(env, registry);
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- cleanup:
+- if (env->fault_occurred) {
+- if (registry_valid) {
+- xmlrpc_registry_free(registry);
+- } else {
+- if (methods)
+- xmlrpc_DECREF(methods);
+- if (registry)
+- free(registry);
+- }
+- return NULL;
+- }
+- return registry;
+-}
+-
+-
+-
+-void
+-xmlrpc_registry_free(xmlrpc_registry * registry) {
+-
+- XMLRPC_ASSERT_PTR_OK(registry);
+- XMLRPC_ASSERT(registry->_methods != XMLRPC_BAD_POINTER);
+-
+- xmlrpc_DECREF(registry->_methods);
+- registry->_methods = XMLRPC_BAD_POINTER;
+- if (registry->_default_method != NULL)
+- xmlrpc_DECREF(registry->_default_method);
+- if (registry->_preinvoke_method != NULL)
+- xmlrpc_DECREF(registry->_preinvoke_method);
+- free(registry);
+-}
+-
+-
+-
+-/*=========================================================================
+-** xmlrpc_registry_disable_introspection
+-**=========================================================================
+-** See xmlrpc.h for more documentation.
+-*/
+-
+-void
+-xmlrpc_registry_disable_introspection(xmlrpc_registry * registry) {
+- XMLRPC_ASSERT_PTR_OK(registry);
+- registry->_introspection_enabled = 0;
+-}
+-
+-
+-
+-/*=========================================================================
+-** xmlrpc_registry_add_method
+-**=========================================================================
+-** See xmlrpc.h for more documentation.
+-*/
+-
+-void
+-xmlrpc_registry_add_method(xmlrpc_env *env,
+- xmlrpc_registry *registry,
+- const char *host,
+- const char *method_name,
+- xmlrpc_method method,
+- void *user_data) {
+-
+- xmlrpc_registry_add_method_w_doc (env, registry, host, method_name,
+- method, user_data, "?",
+- "No help is available for this method.");
+-}
+-
+-
+-
+-void
+-xmlrpc_registry_add_method_w_doc(xmlrpc_env *env,
+- xmlrpc_registry *registry,
+- const char *host,
+- const char *method_name,
+- xmlrpc_method method,
+- void *user_data,
+- const char *signature,
+- const char *help) {
+- xmlrpc_value *method_info;
+-
+- XMLRPC_ASSERT_ENV_OK(env);
+- XMLRPC_ASSERT_PTR_OK(registry);
+- XMLRPC_ASSERT(host == NULL);
+- XMLRPC_ASSERT_PTR_OK(method_name);
+- XMLRPC_ASSERT_PTR_OK(method);
+-
+- /* Error-handling preconditions. */
+- method_info = NULL;
+-
+- /* Store our method and user data into our hash table. */
+- method_info = xmlrpc_build_value(env, "(ppss)", (void*) method, user_data,
+- signature, help);
+- XMLRPC_FAIL_IF_FAULT(env);
+- xmlrpc_struct_set_value(env, registry->_methods, method_name, method_info);
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- cleanup:
+- if (method_info)
+- xmlrpc_DECREF(method_info);
+-
+-}
+-
+-
+-
+-/*=========================================================================
+-** xmlrpc_registry_set_default_method
+-**=========================================================================
+-** See xmlrpc.h for more documentation.
+-*/
+-
+-void
+-xmlrpc_registry_set_default_method(xmlrpc_env *env,
+- xmlrpc_registry *registry,
+- xmlrpc_default_method handler,
+- void *user_data) {
+- xmlrpc_value *method_info;
+-
+- XMLRPC_ASSERT_ENV_OK(env);
+- XMLRPC_ASSERT_PTR_OK(registry);
+- XMLRPC_ASSERT_PTR_OK(handler);
+-
+- /* Error-handling preconditions. */
+- method_info = NULL;
+-
+- /* Store our method and user data into our hash table. */
+- method_info = xmlrpc_build_value(env, "(pp)", (void*) handler, user_data);
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- /* Dispose of any pre-existing default method and install ours. */
+- if (registry->_default_method)
+- xmlrpc_DECREF(registry->_default_method);
+- registry->_default_method = method_info;
+-
+-cleanup:
+- if (env->fault_occurred) {
+- if (method_info)
+- xmlrpc_DECREF(method_info);
+- }
+-}
+-
+-
+-
+-/*=========================================================================
+-** xmlrpc_registry_set_preinvoke_method
+-**=========================================================================
+-** See xmlrpc.h for more documentation.
+-*/
+-
+-void
+-xmlrpc_registry_set_preinvoke_method(xmlrpc_env *env,
+- xmlrpc_registry *registry,
+- xmlrpc_preinvoke_method handler,
+- void *user_data) {
+- xmlrpc_value *method_info;
+-
+- XMLRPC_ASSERT_ENV_OK(env);
+- XMLRPC_ASSERT_PTR_OK(registry);
+- XMLRPC_ASSERT_PTR_OK(handler);
+-
+- /* Error-handling preconditions. */
+- method_info = NULL;
+-
+- /* Store our method and user data into our hash table. */
+- method_info = xmlrpc_build_value(env, "(pp)", (void*) handler, user_data);
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- /* Dispose of any pre-existing preinvoke method and install ours. */
+- if (registry->_preinvoke_method)
+- xmlrpc_DECREF(registry->_preinvoke_method);
+- registry->_preinvoke_method = method_info;
+-
+- cleanup:
+- if (env->fault_occurred) {
+- if (method_info)
+- xmlrpc_DECREF(method_info);
+- }
+-}
+-
+-
+-
+-/*=========================================================================
+-** dispatch_call
+-**=========================================================================
+-** An internal method which actually does the dispatch. This may get
+-** prettified and exported at some point in the future.
+-*/
+-
+-static void
+-callPreinvokeMethodIfAny(xmlrpc_env * const envP,
+- xmlrpc_registry * const registryP,
+- const char * const methodName,
+- xmlrpc_value * const paramArrayP) {
+-
+- /* Get the preinvoke method, if it is set. */
+- if (registryP->_preinvoke_method) {
+- xmlrpc_preinvoke_method preinvoke_method;
+- void * user_data;
+-
+- xmlrpc_parse_value(envP, registryP->_preinvoke_method, "(pp)",
+- &preinvoke_method, &user_data);
+- if (!envP->fault_occurred)
+- (*preinvoke_method)(envP, methodName,
+- paramArrayP, user_data);
+- }
+-}
+-
+-
+-
+-static void
+-callDefaultMethod(xmlrpc_env * const envP,
+- xmlrpc_value * const defaultMethodInfo,
+- const char * const methodName,
+- xmlrpc_value * const paramArrayP,
+- xmlrpc_value ** const resultPP) {
+-
+- xmlrpc_default_method default_method;
+- void * user_data;
+-
+- xmlrpc_parse_value(envP, defaultMethodInfo, "(pp)",
+- &default_method, &user_data);
+-
+- if (!envP->fault_occurred)
+- *resultPP = (*default_method)(envP, NULL, methodName,
+- paramArrayP, user_data);
+-}
+-
+-
+-
+-static void
+-callNamedMethod(xmlrpc_env * const envP,
+- xmlrpc_value * const methodInfo,
+- xmlrpc_value * const paramArrayP,
+- xmlrpc_value ** const resultPP) {
+-
+- xmlrpc_method method;
+- void * user_data;
+-
+- xmlrpc_parse_value(envP, methodInfo, "(pp*)", &method, &user_data);
+- if (!envP->fault_occurred)
+- *resultPP = (*method)(envP, paramArrayP, user_data);
+-}
+-
+-
+-
+-static void
+-dispatch_call(xmlrpc_env * const envP,
+- xmlrpc_registry * const registryP,
+- const char * const methodName,
+- xmlrpc_value * const paramArrayP,
+- xmlrpc_value ** const resultPP) {
+-
+- callPreinvokeMethodIfAny(envP, registryP, methodName, paramArrayP);
+- if (!envP->fault_occurred) {
+- xmlrpc_value * method_info;
+-
+- /* Look up the method info for the named method. */
+- xmlrpc_struct_find_value(envP, registryP->_methods,
+- methodName, &method_info);
+- if (!envP->fault_occurred) {
+- if (method_info) {
+- callNamedMethod(envP, method_info, paramArrayP, resultPP);
+- xmlrpc_DECREF(method_info);
+- } else {
+- if (registryP->_default_method)
+- callDefaultMethod(envP, registryP->_default_method,
+- methodName, paramArrayP,
+- resultPP);
+- else {
+- /* No matching method, and no default. */
+- xmlrpc_env_set_fault_formatted(
+- envP, XMLRPC_NO_SUCH_METHOD_ERROR,
+- "Method '%s' not defined", methodName);
+- }
+- }
+- }
+- }
+- /* For backward compatibility, for sloppy users: */
+- if (envP->fault_occurred)
+- *resultPP = NULL;
+-}
+-
+-
+-
+-/*=========================================================================
+-** xmlrpc_registry_process_call
+-**=========================================================================
+-**
+-*/
+-
+-xmlrpc_mem_block *
+-xmlrpc_registry_process_call(xmlrpc_env * const envP,
+- xmlrpc_registry * const registryP,
+- const char * const host ATTR_UNUSED,
+- const char * const xml_data,
+- size_t const xml_len) {
+-
+- xmlrpc_mem_block * output;
+-
+- XMLRPC_ASSERT_ENV_OK(envP);
+- XMLRPC_ASSERT_PTR_OK(xml_data);
+-
+- xmlrpc_traceXml("XML-RPC CALL", xml_data, xml_len);
+-
+- /* Allocate our output buffer.
+- ** If this fails, we need to die in a special fashion. */
+- output = XMLRPC_MEMBLOCK_NEW(char, envP, 0);
+- if (!envP->fault_occurred) {
+- const char * methodName;
+- xmlrpc_value * paramArray;
+- xmlrpc_env fault;
+-
+- xmlrpc_env_init(&fault);
+-
+- xmlrpc_parse_call(&fault, xml_data, xml_len,
+- &methodName, ¶mArray);
+-
+- if (!fault.fault_occurred) {
+- xmlrpc_value * result;
+-
+- dispatch_call(&fault, registryP, methodName, paramArray, &result);
+-
+- if (!fault.fault_occurred) {
+- xmlrpc_serialize_response(envP, output, result);
+-
+- /* A comment here used to say that
+- xmlrpc_serialize_response() could fail and "leave
+- stuff in the buffer." Don't know what that means,
+- but it sounds like something that needs to be
+- fixed. The old code aborted the program here if
+- xmlrpc_serialize_repsonse() failed. 04.11.17
+- */
+- xmlrpc_DECREF(result);
+- }
+- xmlrpc_strfree(methodName);
+- xmlrpc_DECREF(paramArray);
+- }
+- if (!envP->fault_occurred && fault.fault_occurred)
+- xmlrpc_serialize_fault(envP, output, &fault);
+-
+- xmlrpc_env_clean(&fault);
+-
+- if (envP->fault_occurred)
+- XMLRPC_MEMBLOCK_FREE(char, output);
+- else
+- xmlrpc_traceXml("XML-RPC RESPONSE",
+- XMLRPC_MEMBLOCK_CONTENTS(char, output),
+- XMLRPC_MEMBLOCK_SIZE(char, output));
+- }
+- return output;
+-}
+-
+-
+-
+-/*=========================================================================
+-** system.multicall
+-**=========================================================================
+-** Low-tech support for transparent, boxed methods.
+-*/
+-
+-static char *multicall_help =
+-"Process an array of calls, and return an array of results. Calls should "
+-"be structs of the form {'methodName': string, 'params': array}. Each "
+-"result will either be a single-item array containg the result value, or "
+-"a struct of the form {'faultCode': int, 'faultString': string}. This "
+-"is useful when you need to make lots of small calls without lots of "
+-"round trips.";
+-
+-static xmlrpc_value *
+-call_one_method(xmlrpc_env *env, xmlrpc_registry *registry,
+- xmlrpc_value *method_info) {
+-
+- xmlrpc_value *result_val, *result;
+- char *method_name;
+- xmlrpc_value *param_array;
+-
+- /* Error-handling preconditions. */
+- result = result_val = NULL;
+-
+- /* Extract our method name and parameters. */
+- xmlrpc_parse_value(env, method_info, "{s:s,s:A,*}",
+- "methodName", &method_name,
+- "params", ¶m_array);
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- /* Watch out for a deep recursion attack. */
+- if (strcmp(method_name, "system.multicall") == 0)
+- XMLRPC_FAIL(env, XMLRPC_REQUEST_REFUSED_ERROR,
+- "Recursive system.multicall strictly forbidden");
+-
+- /* Perform the call. */
+- dispatch_call(env, registry, method_name, param_array, &result_val);
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- /* Build our one-item result array. */
+- result = xmlrpc_build_value(env, "(V)", result_val);
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- cleanup:
+- if (result_val)
+- xmlrpc_DECREF(result_val);
+- if (env->fault_occurred) {
+- if (result)
+- xmlrpc_DECREF(result);
+- return NULL;
+- }
+- return result;
+-}
+-
+-
+-
+-static xmlrpc_value *
+-system_multicall(xmlrpc_env *env,
+- xmlrpc_value *param_array,
+- void *user_data) {
+-
+- xmlrpc_registry *registry;
+- xmlrpc_value *methlist, *methinfo, *results, *result;
+- size_t size, i;
+- xmlrpc_env env2;
+-
+- XMLRPC_ASSERT_ENV_OK(env);
+- XMLRPC_ASSERT_VALUE_OK(param_array);
+- XMLRPC_ASSERT_PTR_OK(user_data);
+-
+- /* Error-handling preconditions. */
+- results = result = NULL;
+- xmlrpc_env_init(&env2);
+-
+- /* Turn our arguments into something more useful. */
+- registry = (xmlrpc_registry*) user_data;
+- xmlrpc_parse_value(env, param_array, "(A)", &methlist);
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- /* Create an empty result list. */
+- results = xmlrpc_build_value(env, "()");
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- /* Loop over our input list, calling each method in turn. */
+- size = xmlrpc_array_size(env, methlist);
+- XMLRPC_ASSERT_ENV_OK(env);
+- for (i = 0; i < size; i++) {
+- methinfo = xmlrpc_array_get_item(env, methlist, i);
+- XMLRPC_ASSERT_ENV_OK(env);
+-
+- /* Call our method. */
+- xmlrpc_env_clean(&env2);
+- xmlrpc_env_init(&env2);
+- result = call_one_method(&env2, registry, methinfo);
+-
+- /* Turn any fault into a structure. */
+- if (env2.fault_occurred) {
+- XMLRPC_ASSERT(result == NULL);
+- result =
+- xmlrpc_build_value(env, "{s:i,s:s}",
+- "faultCode", (xmlrpc_int32) env2.fault_code,
+- "faultString", env2.fault_string);
+- XMLRPC_FAIL_IF_FAULT(env);
+- }
+-
+- /* Append this method result to our master array. */
+- xmlrpc_array_append_item(env, results, result);
+- xmlrpc_DECREF(result);
+- result = NULL;
+- XMLRPC_FAIL_IF_FAULT(env);
+- }
+-
+- cleanup:
+- xmlrpc_env_clean(&env2);
+- if (result)
+- xmlrpc_DECREF(result);
+- if (env->fault_occurred) {
+- if (results)
+- xmlrpc_DECREF(results);
+- return NULL;
+- }
+- return results;
+-}
+-
+-
+-
+-/*=========================================================================
+-** system.listMethods
+-**=========================================================================
+-** List all available methods by name.
+-*/
+-
+-static char *listMethods_help =
+-"Return an array of all available XML-RPC methods on this server.";
+-
+-static xmlrpc_value *
+-system_listMethods(xmlrpc_env *env,
+- xmlrpc_value *param_array,
+- void *user_data) {
+-
+- xmlrpc_registry *registry;
+- xmlrpc_value *method_names, *method_name, *method_info;
+- size_t size, i;
+-
+- XMLRPC_ASSERT_ENV_OK(env);
+- XMLRPC_ASSERT_VALUE_OK(param_array);
+- XMLRPC_ASSERT_PTR_OK(user_data);
+-
+- /* Error-handling preconditions. */
+- method_names = NULL;
+-
+- /* Turn our arguments into something more useful. */
+- registry = (xmlrpc_registry*) user_data;
+- xmlrpc_parse_value(env, param_array, "()");
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- /* Make sure we're allowed to introspect. */
+- if (!registry->_introspection_enabled)
+- XMLRPC_FAIL(env, XMLRPC_INTROSPECTION_DISABLED_ERROR,
+- "Introspection disabled for security reasons");
+-
+- /* Iterate over all the methods in the registry, adding their names
+- ** to a list. */
+- method_names = xmlrpc_build_value(env, "()");
+- XMLRPC_FAIL_IF_FAULT(env);
+- size = xmlrpc_struct_size(env, registry->_methods);
+- XMLRPC_FAIL_IF_FAULT(env);
+- for (i = 0; i < size; i++) {
+- xmlrpc_struct_get_key_and_value(env, registry->_methods, i,
+- &method_name, &method_info);
+- XMLRPC_FAIL_IF_FAULT(env);
+- xmlrpc_array_append_item(env, method_names, method_name);
+- XMLRPC_FAIL_IF_FAULT(env);
+- }
+-
+- cleanup:
+- if (env->fault_occurred) {
+- if (method_names)
+- xmlrpc_DECREF(method_names);
+- return NULL;
+- }
+- return method_names;
+-}
+-
+-
+-
+-/*=========================================================================
+-** system.methodHelp
+-**=========================================================================
+-** Get the help string for a particular method.
+-*/
+-
+-static char *methodHelp_help =
+-"Given the name of a method, return a help string.";
+-
+-static xmlrpc_value *
+-system_methodHelp(xmlrpc_env *env,
+- xmlrpc_value *param_array,
+- void *user_data) {
+-
+- xmlrpc_registry *registry;
+- char *method_name;
+- xmlrpc_value *ignored1, *ignored2, *ignored3, *help;
+-
+- XMLRPC_ASSERT_ENV_OK(env);
+- XMLRPC_ASSERT_VALUE_OK(param_array);
+- XMLRPC_ASSERT_PTR_OK(user_data);
+-
+- /* Turn our arguments into something more useful. */
+- registry = (xmlrpc_registry*) user_data;
+- xmlrpc_parse_value(env, param_array, "(s)", &method_name);
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- /* Make sure we're allowed to introspect. */
+- if (!registry->_introspection_enabled)
+- XMLRPC_FAIL(env, XMLRPC_INTROSPECTION_DISABLED_ERROR,
+- "Introspection disabled for security reasons");
+-
+- /* Get our documentation string. */
+- xmlrpc_parse_value(env, registry->_methods, "{s:(VVVV*),*}",
+- method_name, &ignored1, &ignored2, &ignored3, &help);
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- cleanup:
+- if (env->fault_occurred)
+- return NULL;
+- xmlrpc_INCREF(help);
+- return help;
+-}
+-
+-
+-
+-/*=========================================================================
+-** system.methodSignature
+-**=========================================================================
+-** Return an array of arrays describing possible signatures for this
+-** method.
+-**
+-** XXX - This is the ugliest function in the entire library.
+-*/
+-
+-static char *methodSignature_help =
+-"Given the name of a method, return an array of legal signatures. "
+-"Each signature is an array of strings. The first item of each signature "
+-"is the return type, and any others items are parameter types.";
+-
+-static char *bad_sig_str =
+-"Application has incorrect method signature information";
+-
+-#define BAD_SIG(env) \
+- XMLRPC_FAIL((env), XMLRPC_INTERNAL_ERROR, bad_sig_str);
+-
+-static xmlrpc_value *
+-system_methodSignature(xmlrpc_env *env,
+- xmlrpc_value *param_array,
+- void *user_data) {
+-
+- xmlrpc_registry *registry;
+- char *method_name;
+- xmlrpc_value *ignored1, *ignored2, *ignored3;
+- xmlrpc_value *item, *current, *result;
+- int at_sig_start;
+- char *sig, *code;
+-
+- XMLRPC_ASSERT_ENV_OK(env);
+- XMLRPC_ASSERT_VALUE_OK(param_array);
+- XMLRPC_ASSERT_PTR_OK(user_data);
+-
+- /* Error-handling preconditions. */
+- item = current = result = NULL;
+-
+- /* Turn our arguments into something more useful. */
+- registry = (xmlrpc_registry*) user_data;
+- xmlrpc_parse_value(env, param_array, "(s)", &method_name);
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- /* Make sure we're allowed to introspect. */
+- if (!registry->_introspection_enabled)
+- XMLRPC_FAIL(env, XMLRPC_INTROSPECTION_DISABLED_ERROR,
+- "Introspection disabled for security reasons");
+-
+- /* Get our signature string. */
+- xmlrpc_parse_value(env, registry->_methods, "{s:(VVsV*),*}",
+- method_name, &ignored1, &ignored2, &sig, &ignored3);
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- if (sig[0] == '?' && sig[1] == '\0') {
+- /* No signature supplied. */
+- result = xmlrpc_build_value(env, "s", "undef");
+- XMLRPC_FAIL_IF_FAULT(env);
+- } else {
+- /* Build an array of arrays. */
+- current = xmlrpc_build_value(env, "()");
+- XMLRPC_FAIL_IF_FAULT(env);
+- result = xmlrpc_build_value(env, "(V)", current);
+- XMLRPC_FAIL_IF_FAULT(env);
+- at_sig_start = 1;
+-
+- do {
+- next_loop:
+-
+- /* Process the current code. */
+- switch (*(sig++)) {
+- case 'i': code = "int"; break;
+- case 'b': code = "boolean"; break;
+- case 'd': code = "double"; break;
+- case 's': code = "string"; break;
+- case '8': code = "dateTime.iso8601"; break;
+- case '6': code = "base64"; break;
+- case 'S': code = "struct"; break;
+- case 'A': code = "array"; break;
+-
+- case ',':
+- /* Start a new signature array. */
+- if (at_sig_start)
+- BAD_SIG(env);
+- xmlrpc_DECREF(current);
+- current = xmlrpc_build_value(env, "()");
+- XMLRPC_FAIL_IF_FAULT(env);
+- xmlrpc_array_append_item(env, result, current);
+- XMLRPC_FAIL_IF_FAULT(env);
+- at_sig_start = 1;
+- goto next_loop;
+-
+- default:
+- BAD_SIG(env);
+- }
+-
+- /* Append the appropriate string to our current signature. */
+- item = xmlrpc_build_value(env, "s", code);
+- XMLRPC_FAIL_IF_FAULT(env);
+- xmlrpc_array_append_item(env, current, item);
+- xmlrpc_DECREF(item);
+- item = NULL;
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- /* Advance to the next code, and skip over ':' if necessary. */
+- if (at_sig_start) {
+- if (*sig != ':')
+- BAD_SIG(env);
+- sig++;
+- at_sig_start = 0;
+- }
+-
+- } while (*sig != '\0');
+- }
+-
+- cleanup:
+- if (item)
+- xmlrpc_DECREF(item);
+- if (current)
+- xmlrpc_DECREF(current);
+- if (env->fault_occurred) {
+- if (result)
+- xmlrpc_DECREF(result);
+- return NULL;
+- }
+- return result;
+-}
+-
+-
+-
+-/*=========================================================================
+-** install_system_methods
+-**=========================================================================
+-** Install the standard methods under system.*.
+-** This particular function is highly experimental, and may disappear
+-** without warning.
+-*/
+-
+-static void
+-install_system_methods(xmlrpc_env *env, xmlrpc_registry *registry) {
+-
+- xmlrpc_registry_add_method_w_doc(env, registry, NULL,
+- "system.listMethods",
+- &system_listMethods, registry,
+- "A:", listMethods_help);
+- XMLRPC_FAIL_IF_FAULT(env);
+- xmlrpc_registry_add_method_w_doc(env, registry, NULL,
+- "system.methodSignature",
+- &system_methodSignature, registry,
+- "A:s", methodSignature_help);
+- XMLRPC_FAIL_IF_FAULT(env);
+- xmlrpc_registry_add_method_w_doc(env, registry, NULL,
+- "system.methodHelp",
+- &system_methodHelp, registry,
+- "s:s", methodHelp_help);
+- XMLRPC_FAIL_IF_FAULT(env);
+- xmlrpc_registry_add_method_w_doc(env, registry, NULL,
+- "system.multicall",
+- &system_multicall, registry,
+- "A:A", multicall_help);
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- cleanup:
+- return;
+-}
+diff --git a/libs/xmlrpc-c/src/xmlrpc_serialize.c b/libs/xmlrpc-c/src/xmlrpc_serialize.c
+index 3ca64dd..78bbc10 100644
+--- a/libs/xmlrpc-c/src/xmlrpc_serialize.c
++++ b/libs/xmlrpc-c/src/xmlrpc_serialize.c
+@@ -4,9 +4,9 @@
+
+ The printf format specifiers we use appear to be entirely standard,
+ except for the "long long" one, which is %I64 on Windows and %lld
+- everywhere else. So for that, we use the C99 standard macro PRId64,
+- which is defined by inttypes.h. Ironically, Windows doesn't have
+- inttypes.h either, but we have int.h instead.
++ everywhere else. We could use the C99 standard macro PRId64 for that,
++ but on at least one 64-bit-long GNU compiler, PRId64 is "ld", which is
++ considered to be incompatible with long long. So we have XMLRPC_PRId64.
+ */
+
+ #include "xmlrpc_config.h"
+@@ -26,8 +26,9 @@
+ #include "double.h"
+
+ #define CRLF "\015\012"
+-#define SMALL_BUFFER_SZ (128)
+ #define XML_PROLOGUE "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"CRLF
++#define APACHE_URL "http://ws.apache.org/xmlrpc/namespaces/extensions"
++#define XMLNS_APACHE "xmlns:ex=\"" APACHE_URL "\""
+
+
+ static void
+@@ -54,26 +55,31 @@ formatOut(xmlrpc_env * const envP,
+ particular, do NOT use this routine to print XML-RPC string values!
+ -----------------------------------------------------------------------------*/
+ va_list args;
+- char buffer[SMALL_BUFFER_SZ];
+- int count;
++ char buffer[128];
++ int rc;
+
+ XMLRPC_ASSERT_ENV_OK(envP);
+
+ va_start(args, formatString);
+
+- count = XMLRPC_VSNPRINTF(buffer, SMALL_BUFFER_SZ, formatString, args);
++ rc = XMLRPC_VSNPRINTF(buffer, sizeof(buffer), formatString, args);
+
+- /* Old C libraries return -1 if vsnprintf overflows its buffer.
+- ** New C libraries return the number of characters which *would* have
+- ** been printed if the error did not occur. This is impressively vile.
+- ** Thank the C99 committee for this bright idea. But wait! We also
+- ** need to keep track of the trailing NUL. */
++ /* Old vsnprintf() (and Windows) fails with return value -1 if the full
++ string doesn't fit in the buffer. New vsnprintf() puts whatever will
++ fit in the buffer, and returns the length of the full string
++ regardless. For us, this truncation is a failure.
++ */
+
+- if (count < 0 || count >= (SMALL_BUFFER_SZ - 1))
++ if (rc < 0)
+ xmlrpc_faultf(envP, "formatOut() overflowed internal buffer");
+- else
+- XMLRPC_MEMBLOCK_APPEND(char, envP, outputP, buffer, count);
++ else {
++ unsigned int const formattedLen = rc;
+
++ if (formattedLen + 1 >= (sizeof(buffer)))
++ xmlrpc_faultf(envP, "formatOut() overflowed internal buffer");
++ else
++ XMLRPC_MEMBLOCK_APPEND(char, envP, outputP, buffer, formattedLen);
++ }
+ va_end(args);
+ }
+
+@@ -271,6 +277,74 @@ xmlrpc_serialize_base64_data(xmlrpc_env * const envP,
+
+
+
++static void
++serializeDatetime(xmlrpc_env * const envP,
++ xmlrpc_mem_block * const outputP,
++ xmlrpc_value * const valueP) {
++/*----------------------------------------------------------------------------
++ Add to *outputP the content of a <value> element to represent
++ the datetime value *valueP. I.e.
++ "<dateTime.iso8601> ... </dateTime.iso8601>".
++-----------------------------------------------------------------------------*/
++
++ addString(envP, outputP, "<dateTime.iso8601>");
++ if (!envP->fault_occurred) {
++ char dtString[64];
++
++ snprintf(dtString, sizeof(dtString),
++ "%u%02u%02uT%02u:%02u:%02u",
++ valueP->_value.dt.Y,
++ valueP->_value.dt.M,
++ valueP->_value.dt.D,
++ valueP->_value.dt.h,
++ valueP->_value.dt.m,
++ valueP->_value.dt.s);
++
++ if (valueP->_value.dt.u != 0) {
++ char usecString[64];
++ assert(valueP->_value.dt.u < 1000000);
++ snprintf(usecString, sizeof(usecString), ".%06u",
++ valueP->_value.dt.u);
++ STRSCAT(dtString, usecString);
++ }
++ addString(envP, outputP, dtString);
++
++ if (!envP->fault_occurred) {
++ addString(envP, outputP, "</dateTime.iso8601>");
++ }
++ }
++}
++
++
++
++static void
++serializeStructMember(xmlrpc_env * const envP,
++ xmlrpc_mem_block * const outputP,
++ xmlrpc_value * const memberKeyP,
++ xmlrpc_value * const memberValueP,
++ xmlrpc_dialect const dialect) {
++
++ addString(envP, outputP, "<member><name>");
++
++ if (!envP->fault_occurred) {
++ serializeUtf8MemBlock(envP, outputP, &memberKeyP->_block);
++
++ if (!envP->fault_occurred) {
++ addString(envP, outputP, "</name>"CRLF);
++
++ if (!envP->fault_occurred) {
++ xmlrpc_serialize_value2(envP, outputP, memberValueP, dialect);
++
++ if (!envP->fault_occurred) {
++ addString(envP, outputP, "</member>"CRLF);
++ }
++ }
++ }
++ }
++}
++
++
++
+ static void
+ serializeStruct(xmlrpc_env * const envP,
+ xmlrpc_mem_block * const outputP,
+@@ -280,37 +354,25 @@ serializeStruct(xmlrpc_env * const envP,
+ Add to *outputP the content of a <value> element to represent
+ the structure value *valueP. I.e. "<struct> ... </struct>".
+ -----------------------------------------------------------------------------*/
+- size_t size;
+- size_t i;
+- xmlrpc_value * memberKeyP;
+- xmlrpc_value * memberValueP;
+-
+ addString(envP, outputP, "<struct>"CRLF);
+- XMLRPC_FAIL_IF_FAULT(envP);
+-
+- size = xmlrpc_struct_size(envP, structP);
+- XMLRPC_FAIL_IF_FAULT(envP);
+- for (i = 0; i < size; ++i) {
+- xmlrpc_struct_get_key_and_value(envP, structP, i,
+- &memberKeyP, &memberValueP);
+- XMLRPC_FAIL_IF_FAULT(envP);
+- addString(envP, outputP, "<member><name>");
+- XMLRPC_FAIL_IF_FAULT(envP);
+- serializeUtf8MemBlock(envP, outputP, &memberKeyP->_block);
+- XMLRPC_FAIL_IF_FAULT(envP);
+- addString(envP, outputP, "</name>"CRLF);
+- XMLRPC_FAIL_IF_FAULT(envP);
+- xmlrpc_serialize_value2(envP, outputP, memberValueP, dialect);
+- XMLRPC_FAIL_IF_FAULT(envP);
+- addString(envP, outputP, "</member>"CRLF);
+- XMLRPC_FAIL_IF_FAULT(envP);
+- }
+-
+- addString(envP, outputP, "</struct>");
+- XMLRPC_FAIL_IF_FAULT(envP);
++ if (!envP->fault_occurred) {
++ unsigned int const size = xmlrpc_struct_size(envP, structP);
++ if (!envP->fault_occurred) {
++ unsigned int i;
++ for (i = 0; i < size && !envP->fault_occurred; ++i) {
++ xmlrpc_value * memberKeyP;
++ xmlrpc_value * memberValueP;
+
+-cleanup:
+- return;
++ xmlrpc_struct_get_key_and_value(envP, structP, i,
++ &memberKeyP, &memberValueP);
++ if (!envP->fault_occurred) {
++ serializeStructMember(envP, outputP,
++ memberKeyP, memberValueP, dialect);
++ }
++ }
++ addString(envP, outputP, "</struct>");
++ }
++ }
+ }
+
+
+@@ -366,7 +428,7 @@ formatValueContent(xmlrpc_env * const envP,
+
+ case XMLRPC_TYPE_I8: {
+ const char * const elemName =
+- dialect == xmlrpc_dialect_apache ? "ex.i8" : "i8";
++ dialect == xmlrpc_dialect_apache ? "ex:i8" : "i8";
+ formatOut(envP, outputP, "<%s>%" PRId64 "</%s>",
+ elemName, valueP->_value.i8, elemName);
+ } break;
+@@ -391,13 +453,7 @@ formatValueContent(xmlrpc_env * const envP,
+ } break;
+
+ case XMLRPC_TYPE_DATETIME:
+- addString(envP, outputP, "<dateTime.iso8601>");
+- if (!envP->fault_occurred) {
+- serializeUtf8MemBlock(envP, outputP, &valueP->_block);
+- if (!envP->fault_occurred) {
+- addString(envP, outputP, "</dateTime.iso8601>");
+- }
+- }
++ serializeDatetime(envP, outputP, valueP);
+ break;
+
+ case XMLRPC_TYPE_STRING:
+@@ -436,7 +492,7 @@ formatValueContent(xmlrpc_env * const envP,
+
+ case XMLRPC_TYPE_NIL: {
+ const char * const elemName =
+- dialect == xmlrpc_dialect_apache ? "ex.nil" : "nil";
++ dialect == xmlrpc_dialect_apache ? "ex:nil" : "nil";
+ formatOut(envP, outputP, "<%s/>", elemName);
+ } break;
+
+@@ -502,9 +558,9 @@ xmlrpc_serialize_params2(xmlrpc_env * const envP,
+ addString(envP, outputP, "<params>"CRLF);
+ if (!envP->fault_occurred) {
+ /* Serialize each parameter. */
+- size_t const paramCount = xmlrpc_array_size(envP, paramArrayP);
++ int const paramCount = xmlrpc_array_size(envP, paramArrayP);
+ if (!envP->fault_occurred) {
+- size_t paramSeq;
++ int paramSeq;
+ for (paramSeq = 0;
+ paramSeq < paramCount && !envP->fault_occurred;
+ ++paramSeq) {
+@@ -567,7 +623,9 @@ xmlrpc_serialize_call2(xmlrpc_env * const envP,
+
+ addString(envP, outputP, XML_PROLOGUE);
+ if (!envP->fault_occurred) {
+- addString(envP, outputP, "<methodCall>"CRLF"<methodName>");
++ const char * const xmlns =
++ dialect == xmlrpc_dialect_apache ? " " XMLNS_APACHE : "";
++ formatOut(envP, outputP, "<methodCall%s>"CRLF"<methodName>", xmlns);
+ if (!envP->fault_occurred) {
+ xmlrpc_mem_block * encodedP;
+ escapeForXml(envP, methodName, strlen(methodName), &encodedP);
+@@ -623,8 +681,10 @@ xmlrpc_serialize_response2(xmlrpc_env * const envP,
+
+ addString(envP, outputP, XML_PROLOGUE);
+ if (!envP->fault_occurred) {
+- addString(envP, outputP,
+- "<methodResponse>"CRLF"<params>"CRLF"<param>");
++ const char * const xmlns =
++ dialect == xmlrpc_dialect_apache ? " " XMLNS_APACHE : "";
++ formatOut(envP, outputP,
++ "<methodResponse%s>"CRLF"<params>"CRLF"<param>", xmlns);
+ if (!envP->fault_occurred) {
+ xmlrpc_serialize_value2(envP, outputP, valueP, dialect);
+ if (!envP->fault_occurred) {
+diff --git a/libs/xmlrpc-c/src/xmlrpc_server_abyss.c b/libs/xmlrpc-c/src/xmlrpc_server_abyss.c
+index 7cb1ae1..8471c4c 100644
+--- a/libs/xmlrpc-c/src/xmlrpc_server_abyss.c
++++ b/libs/xmlrpc-c/src/xmlrpc_server_abyss.c
+@@ -2,6 +2,8 @@
+
+ #include "xmlrpc_config.h"
+
++#define _XOPEN_SOURCE 600 /* For strdup(), sigaction */
++
+ #include <assert.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+@@ -39,17 +41,12 @@ struct xmlrpc_server_abyss {
+
+
+
+-/*=========================================================================
+-** die_if_fault_occurred
+-**=========================================================================
+-** If certain kinds of out-of-memory errors occur during server setup,
+-** we want to quit and print an error.
+-*/
++static void
++dieIfFaultOccurred(xmlrpc_env * const envP) {
+
+-static void die_if_fault_occurred(xmlrpc_env *env) {
+- if (env->fault_occurred) {
++ if (envP->fault_occurred) {
+ fprintf(stderr, "Unexpected XML-RPC fault: %s (%d)\n",
+- env->fault_string, env->fault_code);
++ envP->fault_string, envP->fault_code);
+ exit(1);
+ }
+ }
+@@ -135,7 +132,7 @@ addAuthCookie(xmlrpc_env * const envP,
+
+ xmlrpc_asprintf(&cookieResponse, "auth=%s", authCookie);
+
+- if (cookieResponse == xmlrpc_strsol)
++ if (xmlrpc_strnomem(cookieResponse))
+ xmlrpc_faultf(envP, "Insufficient memory to generate cookie "
+ "response header.");
+ else {
+@@ -148,11 +145,12 @@ addAuthCookie(xmlrpc_env * const envP,
+
+
+ static void
+-sendXmlData(xmlrpc_env * const envP,
+- TSession * const abyssSessionP,
+- const char * const body,
+- size_t const len,
+- bool const chunked) {
++sendResponse(xmlrpc_env * const envP,
++ TSession * const abyssSessionP,
++ const char * const body,
++ size_t const len,
++ bool const chunked,
++ ResponseAccessCtl const accessControl) {
+ /*----------------------------------------------------------------------------
+ Generate an HTTP response containing body 'body' of length 'len'
+ characters.
+@@ -191,17 +189,39 @@ sendXmlData(xmlrpc_env * const envP,
+ else {
+ uint32_t const abyssLen = (uint32_t)len;
+
+- ResponseContentType(abyssSessionP, "text/xml; charset=\"utf-8\"");
++ /* See discussion below of quotes around "utf-8" */
++ ResponseContentType(abyssSessionP, "text/xml");
+ ResponseContentLength(abyssSessionP, abyssLen);
++ ResponseAccessControl(abyssSessionP, accessControl);
+
+- ResponseWriteStart(abyssSessionP);
+- ResponseWriteBody(abyssSessionP, body, abyssLen);
+- ResponseWriteEnd(abyssSessionP);
++ if (ResponseWriteStart(abyssSessionP))
++ if (ResponseWriteBody(abyssSessionP, body, abyssLen))
++ if (ResponseWriteEnd(abyssSessionP))
++ return;
++
++ xmlrpc_faultf(envP, "socket send() problem");
+ }
+ }
+
+
+
++/* From 0.9.10 (May 2001) through 1.17 (December 2008), the content-type
++ header said charset="utf-8" (i.e. with the value of 'charset' an HTTP quoted
++ string). Before 0.9.10, the header didn't have charset at all.
++
++ We got a complaint in January 2009 that some client didn't understand that,
++ saying
++
++ apache2: XML-RPC: xmlrpcmsg::parseResponse: invalid charset encoding of
++ received response: "UTF-8"
++
++ And that removing the quotation marks fixes this.
++
++ From what I can tell, the module is wrong to distinguish between the
++ two, but I don't think it hurts anything to use a basic HTTP token instead
++ of an HTTP quoted string here, so starting in 1.18, we do. */
++
++
+ static void
+ sendError(TSession * const abyssSessionP,
+ unsigned int const status,
+@@ -287,9 +307,8 @@ getBody(xmlrpc_env * const envP,
+ }
+ if (envP->fault_occurred)
+ xmlrpc_mem_block_free(body);
+- else
+- *bodyP = body;
+ }
++ *bodyP = body;
+ }
+
+
+@@ -320,44 +339,6 @@ storeCookies(TSession * const httpRequestP,
+
+
+ static void
+-validateContentType(TSession * const httpRequestP,
+- const char ** const errorP) {
+-/*----------------------------------------------------------------------------
+- If the client didn't specify a content-type of "text/xml", fail.
+- We can't allow the client to default this header, because some
+- firewall software may rely on all XML-RPC requests using the POST
+- method and a content-type of "text/xml".x
+------------------------------------------------------------------------------*/
+- const char * const content_type =
+- RequestHeaderValue(httpRequestP, "content-type");
+-
+- if (content_type == NULL)
+- xmlrpc_asprintf(errorP,
+- "You did not supply a content-type HTTP header");
+- else {
+- const char * const sempos = strchr(content_type, ';');
+- unsigned int baselen;
+- /* Length of the base portion of the content type, e.g.
+- "text/xml" int "text/xml;charset=utf-8"
+- */
+-
+- if (sempos)
+- baselen = sempos - content_type;
+- else
+- baselen = strlen(content_type);
+-
+- if (!xmlrpc_strneq(content_type, "text/xml", baselen))
+- xmlrpc_asprintf(errorP, "Your content-type HTTP header value '%s' "
+- "does not have a base type of 'text/xml'",
+- content_type);
+- else
+- *errorP = NULL;
+- }
+-}
+-
+-
+-
+-static void
+ processContentLength(TSession * const httpRequestP,
+ size_t * const inputLenP,
+ bool * const missingP,
+@@ -376,6 +357,7 @@ processContentLength(TSession * const httpRequestP,
+ *errorP = NULL;
+ } else {
+ *missingP = FALSE;
++ *inputLenP = 0; /* quiet compiler warning */
+ if (content_length[0] == '\0')
+ xmlrpc_asprintf(errorP, "The value in your content-length "
+ "HTTP header value is a null string");
+@@ -444,11 +426,13 @@ traceHandlerCalled(TSession * const abyssSessionP) {
+
+
+ static void
+-processCall(TSession * const abyssSessionP,
+- size_t const contentSize,
+- xmlrpc_registry * const registryP,
+- bool const wantChunk,
+- const char * const trace) {
++processCall(TSession * const abyssSessionP,
++ size_t const contentSize,
++ xmlrpc_call_processor xmlProcessor,
++ void * const xmlProcessorArg,
++ bool const wantChunk,
++ ResponseAccessCtl const accessControl,
++ const char * const trace) {
+ /*----------------------------------------------------------------------------
+ Handle an RPC request. This is an HTTP request that has the proper form
+ to be an XML-RPC call.
+@@ -469,26 +453,27 @@ processCall(TSession * const abyssSessionP,
+ if (contentSize > xmlrpc_limit_get(XMLRPC_XML_SIZE_LIMIT_ID))
+ xmlrpc_env_set_fault_formatted(
+ &env, XMLRPC_LIMIT_EXCEEDED_ERROR,
+- "XML-RPC request too large (%d bytes)", contentSize);
++ "XML-RPC request too large (%u bytes)", (unsigned)contentSize);
+ else {
+ xmlrpc_mem_block * body = NULL;
+ /* Read XML data off the wire. */
+ getBody(&env, abyssSessionP, contentSize, trace, &body);
+ if (!env.fault_occurred) {
+ xmlrpc_mem_block * output;
++
+ /* Process the RPC. */
+- xmlrpc_registry_process_call2(
+- &env, registryP,
++ xmlProcessor(
++ &env, xmlProcessorArg,
+ XMLRPC_MEMBLOCK_CONTENTS(char, body),
+ XMLRPC_MEMBLOCK_SIZE(char, body),
+ abyssSessionP,
+ &output);
+ if (!env.fault_occurred) {
+ /* Send out the result. */
+- sendXmlData(&env, abyssSessionP,
+- XMLRPC_MEMBLOCK_CONTENTS(char, output),
+- XMLRPC_MEMBLOCK_SIZE(char, output),
+- wantChunk);
++ sendResponse(&env, abyssSessionP,
++ XMLRPC_MEMBLOCK_CONTENTS(char, output),
++ XMLRPC_MEMBLOCK_SIZE(char, output),
++ wantChunk, accessControl);
+
+ XMLRPC_MEMBLOCK_FREE(char, output);
+ }
+@@ -510,42 +495,137 @@ processCall(TSession * const abyssSessionP,
+
+
+
+-/****************************************************************************
+- Abyss handlers (to be registered with and called by Abyss)
+-****************************************************************************/
++static void
++processXmlrpcCall(xmlrpc_env * const envP,
++ void * const arg,
++ const char * const callXml,
++ size_t const callXmlLen,
++ TSession * const abyssSessionP,
++ xmlrpc_mem_block ** const responseXmlPP) {
+
+-static const char * trace_abyss;
++ xmlrpc_registry * const registryP = arg;
++
++ xmlrpc_registry_process_call2(envP, registryP,
++ callXml, callXmlLen, abyssSessionP,
++ responseXmlPP);
++
++}
+
+
+
++static const char * trace_abyss;
++
++
+ struct uriHandlerXmlrpc {
+ /*----------------------------------------------------------------------------
+ This is the part of an Abyss HTTP request handler (aka URI handler)
+ that is specific to the Xmlrpc-c handler.
+ -----------------------------------------------------------------------------*/
+- xmlrpc_registry * registryP;
+- const char * uriPath; /* malloc'ed */
+- bool chunkResponse;
++ xmlrpc_registry * registryP;
++ const char * uriPath; /* malloc'ed */
++ bool chunkResponse;
+ /* The handler should chunk its response whenever possible */
++ xmlrpc_call_processor * xmlProcessor;
++ void * xmlProcessorArg;
++ ResponseAccessCtl accessControl;
+ };
+
+
+
+ static void
++termAccessControl(ResponseAccessCtl * const accessCtlP) {
++
++ xmlrpc_strfreenull(accessCtlP->allowOrigin);
++}
++
++
++
++static void
+ termUriHandler(void * const arg) {
+
+ struct uriHandlerXmlrpc * const uriHandlerXmlrpcP = arg;
+
+ xmlrpc_strfree(uriHandlerXmlrpcP->uriPath);
++ termAccessControl(&uriHandlerXmlrpcP->accessControl);
+ free(uriHandlerXmlrpcP);
+ }
+
+
+
+ static void
+-handleXmlrpcReq(URIHandler2 * const this,
+- TSession * const abyssSessionP,
+- abyss_bool * const handledP) {
++handleXmlRpcCallReq(TSession * const abyssSessionP,
++ const TRequestInfo * const requestInfoP ATTR_UNUSED,
++ xmlrpc_call_processor xmlProcessor,
++ void * const xmlProcessorArg,
++ bool const wantChunk,
++ ResponseAccessCtl const accessControl) {
++/*----------------------------------------------------------------------------
++ Handle the HTTP request described by *requestInfoP, which arrived over
++ Abyss HTTP session *abyssSessionP, which is an XML-RPC call
++ (i.e. a POST request to /RPC2 or whatever other URI our server is
++ supposed to handle).
++
++ Handle it by feeding the XML which is its content to 'xmlProcessor'
++ along with argument 'xmlProcessorArg'.
++-----------------------------------------------------------------------------*/
++ /* We used to reject the call if content-type was not present and
++ text/xml, on some security theory (a firewall may block text/xml with
++ the intent of blocking XML-RPC. Now, we believe that is silly, and we
++ have seen an incorrectly implemented client that says text/plain.
++ */
++ const char * error;
++
++ assert(requestInfoP->method == m_post);
++
++ storeCookies(abyssSessionP, &error);
++ if (error) {
++ sendError(abyssSessionP, 400, error);
++ xmlrpc_strfree(error);
++ } else {
++ const char * error;
++ bool missing;
++ size_t contentSize;
++
++ processContentLength(abyssSessionP,
++ &contentSize, &missing, &error);
++ if (error) {
++ sendError(abyssSessionP, 400, error);
++ xmlrpc_strfree(error);
++ } else {
++ if (missing)
++ sendError(abyssSessionP, 411, "You must send a "
++ "content-length HTTP header in an "
++ "XML-RPC call.");
++ else
++ processCall(abyssSessionP, contentSize,
++ xmlProcessor, xmlProcessorArg,
++ wantChunk, accessControl,
++ trace_abyss);
++ }
++ }
++}
++
++
++
++static void
++handleXmlRpcOptionsReq(TSession * const abyssSessionP,
++ ResponseAccessCtl const accessControl) {
++
++ ResponseAddField(abyssSessionP, "Allow", "POST");
++
++ ResponseAccessControl(abyssSessionP, accessControl);
++ ResponseContentLength(abyssSessionP, 0);
++ ResponseStatus(abyssSessionP, 200);
++ if (ResponseWriteStart(abyssSessionP))
++ ResponseWriteEnd(abyssSessionP);
++}
++
++
++
++static void
++handleIfXmlrpcReq(void * const handlerArg,
++ TSession * const abyssSessionP,
++ abyss_bool * const handledP) {
+ /*----------------------------------------------------------------------------
+ Our job is to look at this HTTP request that the Abyss server is
+ trying to process and see if we can handle it. If it's an XML-RPC
+@@ -557,9 +637,9 @@ handleXmlrpcReq(URIHandler2 * const this,
+ Note that failing the request counts as handling it, and not handling
+ it does not mean we failed it.
+
+- This is an Abyss HTTP Request handler -- type URIHandler2.
++ This is an Abyss HTTP Request handler -- type handleReqFn3.
+ -----------------------------------------------------------------------------*/
+- struct uriHandlerXmlrpc * const uriHandlerXmlrpcP = this->userdata;
++ struct uriHandlerXmlrpc * const uriHandlerXmlrpcP = handlerArg;
+
+ const TRequestInfo * requestInfoP;
+
+@@ -571,54 +651,30 @@ handleXmlrpcReq(URIHandler2 * const this,
+ /* Note that requestInfoP->uri is not the whole URI. It is just
+ the "file name" part of it.
+ */
+- if (strcmp(requestInfoP->uri, uriHandlerXmlrpcP->uriPath) != 0)
+- /* It's for the path (e.g. "/RPC2") that we're supposed to
++ if (!xmlrpc_streq(requestInfoP->uri, uriHandlerXmlrpcP->uriPath))
++ /* It's not for the path (e.g. "/RPC2") that we're supposed to
+ handle.
+ */
+ *handledP = FALSE;
+ else {
+ *handledP = TRUE;
+
+- if (requestInfoP->method != m_post)
++ switch (requestInfoP->method) {
++ case m_post:
++ handleXmlRpcCallReq(abyssSessionP, requestInfoP,
++ uriHandlerXmlrpcP->xmlProcessor,
++ uriHandlerXmlrpcP->xmlProcessorArg,
++ uriHandlerXmlrpcP->chunkResponse,
++ uriHandlerXmlrpcP->accessControl);
++ break;
++ case m_options:
++ handleXmlRpcOptionsReq(abyssSessionP,
++ uriHandlerXmlrpcP->accessControl);
++ break;
++ default:
+ sendError(abyssSessionP, 405,
+ "POST is the only HTTP method this server understands");
+ /* 405 = Method Not Allowed */
+- else {
+- const char * error;
+- storeCookies(abyssSessionP, &error);
+- if (error) {
+- sendError(abyssSessionP, 400, error);
+- xmlrpc_strfree(error);
+- } else {
+- const char * error;
+- validateContentType(abyssSessionP, &error);
+- if (error) {
+- sendError(abyssSessionP, 400, error);
+- /* 400 = Bad Request */
+- xmlrpc_strfree(error);
+- } else {
+- const char * error;
+- bool missing;
+- size_t contentSize;
+-
+- processContentLength(abyssSessionP,
+- &contentSize, &missing, &error);
+- if (error) {
+- sendError(abyssSessionP, 400, error);
+- xmlrpc_strfree(error);
+- } else {
+- if (missing)
+- sendError(abyssSessionP, 411, "You must send a "
+- "content-length HTTP header in an "
+- "XML-RPC call.");
+- else
+- processCall(abyssSessionP, contentSize,
+- uriHandlerXmlrpcP->registryP,
+- uriHandlerXmlrpcP->chunkResponse,
+- trace_abyss);
+- }
+- }
+- }
+ }
+ }
+ if (trace_abyss)
+@@ -626,6 +682,10 @@ handleXmlrpcReq(URIHandler2 * const this,
+ }
+
+
++/* This doesn't include what the user's method function requires */
++#define HANDLE_XMLRPC_REQ_STACK 1024
++
++
+
+ /*=========================================================================
+ ** xmlrpc_server_abyss_default_handler
+@@ -664,35 +724,115 @@ xmlrpc_server_abyss_default_handler(TSession * const sessionP) {
+
+
+ static void
+-setHandler(xmlrpc_env * const envP,
+- TServer * const srvP,
+- const char * const uriPath,
+- xmlrpc_registry * const registryP,
+- bool const chunkResponse) {
++setHandler(xmlrpc_env * const envP,
++ TServer * const srvP,
++ struct uriHandlerXmlrpc * const uriHandlerXmlrpcP,
++ size_t const xmlProcessorMaxStackSize) {
+
+- struct uriHandlerXmlrpc * uriHandlerXmlrpcP;
+- URIHandler2 uriHandler;
+ abyss_bool success;
+
+ trace_abyss = getenv("XMLRPC_TRACE_ABYSS");
+
+- MALLOCVAR_NOFAIL(uriHandlerXmlrpcP);
++ {
++ size_t const stackSize =
++ HANDLE_XMLRPC_REQ_STACK + xmlProcessorMaxStackSize;
++ struct ServerReqHandler3 const handlerDesc = {
++ /* .term = */ &termUriHandler,
++ /* .handleReq = */ &handleIfXmlrpcReq,
++ /* .userdata = */ uriHandlerXmlrpcP,
++ /* .handleReqStackSize = */ stackSize
++ };
++ ServerAddHandler3(srvP, &handlerDesc, &success);
++ }
++ if (!success)
++ xmlrpc_faultf(envP, "Abyss failed to register the Xmlrpc-c request "
++ "handler. ServerAddHandler3() failed.");
+
+- uriHandlerXmlrpcP->registryP = registryP;
+- uriHandlerXmlrpcP->uriPath = strdup(uriPath);
+- uriHandlerXmlrpcP->chunkResponse = chunkResponse;
++ if (envP->fault_occurred){
++ free((void *)uriHandlerXmlrpcP->uriPath);
++ free(uriHandlerXmlrpcP);
++ }
++}
+
+- uriHandler.handleReq2 = handleXmlrpcReq;
+- uriHandler.handleReq1 = NULL;
+- uriHandler.userdata = uriHandlerXmlrpcP;
+- uriHandler.init = NULL;
+- uriHandler.term = &termUriHandler;
+
+- ServerAddHandler2(srvP, &uriHandler, &success);
+
+- if (!success)
+- xmlrpc_faultf(envP, "Abyss failed to register the Xmlrpc-c request "
+- "handler. ServerAddHandler2() failed.");
++static void
++interpretHttpAccessControl(
++ const xmlrpc_server_abyss_handler_parms * const parmsP,
++ unsigned int const parmSize,
++ ResponseAccessCtl * const accessCtlP) {
++
++ if (parmSize >= XMLRPC_AHPSIZE(allow_origin) && parmsP->allow_origin)
++ accessCtlP->allowOrigin = xmlrpc_strdupsol(parmsP->allow_origin);
++ else
++ accessCtlP->allowOrigin = NULL;
++
++ if (parmSize >= XMLRPC_AHPSIZE(access_ctl_expires)
++ && parmsP->access_ctl_expires) {
++ accessCtlP->expires = true;
++
++ if (parmSize >= XMLRPC_AHPSIZE(access_ctl_max_age))
++ accessCtlP->maxAge = parmsP->access_ctl_max_age;
++ else
++ accessCtlP->maxAge = 0;
++ }
++}
++
++
++
++void
++xmlrpc_server_abyss_set_handler3(
++ xmlrpc_env * const envP,
++ TServer * const srvP,
++ const xmlrpc_server_abyss_handler_parms * const parmsP,
++ unsigned int const parmSize) {
++
++ struct uriHandlerXmlrpc * uriHandlerXmlrpcP;
++ size_t xmlProcessorMaxStackSize;
++
++ MALLOCVAR_NOFAIL(uriHandlerXmlrpcP);
++
++ if (!envP->fault_occurred) {
++ if (parmSize >= XMLRPC_AHPSIZE(xml_processor))
++ uriHandlerXmlrpcP->xmlProcessor = parmsP->xml_processor;
++ else
++ xmlrpc_faultf(envP, "Parameter too short to contain the required "
++ "'xml_processor' member");
++ }
++ if (!envP->fault_occurred) {
++ if (parmSize >= XMLRPC_AHPSIZE(xml_processor_arg))
++ uriHandlerXmlrpcP->xmlProcessorArg = parmsP->xml_processor_arg;
++ else
++ xmlrpc_faultf(envP, "Parameter too short to contain the required "
++ "'xml_processor_arg' member");
++ }
++ if (!envP->fault_occurred) {
++ if (parmSize >= XMLRPC_AHPSIZE(xml_processor_max_stack))
++ xmlProcessorMaxStackSize = parmsP->xml_processor_max_stack;
++ else
++ xmlrpc_faultf(envP, "Parameter too short to contain the required "
++ "'xml_processor_max_stack' member");
++ }
++ if (!envP->fault_occurred) {
++ if (parmSize >= XMLRPC_AHPSIZE(uri_path) && parmsP->uri_path)
++ uriHandlerXmlrpcP->uriPath = xmlrpc_strdupsol(parmsP->uri_path);
++ else
++ uriHandlerXmlrpcP->uriPath = xmlrpc_strdupsol("/RPC2");
++
++ if (parmSize >= XMLRPC_AHPSIZE(chunk_response) &&
++ parmsP->chunk_response)
++ uriHandlerXmlrpcP->chunkResponse = parmsP->chunk_response;
++ else
++ uriHandlerXmlrpcP->chunkResponse = false;
++
++ interpretHttpAccessControl(parmsP, parmSize,
++ &uriHandlerXmlrpcP->accessControl);
++
++ if (envP->fault_occurred)
++ termAccessControl(&uriHandlerXmlrpcP->accessControl);
++ }
++ if (!envP->fault_occurred)
++ setHandler(envP, srvP, uriHandlerXmlrpcP, xmlProcessorMaxStackSize);
+
+ if (envP->fault_occurred)
+ free(uriHandlerXmlrpcP);
+@@ -701,36 +841,95 @@ setHandler(xmlrpc_env * const envP,
+
+
+ void
++xmlrpc_server_abyss_set_handler2(
++ TServer * const srvP,
++ const char * const uriPath,
++ xmlrpc_call_processor xmlProcessor,
++ void * const xmlProcessorArg,
++ size_t const xmlProcessorMaxStackSize,
++ xmlrpc_bool const chunkResponse) {
++
++ xmlrpc_env env;
++ xmlrpc_server_abyss_handler_parms parms;
++
++ xmlrpc_env_init(&env);
++
++ parms.xml_processor = xmlProcessor;
++ parms.xml_processor_arg = xmlProcessorArg;
++ parms.xml_processor_max_stack = xmlProcessorMaxStackSize;
++ parms.uri_path = uriPath;
++ parms.chunk_response = chunkResponse;
++
++ xmlrpc_server_abyss_set_handler3(&env, srvP,
++ &parms, XMLRPC_AHPSIZE(chunk_response));
++
++ if (env.fault_occurred)
++ abort();
++
++ xmlrpc_env_clean(&env);
++}
++
++
++
++void
+ xmlrpc_server_abyss_set_handler(xmlrpc_env * const envP,
+ TServer * const srvP,
+ const char * const uriPath,
+ xmlrpc_registry * const registryP) {
+
+- setHandler(envP, srvP, uriPath, registryP, false);
++ xmlrpc_server_abyss_handler_parms parms;
++
++ parms.xml_processor = &processXmlrpcCall;
++ parms.xml_processor_arg = registryP;
++ parms.xml_processor_max_stack = xmlrpc_registry_max_stackSize(registryP);
++ parms.uri_path = uriPath;
++
++ xmlrpc_server_abyss_set_handler3(envP, srvP,
++ &parms, XMLRPC_AHPSIZE(uri_path));
+ }
+
+
+
++void
++xmlrpc_server_abyss_set_default_handler(TServer * const srvP) {
++
++ ServerDefaultHandler(srvP, xmlrpc_server_abyss_default_handler);
++}
++
++
++
+ static void
+-setHandlers(TServer * const srvP,
+- const char * const uriPath,
+- xmlrpc_registry * const registryP,
+- bool const chunkResponse) {
++setHandlersRegistry(TServer * const srvP,
++ const char * const uriPath,
++ xmlrpc_registry * const registryP,
++ bool const chunkResponse,
++ const char * const allowOrigin,
++ bool const expires,
++ unsigned int const maxAge) {
+
+ xmlrpc_env env;
++ xmlrpc_server_abyss_handler_parms parms;
+
+ xmlrpc_env_init(&env);
+
+- trace_abyss = getenv("XMLRPC_TRACE_ABYSS");
+-
+- setHandler(&env, srvP, uriPath, registryP, chunkResponse);
++ parms.xml_processor = &processXmlrpcCall;
++ parms.xml_processor_arg = registryP;
++ parms.xml_processor_max_stack = xmlrpc_registry_max_stackSize(registryP),
++ parms.uri_path = uriPath;
++ parms.chunk_response = chunkResponse;
++ parms.allow_origin = allowOrigin;
++ parms.access_ctl_expires = expires;
++ parms.access_ctl_max_age = maxAge;
++
++ xmlrpc_server_abyss_set_handler3(
++ &env, srvP, &parms, XMLRPC_AHPSIZE(access_ctl_max_age));
+
+ if (env.fault_occurred)
+ abort();
+
+- ServerDefaultHandler(srvP, xmlrpc_server_abyss_default_handler);
+-
+ xmlrpc_env_clean(&env);
++
++ xmlrpc_server_abyss_set_default_handler(srvP);
+ }
+
+
+@@ -740,7 +939,7 @@ xmlrpc_server_abyss_set_handlers2(TServer * const srvP,
+ const char * const uriPath,
+ xmlrpc_registry * const registryP) {
+
+- setHandlers(srvP, uriPath, registryP, false);
++ setHandlersRegistry(srvP, uriPath, registryP, false, NULL, false, 0);
+ }
+
+
+@@ -749,7 +948,7 @@ void
+ xmlrpc_server_abyss_set_handlers(TServer * const srvP,
+ xmlrpc_registry * const registryP) {
+
+- setHandlers(srvP, "/RPC2", registryP, false);
++ setHandlersRegistry(srvP, "/RPC2", registryP, false, NULL, false, 0);
+ }
+
+
+@@ -763,11 +962,6 @@ setAdditionalServerParms(const xmlrpc_server_abyss_parms * const parmsP,
+ unsigned int const parmSize,
+ TServer * const serverP) {
+
+- /* The following ought to be parameters on ServerCreate(), but it
+- looks like plugging them straight into the TServer structure is
+- the only way to set them.
+- */
+-
+ if (parmSize >= XMLRPC_APSIZE(keepalive_timeout) &&
+ parmsP->keepalive_timeout > 0)
+ ServerSetKeepaliveTimeout(serverP, parmsP->keepalive_timeout);
+@@ -903,8 +1097,13 @@ createServerBare(xmlrpc_env * const envP,
+ createServerBoundSocket(envP, socketFd, logFileName,
+ serverP, chanSwitchPP);
+ else {
+- ServerCreate(serverP, "XmlRpcServer", portNumber, DEFAULT_DOCS,
+- logFileName);
++ abyss_bool success;
++
++ success = ServerCreate(serverP, "XmlRpcServer", portNumber,
++ DEFAULT_DOCS, logFileName);
++
++ if (!success)
++ xmlrpc_faultf(envP, "Failed to create an Abyss server object");
+
+ *chanSwitchPP = NULL;
+ }
+@@ -915,6 +1114,22 @@ createServerBare(xmlrpc_env * const envP,
+
+
+
++static const char *
++uriPathParm(const xmlrpc_server_abyss_parms * const parmsP,
++ unsigned int const parmSize) {
++
++ const char * uriPath;
++
++ if (parmSize >= XMLRPC_APSIZE(uri_path) && parmsP->uri_path)
++ uriPath = parmsP->uri_path;
++ else
++ uriPath = "/RPC2";
++
++ return uriPath;
++}
++
++
++
+ static bool
+ chunkResponseParm(const xmlrpc_server_abyss_parms * const parmsP,
+ unsigned int const parmSize) {
+@@ -927,18 +1142,35 @@ chunkResponseParm(const xmlrpc_server_abyss_parms * const parmsP,
+
+
+ static const char *
+-uriPathParm(const xmlrpc_server_abyss_parms * const parmsP,
++allowOriginParm(const xmlrpc_server_abyss_parms * const parmsP,
++ unsigned int const parmSize) {
++
++ return
++ parmSize >= XMLRPC_APSIZE(allow_origin) ?
++ parmsP->allow_origin : NULL;
++}
++
++
++
++static bool
++expiresParm(const xmlrpc_server_abyss_parms * const parmsP,
+ unsigned int const parmSize) {
+-
+- const char * uriPath;
+
+- if (parmSize >= XMLRPC_APSIZE(uri_path) && parmsP->uri_path)
+- uriPath = parmsP->uri_path;
+- else
+- uriPath = "/RPC2";
++ return
++ parmSize >= XMLRPC_APSIZE(access_ctl_expires) ?
++ parmsP->access_ctl_expires : false;
++}
+
+- return uriPath;
+-}
++
++
++static unsigned int
++maxAgeParm(const xmlrpc_server_abyss_parms * const parmsP,
++ unsigned int const parmSize) {
++
++ return
++ parmSize >= XMLRPC_APSIZE(access_ctl_max_age) ?
++ parmsP->access_ctl_max_age : 0;
++}
+
+
+
+@@ -954,9 +1186,12 @@ createServer(xmlrpc_env * const envP,
+ if (!envP->fault_occurred) {
+ setAdditionalServerParms(parmsP, parmSize, abyssServerP);
+
+- setHandlers(abyssServerP, uriPathParm(parmsP, parmSize),
+- parmsP->registryP,
+- chunkResponseParm(parmsP, parmSize));
++ setHandlersRegistry(abyssServerP, uriPathParm(parmsP, parmSize),
++ parmsP->registryP,
++ chunkResponseParm(parmsP, parmSize),
++ allowOriginParm(parmsP, parmSize),
++ expiresParm(parmsP, parmSize),
++ maxAgeParm(parmsP, parmSize));
+
+ ServerInit(abyssServerP);
+ }
+@@ -1030,9 +1265,9 @@ xmlrpc_server_abyss_create(xmlrpc_env * const envP,
+ xmlrpc_faultf(envP,
+ "You must specify members at least up through "
+ "'registryP' in the server parameters argument. "
+- "That would mean the parameter size would be >= %lu "
++ "That would mean the parameter size would be >= %u "
+ "but you specified a size of %u",
+- XMLRPC_APSIZE(registryP), parmSize);
++ (unsigned)XMLRPC_APSIZE(registryP), parmSize);
+ else {
+ MALLOCVAR(serverP);
+
+@@ -1123,9 +1358,11 @@ sigchld(int const signalClass ATTR_UNUSED) {
+ The only child processes we have are those that belong to the Abyss
+ server (and then only if the Abyss server was configured to use
+ forking as a threading mechanism), so we respond by passing the
+- signal on to the Abyss server.
++ signal on to the Abyss server. And reaping the dead child.
+ -----------------------------------------------------------------------------*/
+ #ifndef WIN32
++ /* Reap zombie children / report to Abyss until there aren't any more. */
++
+ bool childrenLeft;
+ bool error;
+
+@@ -1270,7 +1507,7 @@ runServerDaemon(TServer * const serverP,
+
+
+ static void
+-oldHighLevelAbyssRun(xmlrpc_env * const envP ATTR_UNUSED,
++oldHighLevelAbyssRun(xmlrpc_env * const envP,
+ const xmlrpc_server_abyss_parms * const parmsP,
+ unsigned int const parmSize) {
+ /*----------------------------------------------------------------------------
+@@ -1285,31 +1522,38 @@ oldHighLevelAbyssRun(xmlrpc_env * const envP ATTR_UNUSED,
+ flexible API.
+ -----------------------------------------------------------------------------*/
+ TServer server;
+- runfirstFn runfirst;
+- void * runfirstArg;
+-
+- ServerCreate(&server, "XmlRpcServer", 8080, DEFAULT_DOCS, NULL);
++ abyss_bool success;
+
+- assert(parmSize >= XMLRPC_APSIZE(config_file_name));
++ success = ServerCreate(&server, "XmlRpcServer", 8080, DEFAULT_DOCS, NULL);
++
++ if (!success)
++ xmlrpc_faultf(envP, "Failed to create Abyss server object");
++ else {
++ runfirstFn runfirst;
++ void * runfirstArg;
++
++ assert(parmSize >= XMLRPC_APSIZE(config_file_name));
+
+- ConfReadServerFile(parmsP->config_file_name, &server);
++ ConfReadServerFile(parmsP->config_file_name, &server);
+
+- assert(parmSize >= XMLRPC_APSIZE(registryP));
++ assert(parmSize >= XMLRPC_APSIZE(registryP));
+
+- setHandlers(&server, "/RPC2", parmsP->registryP, false);
++ setHandlersRegistry(&server, "/RPC2", parmsP->registryP, false, NULL,
++ false, 0);
+
+- ServerInit(&server);
++ ServerInit(&server);
+
+- if (parmSize >= XMLRPC_APSIZE(runfirst_arg)) {
+- runfirst = parmsP->runfirst;
+- runfirstArg = parmsP->runfirst_arg;
+- } else {
+- runfirst = NULL;
+- runfirstArg = NULL;
+- }
+- runServerDaemon(&server, runfirst, runfirstArg);
++ if (parmSize >= XMLRPC_APSIZE(runfirst_arg)) {
++ runfirst = parmsP->runfirst;
++ runfirstArg = parmsP->runfirst_arg;
++ } else {
++ runfirst = NULL;
++ runfirstArg = NULL;
++ }
++ runServerDaemon(&server, runfirst, runfirstArg);
+
+- ServerFree(&server);
++ ServerFree(&server);
++ }
+ }
+
+
+@@ -1351,7 +1595,7 @@ xmlrpc_server_abyss(xmlrpc_env * const envP,
+ a thread of a multi-threaded program, use
+ xmlrpc_server_abyss_create() instead. As required by that
+ subroutine, your program will contain a call to
+- xmlrpc_server_abyss_init() early in your program, when it is only
++ xmlrpc_server_abyss_global_init() early in your program, when it is only
+ one thread.
+ -----------------------------------------------------------------------------*/
+ XMLRPC_ASSERT_ENV_OK(envP);
+@@ -1363,9 +1607,9 @@ xmlrpc_server_abyss(xmlrpc_env * const envP,
+ xmlrpc_faultf(envP,
+ "You must specify members at least up through "
+ "'registryP' in the server parameters argument. "
+- "That would mean the parameter size would be >= %lu "
++ "That would mean the parameter size would be >= %u "
+ "but you specified a size of %u",
+- XMLRPC_APSIZE(registryP), parmSize);
++ (unsigned)XMLRPC_APSIZE(registryP), parmSize);
+ else {
+ if (parmsP->config_file_name)
+ oldHighLevelAbyssRun(envP, parmsP, parmSize);
+@@ -1416,10 +1660,11 @@ xmlrpc_server_abyss_init_registry(void) {
+
+ xmlrpc_env_init(&env);
+ builtin_registryP = xmlrpc_registry_new(&env);
+- die_if_fault_occurred(&env);
++ dieIfFaultOccurred(&env);
+ xmlrpc_env_clean(&env);
+
+- setHandlers(&globalSrv, "/RPC2", builtin_registryP, false);
++ setHandlersRegistry(&globalSrv, "/RPC2", builtin_registryP, false, NULL,
++ false, 0);
+ }
+
+
+@@ -1446,7 +1691,7 @@ xmlrpc_server_abyss_add_method(char * const method_name,
+ xmlrpc_env_init(&env);
+ xmlrpc_registry_add_method(&env, builtin_registryP, NULL, method_name,
+ method, user_data);
+- die_if_fault_occurred(&env);
++ dieIfFaultOccurred(&env);
+ xmlrpc_env_clean(&env);
+ }
+
+@@ -1464,7 +1709,7 @@ xmlrpc_server_abyss_add_method_w_doc(char * const method_name,
+ xmlrpc_registry_add_method_w_doc(
+ &env, builtin_registryP, NULL, method_name,
+ method, user_data, signature, help);
+- die_if_fault_occurred(&env);
++ dieIfFaultOccurred(&env);
+ xmlrpc_env_clean(&env);
+ }
+
+@@ -1474,16 +1719,23 @@ void
+ xmlrpc_server_abyss_init(int const flags ATTR_UNUSED,
+ const char * const config_file) {
+
+- ServerCreate(&globalSrv, "XmlRpcServer", 8080, DEFAULT_DOCS, NULL);
+-
+- ConfReadServerFile(config_file, &globalSrv);
++ abyss_bool success;
+
+- xmlrpc_server_abyss_init_registry();
+- /* Installs /RPC2 handler and default handler that use the
+- built-in registry.
+- */
++ success = ServerCreate(&globalSrv, "XmlRpcServer", 8080,
++ DEFAULT_DOCS, NULL);
+
+- ServerInit(&globalSrv);
++ if (!success)
++ abort();
++ else {
++ ConfReadServerFile(config_file, &globalSrv);
++
++ xmlrpc_server_abyss_init_registry();
++ /* Installs /RPC2 handler and default handler that use the
++ built-in registry.
++ */
++
++ ServerInit(&globalSrv);
++ }
+ }
+
+
+diff --git a/libs/xmlrpc-c/src/xmlrpc_server_cgi.c b/libs/xmlrpc-c/src/xmlrpc_server_cgi.c
+index 2f6fe73..f8ab73a 100644
+--- a/libs/xmlrpc-c/src/xmlrpc_server_cgi.c
++++ b/libs/xmlrpc-c/src/xmlrpc_server_cgi.c
+@@ -38,6 +38,7 @@
+
+ #include "xmlrpc-c/base.h"
+ #include "xmlrpc-c/server.h"
++#include "xmlrpc-c/string_int.h"
+ #include "xmlrpc-c/server_cgi.h"
+
+
+@@ -202,13 +203,19 @@ xmlrpc_server_cgi_process_call(xmlrpc_registry * const registryP) {
+ length_str = getenv("CONTENT_LENGTH");
+
+ /* Perform some sanity checks. */
+- if (!method || 0 != strcmp(method, "POST")) {
++ if (!method || !xmlrpc_streq(method, "POST")) {
+ code = 405; message = "Method Not Allowed";
+ XMLRPC_FAIL(&env, XMLRPC_INTERNAL_ERROR, "Expected HTTP method POST");
+ }
+- if (!type || 0 != strcmp(type, "text/xml")) {
++ if (!type || !xmlrpc_strneq(type, "text/xml", strlen("text/xml"))) {
++ char *template = "Expected content type: \"text/xml\", received: \"%s\"";
++ size_t err_len = strlen(template) + strlen(type) + 1;
++ char *err = malloc(err_len);
++
++ (void)snprintf(err, err_len, template, type);
+ code = 400; message = "Bad Request";
+- XMLRPC_FAIL(&env, XMLRPC_INTERNAL_ERROR, "Expected text/xml content");
++ XMLRPC_FAIL(&env, XMLRPC_INTERNAL_ERROR, err);
++ free(err);
+ }
+ if (!length_str) {
+ code = 411; message = "Length Required";
+diff --git a/libs/xmlrpc-c/src/xmlrpc_server_info.c b/libs/xmlrpc-c/src/xmlrpc_server_info.c
+index 5cf44c3..2e06c02 100644
+--- a/libs/xmlrpc-c/src/xmlrpc_server_info.c
++++ b/libs/xmlrpc-c/src/xmlrpc_server_info.c
+@@ -16,6 +16,10 @@
+ transports.
+ =============================================================================*/
+
++#define _XOPEN_SOURCE 600 /* Make sure strdup() is in <string.h> */
++
++#include <string.h>
++
+ #include "bool.h"
+ #include "mallocvar.h"
+
+@@ -229,6 +233,9 @@ xmlrpc_server_info_set_user(xmlrpc_env * const envP,
+ }
+ XMLRPC_MEMBLOCK_FREE(char, userNamePw64);
+ }
++ if (serverInfoP->userNamePw)
++ xmlrpc_strfree(serverInfoP->userNamePw);
++
+ serverInfoP->userNamePw = userNamePw;
+ }
+
+diff --git a/libs/xmlrpc-c/src/xmlrpc_server_w32httpsys.c b/libs/xmlrpc-c/src/xmlrpc_server_w32httpsys.c
+index cf0dad8..ce1587d 100644
+--- a/libs/xmlrpc-c/src/xmlrpc_server_w32httpsys.c
++++ b/libs/xmlrpc-c/src/xmlrpc_server_w32httpsys.c
+@@ -1,14 +1,15 @@
+ /* Copyright information is at end of file. */
++
+ /* COMPILATION NOTE:
+- Note that the Platform SDK headers and
+- link libraries for Windows XP SP2 or newer are required to compile
+- xmlrpc-c for this module. If you are not using this server, it is
+- safe to exclude the xmlrpc_server_w32httpsys.c file from the xmlrpc
+- project and these dependencies will not be required. You can get the
+- latest platform SDK at
+- http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
+- Be sure after installation to choose the program to "register the PSDK
+- directories with Visual Studio" so the newer headers are found.
++
++ Note that the Platform SDK headers and link libraries for Windows XP SP2 or
++ newer are required to compile Xmlrpc-c for this module. If you are not
++ using this XML-RPC server program, it is safe to exclude the
++ xmlrpc_server_w32httpsys.c file from the xmlrpc project and you will not
++ have this dependency. You can get the latest platform SDK at
++ http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ Be sure after
++ installation to choose the program to "register the PSDK directories with
++ Visual Studio" so the newer headers are found.
+ */
+
+ #ifndef UNICODE
+@@ -19,7 +20,18 @@
+ #define _UNICODE
+ #endif
+
+-/* See compilation note above if this header is not found! */
++/* Declare that we require the Windows XP SP2 or better version of the
++ interface to Windows.
++
++ Microsoft recommends
++ (http://msdn.microsoft.com/en-us/library/aa383745(VS.85).aspx) defining
++ NTDDI_VERSION instead of _WIN32_WINNT for this purpose, but as it was
++ invented recently, it's pretty useless. Windows header files from old
++ Windows SDKs won't know what to do with it.
++*/
++#define _WIN32_WINNT 0x0502
++
++/* See compilation note above if the compiler doesn't find this header file */
+ #include <http.h>
+ #include <strsafe.h>
+
+@@ -665,7 +677,8 @@ SendHttpResponse(
+
+ ADD_KNOWN_HEADER(response, HttpHeaderContentType, "text/html");
+
+- StringCchPrintfA(szServerHeader,20, "xmlrpc-c %s",XMLRPC_C_VERSION);
++ StringCchPrintfA(szServerHeader, sizeof(szServerHeader), "Xmlrpc-c/%s",
++ XMLRPC_C_VERSION);
+ ADD_KNOWN_HEADER(response, HttpHeaderServer, szServerHeader);
+
+ if(pEntityString)
+@@ -724,7 +737,8 @@ SendHttpResponseAuthRequired(
+ ADD_KNOWN_HEADER(response, HttpHeaderWwwAuthenticate,
+ "Basic realm=\"xmlrpc\"");
+
+- StringCchPrintfA(szServerHeader,20, "xmlrpc-c %s",XMLRPC_C_VERSION);
++ StringCchPrintfA(szServerHeader, sizeof(szServerHeader), "Xmlrpc-c/%s",
++ XMLRPC_C_VERSION);
+ ADD_KNOWN_HEADER(response, HttpHeaderServer, szServerHeader);
+
+ // Since we are sending all the entity body in one call, we don't have
+@@ -878,8 +892,8 @@ processRPCCall(
+ ADD_KNOWN_HEADER(response, HttpHeaderContentType,
+ "text/xml");
+
+- StringCchPrintfA(szServerHeader,20,
+- "xmlrpc-c %s",XMLRPC_C_VERSION);
++ StringCchPrintfA(szServerHeader, sizeof(szServerHeader),
++ "Xmlrpc-c/%s", XMLRPC_C_VERSION);
+ ADD_KNOWN_HEADER(response, HttpHeaderServer,
+ szServerHeader);
+
+diff --git a/libs/xmlrpc-c/src/xmlrpc_string.c b/libs/xmlrpc-c/src/xmlrpc_string.c
+index 8bf299d..ac9a1f5 100644
+--- a/libs/xmlrpc-c/src/xmlrpc_string.c
++++ b/libs/xmlrpc-c/src/xmlrpc_string.c
+@@ -100,11 +100,11 @@ accessStringValue(xmlrpc_env * const envP,
+
+ validateStringType(envP, valueP);
+ if (!envP->fault_occurred) {
+- unsigned int const size =
++ size_t const size =
+ XMLRPC_MEMBLOCK_SIZE(char, &valueP->_block);
+ const char * const contents =
+ XMLRPC_MEMBLOCK_CONTENTS(char, &valueP->_block);
+- unsigned int const len = size - 1;
++ size_t const len = size - 1;
+ /* The memblock has a null character added to the end */
+
+ verifyNoNulls(envP, contents, len);
+@@ -141,7 +141,7 @@ xmlrpc_read_string(xmlrpc_env * const envP,
+ MALLOCARRAY(stringValue, length + 1);
+ if (stringValue == NULL)
+ xmlrpc_faultf(envP, "Unable to allocate space "
+- "for %u-character string", length);
++ "for %u-character string", (unsigned)length);
+ else {
+ memcpy(stringValue, contents, length);
+ stringValue[length] = '\0';
+@@ -189,7 +189,7 @@ copyAndConvertLfToCrlf(xmlrpc_env * const envP,
+ MALLOCARRAY(dst, dstLen + 1);
+ if (dst == NULL)
+ xmlrpc_faultf(envP, "Unable to allocate space "
+- "for %u-character string", dstLen + 1);
++ "for %u-character string", (unsigned)dstLen + 1);
+ else {
+ const char * p; /* source pointer */
+ char * q; /* destination pointer */
+@@ -253,7 +253,7 @@ xmlrpc_read_string_lp(xmlrpc_env * const envP,
+
+ validateStringType(envP, valueP);
+ if (!envP->fault_occurred) {
+- unsigned int const size =
++ size_t const size =
+ XMLRPC_MEMBLOCK_SIZE(char, &valueP->_block);
+ const char * const contents =
+ XMLRPC_MEMBLOCK_CONTENTS(char, &valueP->_block);
+@@ -263,7 +263,7 @@ xmlrpc_read_string_lp(xmlrpc_env * const envP,
+ stringValue = malloc(size);
+ if (stringValue == NULL)
+ xmlrpc_faultf(envP, "Unable to allocate %u bytes for string.",
+- size);
++ (unsigned int)size);
+ else {
+ memcpy(stringValue, contents, size);
+ *stringValueP = stringValue;
+@@ -282,7 +282,7 @@ xmlrpc_read_string_lp_crlf(xmlrpc_env * const envP,
+
+ validateStringType(envP, valueP);
+ if (!envP->fault_occurred) {
+- unsigned int const size =
++ size_t const size =
+ XMLRPC_MEMBLOCK_SIZE(char, &valueP->_block); /* Includes NUL */
+ const char * const contents =
+ XMLRPC_MEMBLOCK_CONTENTS(char, &valueP->_block);
+@@ -371,7 +371,7 @@ xmlrpc_read_string_w(xmlrpc_env * const envP,
+ MALLOCARRAY(stringValue, length + 1);
+ if (stringValue == NULL)
+ xmlrpc_faultf(envP, "Unable to allocate space for %u-byte string",
+- length);
++ (unsigned)length);
+ else {
+ memcpy(stringValue, wcontents, length * sizeof(wchar_t));
+ stringValue[length] = '\0';
+@@ -422,7 +422,7 @@ wCopyAndConvertLfToCrlf(xmlrpc_env * const envP,
+ MALLOCARRAY(dst, dstLen + 1);
+ if (dst == NULL)
+ xmlrpc_faultf(envP, "Unable to allocate space "
+- "for %u-character string", dstLen + 1);
++ "for %u-character string", (unsigned)dstLen + 1);
+ else {
+ const wchar_t * p; /* source pointer */
+ wchar_t * q; /* destination pointer */
+@@ -561,18 +561,6 @@ xmlrpc_read_string_w_lp_old(xmlrpc_env * const envP,
+
+
+ static void
+-validateUtf(xmlrpc_env * const envP,
+- const char * const value,
+- size_t const length) {
+-
+-#if HAVE_UNICODE_WCHAR
+- xmlrpc_validate_utf8(envP, value, length);
+-#endif
+-}
+-
+-
+-
+-static void
+ copyLines(xmlrpc_env * const envP,
+ const char * const src,
+ size_t const srcLen,
+@@ -685,7 +673,7 @@ stringNew(xmlrpc_env * const envP,
+
+ xmlrpc_value * valP;
+
+- validateUtf(envP, value, length);
++ xmlrpc_validate_utf8(envP, value, length);
+
+ if (!envP->fault_occurred) {
+ xmlrpc_createXmlrpcValue(envP, &valP);
+@@ -762,7 +750,7 @@ xmlrpc_string_new_va(xmlrpc_env * const envP,
+
+ xmlrpc_vasprintf(&formattedString, format, args);
+
+- if (formattedString == xmlrpc_strsol) {
++ if (xmlrpc_strnomem(formattedString)) {
+ xmlrpc_faultf(envP, "Out of memory building formatted string");
+ retvalP = NULL; /* defeat compiler warning */
+ } else
+diff --git a/libs/xmlrpc-c/src/xmlrpc_struct.c b/libs/xmlrpc-c/src/xmlrpc_struct.c
+index 40c59bb..0fde37b 100644
+--- a/libs/xmlrpc-c/src/xmlrpc_struct.c
++++ b/libs/xmlrpc-c/src/xmlrpc_struct.c
+@@ -1,30 +1,6 @@
+-/* Copyright (C) 2001 by First Peer, Inc. All rights reserved.
+-**
+-** Redistribution and use in source and binary forms, with or without
+-** modification, are permitted provided that the following conditions
+-** are met:
+-** 1. Redistributions of source code must retain the above copyright
+-** notice, this list of conditions and the following disclaimer.
+-** 2. Redistributions in binary form must reproduce the above copyright
+-** notice, this list of conditions and the following disclaimer in the
+-** documentation and/or other materials provided with the distribution.
+-** 3. The name of the author may not be used to endorse or promote products
+-** derived from this software without specific prior written permission.
+-**
+-** THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+-** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+-** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+-** ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+-** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+-** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+-** OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+-** HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+-** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+-** OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+-** SUCH DAMAGE. */
+-
+ #include "xmlrpc_config.h"
+
++#include <assert.h>
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
+@@ -95,22 +71,28 @@ xmlrpc_struct_new(xmlrpc_env * const envP) {
+ */
+
+ int
+-xmlrpc_struct_size(xmlrpc_env* env, xmlrpc_value* strct)
+-{
++xmlrpc_struct_size(xmlrpc_env * const envP,
++ xmlrpc_value * const structP) {
++
+ int retval;
+
+- /* Suppress a compiler warning about uninitialized variables. */
+- retval = 0;
++ XMLRPC_ASSERT_ENV_OK(envP);
++ XMLRPC_ASSERT_VALUE_OK(structP);
+
+- XMLRPC_ASSERT_ENV_OK(env);
+- XMLRPC_ASSERT_VALUE_OK(strct);
++ if (structP->_type != XMLRPC_TYPE_STRUCT) {
++ xmlrpc_env_set_fault_formatted(
++ envP, XMLRPC_TYPE_ERROR, "Value is not a struct. It is type #%d",
++ structP->_type);
++ retval = -1;
++ } else {
++ size_t const size =
++ XMLRPC_MEMBLOCK_SIZE(_struct_member, &structP->_block);
+
+- XMLRPC_TYPE_CHECK(env, strct, XMLRPC_TYPE_STRUCT);
+- retval = XMLRPC_MEMBLOCK_SIZE(_struct_member, &strct->_block);
++ assert((size_t)(int)size == size);
++ /* Because structs are defined to have few enough members */
+
+- cleanup:
+- if (env->fault_occurred)
+- return -1;
++ retval = (int)size;
++ }
+ return retval;
+ }
+
+@@ -149,30 +131,42 @@ find_member(xmlrpc_value * const strctP,
+ const char * const key,
+ size_t const keyLen) {
+
++ int retval;
+ size_t size, i;
+ uint32_t searchHash;
+ _struct_member * contents; /* array */
+- xmlrpc_value * keyvalP;
+- const char * keystr;
+- size_t keystrSize;
++ bool found;
++ size_t foundIndex; /* Meaningful only when 'found' is true */
+
+ XMLRPC_ASSERT_VALUE_OK(strctP);
+ XMLRPC_ASSERT(key != NULL);
++ foundIndex = 0; /* defeat used-before-set compiler warning */
+
+ /* Look for our key. */
+ searchHash = hashStructKey(key, keyLen);
+ size = XMLRPC_MEMBLOCK_SIZE(_struct_member, &strctP->_block);
+ contents = XMLRPC_MEMBLOCK_CONTENTS(_struct_member, &strctP->_block);
+- for (i = 0; i < size; ++i) {
++ for (i = 0, found = false; i < size && !found; ++i) {
+ if (contents[i].keyHash == searchHash) {
+- keyvalP = contents[i].key;
+- keystr = XMLRPC_MEMBLOCK_CONTENTS(char, &keyvalP->_block);
+- keystrSize = XMLRPC_MEMBLOCK_SIZE(char, &keyvalP->_block)-1;
+- if (keystrSize == keyLen && memcmp(key, keystr, keyLen) == 0)
+- return i;
++ xmlrpc_value * const keyvalP = contents[i].key;
++ const char * const keystr =
++ XMLRPC_MEMBLOCK_CONTENTS(char, &keyvalP->_block);
++ size_t const keystrSize =
++ XMLRPC_MEMBLOCK_SIZE(char, &keyvalP->_block)-1;
++ if (keystrSize == keyLen && memcmp(key, keystr, keyLen) == 0) {
++ found = true;
++ foundIndex = i;
++ }
+ }
+ }
+- return -1;
++ if (found) {
++ assert((size_t)(int)foundIndex == foundIndex);
++ /* Definition of structure says it has few enough members */
++ retval = foundIndex;
++ } else
++ retval = -1;
++
++ return retval;
+ }
+
+
+@@ -588,3 +582,31 @@ xmlrpc_struct_get_key_and_value(xmlrpc_env * const envP,
+ *valueP = NULL;
+ }
+ }
++
++
++
++/* Copyright (C) 2001 by First Peer, Inc. All rights reserved.
++**
++** Redistribution and use in source and binary forms, with or without
++** modification, are permitted provided that the following conditions
++** are met:
++** 1. Redistributions of source code must retain the above copyright
++** notice, this list of conditions and the following disclaimer.
++** 2. Redistributions in binary form must reproduce the above copyright
++** notice, this list of conditions and the following disclaimer in the
++** documentation and/or other materials provided with the distribution.
++** 3. The name of the author may not be used to endorse or promote products
++** derived from this software without specific prior written permission.
++**
++** THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
++** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++** ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
++** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++** OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++** HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++** OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++** SUCH DAMAGE. */
++
+diff --git a/libs/xmlrpc-c/src/xmlrpc_strutil.c b/libs/xmlrpc-c/src/xmlrpc_strutil.c
+deleted file mode 100644
+index efbdca5..0000000
+--- a/libs/xmlrpc-c/src/xmlrpc_strutil.c
++++ /dev/null
+@@ -1,75 +0,0 @@
+-#include <string.h>
+-#include <stdio.h>
+-#include <stdlib.h>
+-#include <ctype.h>
+-
+-#include "xmlrpc_config.h"
+-#include "xmlrpc-c/base.h"
+-#include "xmlrpc-c/base_int.h"
+-
+-
+-
+-const char *
+-xmlrpc_makePrintable(const char * const input) {
+-/*----------------------------------------------------------------------------
+- Convert an arbitrary string of bytes (null-terminated, though) to
+- printable ASCII. E.g. convert newlines to "\n".
+-
+- Return the result in newly malloc'ed storage. Return NULL if we can't
+- get the storage.
+------------------------------------------------------------------------------*/
+- char * output;
+- const unsigned int inputLength = strlen(input);
+-
+- output = malloc(inputLength*4+1);
+-
+- if (output != NULL) {
+- unsigned int inputCursor, outputCursor;
+-
+- for (inputCursor = 0, outputCursor = 0;
+- inputCursor < inputLength;
+- ++inputCursor) {
+-
+- if (isprint(input[inputCursor]))
+- output[outputCursor++] = input[inputCursor];
+- else if (input[inputCursor] == '\n') {
+- output[outputCursor++] = '\\';
+- output[outputCursor++] = 'n';
+- } else if (input[inputCursor] == '\t') {
+- output[outputCursor++] = '\\';
+- output[outputCursor++] = 't';
+- } else if (input[inputCursor] == '\a') {
+- output[outputCursor++] = '\\';
+- output[outputCursor++] = 'a';
+- } else if (input[inputCursor] == '\r') {
+- output[outputCursor++] = '\\';
+- output[outputCursor++] = 'r';
+- } else {
+- snprintf(&output[outputCursor], 4, "\\x%02x",
+- input[inputCursor]);
+- }
+- }
+- output[outputCursor++] = '\0';
+- }
+- return output;
+-}
+-
+-
+-
+-const char *
+-xmlrpc_makePrintableChar(char const input) {
+-
+- const char * retval;
+-
+- if (input == '\0')
+- retval = strdup("\\0");
+- else {
+- char buffer[2];
+-
+- buffer[0] = input;
+- buffer[1] = '\0';
+-
+- retval = xmlrpc_makePrintable(buffer);
+- }
+- return retval;
+-}
+diff --git a/libs/xmlrpc-c/src/xmlrpc_support.c b/libs/xmlrpc-c/src/xmlrpc_support.c
+deleted file mode 100644
+index c2fd1b6..0000000
+--- a/libs/xmlrpc-c/src/xmlrpc_support.c
++++ /dev/null
+@@ -1,394 +0,0 @@
+-/* Copyright (C) 2001 by First Peer, Inc. All rights reserved.
+-**
+-** Redistribution and use in source and binary forms, with or without
+-** modification, are permitted provided that the following conditions
+-** are met:
+-** 1. Redistributions of source code must retain the above copyright
+-** notice, this list of conditions and the following disclaimer.
+-** 2. Redistributions in binary form must reproduce the above copyright
+-** notice, this list of conditions and the following disclaimer in the
+-** documentation and/or other materials provided with the distribution.
+-** 3. The name of the author may not be used to endorse or promote products
+-** derived from this software without specific prior written permission.
+-**
+-** THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+-** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+-** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+-** ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+-** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+-** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+-** OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+-** HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+-** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+-** OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+-** SUCH DAMAGE. */
+-
+-#include "xmlrpc_config.h"
+-
+-#include <stdlib.h>
+-#include <stdio.h>
+-#include <string.h>
+-#include <ctype.h>
+-
+-#include "xmlrpc-c/base.h"
+-#include "xmlrpc-c/base_int.h"
+-
+-#ifdef EFENCE
+- /* when looking for corruption don't allocate extra slop */
+-#define BLOCK_ALLOC_MIN (1)
+-#else
+-#define BLOCK_ALLOC_MIN (16)
+-#endif
+-#define BLOCK_ALLOC_MAX (128 * 1024 * 1024)
+-
+-#define ERROR_BUFFER_SZ (256)
+-
+-
+-/*=========================================================================
+-** Strings
+-**=======================================================================*/
+-
+-void
+-xmlrpc_strfree(const char * const string) {
+- free((void*)string);
+-}
+-
+-
+-/*=========================================================================
+-** Assertions and Error Handling
+-**=========================================================================
+-** Support code for XMLRPC_ASSERT and xmlrpc_env.
+-*/
+-
+-void xmlrpc_assertion_failed (char* file, int line)
+-{
+- fprintf(stderr, "%s:%d: assertion failed\n", file, line);
+- abort();
+-}
+-
+-static char* default_fault_string = "Not enough memory for error message";
+-
+-void xmlrpc_env_init (xmlrpc_env* env)
+-{
+- XMLRPC_ASSERT(env != NULL);
+-
+- env->fault_occurred = 0;
+- env->fault_code = 0;
+- env->fault_string = NULL;
+-}
+-
+-void xmlrpc_env_clean (xmlrpc_env* env)
+-{
+- XMLRPC_ASSERT(env != NULL);
+-
+- /* env->fault_string may be one of three things:
+- ** 1) a NULL pointer
+- ** 2) a pointer to the default_fault_string
+- ** 3) a pointer to a malloc'd fault string
+- ** If we have case (3), we'll need to free it. */
+- if (env->fault_string && env->fault_string != default_fault_string)
+- free(env->fault_string);
+- env->fault_string = XMLRPC_BAD_POINTER;
+-}
+-
+-
+-
+-void
+-xmlrpc_env_set_fault(xmlrpc_env * const env,
+- int const faultCode,
+- const char * const faultDescription) {
+-
+- XMLRPC_ASSERT(env != NULL);
+- XMLRPC_ASSERT(faultDescription != NULL);
+-
+- /* Clean up any leftover pointers. */
+- xmlrpc_env_clean(env);
+-
+- env->fault_occurred = 1;
+- env->fault_code = faultCode;
+-
+- /* Try to copy the fault string. If this fails, use a default. */
+- env->fault_string = (char*) malloc(strlen(faultDescription) + 1);
+- if (env->fault_string)
+- strcpy(env->fault_string, faultDescription);
+- else
+- env->fault_string = default_fault_string;
+-}
+-
+-
+-
+-static void
+-set_fault_formatted_v(xmlrpc_env * const envP,
+- int const code,
+- const char * const format,
+- va_list const args) {
+-
+- char buffer[ERROR_BUFFER_SZ];
+-
+- vsnprintf(buffer, ERROR_BUFFER_SZ, format, args);
+-
+- /* vsnprintf is guaranteed to terminate the buffer, but we're paranoid. */
+- buffer[ERROR_BUFFER_SZ - 1] = '\0';
+-
+- /* Set the fault. */
+- xmlrpc_env_set_fault(envP, code, buffer);
+-}
+-
+-
+-
+-void
+-xmlrpc_env_set_fault_formatted(xmlrpc_env * const envP,
+- int const code,
+- const char * const format,
+- ...) {
+- va_list args;
+-
+- XMLRPC_ASSERT(envP != NULL);
+- XMLRPC_ASSERT(format != NULL);
+-
+- /* Print our error message to the buffer. */
+- va_start(args, format);
+- set_fault_formatted_v(envP, code, format, args);
+- va_end(args);
+-}
+-
+-
+-
+-void
+-xmlrpc_faultf(xmlrpc_env * const envP,
+- const char * const format,
+- ...) {
+-
+- va_list args;
+-
+- XMLRPC_ASSERT(envP != NULL);
+- XMLRPC_ASSERT(format != NULL);
+-
+- /* Print our error message to the buffer. */
+- va_start(args, format);
+- set_fault_formatted_v(envP, XMLRPC_INTERNAL_ERROR, format, args);
+- va_end(args);
+-
+-}
+-
+-
+-
+-void xmlrpc_fatal_error (char* file, int line, char* msg)
+-{
+- fprintf(stderr, "%s:%d: %s\n", file, line, msg);
+- exit(1);
+-}
+-
+-
+-/*=========================================================================
+-** Resource Limits
+-**=========================================================================
+-*/
+-
+-static size_t limits[XMLRPC_LAST_LIMIT_ID + 1] = {
+- XMLRPC_NESTING_LIMIT_DEFAULT,
+- XMLRPC_XML_SIZE_LIMIT_DEFAULT
+-};
+-
+-void xmlrpc_limit_set (int limit_id, size_t value)
+-{
+- XMLRPC_ASSERT(0 <= limit_id && limit_id <= XMLRPC_LAST_LIMIT_ID);
+- limits[limit_id] = value;
+-}
+-
+-size_t xmlrpc_limit_get (int limit_id)
+-{
+- XMLRPC_ASSERT(0 <= limit_id && limit_id <= XMLRPC_LAST_LIMIT_ID);
+- return limits[limit_id];
+-}
+-
+-
+-/*=========================================================================
+-** xmlrpc_mem_block
+-**=========================================================================
+-*/
+-
+-xmlrpc_mem_block *
+-xmlrpc_mem_block_new(xmlrpc_env * const env,
+- size_t const size) {
+- xmlrpc_mem_block* block;
+-
+- XMLRPC_ASSERT_ENV_OK(env);
+-
+- block = (xmlrpc_mem_block*) malloc(sizeof(xmlrpc_mem_block));
+- XMLRPC_FAIL_IF_NULL(block, env, XMLRPC_INTERNAL_ERROR,
+- "Can't allocate memory block");
+-
+- xmlrpc_mem_block_init(env, block, size);
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- cleanup:
+- if (env->fault_occurred) {
+- if (block)
+- free(block);
+- return NULL;
+- } else {
+- return block;
+- }
+-}
+-
+-/* Destroy an existing xmlrpc_mem_block, and everything it contains. */
+-void xmlrpc_mem_block_free (xmlrpc_mem_block* block)
+-{
+- XMLRPC_ASSERT(block != NULL);
+- XMLRPC_ASSERT(block->_block != NULL);
+-
+- xmlrpc_mem_block_clean(block);
+- free(block);
+-}
+-
+-/* Initialize the contents of the provided xmlrpc_mem_block. */
+-void xmlrpc_mem_block_init (xmlrpc_env* env,
+- xmlrpc_mem_block* block,
+- size_t size)
+-{
+- XMLRPC_ASSERT_ENV_OK(env);
+- XMLRPC_ASSERT(block != NULL);
+-
+- block->_size = size;
+- if (size < BLOCK_ALLOC_MIN)
+- block->_allocated = BLOCK_ALLOC_MIN;
+- else
+- block->_allocated = size;
+-
+- block->_block = (void*) malloc(block->_allocated);
+- if (!block->_block)
+- xmlrpc_env_set_fault_formatted(
+- env, XMLRPC_INTERNAL_ERROR,
+- "Can't allocate %u-byte memory block",
+- block->_allocated);
+-}
+-
+-/* Deallocate the contents of the provided xmlrpc_mem_block, but not the
+-** block itself. */
+-void xmlrpc_mem_block_clean (xmlrpc_mem_block* block)
+-{
+- XMLRPC_ASSERT(block != NULL);
+- XMLRPC_ASSERT(block->_block != NULL);
+-
+- free(block->_block);
+- block->_block = XMLRPC_BAD_POINTER;
+-}
+-
+-
+-
+-/* Get the size of the xmlrpc_mem_block. */
+-size_t
+-xmlrpc_mem_block_size(const xmlrpc_mem_block * const block) {
+-
+- XMLRPC_ASSERT(block != NULL);
+- return block->_size;
+-}
+-
+-
+-
+-/* Get the contents of the xmlrpc_mem_block. */
+-void *
+-xmlrpc_mem_block_contents(const xmlrpc_mem_block * const block) {
+-
+- XMLRPC_ASSERT(block != NULL);
+- return block->_block;
+-}
+-
+-
+-
+-/* Resize an xmlrpc_mem_block, preserving as much of the contents as
+-** possible. */
+-void
+-xmlrpc_mem_block_resize (xmlrpc_env * const env,
+- xmlrpc_mem_block * const block,
+- size_t const size) {
+-
+- size_t proposed_alloc;
+- void* new_block;
+-
+- XMLRPC_ASSERT_ENV_OK(env);
+- XMLRPC_ASSERT(block != NULL);
+-
+- /* Check to see if we already have enough space. Maybe we'll get lucky. */
+- if (size <= block->_allocated) {
+- block->_size = size;
+- return;
+- }
+-
+- /* Calculate a new allocation size. */
+-#ifdef EFENCE
+- proposed_alloc = size;
+-#else
+- proposed_alloc = block->_allocated;
+- while (proposed_alloc < size && proposed_alloc <= BLOCK_ALLOC_MAX)
+- proposed_alloc *= 2;
+-#endif /* DEBUG_MEM_ERRORS */
+-
+- if (proposed_alloc > BLOCK_ALLOC_MAX)
+- XMLRPC_FAIL(env, XMLRPC_INTERNAL_ERROR, "Memory block too large");
+-
+- /* Allocate our new memory block. */
+- new_block = (void*) malloc(proposed_alloc);
+- XMLRPC_FAIL_IF_NULL(new_block, env, XMLRPC_INTERNAL_ERROR,
+- "Can't resize memory block");
+-
+- /* Copy over our data and update the xmlrpc_mem_block struct. */
+- memcpy(new_block, block->_block, block->_size);
+- free(block->_block);
+- block->_block = new_block;
+- block->_size = size;
+- block->_allocated = proposed_alloc;
+-
+- cleanup:
+- return;
+-}
+-
+-
+-
+-void
+-xmlrpc_mem_block_append(xmlrpc_env * const env,
+- xmlrpc_mem_block * const block,
+- const void * const data,
+- size_t const len) {
+-
+- int size;
+-
+- XMLRPC_ASSERT_ENV_OK(env);
+- XMLRPC_ASSERT(block != NULL);
+-
+- size = block->_size;
+- xmlrpc_mem_block_resize(env, block, size + len);
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- memcpy(((unsigned char*) block->_block) + size, data, len);
+-
+- cleanup:
+- return;
+-}
+-
+-
+-
+-void
+-xmlrpc_traceXml(const char * const label,
+- const char * const xml,
+- unsigned int const xmlLength) {
+-
+- if (getenv("XMLRPC_TRACE_XML")) {
+- unsigned int nonPrintableCount;
+- unsigned int i;
+-
+- nonPrintableCount = 0; /* Initial value */
+-
+- for (i = 0; i < xmlLength; ++i) {
+- if (!isprint(xml[i]) && xml[i] != '\n' && xml[i] != '\r')
+- ++nonPrintableCount;
+- }
+- if (nonPrintableCount > 0)
+- fprintf(stderr, "%s contains %u nonprintable characters.\n",
+- label, nonPrintableCount);
+-
+- fprintf(stderr, "%s:\n\n", label);
+- fprintf(stderr, "%.*s\n", (int)xmlLength, xml);
+- }
+-}
+diff --git a/libs/xmlrpc-c/src/xmlrpc_transport.c b/libs/xmlrpc-c/src/xmlrpc_transport.c
+deleted file mode 100644
+index d1878e6..0000000
+--- a/libs/xmlrpc-c/src/xmlrpc_transport.c
++++ /dev/null
+@@ -1,143 +0,0 @@
+-/* Copyright (C) 2001 by First Peer, Inc. All rights reserved.
+-**
+-** Redistribution and use in source and binary forms, with or without
+-** modification, are permitted provided that the following conditions
+-** are met:
+-** 1. Redistributions of source code must retain the above copyright
+-** notice, this list of conditions and the following disclaimer.
+-** 2. Redistributions in binary form must reproduce the above copyright
+-** notice, this list of conditions and the following disclaimer in the
+-** documentation and/or other materials provided with the distribution.
+-** 3. The name of the author may not be used to endorse or promote products
+-** derived from this software without specific prior written permission.
+-**
+-** THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+-** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+-** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+-** ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+-** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+-** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+-** OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+-** HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+-** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+-** OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+-** SUCH DAMAGE. */
+-
+-#include "xmlrpc_config.h"
+-
+-#undef PACKAGE
+-#undef VERSION
+-
+-#include <stddef.h>
+-#include <string.h>
+-#include <stdlib.h>
+-
+-#ifdef WIN32
+-#ifdef _DEBUG
+-# include <crtdbg.h>
+-# define new DEBUG_NEW
+-# define malloc(size) _malloc_dbg( size, _NORMAL_BLOCK, __FILE__, __LINE__)
+-# undef THIS_FILE
+- static char THIS_FILE[] = __FILE__;
+-#endif
+-#endif /*WIN32*/
+-
+-#include "pthreadx.h"
+-#include "xmlrpc.h"
+-#include "xmlrpc_client.h"
+-
+-#if defined (WIN32)
+-#include <process.h>
+-#endif
+-
+-/* For debugging the xmlrpc_transport threading. */
+-/* #define tdbg_printf printf */
+-#define tdbg_printf (void *)
+-
+-/* Lacking from the abyss/thread.c implimentaion. */
+-void wait_for_asynch_thread(pthread_t *thread)
+-{
+-#if WIN32
+- unsigned long milliseconds = INFINITE;
+- switch (WaitForSingleObject (
+- *thread /* handle to object to wait for */,
+- milliseconds /* time-out interval in milliseconds*/) )
+- {
+- /* One may want to handle these cases */
+- case WAIT_OBJECT_0:
+- case WAIT_TIMEOUT:
+- break;
+- }
+-#else
+- void * result;
+- int success;
+- success = pthread_join (*thread, &result);
+-#endif
+-}
+-
+-/* MRB-WARNING: Only call when you have successfully
+-** acquired the Lock/Unlock mutex! */
+-void unregister_asynch_thread (running_thread_list *list, pthread_t *thread)
+-{
+- running_thread_info * pCur = NULL;
+- XMLRPC_ASSERT_PTR_OK(thread);
+- XMLRPC_ASSERT_PTR_OK(list);
+-
+- tdbg_printf("unregister_asynch_thread: &pthread_id = %08X *(%08X)\n", thread, *thread);
+- /* Removal */
+- /* Lock (); */
+- for (pCur = list->AsyncThreadHead; pCur != NULL; pCur = (running_thread_info *)pCur->Next)
+- {
+- if (pCur->_thread == *thread)
+- {
+- if (pCur == list->AsyncThreadHead)
+- list->AsyncThreadHead = pCur->Next;
+- if (pCur == list->AsyncThreadTail)
+- list->AsyncThreadTail = pCur->Last;
+- if (pCur->Last)
+- ((running_thread_info *)(pCur->Last))->Next = pCur->Next;
+- if (pCur->Next)
+- ((running_thread_info *)(pCur->Next))->Last = pCur->Last;
+- /* Free malloc'd running_thread_info */
+- free (pCur);
+- return;
+- }
+- }
+-
+- /* This is a serious progmatic error, since the thread
+- ** should be in that list! */
+- XMLRPC_ASSERT_PTR_OK(0x0000);
+-
+- /* Unlock (); */
+-}
+-
+-/* MRB-WARNING: Only call when you have successfully
+-** acquired the Lock/Unlock mutex! */
+-void register_asynch_thread (running_thread_list *list, pthread_t *thread)
+-{
+- running_thread_info* info = (running_thread_info *) malloc(sizeof(running_thread_info));
+-
+- XMLRPC_ASSERT_PTR_OK(thread);
+- XMLRPC_ASSERT_PTR_OK(list);
+-
+- tdbg_printf("register_asynch_thread: &pthread_id = %08X *(%08X)\n", thread, *thread);
+-
+- info->_thread = *thread;
+-
+- /* Insertion */
+- /* Lock (); */
+- if (list->AsyncThreadHead == NULL)
+- {
+- list->AsyncThreadHead = list->AsyncThreadTail = info;
+- list->AsyncThreadTail->Next = list->AsyncThreadHead->Next = NULL;
+- list->AsyncThreadTail->Last = list->AsyncThreadHead->Last = NULL;
+- }
+- else
+- {
+- info->Last = list->AsyncThreadTail;
+- list->AsyncThreadTail->Next = info;
+- list->AsyncThreadTail = list->AsyncThreadTail->Next;
+- list->AsyncThreadTail->Next = NULL;
+- }
+- /* Unlock (); */
+-}
+diff --git a/libs/xmlrpc-c/src/xmlrpc_utf8.c b/libs/xmlrpc-c/src/xmlrpc_utf8.c
+deleted file mode 100644
+index 390cc7b..0000000
+--- a/libs/xmlrpc-c/src/xmlrpc_utf8.c
++++ /dev/null
+@@ -1,376 +0,0 @@
+-/* Copyright (C) 2001 by Eric Kidd. All rights reserved.
+-**
+-** Redistribution and use in source and binary forms, with or without
+-** modification, are permitted provided that the following conditions
+-** are met:
+-** 1. Redistributions of source code must retain the above copyright
+-** notice, this list of conditions and the following disclaimer.
+-** 2. Redistributions in binary form must reproduce the above copyright
+-** notice, this list of conditions and the following disclaimer in the
+-** documentation and/or other materials provided with the distribution.
+-** 3. The name of the author may not be used to endorse or promote products
+-** derived from this software without specific prior written permission.
+-**
+-** THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+-** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+-** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+-** ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+-** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+-** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+-** OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+-** HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+-** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+-** OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+-** SUCH DAMAGE. */
+-
+-
+-/*=========================================================================
+-** XML-RPC UTF-8 Utilities
+-**=========================================================================
+-** Routines for validating, encoding and decoding UTF-8 data. We try to
+-** be very, very strict about invalid UTF-8 data.
+-**
+-** All of the code in this file assumes that your machine represents
+-** wchar_t as a 16-bit (or wider) character containing UCS-2 data. If this
+-** assumption is incorrect, you may need to replace this file.
+-**
+-** For lots of information on Unicode and UTF-8 decoding, see:
+-** http://www.cl.cam.ac.uk/~mgk25/unicode.html
+-*/
+-
+-#include "xmlrpc_config.h"
+-
+-#include "xmlrpc-c/base.h"
+-
+-#ifdef HAVE_UNICODE_WCHAR
+-
+-/*=========================================================================
+-** Tables and Constants
+-**=========================================================================
+-** We use a variety of tables and constants to help decode and validate
+-** UTF-8 data.
+-*/
+-
+-/* The number of bytes in a UTF-8 sequence starting with the character used
+-** as the array index. A zero entry indicates an illegal initial byte.
+-** This table was generated using a Perl script and information from the
+-** UTF-8 standard.
+-**
+-** Fredrik Lundh's UTF-8 decoder Python 2.0 uses a similar table. But
+-** since Python 2.0 has the icky CNRI license, I regenerated this
+-** table from scratch and wrote my own decoder. */
+-static unsigned char utf8_seq_length[256] = {
+- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+- 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 0, 0
+-};
+-
+-/* The minimum legal character value for a UTF-8 sequence of the given
+-** length. We have to check this to avoid accepting "overlong" UTF-8
+-** sequences, which use more bytes than necessary to encode a given
+-** character. Such sequences are commonly used by evil people to bypass
+-** filters and security checks. This table is based on the UTF-8-test.txt
+-** file by Markus Kuhn <mkuhn@acm.org>. */
+-static wchar_t utf8_min_char_for_length[4] = {
+- 0, /* Length 0: Not used (meaningless) */
+- 0x0000, /* Length 1: Not used (special-cased) */
+- 0x0080, /* Length 2 */
+- 0x0800 /* Length 3 */
+-
+-#if 0
+- /* These are only useful on systems where wchar_t is 32-bits wide
+- ** and supports full UCS-4. */
+- 0x00010000, /* Length 4 */
+- 0x00200000, /* Length 5 */
+- 0x04000000 /* Length 6 */
+-#endif
+-};
+-
+-/* This is the maximum legal 16-byte (UCS-2) character. Again, this
+-** information is based on UTF-8-test.txt. */
+-#define UCS2_MAX_LEGAL_CHARACTER (0xFFFD)
+-
+-/* First and last UTF-16 surrogate characters. These are *not* legal UCS-2
+-** characters--they're used to code for UCS-4 characters when using
+-** UTF-16. They should never appear in decoded UTF-8 data! Again, these
+-** could hypothetically be used to bypass security measures on some machines.
+-** Based on UTF-8-test.txt. */
+-#define UTF16_FIRST_SURROGATE (0xD800)
+-#define UTF16_LAST_SURROGATE (0xDFFF)
+-
+-/* Is the character 'c' a UTF-8 continuation character? */
+-#define IS_CONTINUATION(c) (((c) & 0xC0) == 0x80)
+-
+-/* Maximum number of bytes needed to encode a supported character. */
+-#define MAX_ENCODED_BYTES (3)
+-
+-
+-/*=========================================================================
+-** decode_utf8
+-**=========================================================================
+-** Internal routine which decodes (or validates) a UTF-8 string.
+-** To validate, set io_buff and out_buff_len to NULL. To decode, allocate
+-** a sufficiently large buffer, pass it as io_buff, and pass a pointer as
+-** as out_buff_len. The data will be written to the buffer, and the
+-** length to out_buff_len.
+-**
+-** We assume that wchar_t holds a single UCS-2 character in native-endian
+-** byte ordering.
+-*/
+-
+-static void
+-decode_utf8(xmlrpc_env * const env,
+- const char * const utf8_data,
+- size_t const utf8_len,
+- wchar_t * const io_buff,
+- size_t * const out_buff_len) {
+-
+- size_t i, length, out_pos;
+- char init, con1, con2;
+- wchar_t wc;
+-
+- XMLRPC_ASSERT_ENV_OK(env);
+- XMLRPC_ASSERT_PTR_OK(utf8_data);
+- XMLRPC_ASSERT((!io_buff && !out_buff_len) ||
+- (io_buff && out_buff_len));
+-
+- /* Suppress GCC warning about possibly undefined variable. */
+- wc = 0;
+-
+- i = 0;
+- out_pos = 0;
+- while (i < utf8_len) {
+- init = utf8_data[i];
+- if ((init & 0x80) == 0x00) {
+- /* Convert ASCII character to wide character. */
+- wc = init;
+- i++;
+- } else {
+- /* Look up the length of this UTF-8 sequence. */
+- length = utf8_seq_length[(unsigned char) init];
+-
+- /* Check to make sure we have enough bytes to convert. */
+- if (i + length > utf8_len)
+- XMLRPC_FAIL(env, XMLRPC_INVALID_UTF8_ERROR,
+- "Truncated UTF-8 sequence");
+-
+- /* Decode a multibyte UTF-8 sequence. */
+- switch (length) {
+- case 0:
+- XMLRPC_FAIL(env, XMLRPC_INVALID_UTF8_ERROR,
+- "Invalid UTF-8 initial byte");
+-
+- case 2:
+- /* 110xxxxx 10xxxxxx */
+- con1 = utf8_data[i+1];
+- if (!IS_CONTINUATION(con1))
+- XMLRPC_FAIL(env, XMLRPC_INVALID_UTF8_ERROR,
+- "UTF-8 sequence too short");
+- wc = ((((wchar_t) (init & 0x1F)) << 6) |
+- (((wchar_t) (con1 & 0x3F))));
+- break;
+-
+- case 3:
+- /* 1110xxxx 10xxxxxx 10xxxxxx */
+- con1 = utf8_data[i+1];
+- con2 = utf8_data[i+2];
+- if (!IS_CONTINUATION(con1) || !IS_CONTINUATION(con2))
+- XMLRPC_FAIL(env, XMLRPC_INVALID_UTF8_ERROR,
+- "UTF-8 sequence too short");
+- wc = ((((wchar_t) (init & 0x0F)) << 12) |
+- (((wchar_t) (con1 & 0x3F)) << 6) |
+- (((wchar_t) (con2 & 0x3F))));
+- break;
+-
+- case 4:
+- /* 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx */
+- case 5:
+- /* 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx */
+- case 6:
+- /* 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx */
+- XMLRPC_FAIL(env, XMLRPC_INVALID_UTF8_ERROR,
+- "UCS-4 characters not supported");
+-
+- default:
+- XMLRPC_ASSERT("Error in UTF-8 decoder tables");
+- }
+-
+- /* Advance to the end of the sequence. */
+- i += length;
+-
+- /* Check for illegal UCS-2 characters. */
+- if (wc > UCS2_MAX_LEGAL_CHARACTER)
+- XMLRPC_FAIL(env, XMLRPC_INVALID_UTF8_ERROR,
+- "UCS-2 characters > U+FFFD are illegal");
+-
+- /* Check for UTF-16 surrogates. */
+- if (UTF16_FIRST_SURROGATE <= wc && wc <= UTF16_LAST_SURROGATE)
+- XMLRPC_FAIL(env, XMLRPC_INVALID_UTF8_ERROR,
+- "UTF-16 surrogates may not appear in UTF-8 data");
+-
+- /* Check for overlong sequences. */
+- if (wc < utf8_min_char_for_length[length])
+- XMLRPC_FAIL(env, XMLRPC_INVALID_UTF8_ERROR,
+- "Overlong UTF-8 sequence not allowed");
+- }
+-
+- /* If we have a buffer, write our character to it. */
+- if (io_buff) {
+- io_buff[out_pos++] = wc;
+- }
+- }
+-
+- /* Record the number of characters we found. */
+- if (out_buff_len)
+- *out_buff_len = out_pos;
+-
+- cleanup:
+- if (env->fault_occurred) {
+- if (out_buff_len)
+- *out_buff_len = 0;
+- }
+-}
+-
+-
+-
+-/*=========================================================================
+-** xmlrpc_validate_utf8
+-**=========================================================================
+-** Make sure that a UTF-8 string is valid.
+-*/
+-
+-void
+-xmlrpc_validate_utf8 (xmlrpc_env * const env,
+- const char * const utf8_data,
+- size_t const utf8_len) {
+-
+- decode_utf8(env, utf8_data, utf8_len, NULL, NULL);
+-}
+-
+-
+-/*=========================================================================
+-** xmlrpc_utf8_to_wcs
+-**=========================================================================
+-** Decode UTF-8 string to a "wide character string". This function
+-** returns an xmlrpc_mem_block with an element type of wchar_t. Don't
+-** try to intepret the block in a bytewise fashion--it won't work in
+-** any useful or portable fashion.
+-*/
+-
+-xmlrpc_mem_block *xmlrpc_utf8_to_wcs (xmlrpc_env *env,
+- char *utf8_data,
+- size_t utf8_len)
+-{
+- xmlrpc_mem_block *output;
+- size_t wcs_length;
+-
+- /* Error-handling preconditions. */
+- output = NULL;
+-
+- /* Allocate a memory block large enough to hold any possible output.
+- ** We assume that each byte of the input may decode to a whcar_t. */
+- output = XMLRPC_TYPED_MEM_BLOCK_NEW(wchar_t, env, utf8_len);
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- /* Decode the UTF-8 data. */
+- decode_utf8(env, utf8_data, utf8_len,
+- XMLRPC_TYPED_MEM_BLOCK_CONTENTS(wchar_t, output),
+- &wcs_length);
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- /* Make sure we didn't overrun our buffer. */
+- XMLRPC_ASSERT(wcs_length <= utf8_len);
+-
+- /* Correct the length of the memory block. */
+- XMLRPC_TYPED_MEM_BLOCK_RESIZE(wchar_t, env, output, wcs_length);
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- cleanup:
+- if (env->fault_occurred) {
+- if (output)
+- xmlrpc_mem_block_free(output);
+- return NULL;
+- }
+- return output;
+-}
+-
+-
+-/*=========================================================================
+-** xmlrpc_utf8_to_wcs
+-**=========================================================================
+-** Encode a "wide character string" as UTF-8.
+-*/
+-
+-xmlrpc_mem_block *xmlrpc_wcs_to_utf8 (xmlrpc_env *env,
+- wchar_t *wcs_data,
+- size_t wcs_len)
+-{
+- size_t estimate, bytes_used, i;
+- xmlrpc_mem_block *output;
+- unsigned char *buffer;
+- wchar_t wc;
+-
+- XMLRPC_ASSERT_ENV_OK(env);
+- XMLRPC_ASSERT_PTR_OK(wcs_data);
+-
+- /* Error-handling preconditions. */
+- output = NULL;
+-
+- /* Allocate a memory block large enough to hold any possible output.
+- ** We assume that every wchar might encode to the maximum length. */
+- estimate = wcs_len * MAX_ENCODED_BYTES;
+- output = XMLRPC_TYPED_MEM_BLOCK_NEW(char, env, estimate);
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- /* Output our characters. */
+- buffer = (unsigned char*) XMLRPC_TYPED_MEM_BLOCK_CONTENTS(char, output);
+- bytes_used = 0;
+- for (i = 0; i < wcs_len; i++) {
+- wc = wcs_data[i];
+- if (wc <= 0x007F) {
+- buffer[bytes_used++] = wc & 0x7F;
+- } else if (wc <= 0x07FF) {
+- /* 110xxxxx 10xxxxxx */
+- buffer[bytes_used++] = 0xC0 | (wc >> 6);
+- buffer[bytes_used++] = 0x80 | (wc & 0x3F);
+- } else if (wc <= 0xFFFF) {
+- /* 1110xxxx 10xxxxxx 10xxxxxx */
+- buffer[bytes_used++] = 0xE0 | (wc >> 12);
+- buffer[bytes_used++] = 0x80 | ((wc >> 6) & 0x3F);
+- buffer[bytes_used++] = 0x80 | (wc & 0x3F);
+- } else {
+- XMLRPC_FAIL(env, XMLRPC_INTERNAL_ERROR,
+- "Don't know how to encode UCS-4 characters yet");
+- }
+- }
+-
+- /* Make sure we didn't overrun our buffer. */
+- XMLRPC_ASSERT(bytes_used <= estimate);
+-
+- /* Correct the length of the memory block. */
+- XMLRPC_TYPED_MEM_BLOCK_RESIZE(char, env, output, bytes_used);
+- XMLRPC_FAIL_IF_FAULT(env);
+-
+- cleanup:
+- if (env->fault_occurred) {
+- if (output)
+- xmlrpc_mem_block_free(output);
+- return NULL;
+- }
+- return output;
+-}
+-
+-#endif /* HAVE_UNICODE_WCHAR */
+diff --git a/libs/xmlrpc-c/tools/.cvsignore b/libs/xmlrpc-c/tools/.cvsignore
+deleted file mode 100644
+index f3c7a7c..0000000
+--- a/libs/xmlrpc-c/tools/.cvsignore
++++ /dev/null
+@@ -1 +0,0 @@
+-Makefile
+diff --git a/libs/xmlrpc-c/tools/Makefile b/libs/xmlrpc-c/tools/Makefile
+index 621dbf9..c2eb347 100644
+--- a/libs/xmlrpc-c/tools/Makefile
++++ b/libs/xmlrpc-c/tools/Makefile
+@@ -7,15 +7,20 @@ SUBDIR := tools
+
+ include $(BLDDIR)/config.mk
+
+-SUBDIRS = binmode-rpc-kit turbocharger
++SUBDIRS = \
++ binmode-rpc-kit \
++ lib \
++ turbocharger \
+
+ ifeq ($(MUST_BUILD_CLIENT),yes)
+ SUBDIRS += xmlrpc xmlrpc_transport
+
+ ifeq ($(ENABLE_CPLUSPLUS),yes)
+- SUBDIRS += xml-rpc-api2cpp xmlrpc_cpp_proxy
+- # We could add 'xmlrpc_pstream' here, but we don't because we don't
+- # want to deal with finding the Readline/Ncurses libraries.
++ SUBDIRS += xml-rpc-api2cpp xml-rpc-api2txt xmlrpc_cpp_proxy
++
++ ifeq ($(BUILD_XMLRPC_PSTREAM),yes)
++ SUBDIRS += xmlrpc_pstream
++ endif
+ endif
+ endif
+
+diff --git a/libs/xmlrpc-c/tools/Makefile.common b/libs/xmlrpc-c/tools/Makefile.common
+deleted file mode 100644
+index 8b0cdce..0000000
+--- a/libs/xmlrpc-c/tools/Makefile.common
++++ /dev/null
+@@ -1,47 +0,0 @@
+-# -*-makefile-*- <-- an Emacs control
+-
+-CLIENT_LDFLAGS =
+-ifeq ($(MUST_BUILD_LIBWWW_CLIENT),yes)
+- CLIENT_LDFLAGS += $(shell libwww-config --libs)
+-endif
+-ifeq ($(MUST_BUILD_CURL_CLIENT),yes)
+- CLIENT_LDFLAGS += $(shell curl-config --libs) -lpthread
+-endif
+-ifeq ($(MUST_BUILD_WININET_CLIENT),yes)
+- CLIENT_LDFLAGS += $(shell wininet-config --libs)
+-endif
+-
+-LIBEXPAT = $(BUILDDIR)/lib/expat/xmlparse/libxmlrpc_xmlparse.la \
+- $(BUILDDIR)/lib/expat/xmltok/libxmlrpc_xmltok.la
+-
+-ifeq ($(ENABLE_LIBXML2_BACKEND),yes)
+- LIBXML = $(LIBXML2_LIBS)
+-else
+- LIBXML = $(LIBEXPAT)
+-endif
+-
+-LIBXMLRPC = $(BUILDDIR)/src/libxmlrpc.la
+-LIBXMLRPC_CPP = $(BUILDDIR)/src/cpp/libxmlrpc_cpp.a
+-LIBXMLRPC_CLIENT = $(BUILDDIR)/src/libxmlrpc_client.la
+-LIBXMLRPC_SERVER = $(BUILDDIR)/src/libxmlrpc_server.la
+-
+-XMLRPC_LIBS = $(LIBXMLRPC) $(LIBXMLRPC_CPP) $(LIBXMLRPC_CLIENT) \
+- $(LIBXMLRPC_SERVER) $(LIBXML)
+-
+-UTIL_DIR = $(BUILDDIR)/lib/util
+-
+-BUILDABLE_UTILS = casprintf.o cmdline_parser.o getoptx.o
+-
+-$(BUILDABLE_UTILS:%=$(UTIL_DIR)/%): FORCE
+- $(MAKE) -C $(dir $@) $(notdir $@)
+-
+-include $(SRCDIR)/Makefile.common
+-
+-.PHONY: install
+-install: install-common
+-
+-.PHONY: check
+-check:
+-
+-.PHONY: FORCE
+-FORCE:
+diff --git a/libs/xmlrpc-c/tools/common.mk b/libs/xmlrpc-c/tools/common.mk
+index fe71e97..4c377fe 100644
+--- a/libs/xmlrpc-c/tools/common.mk
++++ b/libs/xmlrpc-c/tools/common.mk
+@@ -29,7 +29,7 @@ CLIENTPP_LDLIBS += -lxmlrpc_client++ -lxmlrpc_packetsocket -lxmlrpc++
+ include $(SRCDIR)/common.mk
+
+ ifneq ($(OMIT_LIB_RULE),Y)
+-srcdir/tools/lib/dumpvalue.o: FORCE
++blddir/tools/lib/dumpvalue.o: FORCE
+ $(MAKE) -C $(dir $@) -f $(SRCDIR)/tools/lib/Makefile $(notdir $@)
+ endif
+
+diff --git a/libs/xmlrpc-c/tools/lib/Makefile b/libs/xmlrpc-c/tools/lib/Makefile
+index 5b04eed..836d9c9 100644
+--- a/libs/xmlrpc-c/tools/lib/Makefile
++++ b/libs/xmlrpc-c/tools/lib/Makefile
+@@ -20,8 +20,6 @@ INCLUDES = \
+ -Isrcdir/include \
+ -Isrcdir/lib/util/include \
+
+-CFLAGS = $(CFLAGS_COMMON) $(INCLUDES) $(CFLAGS_PERSONAL) $(CADD)
+-
+ LIBOBJS = \
+ dumpvalue.o \
+
+@@ -29,14 +27,14 @@ LIBOBJS = \
+ all: $(LIBOBJS)
+
+ %.o:%.c
+- $(CC) -c $(CFLAGS) $<
++ $(CC) -c $(CFLAGS_ALL) $<
+
+ # This common.mk dependency makes sure the symlinks get built before
+ # this make file is used for anything.
+
+-$(SRCDIR)/tool/common.mk: srcdir blddir
++$(SRCDIR)/tools/common.mk: srcdir blddir
+
+-include Makefile.depend
++include depend.mk
+
+ .PHONY: dep
+ dep: dep-common
+diff --git a/libs/xmlrpc-c/tools/lib/dumpvalue.c b/libs/xmlrpc-c/tools/lib/dumpvalue.c
+index ebcc000..682c904 100644
+--- a/libs/xmlrpc-c/tools/lib/dumpvalue.c
++++ b/libs/xmlrpc-c/tools/lib/dumpvalue.c
+@@ -5,7 +5,7 @@
+ used for debugging purposes in other places.
+ */
+
+-//#define _GNU_SOURCE
++#define _XOPEN_SOURCE 600 /* Make sure strdup() is in <string.h> */
+
+ #include <stdlib.h>
+ #include <stdio.h>
+@@ -297,12 +297,12 @@ dumpStructMember(const char * const prefix,
+ const char * prefix2;
+ const char * blankPrefix;
+
+- casprintf(&prefix2, "%s Key: ", prefix);
++ casprintf(&blankPrefix, "%*s", blankCount, "");
++
++ casprintf(&prefix2, "%s Key: ", blankPrefix);
+ dumpValue(prefix2, keyP);
+ strfree(prefix2);
+
+- casprintf(&blankPrefix, "%*s", blankCount, "");
+-
+ casprintf(&prefix2, "%s Value: ", blankPrefix);
+ dumpValue(prefix2, valueP);
+ strfree(prefix2);
+@@ -407,13 +407,13 @@ dumpI8(const char * const prefix,
+ xmlrpc_env_init(&env);
+
+ xmlrpc_read_i8(&env, valueP, &value);
+-
++
+ if (env.fault_occurred)
+ printf("Internal error: unable to extract value of "
+ "64-bit integer xmlrpc_value %lx. %s\n",
+ (unsigned long)valueP, env.fault_string);
+ else
+- printf("%s64-bit integer: %" PRId64 "\n", prefix, value);
++ printf("%s64-bit integer: %" XMLRPC_PRId64 "\n", prefix, value);
+
+ xmlrpc_env_clean(&env);
+ }
+diff --git a/libs/xmlrpc-c/tools/turbocharger/.cvsignore b/libs/xmlrpc-c/tools/turbocharger/.cvsignore
+deleted file mode 100644
+index f3c7a7c..0000000
+--- a/libs/xmlrpc-c/tools/turbocharger/.cvsignore
++++ /dev/null
+@@ -1 +0,0 @@
+-Makefile
+diff --git a/libs/xmlrpc-c/tools/xml-rpc-api2cpp/.cvsignore b/libs/xmlrpc-c/tools/xml-rpc-api2cpp/.cvsignore
+deleted file mode 100644
+index c194ee8..0000000
+--- a/libs/xmlrpc-c/tools/xml-rpc-api2cpp/.cvsignore
++++ /dev/null
+@@ -1 +0,0 @@
+-xml-rpc-api2cpp
+diff --git a/libs/xmlrpc-c/tools/xml-rpc-api2cpp/Makefile b/libs/xmlrpc-c/tools/xml-rpc-api2cpp/Makefile
+index dbe374f..0ad3907 100644
+--- a/libs/xmlrpc-c/tools/xml-rpc-api2cpp/Makefile
++++ b/libs/xmlrpc-c/tools/xml-rpc-api2cpp/Makefile
+@@ -10,23 +10,24 @@ default: all
+
+ include $(BLDDIR)/config.mk
+
+-include $(SRCDIR)/tools/common.mk
+-
+-INCLUDES = -I$(BLDDIR) -I$(BLDDIR)/include -I$(SRCDIR)/include
++PROGS := xml-rpc-api2cpp
++PROGRAMS_TO_INSTALL := $(PROGS)
++MAN_FILES_TO_INSTALL := xml-rpc-api2cpp.1
+
+-CXXFLAGS = $(INCLUDES) $(CXXFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
++all: $(PROGS)
+
+-LDFLAGS = $(LADD)
++include $(SRCDIR)/tools/common.mk
+
+-LDLIBS = -L$(BLDDIR)/src/cpp -lxmlrpc_cpp -lxmlrpc_server $(CLIENT_LDLIBS)
++# <sstream.h> in Glibc 2.2 has a bug that results in inlining failure,
++# so we disable warnings for that:
++CFLAGS_LOCAL = -Wno-inline
+
+-PROGS :=
++INCLUDES = -I$(BLDDIR) -I$(BLDDIR)/include -Isrcdir/include
+
+-ifeq ($(MUST_BUILD_CLIENT),yes)
+- PROGS += xml-rpc-api2cpp
+-endif
++LDFLAGS = $(LADD)
+
+-all: $(PROGS)
++LDLIBS = -L$(BLDDIR)/src/cpp -lxmlrpc_cpp -L$(BLDDIR)/src -lxmlrpc_server \
++ $(CLIENT_LDLIBS)
+
+ OBJECTS = \
+ xml-rpc-api2cpp.o \
+@@ -46,14 +47,14 @@ xml-rpc-api2cpp: \
+ $(CXXLD) -o $@ $(LDFLAGS) $(OBJECTS) $(LDLIBS)
+
+ %.o:%.cpp
+- $(CXX) -c $(CXXFLAGS) $<
++ $(CXX) -c $(CXXFLAGS_ALL) $<
+
+ # This common.mk dependency makes sure the symlinks get built before
+ # this make file is used for anything.
+
+-$(SRCDIR)/common.mk: srcdir blddir
++$(SRCDIR)/tools/common.mk: srcdir blddir
+
+-include Makefile.depend
++include depend.mk
+
+ .PHONY: clean
+ clean: clean-common
+diff --git a/libs/xmlrpc-c/tools/xml-rpc-api2cpp/README b/libs/xmlrpc-c/tools/xml-rpc-api2cpp/README
+deleted file mode 100644
+index 4dff2a3..0000000
+--- a/libs/xmlrpc-c/tools/xml-rpc-api2cpp/README
++++ /dev/null
+@@ -1,6 +0,0 @@
+-This program generates C++ wrapper classes for XML-RPC servers. It talks
+-to xmlrpc-c and XML-RPC.NET servers without any problems, but tends to
+-choke when talking to mod_php-based servers. It looks like there is some
+-kind of pipelining problem.
+-
+-This code is an ongoing project. Please send feedback!
+diff --git a/libs/xmlrpc-c/tools/xml-rpc-api2txt b/libs/xmlrpc-c/tools/xml-rpc-api2txt
+deleted file mode 100755
+index e771463..0000000
+--- a/libs/xmlrpc-c/tools/xml-rpc-api2txt
++++ /dev/null
+@@ -1,147 +0,0 @@
+-#!/usr/bin/perl -w
+-#
+-# A handy little program to get the documentation of the available
+-# methods from an XML-RPC service (via XML-RPC Introspection) and
+-# print it out nicely formatted.
+-#
+-# (I wrote this in Perl because of all the spiffy report-generation
+-# features.)
+-#
+-# You'll need to get Ken MacLeod's Frontier::RPC2 module from CPAN to use
+-# this.
+-#
+-# Eric Kidd <eric.kidd@pobox.com>
+-#
+-# This script is part of xmlrpc-c, and may be used and distributed under
+-# the same terms as the rest of the package.
+-
+-use strict;
+-
+-# One global variable for use with Perl's format routines, and one for
+-# use inside an 'exec' block.
+-use vars qw/$helptext $method_list/;
+-
+-# Try to load our Perl XML-RPC bindings, but fail gracefully.
+-eval {
+- require Frontier::Client;
+-};
+-if ($@) {
+- print STDERR <<"EOD";
+-This script requires Ken MacLeod\'s Frontier::RPC2 module. You can get this
+-from CPAN or from his website at http://bitsko.slc.ut.us/~ken/xml-rpc/ .
+-
+-For installation instructions, see the XML-RPC HOWTO at:
+- http://www.linuxdoc.org/HOWTO/XML-RPC-HOWTO/index.html
+-
+-EOD
+- exit 1;
+-}
+-
+-# Parse our command-line arguments.
+-if (@ARGV != 1 || $ARGV[0] eq "--help") {
+- print STDERR "Usage: xml-rpc-api2txt serverURL\n";
+- exit 1;
+-}
+-
+-my $server = Frontier::Client->new(url => $ARGV[0]);
+-
+-# Try (very carefully) to get our a list of methods from the server.
+-local $method_list;
+-eval {
+- $method_list = $server->call('system.listMethods');
+-};
+-if ($@) {
+- print STDERR <<"EOD";
+-An error occurred while trying to talk to the XML-RPC server:
+-
+- $@
+-
+-This may have been caused by several things--the server might not support
+-introspection, it might not be an XML-RPC server, or your network might be
+-down. Try the following:
+-
+- xml-rpc-api2txt http://xmlrpc-c.sourceforge.net/api/sample.php
+-
+-EOD
+- exit 1;
+-}
+-
+-# Enter the methods into a hashtable.
+-my @methods = sort @$method_list;
+-my %method_table;
+-foreach my $method (@methods) {
+- $method_table{$method} = {};
+-}
+-
+-# Get more information for the hash table. Since we need to make lots and
+-# lots of very small XML-RPC calls, we'd like to use system.multicall to
+-# reduce the latency.
+-if (defined $method_table{'system.multicall'}) {
+-
+- # This is messy but fast. Everybody hates HTTP round-trip lag, right?
+- my @call;
+- foreach my $method (@methods) {
+- push @call, {methodName => 'system.methodSignature',
+- params => [$method]};
+- push @call, {methodName => 'system.methodHelp',
+- params => [$method]};
+- }
+- my @result = @{$server->call('system.multicall', \@call)};
+- for (my $i = 0; $i < @methods; $i++) {
+- my $method = $methods[$i];
+- $method_table{$method}->{'signatures'} = $result[2*$i]->[0];
+- $method_table{$method}->{'help'} = $result[2*$i+1]->[0];
+- }
+-} else {
+-
+- # This is easy but slow (especially over backbone links).
+- foreach my $method (@methods) {
+- my $signature = $server->call('system.methodSignature', $method);
+- my $help = $server->call('system.methodHelp', $method);
+- $method_table{$method}->{'signatures'} = $signature;
+- $method_table{$method}->{'help'} = $help;
+- }
+-}
+-
+-# Now, we need to dump the API.
+-print <<"EOD";
+-XML-RPC API for $ARGV[0]
+-
+-See http://www.linuxdoc.org/HOWTO/XML-RPC-HOWTO/index.html for instructions
+-on using XML-RPC with Perl, Python, Java, C, C++, PHP, etc.
+-EOD
+-foreach my $method (@methods) {
+- print "\n";
+-
+- # Print a synopsis of the function.
+- if ($method_table{$method}->{'signatures'} eq 'undef') {
+- # No documentation. Bad server. No biscuit.
+- print "unknown $method (...)\n";
+- } else {
+- for my $signature (@{$method_table{$method}->{'signatures'}}) {
+- my $return_type = shift @$signature;
+- my $arguments = join(", ", @$signature);
+- print "$return_type $method ($arguments)\n";
+- }
+- }
+- print "\n";
+-
+- my $help = $method_table{$method}->{'help'};
+- if ($help =~ /\n/) {
+- # Text has already been broken into lines by the server, so just
+- # indent it by two spaces and hope for the best.
+- my @lines = split(/\n/, $help);
+- my $help = " " . join("\n ", @lines);
+- print "$help\n";
+- } else {
+- # Print our help text in a nicely-wrapped fashion using Perl's
+- # formatting routines.
+- $helptext = $method_table{$method}->{'help'};
+- write;
+- }
+-}
+-
+-format STDOUT =
+- ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<~~
+- $helptext
+-.
+diff --git a/libs/xmlrpc-c/tools/xml-rpc-api2txt.1 b/libs/xmlrpc-c/tools/xml-rpc-api2txt.1
+deleted file mode 100644
+index a9e1ee3..0000000
+--- a/libs/xmlrpc-c/tools/xml-rpc-api2txt.1
++++ /dev/null
+@@ -1,47 +0,0 @@
+-.\" Hey, EMACS: -*- nroff -*-
+-.\" First parameter, NAME, should be all caps
+-.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+-.\" other parameters are allowed: see man(7), man(1)
+-.TH XML-RPC-API2TXT 1 "June 27, 2001"
+-.\" Please adjust this date whenever revising the manpage.
+-.\"
+-.\" Some roff macros, for reference:
+-.\" .nh disable hyphenation
+-.\" .hy enable hyphenation
+-.\" .ad l left justify
+-.\" .ad b justify to both left and right margins
+-.\" .nf disable filling
+-.\" .fi enable filling
+-.\" .br insert line break
+-.\" .sp <n> insert n+1 empty lines
+-.\" for manpage-specific macros, see man(7)
+-.SH NAME
+-xml-rpc-api2txt \- Print out a description of an XML-RPC API as text
+-.SH SYNOPSIS
+-.B xml-rpc-api2txt
+-\fIserver-url\fR
+-.SH DESCRIPTION
+-xml-rpc-api2txt queries an XML-RPC server using the XML-RPC
+-Instrospection API designed by Edd Dumbill. It then prints the
+-results to standard output in a nicely formatted form, suitable for
+-sending via e-mail.
+-.PP
+-You can find a list of supported XML-RPC server libraries (and patches
+-for many others) at \fBhttp://xmlrpc-c.sourceforge.net/hacks.php\fR.
+-.SH OPTIONS
+-.TP
+-.I server-url
+-The name of the server to query. Try
+-\fBhttp://xmlrpc-c.sourceforge.net/cgi-bin/interop.cgi\fR.
+-.SH BUGS
+-xml-rpc-api2txt assumes that method descriptions are ASCII text, not
+-HTML as specified in the standard. (In practice, both conventions are
+-often seen.)
+-.SH SEE ALSO
+-.BR xmlrpc-c (7),
+-.BR xml-rpc-api2cpp (1).
+-.PP
+-This program is part of xmlrpc-c.
+-.SH AUTHOR
+-This manual page was written by Eric Kidd <eric.kidd@pobox.com>.
+-It may be distributed under the same terms as the rest of xmlrpc-c.
+diff --git a/libs/xmlrpc-c/tools/xmlrpc/.cvsignore b/libs/xmlrpc-c/tools/xmlrpc/.cvsignore
+deleted file mode 100644
+index 73a3b1b..0000000
+--- a/libs/xmlrpc-c/tools/xmlrpc/.cvsignore
++++ /dev/null
+@@ -1 +0,0 @@
+-xmlrpc
+diff --git a/libs/xmlrpc-c/tools/xmlrpc/Makefile b/libs/xmlrpc-c/tools/xmlrpc/Makefile
+index c1f3b34..a8b3372 100644
+--- a/libs/xmlrpc-c/tools/xmlrpc/Makefile
++++ b/libs/xmlrpc-c/tools/xmlrpc/Makefile
+@@ -21,8 +21,6 @@ INCLUDES = \
+ -Isrcdir/include \
+ -Isrcdir/lib/util/include
+
+-CFLAGS = $(CFLAGS_COMMON) $(INCLUDES) $(CFLAGS_PERSONAL) $(CADD)
+-
+ LDFLAGS = $(LADD)
+
+ all: xmlrpc
+@@ -36,7 +34,7 @@ UTIL_OBJS = \
+
+ UTILS = $(UTIL_OBJS:%=$(UTIL_DIR)/%)
+
+-DUMPVALUE = srcdir/tools/lib/dumpvalue.o
++DUMPVALUE = blddir/tools/lib/dumpvalue.o
+
+ # Can we just use $(LIBS) in the link?
+
+@@ -48,14 +46,14 @@ xmlrpc: $(XMLRPC_OBJS) $(LIBS) $(UTILS)
+ $(CCLD) -o $@ $(LDFLAGS) $(XMLRPC_OBJS) $(UTILS) $(CLIENT_LDLIBS)
+
+ %.o:%.c $(BLDDIR)/include/xmlrpc-c/config.h
+- $(CC) -c $(CFLAGS) $<
++ $(CC) -c $(CFLAGS_ALL) $<
+
+ # This common.mk dependency makes sure the symlinks get built before
+ # this make file is used for anything.
+
+ $(SRCDIR)/tools/common.mk: srcdir blddir
+
+-include Makefile.depend
++include depend.mk
+
+ .PHONY: dep
+ dep: dep-common
+diff --git a/libs/xmlrpc-c/tools/xmlrpc/xmlrpc.c b/libs/xmlrpc-c/tools/xmlrpc/xmlrpc.c
+index c768b7b..06da3e5 100644
+--- a/libs/xmlrpc-c/tools/xmlrpc/xmlrpc.c
++++ b/libs/xmlrpc-c/tools/xmlrpc/xmlrpc.c
+@@ -35,7 +35,7 @@
+
+ */
+
+-//#define _GNU_SOURCE
++#define _XOPEN_SOURCE 600 /* Make sure strdup() is in <string.h> */
+
+ #include <stdlib.h>
+ #include <stdio.h>
+@@ -55,6 +55,7 @@
+
+ #include "xmlrpc-c/base.h"
+ #include "xmlrpc-c/client.h"
++#include "xmlrpc-c/string_int.h"
+
+ #define NAME "xmlrpc command line program"
+ #define VERSION "1.0"
+@@ -260,6 +261,33 @@ buildString(xmlrpc_env * const envP,
+
+
+ static void
++interpretHex(xmlrpc_env * const envP,
++ const char * const valueString,
++ size_t const valueStringSize,
++ unsigned char * const byteString) {
++
++ size_t bsCursor;
++ size_t strCursor;
++
++ for (strCursor = 0, bsCursor = 0;
++ strCursor < valueStringSize && !envP->fault_occurred;
++ ) {
++ int rc;
++
++ rc = sscanf(&valueString[strCursor], "%2hhx",
++ &byteString[bsCursor++]);
++
++ if (rc != 1)
++ xmlrpc_faultf(envP, "Invalid hex data '%s'",
++ &valueString[strCursor]);
++ else
++ strCursor += 2;
++ }
++}
++
++
++
++static void
+ buildBytestring(xmlrpc_env * const envP,
+ const char * const valueString,
+ xmlrpc_value ** const paramPP) {
+@@ -269,33 +297,25 @@ buildBytestring(xmlrpc_env * const envP,
+ if (valueStringSize / 2 * 2 != valueStringSize)
+ xmlrpc_faultf(envP, "Hexadecimal text is not an even "
+ "number of characters (it is %u characters)",
+- strlen(valueString));
++ (unsigned)strlen(valueString));
+ else {
+ size_t const byteStringSize = strlen(valueString)/2;
+
+- unsigned char byteString[byteStringSize];
+- size_t bsCursor;
+- size_t strCursor;
+-
+- strCursor = 0;
+- bsCursor = 0;
++ unsigned char * byteString;
+
+- while (strCursor < valueStringSize && !envP->fault_occurred) {
+- int rc;
++ MALLOCARRAY(byteString, byteStringSize);
+
+- assert(bsCursor < byteStringSize);
++ if (byteString == NULL)
++ xmlrpc_faultf(envP, "Failed to allocate %u-byte buffer",
++ (unsigned)byteStringSize);
++ else {
++ interpretHex(envP, valueString, valueStringSize, byteString);
+
+- rc = sscanf(&valueString[strCursor], "%2hhx",
+- &byteString[bsCursor++]);
++ if (!envP->fault_occurred)
++ *paramPP = xmlrpc_base64_new(envP, byteStringSize, byteString);
+
+- if (rc != 1)
+- xmlrpc_faultf(envP, "Invalid hex data '%s'",
+- &valueString[strCursor]);
+- else
+- strCursor += 2;
++ free(byteString);
+ }
+- if (!envP->fault_occurred)
+- *paramPP = xmlrpc_base64_new(envP, byteStringSize, byteString);
+ }
+ }
+
+@@ -409,19 +429,19 @@ computeParameter(xmlrpc_env * const envP,
+ const char * const paramArg,
+ xmlrpc_value ** const paramPP) {
+
+- if (strncmp(paramArg, "s/", 2) == 0)
++ if (xmlrpc_strneq(paramArg, "s/", 2))
+ buildString(envP, ¶mArg[2], paramPP);
+- else if (strncmp(paramArg, "h/", 2) == 0)
++ else if (xmlrpc_strneq(paramArg, "h/", 2))
+ buildBytestring(envP, ¶mArg[2], paramPP);
+- else if (strncmp(paramArg, "i/", 2) == 0)
++ else if (xmlrpc_strneq(paramArg, "i/", 2))
+ buildInt(envP, ¶mArg[2], paramPP);
+- else if (strncmp(paramArg, "I/", 2) == 0)
++ else if (xmlrpc_strneq(paramArg, "I/", 2))
+ buildI8(envP, ¶mArg[2], paramPP);
+- else if (strncmp(paramArg, "d/", 2) == 0)
++ else if (xmlrpc_strneq(paramArg, "d/", 2))
+ buildDouble(envP, ¶mArg[2], paramPP);
+- else if (strncmp(paramArg, "b/", 2) == 0)
++ else if (xmlrpc_strneq(paramArg, "b/", 2))
+ buildBool(envP, ¶mArg[2], paramPP);
+- else if (strncmp(paramArg, "n/", 2) == 0)
++ else if (xmlrpc_strneq(paramArg, "n/", 2))
+ buildNil(envP, ¶mArg[2], paramPP);
+ else {
+ /* It's not in normal type/value format, so we take it to be
+diff --git a/libs/xmlrpc-c/tools/xmlrpc/xmlrpc.html b/libs/xmlrpc-c/tools/xmlrpc/xmlrpc.html
+index 07119c8..55315d5 100644
+--- a/libs/xmlrpc-c/tools/xmlrpc/xmlrpc.html
++++ b/libs/xmlrpc-c/tools/xmlrpc/xmlrpc.html
+@@ -34,7 +34,7 @@ http://gggeek.damacom.it/debugger/</a>
+
+ <pre>
+ <tt>
+- $ xmlrpc http://xmlrpc.server.net/~bryanh echostring \
++ $ xmlrpc http://xmlrpc.example.com/~bryanh echostring \
+ "s/This is a string"
+ Result:
+ String: This is a string
+@@ -44,7 +44,7 @@ http://gggeek.damacom.it/debugger/</a>
+
+ <pre>
+ <tt>
+- $ xmlrpc http://xmlrpc.server.net/~bryanh echostring \
++ $ xmlrpc http://xmlrpc.example.com/~bryanh echostring \
+ "This is a string in shortcut syntax"
+ Result:
+ String: This is a string in shortcut syntax
+@@ -53,7 +53,7 @@ http://gggeek.damacom.it/debugger/</a>
+ </pre>
+ <pre>
+ <tt>
+- $ xmlrpc http://xmlrpc.server.net sample.add i/3 i/5 \
++ $ xmlrpc http://xmlrpc.example.com sample.add i/3 i/5 \
+ transport=curl -curlinterface=eth1 -username=bryanh -password=passw0rd
+ Result:
+ Integer: 8
+diff --git a/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/Makefile b/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/Makefile
+index d6f50a6..fec3cb8 100644
+--- a/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/Makefile
++++ b/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/Makefile
+@@ -14,9 +14,11 @@ PROGRAMS_TO_INSTALL = xmlrpc_cpp_proxy
+
+ include $(SRCDIR)/tools/common.mk
+
+-INCLUDES = -I$(BLDDIR) -I$(BLDDIR)/include -I$(SRCDIR)/include
++# <sstream.h> in Glibc 2.2 has a bug that results in inlining failure,
++# so we disable warnings for that:
++CFLAGS_LOCAL = -Wno-inline
+
+-CXXFLAGS = $(INCLUDES) $(CXXFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
++INCLUDES = -I$(BLDDIR) -I$(BLDDIR)/include -Isrcdir/include
+
+ LDFLAGS = $(LADD)
+
+@@ -43,14 +45,14 @@ xmlrpc_cpp_proxy: $(OBJECTS) $(LIBS)
+ $(CXXLD) -o $@ $(LDFLAGS) $(OBJECTS) $(LDLIBS) $(LADD)
+
+ %.o:%.cpp $(BLDDIR)/include/xmlrpc-c/config.h
+- $(CXX) -c $(CXXFLAGS) $<
++ $(CXX) -c $(CXXFLAGS_ALL) $<
+
+ # This common.mk dependency makes sure the symlinks get built before
+ # this make file is used for anything.
+
+ $(SRCDIR)/tools/common.mk: srcdir blddir
+
+-include Makefile.depend
++include depend.mk
+
+ .PHONY: clean
+ clean: clean-common
+diff --git a/libs/xmlrpc-c/tools/xmlrpc_pstream/Makefile b/libs/xmlrpc-c/tools/xmlrpc_pstream/Makefile
+index 2fb24fb..9a538fc 100644
+--- a/libs/xmlrpc-c/tools/xmlrpc_pstream/Makefile
++++ b/libs/xmlrpc-c/tools/xmlrpc_pstream/Makefile
+@@ -23,15 +23,13 @@ INCLUDES = \
+ -Iblddir/include \
+ -Isrcdir/include \
+
+-CXXFLAGS = $(INCLUDES) $(CXXFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
+-
+ LDFLAGS = $(LADD)
+
+ all: xmlrpc_pstream
+
+ OBJECTS = \
+ xmlrpc_pstream.o \
+- $(TOOLSDIR)/lib/dumpvalue.o \
++ blddir/tools/lib/dumpvalue.o \
+
+ LIBS = \
+ $(LIBXMLRPC_CLIENTPP) \
+@@ -57,14 +55,14 @@ xmlrpc_pstream: $(OBJECTS) $(LIBS) $(UTILS)
+ $(CXXLD) -o $@ $(LDFLAGS) $(OBJECTS) $(UTILS) $(LDLIBS) $(LADD)
+
+ %.o:%.cpp blddir/include/xmlrpc-c/config.h
+- $(CXX) -c $(CXXFLAGS) $<
++ $(CXX) -c $(CXXFLAGS_ALL) $<
+
+ # This common.mk dependency makes sure the symlinks get built before
+ # this make file is used for anything.
+
+-$(SRCDIR)/common.mk: srcdir blddir
++$(SRCDIR)/tools/common.mk: srcdir blddir
+
+-include Makefile.depend
++include depend.mk
+
+ .PHONY: clean
+ clean: clean-common
+diff --git a/libs/xmlrpc-c/tools/xmlrpc_pstream/xmlrpc_pstream.cpp b/libs/xmlrpc-c/tools/xmlrpc_pstream/xmlrpc_pstream.cpp
+index 399e1b3..1417708 100644
+--- a/libs/xmlrpc-c/tools/xmlrpc_pstream/xmlrpc_pstream.cpp
++++ b/libs/xmlrpc-c/tools/xmlrpc_pstream/xmlrpc_pstream.cpp
+@@ -3,9 +3,10 @@
+ #include <string>
+ #include <vector>
+ #include <list>
+-#include <string.h>
+-#include <stdio.h>
+-#include <stdlib.h>
++#include <cstring>
++#include <cstdio>
++#include <cstdlib>
++#include <iostream>
+ #include <unistd.h>
+ #include <signal.h>
+ #include <readline/readline.h>
+diff --git a/libs/xmlrpc-c/tools/xmlrpc_pstream/xmlrpc_pstream.html b/libs/xmlrpc-c/tools/xmlrpc_pstream/xmlrpc_pstream.html
+index ca4d859..5604d2b 100644
+--- a/libs/xmlrpc-c/tools/xmlrpc_pstream/xmlrpc_pstream.html
++++ b/libs/xmlrpc-c/tools/xmlrpc_pstream/xmlrpc_pstream.html
+@@ -121,7 +121,7 @@ You may specify no parameters if you like.
+ a slash. Example: <b>i/5</b>. Here, the "i" signifies an
+ integer data type. "5" is the value.
+
+-<p><b>xmlrpc</b> is capable of only a subset of the
++<p><b>xmlrpc_pstream</b> is capable of only a subset of the
+ possible XML-RPC types, as follows by prefix:
+
+ <dl>
+diff --git a/libs/xmlrpc-c/tools/xmlrpc_transport/.cvsignore b/libs/xmlrpc-c/tools/xmlrpc_transport/.cvsignore
+deleted file mode 100644
+index bff9884..0000000
+--- a/libs/xmlrpc-c/tools/xmlrpc_transport/.cvsignore
++++ /dev/null
+@@ -1 +0,0 @@
+-xmlrpc_transport
+diff --git a/libs/xmlrpc-c/tools/xmlrpc_transport/Makefile b/libs/xmlrpc-c/tools/xmlrpc_transport/Makefile
+index 9941eb1..d9eefcb 100644
+--- a/libs/xmlrpc-c/tools/xmlrpc_transport/Makefile
++++ b/libs/xmlrpc-c/tools/xmlrpc_transport/Makefile
+@@ -17,10 +17,8 @@ include $(SRCDIR)/tools/common.mk
+ INCLUDES = \
+ -I$(BLDDIR) \
+ -I$(BLDDIR)/include \
+- -I$(SRCDIR)/include \
+- -I$(SRCDIR)/lib/util/include
+-
+-CFLAGS = $(CFLAGS_COMMON) $(INCLUDES) $(CFLAGS_PERSONAL) $(CADD)
++ -Isrcdir/include \
++ -Isrcdir/lib/util/include
+
+ LDFLAGS = $(LADD)
+
+@@ -35,27 +33,20 @@ UTIL_OBJS = \
+
+ UTILS = $(UTIL_OBJS:%=$(UTIL_DIR)/%)
+
+-# These are the Libtool .la files. We use them only for make dependencies.
+-# We'd like to use these in the link rule, by using libtool --link, but
+-# Libtool adds -l options to the link to cover the dependencies that are
+-# recorded inside the shared libraries. And it doesn't add the necessary
+-# -L options (it can't), so we end up with a messy mixture of the two
+-# forms of specifying libraries.
+-
+ LIBS = $(LIBXMLRPC_CLIENT) $(LIBXMLRPC) $(LIBXMLRPC_XML) $(LIBXMLRPC_UTIL)
+
+ xmlrpc_transport:%:%.o $(LIBS) $(UTILS)
+ $(CCLD) -o $@ $(LDFLAGS) $< $(CLIENT_LDLIBS) $(UTILS)
+
+ %.o:%.c
+- $(CC) -c $(CFLAGS) $<
++ $(CC) -c $(CFLAGS_ALL) $<
+
+ # This common.mk dependency makes sure the symlinks get built before
+ # this make file is used for anything.
+
+ $(SRCDIR)/tools/common.mk: srcdir blddir
+
+-include Makefile.depend
++include depend.mk
+
+ .PHONY: dep
+ dep: dep-common
+diff --git a/libs/xmlrpc-c/tools/xmlrpc_transport/xmlrpc_transport b/libs/xmlrpc-c/tools/xmlrpc_transport/xmlrpc_transport
+deleted file mode 100755
+index e002ec0..0000000
+--- a/libs/xmlrpc-c/tools/xmlrpc_transport/xmlrpc_transport
++++ /dev/null
+@@ -1,120 +0,0 @@
+-#! /bin/sh
+-
+-# xmlrpc_transport - temporary wrapper script for .libs/xmlrpc_transport
+-# Generated by ltmain.sh - GNU libtool 1.3.4 (1.385.2.196 1999/12/07 21:47:57)
+-#
+-# The xmlrpc_transport program cannot be directly executed until all the libtool
+-# libraries that it depends on are installed.
+-#
+-# This wrapper script should never be moved out of the build directory.
+-# If it is, it will not operate correctly.
+-
+-# Sed substitution that helps us do robust quoting. It backslashifies
+-# metacharacters that are still active within double-quoted strings.
+-Xsed='sed -e 1s/^X//'
+-sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+-
+-# The HP-UX ksh and POSIX shell print the target directory to stdout
+-# if CDPATH is set.
+-if test "${CDPATH+set}" = set; then CDPATH=:; export CDPATH; fi
+-
+-relink_command="gcc -o \$progdir/\$file -L /usr/link/w3c-libwww -lwwwxml -lxmltok -lxmlparse -lwwwzip -lwwwinit -lwwwapp -lwwwhtml -lwwwtelnet -lwwwnews -lwwwhttp -lwwwmime -lwwwgopher -lwwwftp -lwwwfile -lwwwdir -lwwwcache -lwwwstream -lwwwmux -lwwwtrans -lwwwcore -lwwwutils -lmd5 -ldl -lz -L /subsys/openssl/link -lssl -lcrypto -L/subsys/curl/lib -lcurl -lssl -lcrypto -ldl -lz -lpthread xmlrpc_transport.o /mp/hdc1/xmlrpc-c-1.03.14/tools/xmlrpc_transport/../../src/.libs/libxmlrpc_client.so /mp/hdc1/xmlrpc-c-1.03.14/tools/xmlrpc_transport/../../src/.libs/libxmlrpc.so /mp/hdc1/xmlrpc-c-1.03.14/tools/xmlrpc_transport/../../lib/expat/xmlparse/.libs/libxmlrpc_xmlparse.so /mp/hdc1/xmlrpc-c-1.03.14/tools/xmlrpc_transport/../../lib/expat/xmltok/.libs/libxmlrpc_xmltok.so /mp/hdc1/xmlrpc-c-1.03.14/tools/xmlrpc_transport/../../lib/util/cmdline_parser.o /mp/hdc1/xmlrpc-c-1.03.14/tools/xmlrpc_transport/../../lib/util/getoptx.o -Wl,--rpath -Wl,/mp/hdc1/xmlrpc-c-1.03.14/src/.libs -Wl,--rpath -Wl,/mp/hdc1/xmlrpc-c-1.03.14/lib/expat/xmlparse/.libs -Wl,--rpath -Wl,/mp/hdc1/xmlrpc-c-1.03.14/lib/expat/xmltok/.libs -Wl,--rpath -Wl,/usr/local/lib"
+-
+-# This environment variable determines our operation mode.
+-if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+- # install mode needs the following variable:
+- link_against_libtool_libs=' /mp/hdc1/xmlrpc-c-1.03.14/tools/xmlrpc_transport/../../src/libxmlrpc_client.la /mp/hdc1/xmlrpc-c-1.03.14/tools/xmlrpc_transport/../../src/libxmlrpc.la /mp/hdc1/xmlrpc-c-1.03.14/tools/xmlrpc_transport/../../lib/expat/xmlparse/libxmlrpc_xmlparse.la /mp/hdc1/xmlrpc-c-1.03.14/tools/xmlrpc_transport/../../lib/expat/xmltok/libxmlrpc_xmltok.la'
+-else
+- # When we are sourced in execute mode, $file and $echo are already set.
+- if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+- echo="/syspathbasic/echo"
+- file="$0"
+- # Make sure echo works.
+- if test "X$1" = X--no-reexec; then
+- # Discard the --no-reexec flag, and continue.
+- shift
+- elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+- # Yippee, $echo works!
+- :
+- else
+- # Restart under the correct shell, and then maybe $echo will work.
+- exec /bin/sh "$0" --no-reexec ${1+"$@"}
+- fi
+- fi
+-
+- # Find the directory that this script lives in.
+- thisdir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+- test "x$thisdir" = "x$file" && thisdir=.
+-
+- # Follow symbolic links until we get to the real thisdir.
+- file=`ls -ld "$file" | sed -n 's/.*-> //p'`
+- while test -n "$file"; do
+- destdir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+-
+- # If there was a directory component, then change thisdir.
+- if test "x$destdir" != "x$file"; then
+- case "$destdir" in
+- [\/]* | [A-Za-z]:[\/]*) thisdir="$destdir" ;;
+- *) thisdir="$thisdir/$destdir" ;;
+- esac
+- fi
+-
+- file=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+- file=`ls -ld "$thisdir/$file" | sed -n 's/.*-> //p'`
+- done
+-
+- # Try to get the absolute directory name.
+- absdir=`cd "$thisdir" && pwd`
+- test -n "$absdir" && thisdir="$absdir"
+-
+- program=lt-'xmlrpc_transport'
+- progdir="$thisdir/.libs"
+-
+- if test ! -f "$progdir/$program" || \
+- { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | sed 1q`; \
+- test "X$file" != "X$progdir/$program"; }; then
+-
+- file="$$-$program"
+-
+- if test ! -d "$progdir"; then
+- mkdir "$progdir"
+- else
+- rm -f "$progdir/$file"
+- fi
+-
+- # relink executable if necessary
+- if test -n "$relink_command"; then
+- if (cd "$thisdir" && eval $relink_command); then :
+- else
+- rm -f "$progdir/$file"
+- exit 1
+- fi
+- fi
+-
+- mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+- { rm -f "$progdir/$program";
+- mv -f "$progdir/$file" "$progdir/$program"; }
+- rm -f "$progdir/$file"
+- fi
+-
+- if test -f "$progdir/$program"; then
+- if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+- # Run the actual program with our arguments.
+-
+- # Export the path to the program.
+- PATH="$progdir:$PATH"
+- export PATH
+-
+- exec $program ${1+"$@"}
+-
+- $echo "$0: cannot exec $program ${1+"$@"}"
+- exit 1
+- fi
+- else
+- # The program doesn't exist.
+- $echo "$0: error: $progdir/$program does not exist" 1>&2
+- $echo "This script is just a wrapper for $program." 1>&2
+- echo "See the libtool documentation for more information." 1>&2
+- exit 1
+- fi
+-fi
+diff --git a/libs/xmlrpc-c/tools/xmlrpc_transport/xmlrpc_transport.c b/libs/xmlrpc-c/tools/xmlrpc_transport/xmlrpc_transport.c
+index 0fe671d..39697b4 100644
+--- a/libs/xmlrpc-c/tools/xmlrpc_transport/xmlrpc_transport.c
++++ b/libs/xmlrpc-c/tools/xmlrpc_transport/xmlrpc_transport.c
+@@ -2,7 +2,7 @@
+ an XML-RPC call.
+ */
+
+-//#define _GNU_SOURCE
++#define _XOPEN_SOURCE 600 /* Make sure strdup() is in <string.h> */
+
+ #include <stdlib.h>
+ #include <stdio.h>
+diff --git a/libs/xmlrpc-c/transport_config.make b/libs/xmlrpc-c/transport_config.make
+deleted file mode 100644
+index 5791af6..0000000
+--- a/libs/xmlrpc-c/transport_config.make
++++ /dev/null
+@@ -1,39 +0,0 @@
+-# -*-makefile-*- <-- an Emacs control
+-
+-
+-# The make variables herein come from config.mk, which is included
+-# by the make file that includes us.
+-
+-transport_config.h: $(BLDDIR)/config.mk
+- rm -f $@
+- echo '/* This file was generated by a make rule */' >>$@
+-ifeq ($(MUST_BUILD_WININET_CLIENT),yes)
+- echo '#define MUST_BUILD_WININET_CLIENT 1' >>$@
+-else
+- echo '#define MUST_BUILD_WININET_CLIENT 0' >>$@
+-endif
+-ifeq ($(MUST_BUILD_CURL_CLIENT),yes)
+- echo '#define MUST_BUILD_CURL_CLIENT 1' >>$@
+-else
+- echo '#define MUST_BUILD_CURL_CLIENT 0' >>$@
+-endif
+-ifeq ($(MUST_BUILD_LIBWWW_CLIENT),yes)
+- echo '#define MUST_BUILD_LIBWWW_CLIENT 1' >>$@
+-else
+- echo '#define MUST_BUILD_LIBWWW_CLIENT 0' >>$@
+-endif
+- echo "static const char * const XMLRPC_DEFAULT_TRANSPORT =" >>$@
+-ifeq ($(MUST_BUILD_LIBWWW_CLIENT),yes)
+- echo '"libwww";' >>$@
+-else
+- ifeq ($(MUST_BUILD_CURL_CLIENT),yes)
+- echo '"curl";' >>$@
+- else
+- ifeq ($(MUST_BUILD_WININET_CLIENT),yes)
+- echo '"wininet";' >>$@
+- else
+- @echo 'ERROR: no client XML transport configured'; rm $@; false
+- endif
+- endif
+-endif
+-
+diff --git a/libs/xmlrpc-c/unix-common.make b/libs/xmlrpc-c/unix-common.make
+deleted file mode 100644
+index b684c70..0000000
+--- a/libs/xmlrpc-c/unix-common.make
++++ /dev/null
+@@ -1,79 +0,0 @@
+-# -*-makefile-*- <-- an Emacs control
+-
+-# The including make file must define these make variables:
+-#
+-# SHARED_LIBS_TO_BUILD: List of the shared libraries that need to be
+-# built -- just the basic library names. E.g. "libfoo libbar"
+-#
+-# SHARED_LIBS_TO_INSTALL: List of the shared libraries that need to be
+-# installed -- just the basic library names. E.g. "libfoo libbar"
+-#
+-# SHLIB_SUFFIX: Shared library filename suffix, e.g. "so".
+-#
+-# MAJ: Library major version number, e.g. "3" in file name "libfoo.3.1"
+-#
+-# MIN: Library minor version number, e.g. "1" in file name "libfoo.3.1"
+-#
+-# LDFLAGS_SHLIB: linker (Ld) flags needed to link object files together into
+-# a shared library. May use $(SONAME) for the soname of the library.
+-# Include -lc if appropriate.
+-#
+-# LADD: Additional linker flags (normally set on the make command line).
+-#
+-# INSTALL_DATA: beginning of shell command to install a library file.
+-#
+-# DESTDIR: main installation directory
+-#
+-# LIBINST_DIR: directory in which to install libraries, relative to DESTDIR.
+-#
+-# LN_S: beginning of shell command to make symbolic link (e.g. "ln -s").
+-#
+-# CXXLD: beginning of shell command to link, e.g. "g++".
+-
+-# This make file defines these make variables that the including make file
+-# can use:
+-#
+-# SHLIB_CMD: a command to build a shared library for C linkage
+-# You can use this in a rule to build a shared library
+-# SHLIBPP_CMD: Same, but for C++ linkage
+-
+-# Including make file must contain a rule to build each library file
+-# (e.g. libfoo.3.1)
+-
+-# This make file provides these rules:
+-#
+-# install-shared-libraries: install all shared libraries and the necessary
+-# symbolic links.
+-
+-# SONAME is to be referenced by $(LDFLAGS_SHLIB) in $(SHLIB_RULE)
+-# SONAME is the name of the library file being built, with the minor
+-# version number cut off. E.g. if we're building libfoo.so.1.2, SONAME
+-# is libfoo.so.1 .
+-SONAME = $(@:%.$(MIN)=%)
+-
+-SHLIB_CMD = $(CCLD) $(LDFLAGS_SHLIB) -o $@ $^ $(LADD)
+-
+-SHLIB_LE_TARGETS = $(call shliblefn, $(SHARED_LIBS_TO_BUILD))
+-
+-$(SHLIB_LE_TARGETS):%:%.$(MAJ).$(MIN)
+- rm -f $@
+- $(LN_S) $< $@
+-
+-.PHONY: $(SHLIB_INSTALL_TARGETS)
+-.PHONY: install-shared-libraries
+-
+-SHLIB_INSTALL_TARGETS = $(SHARED_LIBS_TO_INSTALL:%=%/install)
+-
+-#SHLIB_INSTALL_TARGETS is like "libfoo/install libbar/install"
+-
+-install-shared-libraries: $(SHLIB_INSTALL_TARGETS)
+-
+-$(SHLIB_INSTALL_TARGETS):%/install:%.$(SHLIB_SUFFIX).$(MAJ).$(MIN)
+-# $< is a library file name, e.g. libfoo.so.3.1 .
+- $(INSTALL_SHLIB) $< $(DESTDIR)$(LIBINST_DIR)/$<
+- cd $(DESTDIR)$(LIBINST_DIR); \
+- rm -f $(<:%.$(MIN)=%); \
+- $(LN_S) $< $(<:%.$(MIN)=%)
+- cd $(DESTDIR)$(LIBINST_DIR); \
+- rm -f $(<:%.$(MAJ).$(MIN)=%); \
+- $(LN_S) $(<:%.$(MIN)=%) $(<:%.$(MAJ).$(MIN)=%)
+diff --git a/libs/xmlrpc-c/version.h b/libs/xmlrpc-c/version.h
+index 18e70f2..45625f5 100644
+--- a/libs/xmlrpc-c/version.h
++++ b/libs/xmlrpc-c/version.h
+@@ -1,8 +1,8 @@
+-#ifndef XMLRPC_C_VERSION_INCLUDED
+-#define XMLRPC_C_VERSION_INCLUDED
+-/* generated by Windows/mkvers.bat on Fri 05/23/2008 ... */
+-#define XMLRPC_C_VERSION "Xmlrpc-c 1.14.99"
+-#define XMLRPC_VERSION_MAJOR 1
+-#define XMLRPC_VERSION_MINOR 14
+-#define XMLRPC_VERSION_POINT 99
+-#endif
++#ifndef XMLRPC_C_VERSION_INCLUDED \r
++#define XMLRPC_C_VERSION_INCLUDED \r
++/* generated by Windows/mkvers.bat on Sun 09/23/2012 ... */ \r
++#define XMLRPC_C_VERSION "1.26.0" \r
++#define XMLRPC_VERSION_MAJOR 1 \r
++#define XMLRPC_VERSION_MINOR 26 \r
++#define XMLRPC_VERSION_POINT 0 \r
++#endif \r
+diff --git a/libs/xmlrpc-c/xmlrpc-c-config.in b/libs/xmlrpc-c/xmlrpc-c-config.in
+deleted file mode 100644
+index 2095b5f..0000000
+--- a/libs/xmlrpc-c/xmlrpc-c-config.in
++++ /dev/null
+@@ -1,180 +0,0 @@
+-#!/bin/sh
+-# Stolen from rep-config and adapted for use with xmlrpc-c.
+-# Other bits stolen from gnome-config & automake output.
+-
+-prefix=@prefix@
+-exec_prefix=@exec_prefix@
+-
+-bindir=@bindir@
+-sbindir=@sbindir@
+-libexecdir=@libexecdir@
+-datadir=@datadir@
+-sysconfdir=@sysconfdir@
+-sharedstatedir=@sharedstatedir@
+-localstatedir=@localstatedir@
+-libdir=@libdir@
+-infodir=@infodir@
+-mandir=@mandir@
+-includedir=@includedir@
+-
+-pkgdatadir=$datadir/@PACKAGE@
+-pkglibdir=$libdir/@PACKAGE@
+-pkgincludedir=$includedir/@PACKAGE@
+-
+-ENABLE_LIBXML2_BACKEND="@ENABLE_LIBXML2_BACKEND@"
+-MUST_BUILD_CURL_CLIENT="@MUST_BUILD_CURL_CLIENT@"
+-MUST_BUILD_WININET_CLIENT="@MUST_BUILD_WININET_CLIENT@"
+-MUST_BUILD_LIBWWW_CLIENT="@MUST_BUILD_LIBWWW_CLIENT@"
+-
+-usage="Usage: xmlrpc-c-config <feature> ... <option> ...
+-
+-The features are:
+- c++ legacy C++ wrapper API
+- c++2 modern C++ API
+- client client functions
+- cgi-server CGI-based server functions
+- abyss-server ABYSS-based server functions
+-
+-Options are:
+- --version The version number of the package
+- --features List all features (aka modules) currently installed
+- --cflags C compiler flags to use when '#include'ing package headers
+- --libs Libraries and flags to use when linking programs normally
+- --ldadd Libraries to use with automake
+- --ldflags Flags to use with automake & libtool
+- --prefix The prefix under which the package was installed
+- --exec-prefix The executable prefix under which the package was installed
+- --*dir The various directories under which the package was installed"
+-
+-if test $# -eq 0; then
+- echo "${usage}" 1>&2
+- exit 1
+-fi
+-
+-if test "${ENABLE_LIBXML2_BACKEND}" = "yes"; then
+- LIBXML="@LIBXML2_LIBS@"
+-else
+- LIBXML="-lxmlrpc_xmlparse -lxmlrpc_xmltok"
+-fi
+-
+-needCpp=no
+-
+-the_libdirs="-L@libdir@"
+-the_libs="-lxmlrpc ${LIBXML}"
+-the_rpath=
+-the_wl_rpath=
+-cpp_libs=
+-
+-while test $# -gt 0; do
+- case $1 in
+- c++)
+- the_libs="-lxmlrpc_cpp $the_libs"
+-
+- # Unfortunately, there is just one legacy CPP library for
+- # everything, and it needs all the C libraries -- base, client,
+- # and server. So all legacy C++ programs get linked with client
+- # and server libraries, whether they need them or not.
+-
+- the_libs="-lxmlrpc_server_abyss $the_libs"
+- the_libs="-lxmlrpc_server $the_libs"
+- the_libs="-lxmlrpc_client $the_libs"
+- ;;
+- c++2)
+- needCpp=yes
+- the_libs="-lxmlrpc++ $the_libs"
+- ;;
+- cgi-server)
+- the_libs="-lxmlrpc_server $the_libs"
+- the_libs="-lxmlrpc_server_cgi $the_libs"
+- ;;
+- abyss-server)
+- the_libs="@LIBABYSS_LDADD@ $the_libs"
+- the_libs="-lxmlrpc_abyss $the_libs"
+- the_libs="-lxmlrpc_server $the_libs"
+- the_libs="-lxmlrpc_server_abyss $the_libs"
+- if test "${needCpp}" = "yes"; then
+- the_libs="-lxmlrpc_server++ $the_libs"
+- the_libs="-lxmlrpc_server_abyss++ $the_libs"
+- fi
+- ;;
+- client|libwww-client)
+- # libwww-client is for backward compatibility
+- the_libs="-lxmlrpc_client $the_libs"
+-
+- if test "${MUST_BUILD_WININET_CLIENT}" = "yes"; then
+- the_libs="@WININET_LDADD@ $the_libs"
+- the_rpath="@WININET_RPATH@ $the_rpath"
+- the_wl_rpath="@WININET_WL_RPATH@ $the_wl_rpath"
+- fi
+- if test "${MUST_BUILD_CURL_CLIENT}" = "yes"; then
+- the_libs="@CURL_LDADD@ -lpthread $the_libs"
+- the_rpath="@CURL_RPATH@ $the_rpath"
+- the_wl_rpath="@CURL_WL_RPATH@ $the_wl_rpath"
+- fi
+- if test "${MUST_BUILD_LIBWWW_CLIENT}" = "yes"; then
+- the_libs="@LIBWWW_LDADD@ $the_libs"
+- the_rpath="@LIBWWW_RPATH@ $the_rpath"
+- the_wl_rpath="@LIBWWW_WL_RPATH@ $the_wl_rpath"
+- fi
+- if test "${needCpp}" = "yes"; then
+- the_libs="-lxmlrpc_client++ $the_libs"
+- fi
+- ;;
+- --version)
+- echo "@VERSION@"
+- exit 0
+- ;;
+- --modules)
+- echo "@FEATURE_LIST@"
+- exit 0
+- ;;
+- --features)
+- echo "@FEATURE_LIST@"
+- exit 0
+- ;;
+- --cflags)
+- echo "-I@includedir@"
+- exit 0
+- ;;
+- --libs)
+- echo "$the_libdirs $the_libs $the_wl_rpath"
+- exit 0
+- ;;
+- --ldadd)
+- echo "$the_libdirs $the_libs"
+- exit 0
+- ;;
+- --ldflags)
+- echo "$the_rpath"
+- exit 0
+- ;;
+- --prefix)
+- echo "@prefix@"
+- exit 0
+- ;;
+- --exec-prefix)
+- echo "@exec_prefix@"
+- exit 0
+- ;;
+- --*dir)
+- # Swiped from gnome-config.
+- dirname=\$`echo $1 | sed -e 's,^--,,'`
+- dirname=`eval echo $dirname`
+- test -z "$dirname" && exit 1
+- echo $dirname
+- exit 0
+- ;;
+- --help)
+- echo "${usage}" 1>&2
+- exit 0
+- ;;
+- *)
+- echo "${usage}" 1>&2
+- exit 1
+- ;;
+- esac
+- shift
+-done
+-
+-echo "${usage}" 1>&2
+-exit 1
+diff --git a/libs/xmlrpc-c/xmlrpc-c-config.main b/libs/xmlrpc-c/xmlrpc-c-config.main
+index 6fec342..a176410 100644
+--- a/libs/xmlrpc-c/xmlrpc-c-config.main
++++ b/libs/xmlrpc-c/xmlrpc-c-config.main
+@@ -70,14 +70,22 @@ while test $# -gt 0; do
+ ;;
+ c++2)
+ needCpp=yes
+- the_libs="-lxmlrpc++ $the_libs"
++ the_libs="-l$LIBXMLRPCPP_NAME $the_libs"
+ ;;
+ server-util)
+ the_libs="-lxmlrpc_server $the_libs"
++ if test "${needCpp}" = "yes"; then
++ the_libs="-lxmlrpc_server++ $the_libs"
++ fi
+ ;;
+ cgi-server)
+ the_libs="-lxmlrpc_server $the_libs"
+- the_libs="-lxmlrpc_server_cgi $the_libs"
++ if test "${needCpp}" = "yes"; then
++ the_libs="-lxmlrpc_server_cgi++ $the_libs"
++ the_libs="-lxmlrpc_server++ $the_libs"
++ else
++ the_libs="-lxmlrpc_server_cgi $the_libs"
++ fi
+ ;;
+ abyss-server)
+ if test "${ENABLE_ABYSS_THREADS}" = "yes"; then
+@@ -110,18 +118,18 @@ while test $# -gt 0; do
+
+ if test "${MUST_BUILD_WININET_CLIENT}" = "yes"; then
+ the_libs="$the_libs $WININET_LDADD"
+- the_rpath="$WININET_RPATH $the_rpath"
+- the_wl_rpath="$WININET_WL_RPATH $the_wl_rpath"
++ the_rpath="-R$WININET_LIBDIR $the_rpath"
++ the_wl_rpath="-Wl,-rpath,$WININET_LIBDIR $the_wl_rpath"
+ fi
+ if test "${MUST_BUILD_CURL_CLIENT}" = "yes"; then
+ the_libs="$the_libs $CURL_LDADD"
+- the_rpath="$CURL_RPATH $the_rpath"
+- the_wl_rpath="$CURL_WL_RPATH $the_wl_rpath"
++ the_rpath="-R$CURL_LIBDIR $the_rpath"
++ the_wl_rpath="-Wl,-rpath,$CURL_LIBDIR $the_wl_rpath"
+ fi
+ if test "${MUST_BUILD_LIBWWW_CLIENT}" = "yes"; then
+ the_libs="$the_libs $LIBWWW_LDADD"
+- the_rpath="$LIBWWW_RPATH $the_rpath"
+- the_wl_rpath="$LIBWWW_WL_RPATH $the_wl_rpath"
++ the_rpath="-R$LIBWWW_LIBDIR $the_rpath"
++ the_wl_rpath="-Wl,-rpath,$LIBWWW_LIBDIR $the_wl_rpath"
+ fi
+ if test "${needCpp}" = "yes"; then
+ the_libs="-lxmlrpc_client++ $the_libs"
+diff --git a/libs/xmlrpc-c/xmlrpc-c-config.test.in b/libs/xmlrpc-c/xmlrpc-c-config.test.in
+deleted file mode 100644
+index 5c88a4c..0000000
+--- a/libs/xmlrpc-c/xmlrpc-c-config.test.in
++++ /dev/null
+@@ -1,153 +0,0 @@
+-#!/bin/sh
+-# This is like 'xmlrpc-c-config', but for testing Xmlrpc-c from its build
+-# directory instead of for an installed instance of Xmlrpc-c.
+-#
+-# For example, the make file in the examples/ directory uses this program
+-# to link the example programs with the Xmlrpc-c libraries in the build
+-# directory. A real application program would instead use xmlrpc-c-config
+-# and get the Xmlrpc-c libraries from their installed home.
+-
+-# @srcdir@ and @top_srcdir@ are useless because they can be relative.
+-
+-SRCDIR="@BUILDDIR@" # until we figure out how to do it right
+-BUILDDIR="@BUILDDIR@"
+-ENABLE_LIBXML2_BACKEND="@ENABLE_LIBXML2_BACKEND@"
+-MUST_BUILD_CURL_CLIENT="@MUST_BUILD_CURL_CLIENT@"
+-MUST_BUILD_WININET_CLIENT="@MUST_BUILD_WININET_CLIENT@"
+-MUST_BUILD_LIBWWW_CLIENT="@MUST_BUILD_LIBWWW_CLIENT@"
+-
+-if test $# -eq 0; then
+- echo "You need to specify arguments"
+- exit 1
+-fi
+-
+-sopath=
+-
+-if test "${ENABLE_LIBXML2_BACKEND}" = "yes"; then
+- LIBXML="@LIBXML2_LIBS@"
+-else
+- LIBXML="${BUILDDIR}/lib/expat/xmlparse/.libs/libxmlrpc_xmlparse.a"
+- sopath="${BUILDDIR}/lib/expat/xmlparse/.libs:$sopath"
+- LIBXML="${LIBXML} ${BUILDDIR}/lib/expat/xmltok/.libs/libxmlrpc_xmltok.a"
+- sopath="${BUILDDIR}/lib/expat/xmltok/.libs:$sopath"
+-fi
+-
+-needCpp=no
+-
+-the_libs="${BUILDDIR}/src/.libs/libxmlrpc.a ${LIBXML}"
+-the_includes="-I${SRCDIR}/include"
+-sopath="${BUILDDIR}/src/.libs:$sopath"
+-
+-while test $# -gt 0; do
+- case $1 in
+- c++)
+- # Unfortunately, there is just one legacy CPP library for
+- # everything, and it needs all the C libraries -- base, client,
+- # and server. So all legacy C++ programs get linked with client
+- # and server libraries, whether they need them or not.
+-
+- the_libs="${BUILDDIR}/src/.libs/libxmlrpc_server.a $the_libs"
+- the_libs="${BUILDDIR}/src/.libs/libxmlrpc_server_abyss.a $the_libs"
+- the_libs="${BUILDDIR}/src/.libs/libxmlrpc_client.a $the_libs"
+- the_libs="${BUILDDIR}/src/cpp/libxmlrpc_cpp.a $the_libs"
+- ;;
+- c++2)
+- needCpp=yes
+- the_libs="${BUILDDIR}/src/cpp/libxmlrpc++.a $the_libs"
+- ;;
+- cgi-server)
+- the_libs="${BUILDDIR}/src/.libs/libxmlrpc_server.a $the_libs"
+- the_libs="${BUILDDIR}/src/.libs/libxmlrpc_server_cgi.a $the_libs"
+- ;;
+- abyss-server)
+- the_libs="@LIBABYSS_LDADD@ $the_libs"
+- the_libs="${BUILDDIR}/lib/abyss/src/.libs/libxmlrpc_abyss.a $the_libs"
+- the_libs="${BUILDDIR}/src/.libs/libxmlrpc_server.a $the_libs"
+- the_libs="${BUILDDIR}/src/.libs/libxmlrpc_server_abyss.a $the_libs"
+- if test "${needCpp}" = "yes"; then
+- the_libs="${BUILDDIR}/src/cpp/libxmlrpc_server++.a $the_libs"
+- the_libs="${BUILDDIR}/src/cpp/libxmlrpc_server_abyss++.a $the_libs"
+- fi
+- the_includes="-I${SRCDIR}/lib/abyss/src $the_includes"
+- sopath="${BUILDDIR}/lib/abyss/src/.libs:$sopath"
+- ;;
+- client)
+- the_libs="${BUILDDIR}/src/.libs/libxmlrpc_client.a $the_libs"
+- if test "${MUST_BUILD_WININET_CLIENT}" = "yes"; then
+- the_libs="@WININET_LDADD@ $the_libs"
+- the_rpath="@WININET_RPATH@ $the_rpath"
+- the_wl_rpath="@WININET_WL_RPATH@ $the_wl_rpath"
+- fi
+- if test "${MUST_BUILD_CURL_CLIENT}" = "yes"; then
+- the_libs="@CURL_LDADD@ -lpthread $the_libs"
+- the_rpath="@CURL_RPATH@ $the_rpath"
+- the_wl_rpath="@CURL_WL_RPATH@ $the_wl_rpath"
+- fi
+- if test "${MUST_BUILD_LIBWWW_CLIENT}" = "yes"; then
+- the_libs="@LIBWWW_LDADD@ $the_libs"
+- the_rpath="@LIBWWW_RPATH@ $the_rpath"
+- the_wl_rpath="@LIBWWW_WL_RPATH@ $the_wl_rpath"
+- fi
+- if test "${needCpp}" = "yes"; then
+- the_libs="${BUILDDIR}/src/cpp/libxmlrpc_client++.a $the_libs"
+- fi
+- ;;
+- --version)
+- echo "@VERSION@"
+- exit 0
+- ;;
+- --modules)
+- echo "@FEATURE_LIST@"
+- exit 0
+- ;;
+- --features)
+- echo "@FEATURE_LIST@"
+- exit 0
+- ;;
+- --cflags)
+- echo "$the_includes"
+- exit 0
+- ;;
+- --libs)
+- echo "$the_libdirs $the_libs $the_wl_rpath"
+- exit 0
+- ;;
+- --ldadd)
+- echo "$the_libdirs $the_libs"
+- exit 0
+- ;;
+- --ldflags)
+- echo "$the_rpath"
+- exit 0
+- ;;
+- --sopath)
+- echo "$sopath"
+- exit 0
+- ;;
+- --prefix)
+- echo "@prefix@"
+- exit 0
+- ;;
+- --exec-prefix)
+- echo "@exec_prefix@"
+- exit 0
+- ;;
+- --*dir)
+- # Swiped from gnome-config.
+- dirname=\$`echo $1 | sed -e 's,^--,,'`
+- dirname=`eval echo $dirname`
+- test -z "$dirname" && exit 1
+- echo $dirname
+- exit 0
+- ;;
+- --help)
+- echo "See the real xmlrpc-c-config program" 1>&2
+- exit 0
+- ;;
+- *)
+- echo "Unrecognized option." 1>&2
+- exit 1
+- ;;
+- esac
+- shift
+-done
+diff --git a/libs/xmlrpc-c/xmlrpc-c-config.test.main b/libs/xmlrpc-c/xmlrpc-c-config.test.main
+index da9bf15..3ad9ac5 100644
+--- a/libs/xmlrpc-c/xmlrpc-c-config.test.main
++++ b/libs/xmlrpc-c/xmlrpc-c-config.test.main
+@@ -52,14 +52,22 @@ while test $# -gt 0; do
+ ;;
+ c++2)
+ needCpp=yes
+- the_libs="${BLDDIR}/src/cpp/libxmlrpc++.a $the_libs"
++ the_libs="${BLDDIR}/src/cpp/lib$LIBXMLRPCPP_NAME.a $the_libs"
+ ;;
+ server-util)
+ the_libs="${BLDDIR}/src/libxmlrpc_server.a $the_libs"
++ if test "${needCpp}" = "yes"; then
++ the_libs="${BLDDIR}/src/cpp/libxmlrpc_server++.a $the_libs"
++ fi
+ ;;
+ cgi-server)
+ the_libs="${BLDDIR}/src/libxmlrpc_server.a $the_libs"
+- the_libs="${BLDDIR}/src/libxmlrpc_server_cgi.a $the_libs"
++ if test "${needCpp}" = "yes"; then
++ the_libs="${BLDDIR}/src/cpp/libxmlrpc_server_cgi++.a $the_libs"
++ the_libs="${BLDDIR}/src/cpp/libxmlrpc_server++.a $the_libs"
++ else
++ the_libs="${BLDDIR}/src/libxmlrpc_server_cgi.a $the_libs"
++ fi
+ ;;
+ abyss-server)
+ if test "${ENABLE_ABYSS_THREADS}" = "yes"; then
+@@ -87,18 +95,18 @@ while test $# -gt 0; do
+ the_libs="${BLDDIR}/src/libxmlrpc_client.a $the_libs"
+ if test "${MUST_BUILD_WININET_CLIENT}" = "yes"; then
+ the_libs="$the_libs $WININET_LDADD"
+- the_rpath="$WININET_RPATH $the_rpath"
+- the_wl_rpath="$WININET_WL_RPATH $the_wl_rpath"
++ the_rpath="-R$WININET_LIBDIR $the_rpath"
++ the_wl_rpath="-Wl,-rpath,$WININET_LIBDIR $the_wl_rpath"
+ fi
+ if test "${MUST_BUILD_CURL_CLIENT}" = "yes"; then
+ the_libs="$the_libs $CURL_LDADD"
+- the_rpath="$CURL_RPATH $the_rpath"
+- the_wl_rpath="$CURL_WL_RPATH $the_wl_rpath"
++ the_rpath="-R$CURL_LIBDIR $the_rpath"
++ the_wl_rpath="-Wl,-rpath,$CURL_LIBDIR $the_wl_rpath"
+ fi
+ if test "${MUST_BUILD_LIBWWW_CLIENT}" = "yes"; then
+ the_libs="$the_libs $LIBWWW_LDADD"
+- the_rpath="$LIBWWW_RPATH $the_rpath"
+- the_wl_rpath="$LIBWWW_WL_RPATH $the_wl_rpath"
++ the_rpath="-R$LIBWWW_LIBDIR $the_rpath"
++ the_wl_rpath="-Wl,-rpath,$LIBWWW_LIBDIR $the_wl_rpath"
+ fi
+ if test "${needCpp}" = "yes"; then
+ the_libs="${BLDDIR}/src/cpp/libxmlrpc_client++.a $the_libs"
+@@ -118,7 +126,14 @@ while test $# -gt 0; do
+ echo "$the_includes"
+ ;;
+ --libs)
+- echo "$the_libdirs $the_libs $packetsocket_lib $the_wl_rpath"
++ if test "$NEED_WL_RPATH" = "yes"; then
++ rpath=$the_wl_rpath
++ elif test "$NEED_RPATH" = "yes"; then
++ rpath=$the_rpath
++ else
++ rpath=
++ fi
++ echo "$the_libdirs $rpath $the_libs $packetsocket_lib"
+ ;;
+ --ldadd)
+ echo "$the_libdirs $the_libs $packetsocket_lib"
+diff --git a/libs/xmlrpc-c/xmlrpc_amconfig.h.in b/libs/xmlrpc-c/xmlrpc_amconfig.h.in
+index cd289f2..6f3f2ae 100644
+--- a/libs/xmlrpc-c/xmlrpc_amconfig.h.in
++++ b/libs/xmlrpc-c/xmlrpc_amconfig.h.in
+@@ -22,9 +22,12 @@
+ #undef HAVE_STRCASECMP
+ #undef HAVE_STRICMP
+ #undef HAVE__STRICMP
+-#undef HAVE_WCHAR_H
+-#undef HAVE_SYS_FILIO_H
+-#undef HAVE_SYS_IOCTL_H
++#undef HAVE_STRTOLL
++#undef HAVE_STRTOQ
++#undef HAVE___STRTOLL
++#undef HAVE_STRTOULL
++#undef HAVE_STRTOUQ
++#undef HAVE___STRTOULL
+
+
+ /* Define if you have the socket library (-lsocket). */
+diff --git a/libs/xmlrpc-c/xmlrpc_config.h.in b/libs/xmlrpc-c/xmlrpc_config.h.in
+index 46e69ae..9cba718 100644
+--- a/libs/xmlrpc-c/xmlrpc_config.h.in
++++ b/libs/xmlrpc-c/xmlrpc_config.h.in
+@@ -15,7 +15,7 @@
+ interface header files that get compiled as part of a user's program.
+
+ This file just uses plain AC_SUBST substitution, the same as
+- Makefile.config. Wherever you see @XXX@, that gets replaced by the
++ config.mk. Wherever you see @XXX@, that gets replaced by the
+ value of 'configure' variable XXX.
+
+ Logical macros are 0 or 1 instead of the more traditional defined and
+@@ -62,18 +62,29 @@
+ #ifndef HAVE_STRICMP
+ #define HAVE_STRICMP 0
+ #endif
+-#ifndef HAVE__STRICMP
+-#define HAVE__STRICMP 0
++#ifndef HAVE_STRTOLL
++#define HAVE_STRTOLL 0
+ #endif
+-#ifndef HAVE_WCHAR_H
+-#define HAVE_WCHAR_H 0
++#ifndef HAVE_STRTOQ
++#define HAVE_STRTOQ 0
+ #endif
+-#ifndef HAVE_SYS_FILIO_H
+-#define HAVE_SYS_FILIO_H 0
++#ifndef HAVE___STRTOLL
++#define HAVE___STRTOLL 0
+ #endif
+-#ifndef HAVE_SYS_IOCTL_H
+-#define HAVE_SYS_IOCTL_H 0
++#ifndef HAVE_STRTOUQ
++#define HAVE_STRTOUQ 0
+ #endif
++#ifndef HAVE___STRTOULL
++#define HAVE___STRTOULL 0
++#endif
++#ifndef HAVE__STRTOUI64
++#define HAVE__STRTOUI64 0
++#endif
++
++#define HAVE_WCHAR_H @HAVE_WCHAR_H_DEFINE@
++#define HAVE_SYS_FILIO_H @HAVE_SYS_FILIO_H_DEFINE@
++#define HAVE_SYS_IOCTL_H @HAVE_SYS_IOCTL_H_DEFINE@
++#define HAVE_SYS_SELECT_H @HAVE_SYS_SELECT_H_DEFINE@
+
+ #define VA_LIST_IS_ARRAY @VA_LIST_IS_ARRAY_DEFINE@
+
+@@ -129,12 +140,37 @@
+ #endif
+
+ #if MSVCRT
++ #define HAVE_WINDOWS_THREAD 1
++#else
++ #define HAVE_WINDOWS_THREAD 0
++#endif
++
++#define HAVE_PTHREAD 1
++
++/* Note that the return value of XMLRPC_VSNPRINTF is int on Windows,
++ ssize_t on POSIX.
++*/
++#if MSVCRT
+ #define XMLRPC_VSNPRINTF _vsnprintf
+ #else
+ #define XMLRPC_VSNPRINTF vsnprintf
+ #endif
+
+-#if defined(_MSC_VER)
++#if MSVCRT
++ #define HAVE_REGEX 0
++#else
++ #define HAVE_REGEX 1
++#endif
++
++#if MSVCRT
++ #define XMLRPC_SOCKETPAIR xmlrpc_win32_socketpair
++ #define XMLRPC_CLOSESOCKET closesocket
++#else
++ #define XMLRPC_SOCKETPAIR socketpair
++ #define XMLRPC_CLOSESOCKET close
++#endif
++
++#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ /* Starting with MSVC 8, the runtime library defines various POSIX functions
+ such as strdup() whose names violate the ISO C standard (the standard
+ says the strXXX names are reserved for the standard), but warns you of
+@@ -152,4 +188,24 @@
+ #pragma warning(disable:4996)
+ #endif
+
++#if HAVE_STRTOLL
++ # define XMLRPC_STRTOLL strtoll
++#elif HAVE_STRTOQ
++ # define XMLRPC_STRTOLL strtoq /* Interix */
++#elif HAVE___STRTOLL
++ # define XMLRPC_STRTOLL __strtoll /* HP-UX <= 11.11 */
++#elif HAVE__STRTOUI64
++ #define XMLRPC_STRTOLL _strtoui64 /* Windows MSVC */
++#endif
++
++#if HAVE_STRTOULL
++ # define XMLRPC_STRTOULL strtoull
++#elif HAVE_STRTOUQ
++ # define XMLRPC_STRTOULL strtouq /* Interix */
++#elif HAVE___STRTOULL
++ # define XMLRPC_STRTOULL __strtoull /* HP-UX <= 11.11 */
++#elif HAVE__STRTOUI64
++ #define XMLRPC_STRTOULL _strtoui64 /* Windows MSVC */
++#endif
++
+ #endif
+diff --git a/src/include/switch_event.h b/src/include/switch_event.h
+index cc78336..550cba3 100644
+--- a/src/include/switch_event.h
++++ b/src/include/switch_event.h
+@@ -41,10 +41,10 @@
+ Builtin events are fired by the core at various points in the execution of the application and custom events can be
+ reserved and registered so events from an external module can be rendered and handled by an another even handler module.
+
+- If the work time to process an event in a callback is anticipated to grow beyond a very small amount of time it is reccommended
+- that you impelment your own handler thread and FIFO queue so you can accept the events int the callback and queue them
+- into your own thread rather than tie up the delivery agent. It is in to opinion of the author that such a necessity
+- should be judged on a per-use basis and therefore does not fall within the scope of this system to provide that
++ If the work time to process an event in a callback is anticipated to grow beyond a very small amount of time it is recommended
++ that you implement your own handler thread and FIFO queue so you can accept the events in the callback and queue them
++ into your own thread rather than tie up the delivery agent. It is in the opinion of the author that such a necessity
++ should be judged on a per-use basis and therefore it does not fall within the scope of this system to provide that
+ functionality at a core level.
+
+ */
+@@ -294,7 +294,7 @@ SWITCH_DECLARE(switch_status_t) switch_name_event(const char *name, switch_event
+ \param owner the owner of the event name
+ \param subclass_name the name to reserve
+ \return SWITCH_STATUS_SUCCESS if the name was reserved
+- \note There is nothing to enforce this but I reccommend using module::event_name for the subclass names
++ \note There is nothing to enforce this but I recommend using module::event_name for the subclass names
+
+ */
+ SWITCH_DECLARE(switch_status_t) switch_event_reserve_subclass_detailed(const char *owner, const char *subclass_name);
+@@ -302,7 +302,7 @@ SWITCH_DECLARE(switch_status_t) switch_event_reserve_subclass_detailed(const cha
+ SWITCH_DECLARE(switch_status_t) switch_event_free_subclass_detailed(const char *owner, const char *subclass_name);
+
+ /*!
+- \brief Render a string representation of an event sutable for printing or network transport
++ \brief Render a string representation of an event suitable for printing or network transport
+ \param event the event to render
+ \param str a string pointer to point at the allocated data
+ \param encode url encode the headers
+@@ -318,7 +318,7 @@ SWITCH_DECLARE(switch_status_t) switch_event_create_brackets(char *data, char a,
+
+ #ifndef SWIG
+ /*!
+- \brief Render a XML representation of an event sutable for printing or network transport
++ \brief Render a XML representation of an event suitable for printing or network transport
+ \param event the event to render
+ \param fmt optional body of the event (varargs see standard sprintf family)
+ \return the xml object if the operation was successful
+@@ -328,7 +328,7 @@ SWITCH_DECLARE(switch_xml_t) switch_event_xmlize(switch_event_t *event, const ch
+ #endif
+
+ /*!
+- \brief Determine if the event system has been initilized
++ \brief Determine if the event system has been initialized
+ \return SWITCH_STATUS_SUCCESS if the system is running
+ */
+ SWITCH_DECLARE(switch_status_t) switch_event_running(void);
+diff --git a/src/include/switch_xml.h b/src/include/switch_xml.h
+index f2a6eb3..a29250a 100644
+--- a/src/include/switch_xml.h
++++ b/src/include/switch_xml.h
+@@ -198,7 +198,7 @@ SWITCH_DECLARE(const char *) switch_xml_attr(_In_opt_ switch_xml_t xml, _In_opt_
+ ///\return the value
+ SWITCH_DECLARE(const char *) switch_xml_attr_soft(_In_ switch_xml_t xml, _In_z_ const char *attr);
+
+-///\brief Traverses the switch_xml sturcture to retrieve a specific subtag. Takes a
++///\brief Traverses the switch_xml structure to retrieve a specific subtag. Takes a
+ ///\ variable length list of tag names and indexes. The argument list must be
+ ///\ terminated by either an index of -1 or an empty string tag name. Example:
+ ///\ title = switch_xml_get(library, "shelf", 0, "book", 2, "title", -1);
+@@ -208,13 +208,15 @@ SWITCH_DECLARE(const char *) switch_xml_attr_soft(_In_ switch_xml_t xml, _In_z_
+ ///\return an xml node or NULL
+ SWITCH_DECLARE(switch_xml_t) switch_xml_get(_In_ switch_xml_t xml,...);
+
+-///\brief Converts an switch_xml structure back to xml. Returns a string of xml data that
++///\brief Converts an switch_xml structure back to xml in html format. Returns a string of html data that
+ ///\ must be freed.
+ ///\param xml the xml node
+ ///\param prn_header add <?xml version..> header too
+-///\return the xml text string
++///\return the ampersanded html text string to display xml
+ SWITCH_DECLARE(char *) switch_xml_toxml(_In_ switch_xml_t xml, _In_ switch_bool_t prn_header);
+ SWITCH_DECLARE(char *) switch_xml_toxml_nolock(switch_xml_t xml, _In_ switch_bool_t prn_header);
++SWITCH_DECLARE(char *) switch_xml_tohtml(_In_ switch_xml_t xml, _In_ switch_bool_t prn_header);
++
+ ///\brief Converts an switch_xml structure back to xml using the buffer passed in the parameters.
+ ///\param xml the xml node
+ ///\param buf buffer to use
+diff --git a/src/mod/applications/mod_commands/mod_commands.c b/src/mod/applications/mod_commands/mod_commands.c
+index 7287d95..afd7b28 100644
+--- a/src/mod/applications/mod_commands/mod_commands.c
++++ b/src/mod/applications/mod_commands/mod_commands.c
+@@ -1,4 +1,4 @@
+-/*
++/*
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ * Copyright (C) 2005-2012, Anthony Minessale II <anthm@freeswitch.org>
+ *
+@@ -22,7 +22,7 @@
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+- *
++ *
+ * Anthony Minessale II <anthm@freeswitch.org>
+ * Michael Jerris <mike@jerris.com>
+ * Johny Kadarisman <jkr888@gmail.com>
+@@ -35,7 +35,8 @@
+ * Joseph Sullivan <jossulli@amazon.com>
+ * Raymond Chandler <intralanman@freeswitch.org>
+ *
+- *
++ * Garmt Boekholt <garmt@cimico.com>
++ *
+ * mod_commands.c -- Misc. Command Module
+ *
+ */
+@@ -54,6 +55,15 @@ struct cb_helper {
+ switch_stream_handle_t *stream;
+ };
+
++struct stream_format {
++ char *http; /* http cmd (from xmlrpc) */
++ char *query; /* http query (cmd args) */
++ switch_bool_t api; /* flag: define content type for http reply e.g. text/html or text/xml */
++ switch_bool_t html; /* flag: format as html */
++ char *nl; /* newline to use: html "<br>\n" or just "\n" */
++};
++typedef struct stream_format stream_format;
++
+ static int url_callback(void *pArg, int argc, char **argv, char **columnNames)
+ {
+ struct cb_helper *cb = (struct cb_helper *) pArg;
+@@ -70,7 +80,7 @@ static int url_callback(void *pArg, int argc, char **argv, char **columnNames)
+ static switch_status_t select_url(const char *user,
+ const char *domain,
+ const char *concat,
+- const char *exclude_contact,
++ const char *exclude_contact,
+ switch_stream_handle_t *stream)
+ {
+ struct cb_helper cb;
+@@ -79,12 +89,12 @@ static switch_status_t select_url(const char *user,
+ switch_cache_db_handle_t *db = NULL;
+
+ if (!(cflags & SCF_USE_SQL)) {
+- stream->write_function(stream, "-ERR SQL DISABLED NO DATA AVAILABLE!\n");
++ stream->write_function(stream, "-ERR SQL disabled, no data available!\n");
+ return SWITCH_STATUS_SUCCESS;
+ }
+
+ if (switch_core_db_handle(&db) != SWITCH_STATUS_SUCCESS) {
+- stream->write_function(stream, "%s", "-ERR Databse Error!\n");
++ stream->write_function(stream, "%s", "-ERR Database error!\n");
+ return SWITCH_STATUS_SUCCESS;
+ }
+
+@@ -105,10 +115,10 @@ static switch_status_t select_url(const char *user,
+ switch_cache_db_execute_sql_callback(db, sql, url_callback, &cb, &errmsg);
+
+ if (errmsg) {
+- stream->write_function(stream, "-ERR SQL Error [%s]\n", errmsg);
++ stream->write_function(stream, "-ERR SQL error [%s]\n", errmsg);
+ free(errmsg);
+ errmsg = NULL;
+- }
++ }
+
+ switch_safe_free(sql);
+
+@@ -119,6 +129,22 @@ static switch_status_t select_url(const char *user,
+ return SWITCH_STATUS_SUCCESS;
+ }
+
++static stream_format set_format(stream_format *format, switch_stream_handle_t *stream)
++{
++ format->nl = "\n";
++ if (stream->param_event && (format->http = switch_event_get_header(stream->param_event, "HTTP-URI"))) {
++ format->query = switch_event_get_header(stream->param_event, "HTTP-QUERY");
++ if (switch_event_get_header(stream->param_event, "HTTP-API")) {
++ format->api = SWITCH_TRUE;
++ }
++ if (!strncasecmp(format->http, "/webapi/", 8)) {
++ format->nl = "<br>\n";
++ format->html = SWITCH_TRUE;
++ }
++ }
++
++ return *format;
++}
+
+ #define SAY_STRING_SYNTAX "<module_name>[.<ext>] <lang>[.<ext>] <say_type> <say_method> [<say_gender>] <text>"
+ SWITCH_STANDARD_API(say_string_function)
+@@ -159,10 +185,10 @@ SWITCH_STANDARD_API(say_string_function)
+ argv[1],
+ ext,
+ tosay,
+- argv[0],
+- argv[2],
+- argv[3],
+- (argc == 6) ? argv[4] : NULL ,
++ argv[0],
++ argv[2],
++ argv[3],
++ (argc == 6) ? argv[4] : NULL ,
+ &string);
+ if (string) {
+ stream->write_function(stream, "%s", strip ? string + 14 : string);
+@@ -174,11 +200,11 @@ SWITCH_STANDARD_API(say_string_function)
+ if (err) {
+ stream->write_function(stream, "-ERR Usage: %s\n", SAY_STRING_SYNTAX);
+ }
+-
++
+ free(lbuf);
+
+ return SWITCH_STATUS_SUCCESS;
+-
++
+ }
+
+ struct user_struct {
+@@ -423,12 +449,12 @@ SWITCH_STANDARD_API(reg_url_function)
+ exclude_contact = switch_channel_get_variable(channel, "sip_exclude_contact");
+ }
+
+-
++
+ data = strdup(cmd);
+ switch_assert(data);
+
+ user = data;
+-
++
+ if ((domain = strchr(user, '@'))) {
+ *domain++ = '\0';
+ if ((concat = strchr(domain, '/'))) {
+@@ -447,7 +473,7 @@ SWITCH_STANDARD_API(reg_url_function)
+
+ if (!user) goto end;
+
+-
++
+ SWITCH_STANDARD_STREAM(mystream);
+ switch_assert(mystream.data);
+
+@@ -455,8 +481,8 @@ SWITCH_STANDARD_API(reg_url_function)
+ reply = mystream.data;
+
+
+- end:
+-
++ end:
++
+ if (zstr(reply)) {
+ reply = "error/user_not_registered";
+ } else if (end_of(reply) == ',') {
+@@ -466,7 +492,7 @@ SWITCH_STANDARD_API(reg_url_function)
+ stream->write_function(stream, "%s", reply);
+ reply = NULL;
+
+- switch_safe_free(mystream.data);
++ switch_safe_free(mystream.data);
+
+ switch_safe_free(data);
+ switch_safe_free(dup_domain);
+@@ -671,7 +697,7 @@ SWITCH_STANDARD_API(nat_map_function)
+ stream->write_function(stream, "false");
+ goto ok;
+
+- usage:
++ usage:
+ stream->write_function(stream, "USAGE: nat_map [status|reinit|republish] | [add|del] <port> [tcp|udp] [sticky] | [mapping] <enable|disable>");
+
+ ok:
+@@ -1014,14 +1040,14 @@ SWITCH_STANDARD_API(group_call_function)
+ }
+
+ end:
+-
++
+ switch_safe_free(group_name);
+ switch_safe_free(dup_domain);
+
+ if (!ok) {
+ stream->write_function(stream, "error/NO_ROUTE_DESTINATION");
+ }
+-
++
+ return SWITCH_STATUS_SUCCESS;
+ }
+
+@@ -1183,17 +1209,15 @@ static switch_status_t _find_user(const char *cmd, switch_core_session_t *sessio
+ char *mydata = NULL, *argv[3];
+ char *key, *user, *domain;
+ char *xmlstr;
+- char *path_info = NULL;
+ char delim = ' ';
+- char *host = NULL;
+ const char *err = NULL;
+
+- if (stream->param_event && (host = switch_event_get_header(stream->param_event, "http-host"))) {
++ stream_format format = { 0 };
++ set_format(&format, stream);
++
++ if (!tf && format.api) {
+ stream->write_function(stream, "Content-Type: text/xml\r\n\r\n");
+- if ((path_info = switch_event_get_header(stream->param_event, "http-path-info"))) {
+- cmd = path_info;
+- delim = '/';
+- }
++ format.html = SWITCH_FALSE;
+ }
+
+ if (!cmd) {
+@@ -1230,24 +1254,27 @@ static switch_status_t _find_user(const char *cmd, switch_core_session_t *sessio
+ stream->write_function(stream, err ? "false" : "true");
+ } else {
+ if (err) {
+- if (host) {
++ if (format.api) {
+ stream->write_function(stream, "<error>%s</error>\n", err);
+ } else {
+- stream->write_function(stream, "-Error %s\n", err);
++ stream->write_function(stream, "-ERR %s\n", err);
+ }
+ }
+
+ if (x_user) {
+- xmlstr = switch_xml_toxml(x_user, SWITCH_FALSE);
++ /* print header if request to show xml on webpage */
++ if (format.html) {
++ xmlstr = switch_xml_tohtml(x_user, SWITCH_TRUE);
++ } else {
++ xmlstr = switch_xml_toxml(x_user, SWITCH_FALSE);
++ }
+ switch_assert(xmlstr);
+-
+- stream->write_function(stream, "%s", xmlstr);
+- free(xmlstr);
++ stream->write_function(stream, "%s%s%s", format.html?"<pre>":"", xmlstr, format.html?"</pre>":"");
++ switch_safe_free(xmlstr);
+ }
+ }
+
+ switch_xml_free(xml);
+-
+ switch_safe_free(mydata);
+ return SWITCH_STATUS_SUCCESS;
+ }
+@@ -1363,7 +1390,7 @@ SWITCH_STANDARD_API(expand_function)
+ char uuid[80] = "";
+
+ if (zstr(cmd)) {
+- stream->write_function(stream, "-ERR, no input\n");
++ stream->write_function(stream, "-ERR No input\n");
+ return SWITCH_STATUS_SUCCESS;
+ }
+
+@@ -1378,7 +1405,7 @@ SWITCH_STANDARD_API(expand_function)
+ }
+
+ if (zstr(mycmd)) {
+- stream->write_function(stream, "-ERR, no input\n");
++ stream->write_function(stream, "-ERR No input\n");
+ return SWITCH_STATUS_SUCCESS;
+ }
+
+@@ -1395,7 +1422,7 @@ SWITCH_STANDARD_API(expand_function)
+
+ expanded = arg ? switch_event_expand_headers(stream->param_event, arg) : arg;
+ if ((status = switch_api_execute(mycmd, expanded, session, stream)) != SWITCH_STATUS_SUCCESS) {
+- stream->write_function(stream, "-ERR, error executing command\n");
++ stream->write_function(stream, "-ERR Cannot execute command\n");
+ }
+
+ if (expanded != arg) {
+@@ -1569,20 +1596,20 @@ SWITCH_STANDARD_API(xml_locate_function)
+ {
+ switch_xml_t xml = NULL, obj = NULL;
+ int argc;
+- char *mydata = NULL, *argv[4];
++ char *mydata = NULL, *argv[4] = { 0 } ;
+ char *section, *tag, *tag_attr_name, *tag_attr_val;
+ switch_event_t *params = NULL;
+ char *xmlstr;
+- char *path_info, delim = ' ';
++ char delim = ' ';
+ char *host = NULL;
+ const char *err = NULL;
+
+- if (stream->param_event && (host = switch_event_get_header(stream->param_event, "http-host"))) {
++ stream_format format = { 0 };
++ set_format(&format, stream);
++ if (format.api) {
+ stream->write_function(stream, "Content-Type: text/xml\r\n\r\n");
+- if ((path_info = switch_event_get_header(stream->param_event, "http-path-info"))) {
+- cmd = path_info;
+- delim = '/';
+- }
++ cmd = format.query;
++ delim = '/';
+ }
+
+ if (!cmd) {
+@@ -1595,7 +1622,7 @@ SWITCH_STANDARD_API(xml_locate_function)
+
+ argc = switch_separate_string(mydata, delim, argv, (sizeof(argv) / sizeof(argv[0])));
+
+- if (argc == 1 && !strcasecmp(argv[0], "root")) {
++ if (argc == 1 && argv[0] && !strcasecmp(argv[0], "root")) {
+ const char *error;
+ xml = switch_xml_open_root(0, &error);
+ obj = xml;
+@@ -1638,7 +1665,7 @@ SWITCH_STANDARD_API(xml_locate_function)
+ if (host) {
+ stream->write_function(stream, "<error>%s</error>\n", err);
+ } else {
+- stream->write_function(stream, "-Error %s\n", err);
++ stream->write_function(stream, "-ERR %s\n", err);
+ }
+ }
+
+@@ -1663,12 +1690,12 @@ SWITCH_STANDARD_API(reload_acl_function)
+ if (cmd && !strcasecmp(cmd, "reloadxml")) {
+ stream->write_function(stream, "This option is deprecated, we now always reloadxml.\n");
+ }
+-
++
+ if (switch_xml_reload(&err) == SWITCH_STATUS_SUCCESS) {
+ switch_load_network_lists(SWITCH_TRUE);
+ stream->write_function(stream, "+OK acl reloaded\n");
+ } else {
+- stream->write_function(stream, "-Error [%s]\n", err);
++ stream->write_function(stream, "-ERR [%s]\n", err);
+ }
+
+ return SWITCH_STATUS_SUCCESS;
+@@ -1715,8 +1742,8 @@ SWITCH_STANDARD_API(replace_function)
+ int argc = 0;
+
+ if (!cmd) {
+- goto error;
+- }
++ goto error;
++ }
+
+ mydata = strdup(cmd);
+ d = mydata;
+@@ -1754,7 +1781,7 @@ SWITCH_STANDARD_API(replace_function)
+ ok:
+ switch_safe_free(mydata);
+ return SWITCH_STATUS_SUCCESS;
+-
++
+
+ }
+
+@@ -1969,69 +1996,57 @@ SWITCH_STANDARD_API(lan_addr_function)
+
+ SWITCH_STANDARD_API(status_function)
+ {
+- uint8_t html = 0;
+ switch_core_time_duration_t duration = { 0 };
+- char *http = NULL;
+ int sps = 0, last_sps = 0;
+- const char *var;
++ switch_bool_t html = SWITCH_FALSE; /* shortcut to format.html */
++ char * nl = "\n"; /* shortcut to format.nl */
++ stream_format format = { 0 };
+ switch_size_t cur = 0, max = 0;
+
+- switch_core_measure_time(switch_core_uptime(), &duration);
++ set_format(&format, stream);
+
+- if (stream->param_event) {
+- http = switch_event_get_header(stream->param_event, "http-host");
+- if ((var = switch_event_get_header(stream->param_event, "content-type"))) {
+- if (!strcasecmp(var, "text/plain")) {
+- http = NULL;
+- }
+- }
++ if (format.api) {
++ format.html = SWITCH_TRUE;
++ format.nl = "<br>\n";
+ }
+
+- if (http) {
+- stream->write_function(stream, "%s", "Content-Type: text/html\n\n");
++ if (format.html) {
++ /* set flag to allow refresh of webpage if web request contained kv-pair refresh=xx */
++ switch_event_add_header_string(stream->param_event, SWITCH_STACK_BOTTOM, "HTTP-REFRESH", "true");
++ if (format.api) {
++ /* "Overwrite" default "api" Content-Type: text/plain */
++ stream->write_function(stream, "Content-Type: text/html\r\n\r\n");
++ }
+ }
+
+- if (http || (cmd && strstr(cmd, "html"))) {
+- html = 1;
+- stream->write_function(stream, "<h1>FreeSWITCH Status</h1>\n<b>");
++ html = format.html;
++ nl = format.nl;
++
++ if (html) {
++ /* don't bother cli with heading and timestamp */
++ stream->write_function(stream, "%sFreeSWITCH Status%s", html?"<h1>":"", html?"</h1>\n":"\n");
++ stream->write_function(stream, "%s%s", switch_event_get_header(stream->param_event,"Event-Date-Local"), nl);
+ }
+
++
++ switch_core_measure_time(switch_core_uptime(), &duration);
+ stream->write_function(stream,
+- "UP %u year%s, %u day%s, %u hour%s, %u minute%s, %u second%s, %u millisecond%s, %u microsecond%s\n",
+- duration.yr, duration.yr == 1 ? "" : "s", duration.day, duration.day == 1 ? "" : "s",
+- duration.hr, duration.hr == 1 ? "" : "s", duration.min, duration.min == 1 ? "" : "s",
+- duration.sec, duration.sec == 1 ? "" : "s", duration.ms, duration.ms == 1 ? "" : "s", duration.mms,
+- duration.mms == 1 ? "" : "s");
+-
+- stream->write_function(stream, "FreeSWITCH is %s\n", switch_core_ready() ? "ready" : "not ready");
+- stream->write_function(stream, "%" SWITCH_SIZE_T_FMT " session(s) since startup\n", switch_core_session_id() - 1);
++ "UP %u year%s, %u day%s, %u hour%s, %u minute%s, %u second%s, %u millisecond%s, %u microsecond%s%s",
++ duration.yr, duration.yr == 1 ? "" : "s", duration.day, duration.day == 1 ? "" : "s",
++ duration.hr, duration.hr == 1 ? "" : "s", duration.min, duration.min == 1 ? "" : "s",
++ duration.sec, duration.sec == 1 ? "" : "s", duration.ms , duration.ms == 1 ? "" : "s", duration.mms,
++ duration.mms == 1 ? "" : "s", nl);
++
++ stream->write_function(stream, "FreeSWITCH is %s%s", switch_core_ready() ? "ready" : "not ready", nl);
++ stream->write_function(stream, "%" SWITCH_SIZE_T_FMT " session(s) since startup%s", switch_core_session_id() - 1, nl);
+ switch_core_session_ctl(SCSC_LAST_SPS, &last_sps);
+ switch_core_session_ctl(SCSC_SPS, &sps);
+- stream->write_function(stream, "%d session(s) %d/%d\n", switch_core_session_count(), last_sps, sps);
+- stream->write_function(stream, "%d session(s) max\n", switch_core_session_limit(0));
+- stream->write_function(stream, "min idle cpu %0.2f/%0.2f\n", switch_core_min_idle_cpu(-1.0), switch_core_idle_cpu());
++ stream->write_function(stream, "%d session(s) - %d out of max %d per sec %s", switch_core_session_count(), last_sps, sps, nl);
++ stream->write_function(stream, "%d session(s) max%s", switch_core_session_limit(0), nl);
++ stream->write_function(stream, "min idle cpu %0.2f/%0.2f%s", switch_core_min_idle_cpu(-1.0), switch_core_idle_cpu(), nl);
+
+-
+- if (switch_core_get_stacksizes(&cur, &max) == SWITCH_STATUS_SUCCESS) {
+- stream->write_function(stream, "Current Stack Size/Max %ldK/%ldK\n", cur / 1024, max / 1024);
+- }
+-
+- if (html) {
+- stream->write_function(stream, "</b>\n");
++ if (switch_core_get_stacksizes(&cur, &max) == SWITCH_STATUS_SUCCESS) { stream->write_function(stream, "Current Stack Size/Max %ldK/%ldK\n", cur / 1024, max / 1024);
+ }
+-
+- if (cmd && strstr(cmd, "refresh=")) {
+- char *refresh = strchr(cmd, '=');
+- if (refresh) {
+- int r;
+- refresh++;
+- r = atoi(refresh);
+- if (r > 0) {
+- stream->write_function(stream, "<META HTTP-EQUIV=REFRESH CONTENT=\"%d; URL=/api/status?refresh=%d%s\">\n", r, r, html ? "html=1" : "");
+- }
+- }
+- }
+-
+ return SWITCH_STATUS_SUCCESS;
+ }
+
+@@ -2125,7 +2140,7 @@ SWITCH_STANDARD_API(ctl_function)
+ switch_core_session_ctl(SCSC_THREADED_SYSTEM_EXEC, &arg);
+
+ stream->write_function(stream, "+OK threaded_system_exec is %s \n", arg ? "true" : "false");
+-
++
+ } else if (!strcasecmp(argv[0], "save_history")) {
+ switch_core_session_ctl(SCSC_SAVE_HISTORY, NULL);
+ stream->write_function(stream, "+OK\n");
+@@ -2198,7 +2213,7 @@ SWITCH_STANDARD_API(ctl_function)
+ stream->write_function(stream, "+OK max sessions: %d\n", arg);
+ } else if (!strcasecmp(argv[0], "min_idle_cpu")) {
+ double d = -1;
+-
++
+ if (argc > 1) {
+ d = atof(argv[1]);
+ }
+@@ -2211,7 +2226,7 @@ SWITCH_STANDARD_API(ctl_function)
+ stream->write_function(stream, "+OK min idle cpu: DISABLED\n", d);
+ }
+
+-
++
+ } else if (!strcasecmp(argv[0], "max_dtmf_duration")) {
+ if (argc > 1) {
+ arg = atoi(argv[1]);
+@@ -2281,14 +2296,14 @@ SWITCH_STANDARD_API(ctl_function)
+ stream->write_function(stream, "+OK clock will synchronize when there are no more calls\n");
+ }
+ } else {
+- stream->write_function(stream, "-ERR INVALID COMMAND\nUSAGE: fsctl %s", CTL_SYNTAX);
++ stream->write_function(stream, "-ERR Invalid command\nUSAGE: fsctl %s\n", CTL_SYNTAX);
+ goto end;
+ }
+
+ end:
+ free(mydata);
+ } else {
+- stream->write_function(stream, "-ERR Memory Error\n");
++ stream->write_function(stream, "-ERR Memory error\n");
+ }
+
+ return SWITCH_STATUS_SUCCESS;
+@@ -2358,7 +2373,7 @@ SWITCH_STANDARD_API(unload_function)
+ }
+
+ switch_mutex_lock(reload_mutex);
+-
++
+ if (switch_loadable_module_unload_module((char *) SWITCH_GLOBAL_dirs.mod_dir, (char *) cmd, force, &err) == SWITCH_STATUS_SUCCESS) {
+ stream->write_function(stream, "+OK\n");
+ } else {
+@@ -2452,11 +2467,11 @@ SWITCH_STANDARD_API(kill_function)
+ *kcause++ = '\0';
+ if (!zstr(kcause)) {
+ cause = switch_channel_str2cause(kcause);
+- }
++ }
+ }
+
+ if (switch_ivr_kill_uuid(mycmd, cause) != SWITCH_STATUS_SUCCESS) {
+- stream->write_function(stream, "-ERR No Such Channel!\n");
++ stream->write_function(stream, "-ERR No such channel!\n");
+ } else {
+ stream->write_function(stream, "+OK\n");
+ }
+@@ -2477,7 +2492,7 @@ SWITCH_STANDARD_API(outgoing_answer_function)
+ }
+
+ if (zstr(mycmd) || !(outgoing_session = switch_core_session_locate(mycmd))) {
+- stream->write_function(stream, "-ERR No Such Channel!\n");
++ stream->write_function(stream, "-ERR No such channel!\n");
+ } else {
+ switch_channel_t *channel = switch_core_session_get_channel(outgoing_session);
+ if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) {
+@@ -2511,7 +2526,7 @@ SWITCH_STANDARD_API(preprocess_function)
+ }
+
+ if (!(ksession = switch_core_session_locate(argv[0]))) {
+- stream->write_function(stream, "-ERR No Such Channel!\n");
++ stream->write_function(stream, "-ERR No such channel!\n");
+ goto done;
+ } else {
+ switch_ivr_preprocess_session(ksession, (char *) argv[1]);
+@@ -2540,7 +2555,7 @@ SWITCH_STANDARD_API(park_function)
+ switch_core_session_rwunlock(ksession);
+ stream->write_function(stream, "+OK\n");
+ } else {
+- stream->write_function(stream, "-ERR No Such Channel!\n");
++ stream->write_function(stream, "-ERR No such channel!\n");
+ }
+
+ return SWITCH_STATUS_SUCCESS;
+@@ -2571,7 +2586,7 @@ SWITCH_STANDARD_API(transfer_function)
+ context = argv[3];
+
+ if (zstr(tuuid) || !(tsession = switch_core_session_locate(tuuid))) {
+- stream->write_function(stream, "-ERR No Such Channel!\n");
++ stream->write_function(stream, "-ERR No such channel!\n");
+ goto done;
+ }
+
+@@ -2665,10 +2680,10 @@ SWITCH_STANDARD_API(dual_transfer_function)
+ }
+
+ if (zstr(tuuid) || !(tsession = switch_core_session_locate(tuuid))) {
+- stream->write_function(stream, "-ERR No Such Channel!\n");
++ stream->write_function(stream, "-ERR No such channel!\n");
+ goto done;
+ }
+-
++
+ if (switch_core_session_get_partner(tsession, &other_session) == SWITCH_STATUS_SUCCESS) {
+ switch_ivr_session_transfer(other_session, dest2, dp2, context2);
+ switch_core_session_rwunlock(other_session);
+@@ -2709,7 +2724,7 @@ SWITCH_STANDARD_API(tone_detect_session_function)
+ }
+
+ if (!(rsession = switch_core_session_locate(argv[0]))) {
+- stream->write_function(stream, "-ERR Error Cannot locate session!\n");
++ stream->write_function(stream, "-ERR Cannot locate session!\n");
+ return SWITCH_STATUS_SUCCESS;
+ }
+
+@@ -2754,8 +2769,8 @@ SWITCH_STANDARD_API(uuid_function)
+ char uuid_str[SWITCH_UUID_FORMATTED_LENGTH + 1];
+
+ switch_uuid_str(uuid_str, sizeof(uuid_str));
+-
+- stream->write_function(stream, "%s", uuid_str);
++
++ stream->write_function(stream, "%s", uuid_str);
+ return SWITCH_STATUS_SUCCESS;
+ }
+
+@@ -2780,14 +2795,14 @@ SWITCH_STANDARD_API(uuid_chat)
+ switch_event_add_body(event, "%s", text);
+ if (switch_core_session_receive_event(tsession, &event) != SWITCH_STATUS_SUCCESS) {
+ switch_event_destroy(&event);
+- stream->write_function(stream, "-ERR Send Failed\n");
++ stream->write_function(stream, "-ERR Send failed\n");
+ } else {
+ stream->write_function(stream, "+OK\n");
+ }
+ }
+ switch_core_session_rwunlock(tsession);
+ } else {
+- stream->write_function(stream, "-ERR No Such Channel %s!\n", uuid);
++ stream->write_function(stream, "-ERR No such channel %s!\n", uuid);
+ }
+ }
+
+@@ -2823,7 +2838,7 @@ SWITCH_STANDARD_API(uuid_deflect)
+ stream->write_function(stream, "+OK:%s\n", msg.string_reply);
+ switch_core_session_rwunlock(tsession);
+ } else {
+- stream->write_function(stream, "-ERR No Such Channel %s!\n", uuid);
++ stream->write_function(stream, "-ERR No such channel %s!\n", uuid);
+ }
+ }
+
+@@ -2857,7 +2872,7 @@ SWITCH_STANDARD_API(uuid_recovery_refresh)
+ stream->write_function(stream, "+OK:%s\n", msg.string_reply);
+ switch_core_session_rwunlock(tsession);
+ } else {
+- stream->write_function(stream, "-ERR No Such Channel %s!\n", uuid);
++ stream->write_function(stream, "-ERR No such channel %s!\n", uuid);
+ }
+ }
+
+@@ -2896,7 +2911,7 @@ SWITCH_STANDARD_API(sched_transfer_function)
+ stream->write_function(stream, "+OK\n");
+ switch_core_session_rwunlock(tsession);
+ } else {
+- stream->write_function(stream, "-ERR No Such Channel!\n");
++ stream->write_function(stream, "-ERR No such channel!\n");
+ }
+ }
+
+@@ -2945,7 +2960,7 @@ SWITCH_STANDARD_API(sched_hangup_function)
+ stream->write_function(stream, "+OK\n");
+ switch_core_session_rwunlock(hsession);
+ } else {
+- stream->write_function(stream, "-ERR No Such Channel!\n");
++ stream->write_function(stream, "-ERR No such channel!\n");
+ }
+ }
+
+@@ -2977,7 +2992,7 @@ SWITCH_STANDARD_API(uuid_media_function)
+ if (status == SWITCH_STATUS_SUCCESS) {
+ stream->write_function(stream, "+OK Success\n");
+ } else {
+- stream->write_function(stream, "-ERR Operation Failed\n");
++ stream->write_function(stream, "-ERR Operation failed\n");
+ }
+
+ switch_safe_free(mycmd);
+@@ -3098,7 +3113,7 @@ SWITCH_STANDARD_API(uuid_broadcast_function)
+
+ if (switch_stristr("aleg", argv[2])) {
+ flags |= SMF_ECHO_ALEG;
+- }
++ }
+
+ if (switch_stristr("bleg", argv[2])) {
+ flags &= ~SMF_HOLD_BLEG;
+@@ -3115,7 +3130,7 @@ SWITCH_STANDARD_API(uuid_broadcast_function)
+ }
+
+ switch_ivr_broadcast(argv[0], argv[1], flags);
+- stream->write_function(stream, "+OK Message Sent\n");
++ stream->write_function(stream, "+OK Message sent\n");
+ }
+
+ switch_safe_free(mycmd);
+@@ -3157,7 +3172,7 @@ SWITCH_STANDARD_API(sched_broadcast_function)
+ }
+
+ switch_ivr_schedule_broadcast(when, argv[1], argv[2], flags);
+- stream->write_function(stream, "+OK Message Scheduled\n");
++ stream->write_function(stream, "+OK Message scheduled\n");
+ }
+
+ switch_safe_free(mycmd);
+@@ -3188,7 +3203,7 @@ SWITCH_STANDARD_API(uuid_hold_function)
+ if (status == SWITCH_STATUS_SUCCESS) {
+ stream->write_function(stream, "+OK Success\n");
+ } else {
+- stream->write_function(stream, "-ERR Operation Failed\n");
++ stream->write_function(stream, "-ERR Operation failed\n");
+ }
+
+ switch_safe_free(mycmd);
+@@ -3226,10 +3241,10 @@ SWITCH_STANDARD_API(uuid_display_function)
+ if (status == SWITCH_STATUS_SUCCESS) {
+ stream->write_function(stream, "+OK Success\n");
+ } else {
+- stream->write_function(stream, "-ERR Operation Failed\n");
++ stream->write_function(stream, "-ERR Operation failed\n");
+ }
+
+- end:
++ end:
+
+ switch_safe_free(mycmd);
+ return SWITCH_STATUS_SUCCESS;
+@@ -3322,7 +3337,7 @@ SWITCH_STANDARD_API(uuid_simplify_function)
+ if (status == SWITCH_STATUS_SUCCESS) {
+ stream->write_function(stream, "+OK Success\n");
+ } else {
+- stream->write_function(stream, "-ERR Operation Failed\n");
++ stream->write_function(stream, "-ERR Operation failed\n");
+ }
+
+ return SWITCH_STATUS_SUCCESS;
+@@ -3375,7 +3390,7 @@ SWITCH_STANDARD_API(uuid_jitterbuffer_function)
+ if (status == SWITCH_STATUS_SUCCESS) {
+ stream->write_function(stream, "+OK Success\n");
+ } else {
+- stream->write_function(stream, "-ERR Operation Failed\n");
++ stream->write_function(stream, "-ERR Operation failed\n");
+ }
+
+ return SWITCH_STATUS_SUCCESS;
+@@ -3412,7 +3427,7 @@ SWITCH_STANDARD_API(uuid_phone_event_function)
+ if (status == SWITCH_STATUS_SUCCESS) {
+ stream->write_function(stream, "+OK Success\n");
+ } else {
+- stream->write_function(stream, "-ERR Operation Failed\n");
++ stream->write_function(stream, "-ERR Operation failed\n");
+ }
+
+ switch_safe_free(mycmd);
+@@ -3573,7 +3588,7 @@ SWITCH_STANDARD_API(uuid_debug_audio_function)
+ if (status == SWITCH_STATUS_SUCCESS) {
+ stream->write_function(stream, "+OK Success\n");
+ } else {
+- stream->write_function(stream, "-ERR Operation Failed\n");
++ stream->write_function(stream, "-ERR Operation failed\n");
+ }
+
+ done:
+@@ -3772,7 +3787,7 @@ SWITCH_STANDARD_API(session_audio_function)
+ }
+
+ if (!(u_session = switch_core_session_locate(argv[0]))) {
+- stream->write_function(stream, "-ERR No Such Channel!\n");
++ stream->write_function(stream, "-ERR No such channel!\n");
+ goto done;
+ }
+
+@@ -3836,7 +3851,7 @@ SWITCH_STANDARD_API(break_function)
+ }
+
+ if (!(psession = switch_core_session_locate(mycmd))) {
+- stream->write_function(stream, "-ERR No Such Channel!\n");
++ stream->write_function(stream, "-ERR No such channel!\n");
+ goto done;
+ }
+
+@@ -3865,7 +3880,7 @@ SWITCH_STANDARD_API(break_function)
+ }
+ }
+
+-
++
+
+ if (switch_channel_test_flag(channel, CF_BROADCAST)) {
+ switch_channel_stop_broadcast(channel);
+@@ -3925,7 +3940,7 @@ SWITCH_STANDARD_API(pause_function)
+ switch_core_session_rwunlock(psession);
+
+ } else {
+- stream->write_function(stream, "-ERR No Such Channel!\n");
++ stream->write_function(stream, "-ERR No such channel!\n");
+ }
+ }
+
+@@ -3947,7 +3962,7 @@ SWITCH_STANDARD_API(originate_function)
+ switch_status_t status = SWITCH_STATUS_SUCCESS;
+
+ if (zstr(cmd)) {
+- stream->write_function(stream, "-USAGE %s\n", ORIGINATE_SYNTAX);
++ stream->write_function(stream, "-USAGE: %s\n", ORIGINATE_SYNTAX);
+ return SWITCH_STATUS_SUCCESS;
+ }
+
+@@ -4000,7 +4015,7 @@ SWITCH_STANDARD_API(originate_function)
+ if (machine) {
+ stream->write_function(stream, "-ERR %s\n", switch_channel_cause2str(cause));
+ } else {
+- stream->write_function(stream, "-ERR Cannot Create Outgoing Channel! [%s] cause: %s\n", aleg, switch_channel_cause2str(cause));
++ stream->write_function(stream, "-ERR Cannot create outgoing channel! [%s] cause: %s\n", aleg, switch_channel_cause2str(cause));
+ }
+ goto done;
+ }
+@@ -4034,7 +4049,7 @@ SWITCH_STANDARD_API(originate_function)
+ if (machine) {
+ stream->write_function(stream, "+OK %s\n", switch_core_session_get_uuid(caller_session));
+ } else {
+- stream->write_function(stream, "+OK Created Session: %s\n", switch_core_session_get_uuid(caller_session));
++ stream->write_function(stream, "+OK Created session: %s\n", switch_core_session_get_uuid(caller_session));
+ }
+
+ switch_core_session_rwunlock(caller_session);
+@@ -4156,7 +4171,7 @@ SWITCH_STANDARD_API(unsched_api_function)
+ }
+
+ if ((id = (uint32_t) atol(cmd))) {
+- stream->write_function(stream, "%s\n", switch_scheduler_del_task_id(id) ? "+OK" : "-ERR no such id");
++ stream->write_function(stream, "%s\n", switch_scheduler_del_task_id(id) ? "+OK" : "-ERR No such id");
+ }
+
+ return SWITCH_STATUS_SUCCESS;
+@@ -4317,15 +4332,15 @@ SWITCH_STANDARD_API(bgapi_function)
+ }
+
+ struct holder {
++ char * delim;
+ switch_stream_handle_t *stream;
+- char *http;
+- char *delim;
+ uint32_t count;
+ int print_title;
+ switch_xml_t xml;
+ cJSON *json;
+ int rows;
+ int justcount;
++ stream_format *format;
+ };
+
+ static int show_as_json_callback(void *pArg, int argc, char **argv, char **columnNames)
+@@ -4424,7 +4439,7 @@ static int show_callback(void *pArg, int argc, char **argv, char **columnNames)
+ }
+
+ if (holder->print_title && holder->count == 0) {
+- if (holder->http) {
++ if (holder->format && holder->format->html) {
+ holder->stream->write_function(holder->stream, "\n<tr>");
+ }
+
+@@ -4434,7 +4449,7 @@ static int show_callback(void *pArg, int argc, char **argv, char **columnNames)
+ name = "undefined";
+ }
+
+- if (holder->http) {
++ if (holder->format && holder->format->html) {
+ holder->stream->write_function(holder->stream, "<td>");
+ holder->stream->write_function(holder->stream, "<b>%s</b>%s", name, x == (argc - 1) ? "</td></tr>\n" : "</td><td>");
+ } else {
+@@ -4443,7 +4458,7 @@ static int show_callback(void *pArg, int argc, char **argv, char **columnNames)
+ }
+ }
+
+- if (holder->http) {
++ if (holder->format && holder->format->html) {
+ holder->stream->write_function(holder->stream, "<tr bgcolor=%s>", holder->count % 2 == 0 ? "eeeeee" : "ffffff");
+ }
+
+@@ -4451,7 +4466,7 @@ static int show_callback(void *pArg, int argc, char **argv, char **columnNames)
+ char *val = switch_str_nil(argv[x]);
+
+
+- if (holder->http) {
++ if (holder->format && holder->format->html) {
+ char aval[512];
+
+ switch_amp_encode(val, aval, sizeof(aval));
+@@ -4494,7 +4509,7 @@ SWITCH_STANDARD_API(alias_function)
+ return SWITCH_STATUS_SUCCESS;
+ }
+
+-#define SHOW_SYNTAX "codec|endpoint|application|api|dialplan|file|timer|calls [count]|channels [count|like <match string>]|calls|detailed_calls|bridged_calls|detailed_bridged_calls|aliases|complete|chat|management|modules|nat_map|say|interfaces|interface_types|tasks|limits"
++#define SHOW_SYNTAX "codec|endpoint|application|api|dialplan|file|timer|calls [count]|channels [count|like <match string>]|calls|detailed_calls|bridged_calls|detailed_bridged_calls|aliases|complete|chat|management|modules|nat_map|say|interfaces|interface_types|tasks|limits|status"
+ SWITCH_STANDARD_API(show_function)
+ {
+ char sql[1024];
+@@ -4506,50 +4521,49 @@ SWITCH_STANDARD_API(show_function)
+ char *command = NULL, *as = NULL;
+ switch_core_flag_t cflags = switch_core_flags();
+ switch_status_t status = SWITCH_STATUS_SUCCESS;
+- const char *hostname = switch_core_get_switchname();
++ const char *hostname = switch_core_get_switchname();
++ int html = 0;
++ char *nl = "\n";
++ stream_format format = { 0 };
++
++ holder.format = &format;
++ set_format(holder.format, stream);
++ html = holder.format->html; /* html is just a shortcut */
+
+ if (!(cflags & SCF_USE_SQL)) {
+- stream->write_function(stream, "-ERR SQL DISABLED NO DATA AVAILABLE!\n");
++ stream->write_function(stream, "-ERR SQL disabled, no data available!\n");
+ return SWITCH_STATUS_SUCCESS;
+ }
+
+ if (switch_core_db_handle(&db) != SWITCH_STATUS_SUCCESS) {
+- stream->write_function(stream, "%s", "-ERR Databse Error!\n");
++ stream->write_function(stream, "%s", "-ERR Database error!\n");
+ return SWITCH_STATUS_SUCCESS;
+ }
+
+ holder.justcount = 0;
+
+- if (cmd && (mydata = strdup(cmd))) {
++ if (cmd && *cmd && (mydata = strdup(cmd))) {
+ switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
+ command = argv[0];
+ if (argv[2] && !strcasecmp(argv[1], "as")) {
+ as = argv[2];
+ }
+-
+- }
+-
+- if (stream->param_event) {
+- const char *var;
+- holder.http = switch_event_get_header(stream->param_event, "http-host");
+-
+- if ((var = switch_event_get_header(stream->param_event, "content-type"))) {
+- if (!strcasecmp(var, "text/plain")) {
+- holder.http = NULL;
+- }
+- } else if (holder.http) {
+- stream->write_function(stream, "%s", "Content-Type: text/html\n\n");
+- }
+-
+ }
+
+ holder.print_title = 1;
+
+- /* If you change the field qty or order of any of these select */
+- /* statements, you must also change show_callback and friends to match! */
+ if (!command) {
+ stream->write_function(stream, "-USAGE: %s\n", SHOW_SYNTAX);
+ goto end;
++ /* for those of us that keep on typing at the CLI: "show status" instead of "status" */
++ } else if (!strncasecmp(command, "status", 6)) {
++ if (!as) {
++ as = argv[1];
++ }
++ switch_api_execute(command, as, NULL, stream);
++ goto end;
++ /* If you change the field qty or order of any of these select */
++ /* statements, you must also change show_callback and friends to match! */
+ } else if (!strncasecmp(command, "codec", 5) ||
+ !strncasecmp(command, "dialplan", 8) ||
+ !strncasecmp(command, "file", 4) ||
+@@ -4563,7 +4577,7 @@ SWITCH_STANDARD_API(show_function)
+ sprintf(sql, "select type, name, ikey from interfaces where hostname='%s' and type = '%s' order by type,name", hostname, command);
+ } else if (!strncasecmp(command, "module", 6)) {
+ if (argv[1]) {
+- sprintf(sql, "select distinct type, name, ikey, filename from interfaces where hostname='%s' and ikey = '%s' order by type,name",
++ sprintf(sql, "select distinct type, name, ikey, filename from interfaces where hostname='%s' and ikey = '%s' order by type,name",
+ hostname, argv[1]);
+ } else {
+ sprintf(sql, "select distinct type, name, ikey, filename from interfaces where hostname='%s' order by type,name", hostname);
+@@ -4582,70 +4596,7 @@ SWITCH_STANDARD_API(show_function)
+ } else {
+ sprintf(sql, "select name, description, syntax, ikey from interfaces where hostname='%s' and type = '%s' and description != '' order by type,name", hostname, command);
+ }
+- } else if (!strcasecmp(command, "calls")) {
+- sprintf(sql, "select * from basic_calls where hostname='%s' order by call_created_epoch", hostname);
+- if (argv[1] && !strcasecmp(argv[1], "count")) {
+- holder.justcount = 1;
+- if (argv[3] && !strcasecmp(argv[2], "as")) {
+- as = argv[3];
+- }
+- }
+- } else if (!strcasecmp(command, "registrations")) {
+- sprintf(sql, "select * from registrations where hostname='%s'", hostname);
+- if (argv[1] && !strcasecmp(argv[1], "count")) {
+- holder.justcount = 1;
+- if (argv[3] && !strcasecmp(argv[2], "as")) {
+- as = argv[3];
+- }
+- }
+- } else if (!strcasecmp(command, "channels") && argv[1] && !strcasecmp(argv[1], "like")) {
+- if (argv[2]) {
+- char *p;
+- for (p = argv[2]; p && *p; p++) {
+- if (*p == '\'' || *p == ';') {
+- *p = ' ';
+- }
+- }
+- if (strchr(argv[2], '%')) {
+- sprintf(sql,
+- "select * from channels where hostname='%s' and uuid like '%s' or name like '%s' or cid_name like '%s' or cid_num like '%s' or presence_data like '%s' order by created_epoch",
+- hostname, argv[2], argv[2], argv[2], argv[2], argv[2]);
+- } else {
+- sprintf(sql,
+- "select * from channels where hostname='%s' and uuid like '%%%s%%' or name like '%%%s%%' or cid_name like '%%%s%%' or cid_num like '%%%s%%' or presence_data like '%%%s%%' order by created_epoch",
+- hostname, argv[2], argv[2], argv[2], argv[2], argv[2]);
+-
+- }
+-
+- if (argv[4] && !strcasecmp(argv[3], "as")) {
+- as = argv[4];
+- }
+- } else {
+- sprintf(sql, "select * from channels where hostname='%s' order by created_epoch", hostname);
+- }
+- } else if (!strcasecmp(command, "channels")) {
+- sprintf(sql, "select * from channels where hostname='%s' order by created_epoch", hostname);
+- if (argv[1] && !strcasecmp(argv[1], "count")) {
+- holder.justcount = 1;
+- if (argv[3] && !strcasecmp(argv[2], "as")) {
+- as = argv[3];
+- }
+- }
+- } else if (!strcasecmp(command, "detailed_calls")) {
+- sprintf(sql, "select * from detailed_calls where hostname='%s' order by created_epoch", hostname);
+- if (argv[2] && !strcasecmp(argv[1], "as")) {
+- as = argv[2];
+- }
+- } else if (!strcasecmp(command, "bridged_calls")) {
+- sprintf(sql, "select * from basic_calls where b_uuid is not null and hostname='%s' order by created_epoch", hostname);
+- if (argv[2] && !strcasecmp(argv[1], "as")) {
+- as = argv[2];
+- }
+- } else if (!strcasecmp(command, "detailed_bridged_calls")) {
+- sprintf(sql, "select * from detailed_calls where b_uuid is not null and hostname='%s' order by created_epoch", hostname);
+- if (argv[2] && !strcasecmp(argv[1], "as")) {
+- as = argv[2];
+- }
++ /* moved refreshable webpage show commands i.e. show calls|registrations|channels||detailed_calls|bridged_calls|detailed_bridged_calls */
+ } else if (!strcasecmp(command, "aliases")) {
+ sprintf(sql, "select * from aliases where hostname='%s' order by alias", hostname);
+ } else if (!strcasecmp(command, "complete")) {
+@@ -4658,7 +4609,7 @@ SWITCH_STANDARD_API(show_function)
+ if ((cmdname = strchr(command, ' ')) && strcasecmp(cmdname, "as")) {
+ *cmdname++ = '\0';
+ switch_snprintfv(sql, sizeof(sql),
+- "select name, syntax, description, ikey from interfaces where hostname='%s' and type = 'api' and name = '%q' order by name",
++ "select name, syntax, description, ikey from interfaces where hostname='%s' and type = 'api' and name = '%q' order by name",
+ hostname, cmdname);
+ } else {
+ switch_snprintfv(sql, sizeof(sql), "select name, syntax, description, ikey from interfaces where hostname='%q' and type = 'api' order by name", hostname);
+@@ -4671,14 +4622,101 @@ SWITCH_STANDARD_API(show_function)
+ " WHEN 1 THEN 'tcp' "
+ " ELSE 'unknown' " " END AS proto, " " proto AS proto_num, " " sticky " " FROM nat where hostname='%s' ORDER BY port, proto", hostname);
+ } else {
+- stream->write_function(stream, "-USAGE: %s\n", SHOW_SYNTAX);
+- goto end;
++ /* from here on refreshable commands: calls|registrations|channels||detailed_calls|bridged_calls|detailed_bridged_calls */
++ if (holder.format->api) {
++ holder.format->html = SWITCH_TRUE;
++ holder.format->nl = "<br>\n";
++ }
++
++ html = holder.format->html;
++ if (html) {
++ /* set flag to allow refresh of webpage if web request contained kv-pair refresh=xx */
++ switch_event_add_header_string(stream->param_event, SWITCH_STACK_BOTTOM, "HTTP-REFRESH", "true");
++ if (holder.format->api) {
++ /* "Overwrite" default "api" Content-Type: text/plain */
++ stream->write_function(stream, "Content-Type: text/html\r\n\r\n");
++ }
++ }
++
++ if (!strcasecmp(command, "calls")) {
++ sprintf(sql, "select * from basic_calls where hostname='%s' order by call_created_epoch", hostname);
++ if (argv[1] && !strcasecmp(argv[1], "count")) {
++ holder.justcount = 1;
++ if (argv[3] && !strcasecmp(argv[2], "as")) {
++ as = argv[3];
++ }
++ }
++ } else if (!strcasecmp(command, "registrations")) {
++ sprintf(sql, "select * from registrations where hostname='%s'", hostname);
++ if (argv[1] && !strcasecmp(argv[1], "count")) {
++ holder.justcount = 1;
++ if (argv[3] && !strcasecmp(argv[2], "as")) {
++ as = argv[3];
++ }
++ }
++ } else if (!strcasecmp(command, "channels") && argv[1] && !strcasecmp(argv[1], "like")) {
++ if (argv[2]) {
++ char *p;
++ for (p = argv[2]; p && *p; p++) {
++ if (*p == '\'' || *p == ';') {
++ *p = ' ';
++ }
++ }
++ if (strchr(argv[2], '%')) {
++ sprintf(sql,
++ "select * from channels where hostname='%s' and uuid like '%s' or name like '%s' or cid_name like '%s' or cid_num like '%s' or presence_data like '%s' order by created_epoch",
++ hostname, argv[2], argv[2], argv[2], argv[2], argv[2]);
++ } else {
++ sprintf(sql,
++ "select * from channels where hostname='%s' and uuid like '%%%s%%' or name like '%%%s%%' or cid_name like '%%%s%%' or cid_num like '%%%s%%' or presence_data like '%%%s%%' order by created_epoch",
++ hostname, argv[2], argv[2], argv[2], argv[2], argv[2]);
++ }
++ if (argv[4] && !strcasecmp(argv[3], "as")) {
++ as = argv[4];
++ }
++ } else {
++ sprintf(sql, "select * from channels where hostname='%s' order by created_epoch", hostname);
++ }
++ } else if (!strcasecmp(command, "channels")) {
++ sprintf(sql, "select * from channels where hostname='%s' order by created_epoch", hostname);
++ if (argv[1] && !strcasecmp(argv[1], "count")) {
++ holder.justcount = 1;
++ if (argv[3] && !strcasecmp(argv[2], "as")) {
++ as = argv[3];
++ }
++ }
++ } else if (!strcasecmp(command, "detailed_calls")) {
++ sprintf(sql, "select * from detailed_calls where hostname='%s' order by created_epoch", hostname);
++ if (argv[2] && !strcasecmp(argv[1], "as")) {
++ as = argv[2];
++ }
++ } else if (!strcasecmp(command, "bridged_calls")) {
++ sprintf(sql, "select * from basic_calls where b_uuid is not null and hostname='%s' order by created_epoch", hostname);
++ if (argv[2] && !strcasecmp(argv[1], "as")) {
++ as = argv[2];
++ }
++ } else if (!strcasecmp(command, "detailed_bridged_calls")) {
++ sprintf(sql, "select * from detailed_calls where b_uuid is not null and hostname='%s' order by created_epoch", hostname);
++ if (argv[2] && !strcasecmp(argv[1], "as")) {
++ as = argv[2];
++ }
++ } else {
++
++ stream->write_function(stream, "-USAGE: %s\n", SHOW_SYNTAX);
++ goto end;
++ }
+ }
+
+ holder.stream = stream;
+ holder.count = 0;
+
+- if (holder.http) {
++ if (html) {
++ nl = holder.format->nl;
++ if (!as || strcasecmp(as,"xml")) {
++ /* don't bother cli with heading and timestamp */
++ stream->write_function(stream, "<h1>FreeSWITCH %s %s</h1>\n", command, holder.justcount?"(count)":"");
++ stream->write_function(stream, "%s%s", switch_event_get_header(stream->param_event,"Event-Date-Local"), nl);
++ }
+ holder.stream->write_function(holder.stream, "<table cellpadding=1 cellspacing=4 border=1>\n");
+ }
+
+@@ -4687,7 +4725,7 @@ SWITCH_STANDARD_API(show_function)
+ holder.delim = ",";
+ }
+
+- /* switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "SQL: %s.\n", sql); */
++ /* switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "SQL: %s\n", sql); */
+
+ if (!strcasecmp(as, "delim") || !strcasecmp(as, "csv")) {
+ if (zstr(holder.delim)) {
+@@ -4696,25 +4734,25 @@ SWITCH_STANDARD_API(show_function)
+ }
+ }
+ switch_cache_db_execute_sql_callback(db, sql, show_callback, &holder, &errmsg);
+- if (holder.http) {
++ if (html) {
+ holder.stream->write_function(holder.stream, "</table>");
+ }
+
+ if (errmsg) {
+- stream->write_function(stream, "-ERR SQL Error [%s]\n", errmsg);
++ stream->write_function(stream, "-ERR SQL error [%s]\n", errmsg);
+ free(errmsg);
+ errmsg = NULL;
+ } else if (help) {
+ if (holder.count == 0)
+- stream->write_function(stream, "-ERR No such command.\n");
++ stream->write_function(stream, "-ERR No such command\n");
+ } else {
+- stream->write_function(stream, "\n%u total.\n", holder.count);
++ stream->write_function(stream, "%s%u total.%s", nl, holder.count, nl);
+ }
+ } else if (!strcasecmp(as, "xml")) {
+ switch_cache_db_execute_sql_callback(db, sql, show_as_xml_callback, &holder, &errmsg);
+
+ if (errmsg) {
+- stream->write_function(stream, "-ERR SQL Error [%s]\n", errmsg);
++ stream->write_function(stream, "-ERR SQL error [%s]\n", errmsg);
+ free(errmsg);
+ errmsg = NULL;
+ }
+@@ -4778,6 +4816,7 @@ SWITCH_STANDARD_API(show_function)
+
+ } else {
+ holder.stream->write_function(holder.stream, "-ERR Cannot find format %s\n", as);
++ goto end;
+ }
+
+ end:
+@@ -4831,7 +4870,7 @@ SWITCH_STANDARD_API(uuid_session_heartbeat_function)
+ }
+
+ if (!(l_session = switch_core_session_locate(argv[0]))) {
+- stream->write_function(stream, "-ERR Usage: cannot locate session.\n");
++ stream->write_function(stream, "-ERR Cannot locate session. USAGE: uuid_session_heartbeat %s\n", HEARTBEAT_SYNTAX);
+ return SWITCH_STATUS_SUCCESS;
+ }
+
+@@ -4870,7 +4909,7 @@ SWITCH_STANDARD_API(uuid_session_heartbeat_function)
+
+ error:
+ switch_safe_free(mycmd);
+- stream->write_function(stream, "-ERR Usage: uuid_session_heartbeat %s", HEARTBEAT_SYNTAX);
++ stream->write_function(stream, "-USAGE: uuid_session_heartbeat %s\n", HEARTBEAT_SYNTAX);
+ return SWITCH_STATUS_SUCCESS;
+ }
+
+@@ -4883,7 +4922,7 @@ SWITCH_STANDARD_API(uuid_flush_dtmf_function)
+ switch_core_session_rwunlock(fsession);
+ stream->write_function(stream, "+OK\n");
+ } else {
+- stream->write_function(stream, "-ERR no such session\n");
++ stream->write_function(stream, "-ERR No such session\n");
+ }
+
+ return SWITCH_STATUS_SUCCESS;
+@@ -4937,7 +4976,7 @@ SWITCH_STANDARD_API(uuid_setvar_function)
+ switch_core_session_rwunlock(psession);
+
+ } else {
+- stream->write_function(stream, "-ERR No Such Channel!\n");
++ stream->write_function(stream, "-ERR No such channel!\n");
+ }
+ goto done;
+ }
+@@ -4991,7 +5030,7 @@ SWITCH_STANDARD_API(uuid_setvar_multi_function)
+ goto done;
+ }
+ } else {
+- stream->write_function(stream, "-ERR No Such Channel!\n");
++ stream->write_function(stream, "-ERR No such channel!\n");
+ }
+ }
+
+@@ -5050,7 +5089,7 @@ SWITCH_STANDARD_API(uuid_getvar_function)
+ switch_core_session_rwunlock(psession);
+
+ } else {
+- stream->write_function(stream, "-ERR No Such Channel!\n");
++ stream->write_function(stream, "-ERR No such channel!\n");
+ }
+ goto done;
+ }
+@@ -5080,21 +5119,21 @@ SWITCH_STANDARD_API(uuid_fileman_function)
+ if ((psession = switch_core_session_locate(uuid))) {
+ //switch_channel_t *channel;
+ switch_file_handle_t *fh = NULL;
+-
++
+ //channel = switch_core_session_get_channel(psession);
+-
++
+ if (switch_ivr_get_file_handle(psession, &fh) == SWITCH_STATUS_SUCCESS) {
+ switch_ivr_process_fh(psession, cmd, fh);
+ switch_ivr_release_file_handle(psession, &fh);
+ stream->write_function(stream, "+OK\n");
+ } else {
+- stream->write_function(stream, "-ERR No File Handle!\n");
++ stream->write_function(stream, "-ERR No file handle!\n");
+ }
+
+ switch_core_session_rwunlock(psession);
+
+ } else {
+- stream->write_function(stream, "-ERR No Such Channel!\n");
++ stream->write_function(stream, "-ERR No such channel!\n");
+ }
+ goto done;
+ }
+@@ -5205,7 +5244,7 @@ SWITCH_STANDARD_API(uuid_recv_dtmf_function)
+ SWITCH_STANDARD_API(uuid_dump_function)
+ {
+ switch_core_session_t *psession = NULL;
+- char *mycmd = NULL, *argv[4] = { 0 };
++ char *mycmd = NULL, *argv[2] = { 0 };
+ int argc = 0;
+
+ if (!zstr(cmd) && (mycmd = strdup(cmd))) {
+@@ -5241,7 +5280,7 @@ SWITCH_STANDARD_API(uuid_dump_function)
+ } else if (!strcasecmp(format, "json")) {
+ switch_event_serialize_json(event, &buf);
+ } else {
+- switch_event_serialize(event, &buf, strcasecmp(format, "plain"));
++ switch_event_serialize(event, &buf, (switch_bool_t) strcasecmp(format, "plain"));
+ }
+
+ switch_assert(buf);
+@@ -5255,7 +5294,7 @@ SWITCH_STANDARD_API(uuid_dump_function)
+ switch_core_session_rwunlock(psession);
+
+ } else {
+- stream->write_function(stream, "-ERR No Such Channel!\n");
++ stream->write_function(stream, "-ERR No such channel!\n");
+ }
+ goto done;
+ }
+@@ -5366,7 +5405,7 @@ SWITCH_STANDARD_API(strftime_tz_api_function)
+
+ if ((format = strchr(mycmd, ' '))) {
+ *format++ = '\0';
+-
++
+ if (format && (p = strchr(format, '|'))) {
+ *p++ = '\0';
+ when = atol(format);
+@@ -5378,11 +5417,11 @@ SWITCH_STANDARD_API(strftime_tz_api_function)
+ if (zstr(format)) {
+ format = "%Y-%m-%d";
+ }
+-
++
+ if (format && switch_strftime_tz(tz_name, format, date, sizeof(date), when * 1000000) == SWITCH_STATUS_SUCCESS) { /* The lookup of the zone may fail. */
+ stream->write_function(stream, "%s", date);
+ } else {
+- stream->write_function(stream, "-ERR Invalid Timezone/Format\n");
++ stream->write_function(stream, "-ERR Invalid timezone/format\n");
+ }
+
+ switch_safe_free(mycmd);
+@@ -5494,7 +5533,7 @@ SWITCH_STANDARD_API(uuid_loglevel)
+ stream->write_function(stream, "+OK\n");
+ switch_core_session_rwunlock(tsession);
+ } else {
+- stream->write_function(stream, "-ERR No Such Channel %s!\n", uuid);
++ stream->write_function(stream, "-ERR No such channel %s!\n", uuid);
+ }
+ }
+
+@@ -5530,7 +5569,7 @@ SWITCH_STANDARD_API(limit_usage_function)
+ switch_assert(mydata);
+ argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
+ }
+-
++
+ /* backwards compat version */
+ if (argc == 2) {
+ switch_safe_free(mydata);
+@@ -5541,7 +5580,7 @@ SWITCH_STANDARD_API(limit_usage_function)
+ argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Using deprecated limit api: Please specify backend. Defaulting to 'db' backend.\n");
+ }
+-
++
+ if (argc < 3) {
+ stream->write_function(stream, "USAGE: limit_usage %s\n", LIMIT_USAGE_SYNTAX);
+ goto end;
+@@ -5552,9 +5591,9 @@ SWITCH_STANDARD_API(limit_usage_function)
+ dorate = SWITCH_TRUE;
+ }
+ }
+-
++
+ count = switch_limit_usage(argv[0], argv[1], argv[2], &rcount);
+-
++
+ if (dorate == SWITCH_TRUE) {
+ stream->write_function(stream, "%d/%d", count, rcount);
+ } else {
+@@ -5601,7 +5640,7 @@ SWITCH_STANDARD_API(limit_status_function)
+ stream->write_function(stream, "USAGE: limit_status %s\n", LIMIT_STATUS_SYNTAX);
+ goto end;
+ }
+-
++
+ ret = switch_limit_status(argv[0]);
+
+ stream->write_function(stream, "%s", ret);
+@@ -5631,7 +5670,7 @@ SWITCH_STANDARD_API(limit_reset_function)
+ stream->write_function(stream, "USAGE: limit_reset %s\n", LIMIT_RESET_SYNTAX);
+ goto end;
+ }
+-
++
+ ret = switch_limit_reset(argv[0]);
+
+ stream->write_function(stream, "%s", (ret == SWITCH_STATUS_SUCCESS) ? "+OK" : "-ERR");
+@@ -5661,7 +5700,7 @@ SWITCH_STANDARD_API(uuid_limit_function)
+ switch_assert(mydata);
+ argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
+ }
+-
++
+ if (argc < 4) {
+ stream->write_function(stream, "USAGE: uuid_limit %s\n", LIMIT_SYNTAX);
+ goto end;
+@@ -5697,7 +5736,7 @@ SWITCH_STANDARD_API(uuid_limit_function)
+
+ sess = switch_core_session_locate(argv[0]);
+ if (!sess) {
+- stream->write_function(stream, "-ERR did not find a session with uuid %s\n", argv[0]);
++ stream->write_function(stream, "-ERR Cannot find session with uuid %s\n", argv[0]);
+ goto end;
+ }
+
+@@ -5738,7 +5777,7 @@ SWITCH_STANDARD_API(uuid_limit_release_function)
+ switch_assert(mydata);
+ argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
+ }
+-
++
+ if (argc < 2) {
+ stream->write_function(stream, "USAGE: uuid_limit_release %s\n", LIMIT_RELEASE_SYNTAX);
+ goto end;
+@@ -5754,14 +5793,14 @@ SWITCH_STANDARD_API(uuid_limit_release_function)
+
+ sess = switch_core_session_locate(argv[0]);
+ if (!sess) {
+- stream->write_function(stream, "-ERR did not find a session with uuid %s\n", argv[0]);
++ stream->write_function(stream, "-ERR Cannot find session with uuid %s\n", argv[0]);
+ goto end;
+ }
+
+ switch_limit_release(argv[1], sess, realm, resource);
+
+ switch_core_session_rwunlock(sess);
+-
++
+ stream->write_function(stream, "+OK");
+
+ end:
+@@ -5782,7 +5821,7 @@ SWITCH_STANDARD_API(limit_interval_reset_function)
+ switch_assert(mydata);
+ argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
+ }
+-
++
+ if (argc < 3) {
+ stream->write_function(stream, "USAGE: limit_interval_reset %s\n", LIMIT_INTERVAL_RESET_SYNTAX);
+ goto end;
+@@ -5876,23 +5915,23 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_commands_load)
+
+ switch_thread_rwlock_create(&bgapi_rwlock, pool);
+ switch_mutex_init(&reload_mutex, SWITCH_MUTEX_NESTED, pool);
+-
+
+- SWITCH_ADD_API(commands_api_interface, "acl", "compare an ip to an acl list", acl_function, "<ip> <list_name>");
++
++ SWITCH_ADD_API(commands_api_interface, "acl", "Compare an ip to an acl list", acl_function, "<ip> <list_name>");
+ SWITCH_ADD_API(commands_api_interface, "alias", "Alias", alias_function, ALIAS_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "banner", "Returns the system banner", banner_function, "");
++ SWITCH_ADD_API(commands_api_interface, "banner", "Return the system banner", banner_function, "");
+ SWITCH_ADD_API(commands_api_interface, "bgapi", "Execute an api command in a thread", bgapi_function, "<command>[ <arg>]");
+ SWITCH_ADD_API(commands_api_interface, "bg_system", "Execute a system command in the background", bg_system_function, SYSTEM_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "break", "Break", break_function, BREAK_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "break", "uuid_break", break_function, BREAK_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "complete", "Complete", complete_function, COMPLETE_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "cond", "Eval a conditional", cond_function, "<expr> ? <true val> : <false val>");
++ SWITCH_ADD_API(commands_api_interface, "cond", "Evaluate a conditional", cond_function, "<expr> ? <true val> : <false val>");
+ SWITCH_ADD_API(commands_api_interface, "console_complete", "", console_complete_function, "<line>");
+ SWITCH_ADD_API(commands_api_interface, "console_complete_xml", "", console_complete_xml_function, "<line>");
+ SWITCH_ADD_API(commands_api_interface, "create_uuid", "Create a uuid", uuid_function, UUID_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "db_cache", "db cache management", db_cache_function, "status");
+- SWITCH_ADD_API(commands_api_interface, "domain_exists", "check if a domain exists", domain_exists_function, "<domain>");
+- SWITCH_ADD_API(commands_api_interface, "echo", "echo", echo_function, "<data>");
+- SWITCH_ADD_API(commands_api_interface, "escape", "escape a string", escape_function, "<data>");
++ SWITCH_ADD_API(commands_api_interface, "db_cache", "Manage db cache", db_cache_function, "status");
++ SWITCH_ADD_API(commands_api_interface, "domain_exists", "Check if a domain exists", domain_exists_function, "<domain>");
++ SWITCH_ADD_API(commands_api_interface, "echo", "Echo", echo_function, "<data>");
++ SWITCH_ADD_API(commands_api_interface, "escape", "Escape a string", escape_function, "<data>");
+ SWITCH_ADD_API(commands_api_interface, "eval", "eval (noop)", eval_function, "[uuid:<uuid> ]<expression>");
+ SWITCH_ADD_API(commands_api_interface, "expand", "expand vars and execute", expand_function, "[uuid:<uuid> ]<cmd> <args>");
+ SWITCH_ADD_API(commands_api_interface, "find_user_xml", "find a user", find_user_function, "<key> <user> <domain>");
+@@ -5904,104 +5943,103 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_commands_load)
+ SWITCH_ADD_API(commands_api_interface, "global_setvar", "global_setvar", global_setvar_function, GLOBAL_SETVAR_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "group_call", "Generate a dial string to call a group", group_call_function, "<group>[@<domain>]");
+ SWITCH_ADD_API(commands_api_interface, "help", "Show help for all the api commands", help_function, "");
+- SWITCH_ADD_API(commands_api_interface, "host_lookup", "host_lookup", host_lookup_function, "<hostname>");
+- SWITCH_ADD_API(commands_api_interface, "hostname", "Returns the system hostname", hostname_api_function, "");
+- SWITCH_ADD_API(commands_api_interface, "switchname", "Returns the switch name", switchname_api_function, "");
++ SWITCH_ADD_API(commands_api_interface, "host_lookup", "Lookup host", host_lookup_function, "<hostname>");
++ SWITCH_ADD_API(commands_api_interface, "hostname", "Return the system hostname", hostname_api_function, "");
++ SWITCH_ADD_API(commands_api_interface, "switchname", "Return the switch name", switchname_api_function, "");
+ SWITCH_ADD_API(commands_api_interface, "hupall", "hupall", hupall_api_function, "<cause> [<var> <value>]");
+- SWITCH_ADD_API(commands_api_interface, "in_group", "determine if a user is in a group", in_group_function, "<user>[@<domain>] <group_name>");
+- SWITCH_ADD_API(commands_api_interface, "is_lan_addr", "see if an ip is a lan addr", lan_addr_function, "<ip>");
+- SWITCH_ADD_API(commands_api_interface, "limit_usage", "Gets the usage count of a limited resource", limit_usage_function, "<backend> <realm> <id>");
++ SWITCH_ADD_API(commands_api_interface, "in_group", "Determine if a user is in a group", in_group_function, "<user>[@<domain>] <group_name>");
++ SWITCH_ADD_API(commands_api_interface, "is_lan_addr", "See if an ip is a lan addr", lan_addr_function, "<ip>");
++ SWITCH_ADD_API(commands_api_interface, "limit_usage", "Get the usage count of a limited resource", limit_usage_function, "<backend> <realm> <id>");
+ SWITCH_ADD_API(commands_api_interface, "limit_hash_usage", "Deprecated: gets the usage count of a limited resource", limit_hash_usage_function, "<realm> <id>");
+- SWITCH_ADD_API(commands_api_interface, "limit_status", "Gets the status of a limit backend", limit_status_function, "<backend>");
++ SWITCH_ADD_API(commands_api_interface, "limit_status", "Get the status of a limit backend", limit_status_function, "<backend>");
+ SWITCH_ADD_API(commands_api_interface, "limit_reset", "Reset the counters of a limit backend", limit_reset_function, "<backend>");
+ SWITCH_ADD_API(commands_api_interface, "limit_interval_reset", "Reset the interval counter for a limited resource", limit_interval_reset_function, LIMIT_INTERVAL_RESET_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "list_users", "List Users configured in Directory", list_users_function, LIST_USERS_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "load", "Load Module", load_function, LOAD_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "log", "Log", log_function, LOG_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "md5", "md5", md5_function, "<data>");
+- SWITCH_ADD_API(commands_api_interface, "module_exists", "check if module exists", module_exists_function, "<module>");
+- SWITCH_ADD_API(commands_api_interface, "msleep", "sleep N milliseconds", msleep_function, "<milliseconds>");
+- SWITCH_ADD_API(commands_api_interface, "nat_map", "nat_map", nat_map_function, "[status|republish|reinit] | [add|del] <port> [tcp|udp] [static]");
+- SWITCH_ADD_API(commands_api_interface, "originate", "Originate a Call", originate_function, ORIGINATE_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "pause", "Pause", pause_function, PAUSE_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "regex", "Eval a regex", regex_function, "<data>|<pattern>[|<subst string>]");
+- SWITCH_ADD_API(commands_api_interface, "reloadacl", "Reload ACL", reload_acl_function, "");
+- SWITCH_ADD_API(commands_api_interface, "reload", "Reload Module", reload_function, UNLOAD_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "md5", "Return md5 hash", md5_function, "<data>");
++ SWITCH_ADD_API(commands_api_interface, "module_exists", "Check if module exists", module_exists_function, "<module>");
++ SWITCH_ADD_API(commands_api_interface, "msleep", "Sleep N milliseconds", msleep_function, "<milliseconds>");
++ SWITCH_ADD_API(commands_api_interface, "nat_map", "Manage NAT", nat_map_function, "[status|republish|reinit] | [add|del] <port> [tcp|udp] [static]");
++ SWITCH_ADD_API(commands_api_interface, "originate", "Originate a call", originate_function, ORIGINATE_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "pause", "Pause media on a channel", pause_function, PAUSE_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "regex", "Evaluate a regex", regex_function, "<data>|<pattern>[|<subst string>]");
++ SWITCH_ADD_API(commands_api_interface, "reloadacl", "Reload XML", reload_acl_function, "");
++ SWITCH_ADD_API(commands_api_interface, "reload", "Reload module", reload_function, UNLOAD_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "reloadxml", "Reload XML", reload_xml_function, "");
+- SWITCH_ADD_API(commands_api_interface, "replace", "replace a string", replace_function, "<data>|<string1>|<string2>");
++ SWITCH_ADD_API(commands_api_interface, "replace", "Replace a string", replace_function, "<data>|<string1>|<string2>");
+ SWITCH_ADD_API(commands_api_interface, "say_string", "", say_string_function, SAY_STRING_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "sched_api", "Schedule an api command", sched_api_function, SCHED_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "sched_broadcast", "Schedule a broadcast event to a running call", sched_broadcast_function,
+- SCHED_BROADCAST_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "sched_del", "Delete a Scheduled task", sched_del_function, "<task_id>|<group_id>");
++ SWITCH_ADD_API(commands_api_interface, "sched_broadcast", "Schedule a broadcast event to a running call", sched_broadcast_function, SCHED_BROADCAST_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "sched_del", "Delete a scheduled task", sched_del_function, "<task_id>|<group_id>");
+ SWITCH_ADD_API(commands_api_interface, "sched_hangup", "Schedule a running call to hangup", sched_hangup_function, SCHED_HANGUP_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "sched_transfer", "Schedule a transfer for a running call", sched_transfer_function, SCHED_TRANSFER_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "show", "Show", show_function, SHOW_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "show", "Show various reports", show_function, SHOW_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "sql_escape", "Escape a string to prevent sql injection", sql_escape, SQL_ESCAPE_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "status", "status", status_function, "");
+- SWITCH_ADD_API(commands_api_interface, "strftime_tz", "strftime_tz", strftime_tz_api_function, "<Timezone_name> [<epoch>|][format string]");
+- SWITCH_ADD_API(commands_api_interface, "stun", "stun", stun_function, "<stun_server>[:port]");
++ SWITCH_ADD_API(commands_api_interface, "status", "Show current status", status_function, "");
++ SWITCH_ADD_API(commands_api_interface, "strftime_tz", "Display formatted time of timezone", strftime_tz_api_function, "<timezone_name> [<epoch>|][format string]");
++ SWITCH_ADD_API(commands_api_interface, "stun", "Execute STUN lookup", stun_function, "<stun_server>[:port]");
+ SWITCH_ADD_API(commands_api_interface, "system", "Execute a system command", system_function, SYSTEM_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "time_test", "time_test", time_test_function, "<mss> [count]");
+- SWITCH_ADD_API(commands_api_interface, "timer_test", "timer_test", timer_test_function, TIMER_TEST_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "tone_detect", "Start Tone Detection on a channel", tone_detect_session_function, TONE_DETECT_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "unload", "Unload Module", unload_function, UNLOAD_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "time_test", "Show time jitter", time_test_function, "<mss> [count]");
++ SWITCH_ADD_API(commands_api_interface, "timer_test", "Exercise FS timer", timer_test_function, TIMER_TEST_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "tone_detect", "Start tone detection on a channel", tone_detect_session_function, TONE_DETECT_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "unload", "Unload module", unload_function, UNLOAD_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "unsched_api", "Unschedule an api command", unsched_api_function, UNSCHED_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "reg_url", "", reg_url_function, "<user>@<realm>");
+- SWITCH_ADD_API(commands_api_interface, "url_decode", "url decode a string", url_decode_function, "<string>");
+- SWITCH_ADD_API(commands_api_interface, "url_encode", "url encode a string", url_encode_function, "<string>");
+- SWITCH_ADD_API(commands_api_interface, "user_data", "find user data", user_data_function, "<user>@<domain> [var|param|attr] <name>");
++ SWITCH_ADD_API(commands_api_interface, "url_decode", "Url decode a string", url_decode_function, "<string>");
++ SWITCH_ADD_API(commands_api_interface, "url_encode", "Url encode a string", url_encode_function, "<string>");
++ SWITCH_ADD_API(commands_api_interface, "user_data", "Find user data", user_data_function, "<user>@<domain> [var|param|attr] <name>");
+ SWITCH_ADD_API(commands_api_interface, "uuid_early_ok", "stop ignoring early media", uuid_early_ok_function, "<uuid>");
+- SWITCH_ADD_API(commands_api_interface, "user_exists", "find a user", user_exists_function, "<key> <user> <domain>");
++ SWITCH_ADD_API(commands_api_interface, "user_exists", "Find a user", user_exists_function, "<key> <user> <domain>");
+ SWITCH_ADD_API(commands_api_interface, "uuid_answer", "answer", uuid_answer_function, "<uuid>");
+ SWITCH_ADD_API(commands_api_interface, "uuid_audio", "uuid_audio", session_audio_function, AUDIO_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "uuid_break", "Break", break_function, BREAK_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "uuid_bridge", "uuid_bridge", uuid_bridge_function, "");
+- SWITCH_ADD_API(commands_api_interface, "uuid_broadcast", "broadcast", uuid_broadcast_function, BROADCAST_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "uuid_break", "Break out of media sent to channel", break_function, BREAK_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "uuid_bridge", "Bridge call legs", uuid_bridge_function, "");
++ SWITCH_ADD_API(commands_api_interface, "uuid_broadcast", "Execute dialplan application", uuid_broadcast_function, BROADCAST_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "uuid_buglist", "List media bugs on a session", uuid_buglist_function, BUGLIST_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "uuid_chat", "Send a chat message", uuid_chat, UUID_CHAT_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "uuid_debug_audio", "debug audio", uuid_debug_audio_function, DEBUG_AUDIO_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "uuid_debug_audio", "Debug audio", uuid_debug_audio_function, DEBUG_AUDIO_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "uuid_deflect", "Send a deflect", uuid_deflect, UUID_DEFLECT_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "uuid_displace", "session displace", session_displace_function, "<uuid> [start|stop] <path> [<limit>] [mux]");
+- SWITCH_ADD_API(commands_api_interface, "uuid_display", "change display", uuid_display_function, DISPLAY_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "uuid_dump", "uuid_dump", uuid_dump_function, DUMP_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "uuid_exists", "see if a uuid exists", uuid_exists_function, EXISTS_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "uuid_fileman", "uuid_fileman", uuid_fileman_function, FILEMAN_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "uuid_displace", "Displace audio", session_displace_function, "<uuid> [start|stop] <path> [<limit>] [mux]");
++ SWITCH_ADD_API(commands_api_interface, "uuid_display", "Update phone display", uuid_display_function, DISPLAY_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "uuid_dump", "Dump session vars", uuid_dump_function, DUMP_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "uuid_exists", "Check if a uuid exists", uuid_exists_function, EXISTS_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "uuid_fileman", "Manage session audio", uuid_fileman_function, FILEMAN_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "uuid_flush_dtmf", "Flush dtmf on a given uuid", uuid_flush_dtmf_function, "<uuid>");
+- SWITCH_ADD_API(commands_api_interface, "uuid_getvar", "uuid_getvar", uuid_getvar_function, GETVAR_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "uuid_hold", "hold", uuid_hold_function, HOLD_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "uuid_kill", "Kill Channel", kill_function, KILL_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "uuid_getvar", "Get a variable from a channel", uuid_getvar_function, GETVAR_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "uuid_hold", "Place call on hold", uuid_hold_function, HOLD_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "uuid_kill", "Kill channel", kill_function, KILL_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "uuid_send_message", "Send MESSAGE to the endpoint", uuid_send_message_function, SEND_MESSAGE_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "uuid_send_info", "Send info to the endpoint", uuid_send_info_function, INFO_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "uuid_video_refresh", "Send video refresh.", uuid_video_refresh_function, VIDEO_REFRESH_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "uuid_outgoing_answer", "Answer Outgoing Channel", outgoing_answer_function, OUTGOING_ANSWER_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "uuid_limit", "Increase limit resource", uuid_limit_function, LIMIT_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "uuid_outgoing_answer", "Answer outgoing channel", outgoing_answer_function, OUTGOING_ANSWER_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "uuid_limit", "Increase limit resource", uuid_limit_function, LIMIT_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "uuid_limit_release", "Release limit resource", uuid_limit_release_function, LIMIT_RELEASE_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "uuid_limit_release", "Release limit resource", uuid_limit_release_function, LIMIT_RELEASE_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "uuid_loglevel", "set loglevel on session", uuid_loglevel, UUID_LOGLEVEL_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "uuid_media", "media", uuid_media_function, MEDIA_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "uuid_media_reneg", "media negotiation", uuid_media_neg_function, MEDIA_RENEG_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "uuid_park", "Park Channel", park_function, PARK_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "uuid_phone_event", "Send and event to the phone", uuid_phone_event_function, PHONE_EVENT_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "uuid_loglevel", "Set loglevel on session", uuid_loglevel, UUID_LOGLEVEL_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "uuid_media", "Reinvite FS in or out of media path", uuid_media_function, MEDIA_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "uuid_media_reneg", "Media negotiation", uuid_media_neg_function, MEDIA_RENEG_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "uuid_park", "Park channel", park_function, PARK_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "uuid_pause", "Pause media on a channel", pause_function, PAUSE_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "uuid_phone_event", "Send an event to the phone", uuid_phone_event_function, PHONE_EVENT_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "uuid_pre_answer", "pre_answer", uuid_pre_answer_function, "<uuid>");
+ SWITCH_ADD_API(commands_api_interface, "uuid_preprocess", "Pre-process Channel", preprocess_function, PREPROCESS_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "uuid_record", "session record", session_record_function, SESS_REC_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "uuid_record", "Record session audio", session_record_function, SESS_REC_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "uuid_recovery_refresh", "Send a recovery_refresh", uuid_recovery_refresh, UUID_RECOVERY_REFRESH_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "uuid_recv_dtmf", "receive dtmf digits", uuid_recv_dtmf_function, UUID_RECV_DTMF_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "uuid_send_dtmf", "send dtmf digits", uuid_send_dtmf_function, UUID_SEND_DTMF_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "uuid_recv_dtmf", "Receive dtmf digits", uuid_recv_dtmf_function, UUID_RECV_DTMF_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "uuid_send_dtmf", "Send dtmf digits", uuid_send_dtmf_function, UUID_SEND_DTMF_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "uuid_session_heartbeat", "uuid_session_heartbeat", uuid_session_heartbeat_function, HEARTBEAT_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "uuid_setvar_multi", "uuid_setvar_multi", uuid_setvar_multi_function, SETVAR_MULTI_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "uuid_setvar", "uuid_setvar", uuid_setvar_function, SETVAR_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "uuid_setvar_multi", "Set multiple variables", uuid_setvar_multi_function, SETVAR_MULTI_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "uuid_setvar", "Set a variable", uuid_setvar_function, SETVAR_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "uuid_transfer", "Transfer a session", transfer_function, TRANSFER_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "uuid_dual_transfer", "Transfer a session and its partner", dual_transfer_function, DUAL_TRANSFER_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "uuid_simplify", "Try to cut out of a call path / attended xfer", uuid_simplify_function, SIMPLIFY_SYNTAX);
+- SWITCH_ADD_API(commands_api_interface, "uuid_jitterbuffer", "Try to cut out of a call path / attended xfer",
+- uuid_jitterbuffer_function, JITTERBUFFER_SYNTAX);
++ SWITCH_ADD_API(commands_api_interface, "uuid_jitterbuffer", "uuid_jitterbuffer", uuid_jitterbuffer_function, JITTERBUFFER_SYNTAX);
+ SWITCH_ADD_API(commands_api_interface, "uuid_zombie_exec", "Set zombie_exec flag on the specified uuid", uuid_zombie_exec_function, "<uuid>");
+- SWITCH_ADD_API(commands_api_interface, "xml_flush_cache", "clear xml cache", xml_flush_function, "<id> <key> <val>");
+- SWITCH_ADD_API(commands_api_interface, "xml_locate", "find some xml", xml_locate_function, "[root | <section> <tag> <tag_attr_name> <tag_attr_val>]");
++ SWITCH_ADD_API(commands_api_interface, "xml_flush_cache", "Clear xml cache", xml_flush_function, "<id> <key> <val>");
++ SWITCH_ADD_API(commands_api_interface, "xml_locate", "Find some xml", xml_locate_function, "[root | <section> <tag> <tag_attr_name> <tag_attr_val>]");
+ SWITCH_ADD_API(commands_api_interface, "xml_wrap", "Wrap another api command in xml", xml_wrap_api_function, "<command> <args>");
+- SWITCH_ADD_API(commands_api_interface, "file_exists", "check if a file exists on server", file_exists_function, "<file>");
+-
++ SWITCH_ADD_API(commands_api_interface, "file_exists", "Check if a file exists on server", file_exists_function, "<file>");
+
+ switch_console_set_complete("add alias add");
+ switch_console_set_complete("add alias del");
+@@ -6086,6 +6124,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_commands_load)
+ switch_console_set_complete("add show nat_map");
+ switch_console_set_complete("add show registrations");
+ switch_console_set_complete("add show say");
++ switch_console_set_complete("add show status");
+ switch_console_set_complete("add show timer");
+ switch_console_set_complete("add shutdown");
+ switch_console_set_complete("add sql_escape");
+@@ -6151,18 +6190,17 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_commands_load)
+ switch_console_set_complete("add ...");
+ switch_console_set_complete("add file_exists");
+
+-
+ /* indicate that the module should continue to be loaded */
+ return SWITCH_STATUS_NOUNLOAD;
+ }
+
+ /* For Emacs:
+- * Local Variables:
+- * mode:c
+- * indent-tabs-mode:t
+- * tab-width:4
+- * c-basic-offset:4
+- * End:
+- * For VIM:
+- * vim:set softtabstop=4 shiftwidth=4 tabstop=4:
+- */
++* Local Variables:
++* mode:c
++* indent-tabs-mode:t
++* tab-width:4
++* c-basic-offset:4
++* End:
++* For VIM:
++* vim:set softtabstop=4 shiftwidth=4 tabstop=4:
++*/
+diff --git a/src/mod/languages/mod_lua/mod_lua.cpp b/src/mod/languages/mod_lua/mod_lua.cpp
+index 0df0d8f..a409f05 100644
+--- a/src/mod/languages/mod_lua/mod_lua.cpp
++++ b/src/mod/languages/mod_lua/mod_lua.cpp
+@@ -483,10 +483,14 @@ SWITCH_STANDARD_API(lua_api_function)
+ }
+
+ if ((error = lua_parse_and_execute(L, mycmd))) {
+- if (switch_event_get_header(stream->param_event, "http-host")) {
+- stream->write_function(stream, "Content-Type: text/html\n\n<H2>Error Executing Script</H2>");
++ char * http = switch_event_get_header(stream->param_event, "http-uri");
++ if (http && (!strncasecmp(http, "/api/", 5) || !strncasecmp(http, "/webapi/", 8))) {
++ /* api -> fs api streams the Content-Type e.g. text/html or text/xml */
++ /* api -> default Content-Type is text/plain */
++ /* webapi, txtapi -> Content-Type defined in mod_xmlrpc text/html resp. text/plain */
++ stream->write_function(stream, "<H2>Error Executing Script</H2>");
+ } else {
+- stream->write_function(stream, "-ERR encountered\n");
++ stream->write_function(stream, "-ERR Cannot execute script\n");
+ }
+ }
+ lua_uninit(L);
+diff --git a/src/mod/xml_int/mod_xml_rpc/Makefile b/src/mod/xml_int/mod_xml_rpc/Makefile
+index b4890d5..cfc0276 100644
+--- a/src/mod/xml_int/mod_xml_rpc/Makefile
++++ b/src/mod/xml_int/mod_xml_rpc/Makefile
+@@ -1,7 +1,8 @@
+ BASE=../../../..
+ XMLRPC_DIR=$(BASE)/libs/xmlrpc-c
+
+-LOCAL_OBJS = $(XMLRPC_DIR)/lib/libutil/asprintf.o\
++LOCAL_OBJS = $(XMLRPC_DIR)/src/version.o\
++$(XMLRPC_DIR)/lib/libutil/asprintf.o\
+ $(XMLRPC_DIR)/lib/util/casprintf.o\
+ $(XMLRPC_DIR)/lib/abyss/src/channel.o\
+ $(XMLRPC_DIR)/lib/abyss/src/chanswitch.o\
+@@ -22,6 +23,7 @@ $(XMLRPC_DIR)/lib/libutil/make_printable.o\
+ $(XMLRPC_DIR)/lib/libutil/memblock.o\
+ $(XMLRPC_DIR)/src/method.o\
+ $(XMLRPC_DIR)/src/parse_value.o\
++$(XMLRPC_DIR)/src/parse_datetime.o\
+ $(XMLRPC_DIR)/src/registry.o\
+ $(XMLRPC_DIR)/src/resource.o\
+ $(XMLRPC_DIR)/lib/abyss/src/response.o\
+@@ -40,7 +42,8 @@ $(XMLRPC_DIR)/lib/abyss/src/token.o\
+ $(XMLRPC_DIR)/src/trace.o\
+ $(XMLRPC_DIR)/lib/abyss/src/trace.o\
+ $(XMLRPC_DIR)/lib/libutil/utf8.o\
+-$(XMLRPC_DIR)/src/version.o\
++$(XMLRPC_DIR)/lib/libutil/string_number.o\
++$(XMLRPC_DIR)/lib/libutil/base64.o\
+ $(XMLRPC_DIR)/lib/expat/xmlparse/xmlparse.o\
+ $(XMLRPC_DIR)/lib/expat/xmltok/xmlrole.o\
+ $(XMLRPC_DIR)/src/xmlrpc_array.o\
+@@ -59,14 +62,6 @@ $(XMLRPC_DIR)/src/xmlrpc_string.o\
+ $(XMLRPC_DIR)/src/xmlrpc_struct.o\
+ $(XMLRPC_DIR)/lib/expat/xmltok/xmltok.o
+
+-#XMLRPCLAS = $(XMLRPC_DIR)/src/libxmlrpc.a
+-#dont ask...
+-#XMLRPCLAS = $(XMLRPC_DIR)/src/*.o
+-#XMLRPCLAS += $(XMLRPC_DIR)/src/libxmlrpc_server.so $(XMLRPC_DIR)/src/libxmlrpc.so
+-#XMLRPCLAS += $(XMLRPC_DIR)/src/libxmlrpc_server_abyss.so $(XMLRPC_DIR)/lib/abyss/src/libxmlrpc_abyss.so
+-#XMLRPCLAS += $(XMLRPC_DIR)/lib/expat/xmlparse/libxmlrpc_xmlparse.so $(XMLRPC_DIR)/lib/expat/xmltok/libxmlrpc_xmltok.so
+-#LOCAL_LIBADD =$(XMLRPCLAS)
+-
+ LOCAL_CFLAGS = -w -I$(XMLRPC_DIR)/lib/expat/xmlparse -I$(XMLRPC_DIR)/lib/expat/xmltok -I$(XMLRPC_DIR) -I$(XMLRPC_DIR)/include
+ LOCAL_CFLAGS+= -I$(XMLRPC_DIR)/lib/abyss/src -I$(XMLRPC_DIR)/lib/util/include -D_THREAD -D__EXTENSIONS__
+
+@@ -81,3 +76,15 @@ $(XMLRPC_DIR)/lib/expat/xmltok/xmltok.o: $(XMLRPC_DIR)/lib/expat/xmltok/nametab.
+ $(XMLRPC_DIR)/lib/expat/xmltok/nametab.h:
+ cd $(XMLRPC_DIR)/lib/expat/gennmtab && $(MAKE)
+ cd $(XMLRPC_DIR)/lib/expat/xmltok && ../gennmtab/gennmtab > nametab.h
++
++$(XMLRPC_DIR)/src/version.o: $(XMLRPC_DIR)/version.h
++
++$(XMLRPC_DIR)/version.h:
++ cd $(XMLRPC_DIR) && $(MAKE) version.h
++ cd $(XMLRPC_DIR)/include && $(MAKE) xmlrpc-c/config.h
++
++local_clean:
++ cd $(XMLRPC_DIR) && $(MAKE) clean
++
++
++
+diff --git a/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.2010.vcxproj b/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.2010.vcxproj
+index a57eaf0..f95e975 100644
+--- a/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.2010.vcxproj
++++ b/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.2010.vcxproj
+@@ -1,167 +1,155 @@
+-<?xml version="1.0" encoding="utf-8"?>\r
+-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+- <ItemGroup Label="ProjectConfigurations">\r
+- <ProjectConfiguration Include="Debug|Win32">\r
+- <Configuration>Debug</Configuration>\r
+- <Platform>Win32</Platform>\r
+- </ProjectConfiguration>\r
+- <ProjectConfiguration Include="Debug|x64">\r
+- <Configuration>Debug</Configuration>\r
+- <Platform>x64</Platform>\r
+- </ProjectConfiguration>\r
+- <ProjectConfiguration Include="Release|Win32">\r
+- <Configuration>Release</Configuration>\r
+- <Platform>Win32</Platform>\r
+- </ProjectConfiguration>\r
+- <ProjectConfiguration Include="Release|x64">\r
+- <Configuration>Release</Configuration>\r
+- <Platform>x64</Platform>\r
+- </ProjectConfiguration>\r
+- </ItemGroup>\r
+- <PropertyGroup Label="Globals">\r
+- <ProjectName>mod_xml_rpc</ProjectName>\r
+- <ProjectGuid>{CBEC7225-0C21-4DA8-978E-1F158F8AD950}</ProjectGuid>\r
+- <RootNamespace>mod_xml_rpc</RootNamespace>\r
+- <Keyword>Win32Proj</Keyword>\r
+- </PropertyGroup>\r
+- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+- <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+- <CharacterSet>MultiByte</CharacterSet>\r
+- </PropertyGroup>\r
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+- <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+- <CharacterSet>MultiByte</CharacterSet>\r
+- </PropertyGroup>\r
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+- <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+- <CharacterSet>MultiByte</CharacterSet>\r
+- </PropertyGroup>\r
+- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+- <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+- <CharacterSet>MultiByte</CharacterSet>\r
+- </PropertyGroup>\r
+- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+- <ImportGroup Label="ExtensionSettings">\r
+- </ImportGroup>\r
+- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+- <Import Project="..\..\..\..\w32\module_release.props" />\r
+- <Import Project="..\..\..\..\w32\curl.props" />\r
+- </ImportGroup>\r
+- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+- <Import Project="..\..\..\..\w32\module_debug.props" />\r
+- <Import Project="..\..\..\..\w32\curl.props" />\r
+- </ImportGroup>\r
+- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+- <Import Project="..\..\..\..\w32\module_release.props" />\r
+- <Import Project="..\..\..\..\w32\curl.props" />\r
+- </ImportGroup>\r
+- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+- <Import Project="..\..\..\..\w32\module_debug.props" />\r
+- <Import Project="..\..\..\..\w32\curl.props" />\r
+- </ImportGroup>\r
+- <PropertyGroup Label="UserMacros" />\r
+- <PropertyGroup>\r
+- <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+- </PropertyGroup>\r
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+- <ClCompile>\r
+- <AdditionalIncludeDirectories>%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\include;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\lib\abyss\src;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\lib\util\include;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\Windows;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions>ABYSS_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <PrecompiledHeader>\r
+- </PrecompiledHeader>\r
+- </ClCompile>\r
+- <Link>\r
+- <AdditionalLibraryDirectories>..\..\..\..\libs\xmlrpc\lib;..\..\..\..\libs\xmlrpc\lib\abyss\src\$(OutDir);..\..\..\..\libs\apr-util\xml\expat\lib\LibD;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+- <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+- <DataExecutionPrevention>\r
+- </DataExecutionPrevention>\r
+- </Link>\r
+- </ItemDefinitionGroup>\r
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+- <Midl>\r
+- <TargetEnvironment>X64</TargetEnvironment>\r
+- </Midl>\r
+- <ClCompile>\r
+- <AdditionalIncludeDirectories>%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\include;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\lib\abyss\src;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\lib\util\include;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\Windows;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions>ABYSS_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <PrecompiledHeader>\r
+- </PrecompiledHeader>\r
+- </ClCompile>\r
+- <Link>\r
+- <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+- <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+- <DataExecutionPrevention>\r
+- </DataExecutionPrevention>\r
+- <TargetMachine>MachineX64</TargetMachine>\r
+- </Link>\r
+- </ItemDefinitionGroup>\r
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+- <ClCompile>\r
+- <AdditionalIncludeDirectories>%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\include;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\lib\abyss\src;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\lib\util\include;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\Windows;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions>ABYSS_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <PrecompiledHeader>\r
+- </PrecompiledHeader>\r
+- </ClCompile>\r
+- <Link>\r
+- <AdditionalLibraryDirectories>..\..\..\..\libs\xmlrpc\lib;..\..\..\..\libs\xmlrpc\lib\abyss\src\$(OutDir);..\..\..\..\libs\apr-util\xml\expat\lib\LibR;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+- <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+- <DataExecutionPrevention>\r
+- </DataExecutionPrevention>\r
+- </Link>\r
+- </ItemDefinitionGroup>\r
+- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+- <Midl>\r
+- <TargetEnvironment>X64</TargetEnvironment>\r
+- </Midl>\r
+- <ClCompile>\r
+- <AdditionalIncludeDirectories>%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\include;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\lib\abyss\src;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\lib\util\include;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\Windows;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+- <PreprocessorDefinitions>ABYSS_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+- <PrecompiledHeader>\r
+- </PrecompiledHeader>\r
+- </ClCompile>\r
+- <Link>\r
+- <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+- <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+- <DataExecutionPrevention>\r
+- </DataExecutionPrevention>\r
+- <TargetMachine>MachineX64</TargetMachine>\r
+- </Link>\r
+- </ItemDefinitionGroup>\r
+- <ItemGroup>\r
+- <ClCompile Include="mod_xml_rpc.c" />\r
+- </ItemGroup>\r
+- <ItemGroup>\r
+- <ProjectReference Include="..\..\..\..\libs\win32\curl\curllib.2010.vcxproj">\r
+- <Project>{87ee9da4-de1e-4448-8324-183c98dca588}</Project>\r
+- <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+- </ProjectReference>\r
+- <ProjectReference Include="..\..\..\..\libs\xmlrpc-c\Windows\abyss.2010.vcxproj">\r
+- <Project>{d2396dd7-7d38-473a-abb7-6f96d65ae1b9}</Project>\r
+- <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+- </ProjectReference>\r
+- <ProjectReference Include="..\..\..\..\libs\xmlrpc-c\Windows\xmlparse.2010.vcxproj">\r
+- <Project>{0d108721-eae8-4baf-8102-d8960ec93647}</Project>\r
+- <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+- </ProjectReference>\r
+- <ProjectReference Include="..\..\..\..\libs\xmlrpc-c\Windows\xmlrpc.2010.vcxproj">\r
+- <Project>{cee544a9-0303-44c2-8ece-efa7d7bcbbba}</Project>\r
+- <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+- </ProjectReference>\r
+- <ProjectReference Include="..\..\..\..\libs\xmlrpc-c\Windows\xmltok.2010.vcxproj">\r
+- <Project>{b535402e-38d2-4d54-8360-423acbd17192}</Project>\r
+- <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+- </ProjectReference>\r
+- <ProjectReference Include="..\..\..\..\w32\Library\FreeSwitchCore.2010.vcxproj">\r
+- <Project>{202d7a4e-760d-4d0e-afa1-d7459ced30ff}</Project>\r
+- <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+- </ProjectReference>\r
+- </ItemGroup>\r
+- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+- <ImportGroup Label="ExtensionTargets">\r
+- </ImportGroup>\r
++<?xml version="1.0" encoding="utf-8"?>
++<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
++ <ItemGroup Label="ProjectConfigurations">
++ <ProjectConfiguration Include="Debug|Win32">
++ <Configuration>Debug</Configuration>
++ <Platform>Win32</Platform>
++ </ProjectConfiguration>
++ <ProjectConfiguration Include="Debug|x64">
++ <Configuration>Debug</Configuration>
++ <Platform>x64</Platform>
++ </ProjectConfiguration>
++ <ProjectConfiguration Include="Release|Win32">
++ <Configuration>Release</Configuration>
++ <Platform>Win32</Platform>
++ </ProjectConfiguration>
++ <ProjectConfiguration Include="Release|x64">
++ <Configuration>Release</Configuration>
++ <Platform>x64</Platform>
++ </ProjectConfiguration>
++ </ItemGroup>
++ <PropertyGroup Label="Globals">
++ <ProjectName>mod_xml_rpc</ProjectName>
++ <ProjectGuid>{CBEC7225-0C21-4DA8-978E-1F158F8AD950}</ProjectGuid>
++ <RootNamespace>mod_xml_rpc</RootNamespace>
++ <Keyword>Win32Proj</Keyword>
++ </PropertyGroup>
++ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
++ <ConfigurationType>DynamicLibrary</ConfigurationType>
++ <CharacterSet>MultiByte</CharacterSet>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
++ <ConfigurationType>DynamicLibrary</ConfigurationType>
++ <CharacterSet>MultiByte</CharacterSet>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
++ <ConfigurationType>DynamicLibrary</ConfigurationType>
++ <CharacterSet>MultiByte</CharacterSet>
++ </PropertyGroup>
++ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
++ <ConfigurationType>DynamicLibrary</ConfigurationType>
++ <CharacterSet>MultiByte</CharacterSet>
++ </PropertyGroup>
++ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
++ <ImportGroup Label="ExtensionSettings">
++ </ImportGroup>
++ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
++ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++ <Import Project="..\..\..\..\w32\module_release.props" />
++ </ImportGroup>
++ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
++ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++ <Import Project="..\..\..\..\w32\module_debug.props" />
++ </ImportGroup>
++ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
++ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++ <Import Project="..\..\..\..\w32\module_release.props" />
++ </ImportGroup>
++ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
++ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++ <Import Project="..\..\..\..\w32\module_debug.props" />
++ </ImportGroup>
++ <PropertyGroup Label="UserMacros" />
++ <PropertyGroup>
++ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
++ </PropertyGroup>
++ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
++ <ClCompile>
++ <AdditionalIncludeDirectories>$(SolutionDir)libs\xmlrpc-c\include;$(SolutionDir)libs\xmlrpc-c\lib\abyss\src;$(SolutionDir)libs\xmlrpc-c\lib\util\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++ <PreprocessorDefinitions>ABYSS_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <PrecompiledHeader>
++ </PrecompiledHeader>
++ </ClCompile>
++ <Link>
++ <AdditionalLibraryDirectories>..\..\..\..\libs\xmlrpc\lib;..\..\..\..\libs\xmlrpc\lib\abyss\src\$(OutDir);..\..\..\..\libs\apr-util\xml\expat\lib\LibD;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
++ <RandomizedBaseAddress>false</RandomizedBaseAddress>
++ <DataExecutionPrevention>
++ </DataExecutionPrevention>
++ </Link>
++ </ItemDefinitionGroup>
++ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
++ <Midl>
++ <TargetEnvironment>X64</TargetEnvironment>
++ </Midl>
++ <ClCompile>
++ <AdditionalIncludeDirectories>$(SolutionDir)libs\xmlrpc-c\include;$(SolutionDir)libs\xmlrpc-c\lib\abyss\src;$(SolutionDir)libs\xmlrpc-c\lib\util\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++ <PreprocessorDefinitions>ABYSS_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <PrecompiledHeader>
++ </PrecompiledHeader>
++ </ClCompile>
++ <Link>
++ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
++ <RandomizedBaseAddress>false</RandomizedBaseAddress>
++ <DataExecutionPrevention>
++ </DataExecutionPrevention>
++ <TargetMachine>MachineX64</TargetMachine>
++ </Link>
++ </ItemDefinitionGroup>
++ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
++ <ClCompile>
++ <AdditionalIncludeDirectories>$(SolutionDir)libs\xmlrpc-c\include;$(SolutionDir)libs\xmlrpc-c\lib\abyss\src;$(SolutionDir)libs\xmlrpc-c\lib\util\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++ <PreprocessorDefinitions>ABYSS_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <PrecompiledHeader>
++ </PrecompiledHeader>
++ </ClCompile>
++ <Link>
++ <AdditionalLibraryDirectories>..\..\..\..\libs\xmlrpc\lib;..\..\..\..\libs\xmlrpc\lib\abyss\src\$(OutDir);..\..\..\..\libs\apr-util\xml\expat\lib\LibR;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
++ <RandomizedBaseAddress>false</RandomizedBaseAddress>
++ <DataExecutionPrevention>
++ </DataExecutionPrevention>
++ </Link>
++ </ItemDefinitionGroup>
++ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
++ <Midl>
++ <TargetEnvironment>X64</TargetEnvironment>
++ </Midl>
++ <ClCompile>
++ <AdditionalIncludeDirectories>$(SolutionDir)libs\xmlrpc-c\include;$(SolutionDir)libs\xmlrpc-c\lib\abyss\src;$(SolutionDir)libs\xmlrpc-c\lib\util\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++ <PreprocessorDefinitions>ABYSS_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++ <PrecompiledHeader>
++ </PrecompiledHeader>
++ </ClCompile>
++ <Link>
++ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
++ <RandomizedBaseAddress>false</RandomizedBaseAddress>
++ <DataExecutionPrevention>
++ </DataExecutionPrevention>
++ <TargetMachine>MachineX64</TargetMachine>
++ </Link>
++ </ItemDefinitionGroup>
++ <ItemGroup>
++ <ClCompile Include="mod_xml_rpc.c" />
++ </ItemGroup>
++ <ItemGroup>
++ <ProjectReference Include="..\..\..\..\libs\win32\xmlrpc-c\abyss.2010.vcxproj">
++ <Project>{d2396dd7-7d38-473a-abb7-6f96d65ae1b9}</Project>
++ </ProjectReference>
++ <ProjectReference Include="..\..\..\..\libs\win32\xmlrpc-c\xmlparse.2010.vcxproj">
++ <Project>{0d108721-eae8-4baf-8102-d8960ec93647}</Project>
++ </ProjectReference>
++ <ProjectReference Include="..\..\..\..\libs\win32\xmlrpc-c\xmlrpc.2010.vcxproj">
++ <Project>{cee544a9-0303-44c2-8ece-efa7d7bcbbba}</Project>
++ </ProjectReference>
++ <ProjectReference Include="..\..\..\..\libs\win32\xmlrpc-c\xmltok.2010.vcxproj">
++ <Project>{b535402e-38d2-4d54-8360-423acbd17192}</Project>
++ </ProjectReference>
++ <ProjectReference Include="..\..\..\..\w32\Library\FreeSwitchCore.2010.vcxproj">
++ <Project>{202d7a4e-760d-4d0e-afa1-d7459ced30ff}</Project>
++ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
++ </ProjectReference>
++ </ItemGroup>
++ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
++ <ImportGroup Label="ExtensionTargets">
++ </ImportGroup>
+ </Project>
+\ No newline at end of file
+diff --git a/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c b/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c
+index 9b20546..4489cfc 100644
+--- a/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c
++++ b/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c
+@@ -1,4 +1,4 @@
+-/*
++/*
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ * Copyright (C) 2005-2012, Anthony Minessale II <anthm@freeswitch.org>
+ *
+@@ -22,13 +22,38 @@
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+- *
++ *
+ * Anthony Minessale II <anthm@freeswitch.org>
+ * John Wehle <john@feith.com>
+- *
++ * Garmt Boekholt <garmt@cimico.com>
+ *
+ * mod_xml_rpc.c -- XML RPC
+ *
++ * embedded webserver for FS
++ * exposes fs api to web (and ajax, javascript, ...)
++ * supports GET/POST requests (as defined below)
++ * and similar XMLRPC format /RPC2 freeswitch.api and management.api
++ *
++ * usage:
++ * (1) http:/host:port/[txt|web|xml]api/fsapicommand[?arg[ arg]*][ &key=value[+&key=value]*]
++ * e.g. http:/host:port/api/show?calls &refresh=5+&weather=nice
++ * (2) http:/host:port/filepath - serves files from conf/htdocs
++ *
++ * NB:
++ * ad (1) - key/value pairs are propagated as event headers
++ * - if &key=value is "&refresh=xx" - special feature: automatic refresh after xx sec (triggered by browser)
++ * note that refresh works only
++ * IF response content-type: text/html (i.e. "webapi" or "api")
++ * AND fs api command created an event header HTTP-REFRESH before the first write_stream
++ * NOTE if "api", fs api command has to overwrite content-type to be text/html i.s.o. text/plain (default)
++ *
++ * - if api format is "api" mod_xml_rpc will automatically assume plain/text (so webunaware fs commands are rendered apropriately)
++ * - xmlapi doesn't seem to be used, however if a fs api command renders xml, you can set the format type to xml
++ * txtapi-text/plain or webapi-text/html surround xml with <pre> xml <pre/>
++ * - typically fs api command arguments are encoded with UrlPathEncode (spaces -> %20), and k/v pairs are urlencoded (space -> +)
++ *
++ * ad (2) ms ie may show extra empty lines when serving large txt files as ie has problems rendering content-type "plain/text"
++ *
+ */
+ #include <switch.h>
+ #include <switch_version.h>
+@@ -40,16 +65,17 @@
+ #include <xmlrpc-c/abyss.h>
+ #include <xmlrpc-c/server.h>
+ #include <xmlrpc-c/server_abyss.h>
+-#include "../../libs/xmlrpc-c/lib/abyss/src/token.h"
+-#include "http.h"
+-#include "session.h"
++#include <xmlrpc-c/base64_int.h>
++#include <../lib/abyss/src/token.h>
++#include <../lib/abyss/src/http.h>
++#include <../lib/abyss/src/session.h>
+
+ SWITCH_MODULE_LOAD_FUNCTION(mod_xml_rpc_load);
+ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_xml_rpc_shutdown);
+ SWITCH_MODULE_RUNTIME_FUNCTION(mod_xml_rpc_runtime);
+ SWITCH_MODULE_DEFINITION(mod_xml_rpc, mod_xml_rpc_load, mod_xml_rpc_shutdown, mod_xml_rpc_runtime);
+
+-static abyss_bool HTTPWrite(TSession * s, char *buffer, uint32_t len);
++static abyss_bool HTTPWrite(TSession * s, const char *buffer, const uint32_t len);
+
+ static struct {
+ uint16_t port;
+@@ -60,6 +86,7 @@ static struct {
+ char *default_domain;
+ switch_bool_t virtual_host;
+ TServer abyssServer;
++ xmlrpc_registry *registryP;
+ } globals;
+
+ SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_realm, globals.realm);
+@@ -86,18 +113,20 @@ static switch_status_t do_config(void)
+ char *var = (char *) switch_xml_attr_soft(param, "name");
+ char *val = (char *) switch_xml_attr_soft(param, "value");
+
+- if (!strcasecmp(var, "auth-realm")) {
+- realm = val;
+- } else if (!strcasecmp(var, "auth-user")) {
+- user = val;
+- } else if (!strcasecmp(var, "auth-pass")) {
+- pass = val;
+- } else if (!strcasecmp(var, "http-port")) {
+- globals.port = (uint16_t) atoi(val);
+- } else if (!strcasecmp(var, "default-domain")) {
+- default_domain = val;
+- } else if (!strcasecmp(var, "virtual-host")) {
+- globals.virtual_host = switch_true(val);
++ if (!zstr(var) && !zstr(val)) {
++ if (!strcasecmp(var, "auth-realm")) {
++ realm = val;
++ } else if (!strcasecmp(var, "auth-user")) {
++ user = val;
++ } else if (!strcasecmp(var, "auth-pass")) {
++ pass = val;
++ } else if (!strcasecmp(var, "http-port")) {
++ globals.port = (uint16_t) atoi(val);
++ } else if (!strcasecmp(var, "default-domain")) {
++ default_domain = val;
++ } else if (!strcasecmp(var, "virtual-host")) {
++ globals.virtual_host = switch_true(val);
++ }
+ }
+ }
+ }
+@@ -135,7 +164,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_xml_rpc_load)
+
+ static switch_status_t http_stream_raw_write(switch_stream_handle_t *handle, uint8_t *data, switch_size_t datalen)
+ {
+- TSession *r = handle->data;
++ TSession *r = (TSession *) handle->data;
+
+ return HTTPWrite(r, (char *) data, (uint32_t) datalen) ? SWITCH_STATUS_SUCCESS : SWITCH_STATUS_FALSE;
+
+@@ -143,19 +172,59 @@ static switch_status_t http_stream_raw_write(switch_stream_handle_t *handle, uin
+
+ static switch_status_t http_stream_write(switch_stream_handle_t *handle, const char *fmt, ...)
+ {
+- va_list ap;
+- TSession *r = handle->data;
+- int ret = 0;
++ TSession *r = (TSession *) handle->data;
++ int ret = 1;
+ char *data;
++ switch_event_t *evnt = handle->param_event;
++ va_list ap;
+
+ va_start(ap, fmt);
+ ret = switch_vasprintf(&data, fmt, ap);
+ va_end(ap);
+
+ if (data) {
+- ret = 0;
+- HTTPWrite(r, data, (uint32_t) strlen(data));
+- free(data);
++ /* Stream Content-Type (http header) to the xmlrpc (web) client, if fs api command did not do it yet. */
++ /* If (Content-Type in event) then the header was already replied. */
++ /* If fs api command is not "web aware", this will set the Content-Type to "text/plain". */
++ const char *http_refresh = NULL;
++ const char *ct = NULL;
++ const char *refresh = NULL;
++ if (evnt && !(ct = switch_event_get_header(evnt, "Content-Type"))){
++ const char *val = switch_stristr("Content-Type", data);
++ if (!val) {
++ val = "Content-Type: text/plain\r\n\r\n";
++ ret = HTTPWrite(r, val, (uint32_t) strlen(val));
++ }
++ /* flag to prevent running this more than once per http reply */
++ switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "Content-Type", strstr(val,":")+2);
++ ct = switch_event_get_header(evnt, "Content-Type");
++ }
++
++ if (ret) {
++ ret = HTTPWrite(r, data, (uint32_t) strlen(data));
++ }
++ switch_safe_free(data);
++
++ /* e.g. "http://www.cluecon.fs/api/show?calls &refresh=5" */
++ /* fs api command can set event header "HTTP-REFRESH" so that the web page will automagically refresh, if */
++ /* "refresh=xxx" was part of the http query kv pairs */
++ if (ret && ct && *ct && (http_refresh = switch_event_get_header(evnt, "HTTP-REFRESH"))
++ && (refresh = switch_event_get_header(evnt, "refresh"))
++ && !strstr("text/html", ct)
++ && (atoi(refresh) > 0 )) {
++ const char *query = switch_event_get_header(evnt, "HTTP-QUERY");
++ const char *uri = switch_event_get_header(evnt, "HTTP-URI");
++ if (uri && query && *uri && *query) {
++ char *buf = switch_mprintf("<META HTTP-EQUIV=REFRESH CONTENT=\"%s; URL=%s?%s\">\n", refresh, uri, query);
++ ret = HTTPWrite(r, buf, (uint32_t) strlen(buf));
++ switch_safe_free(buf);
++ }
++ }
++
++ /* only one refresh meta header per reply */
++ if (http_refresh) {
++ switch_event_del_header(evnt, "HTTP-REFRESH");
++ }
+ }
+
+ return ret ? SWITCH_STATUS_FALSE : SWITCH_STATUS_SUCCESS;
+@@ -192,7 +261,7 @@ static abyss_bool user_attributes(const char *user, const char *domain_name,
+ switch_event_destroy(¶ms);
+ return FALSE;
+ }
+-
++
+ switch_event_destroy(¶ms);
+ alias = switch_xml_attr(x_user, "number-alias");
+
+@@ -241,9 +310,8 @@ static abyss_bool is_authorized(const TSession * r, const char *command)
+ char *dp;
+ char *dup = NULL;
+ char *argv[256] = { 0 };
+- char *status = NULL;
+ int argc = 0, i = 0, ok = 0;
+- int err = 403;
++ unsigned int err = 403;
+
+ if (!r) {
+ return FALSE;
+@@ -273,7 +341,7 @@ static abyss_bool is_authorized(const TSession * r, const char *command)
+ goto end;
+ }
+
+-
++
+ err = 686;
+
+ if (!user_attributes(user, domain_name, NULL, NULL, NULL, &allowed_commands)) {
+@@ -288,8 +356,8 @@ static abyss_bool is_authorized(const TSession * r, const char *command)
+
+ if ((dup = allowed_commands)) {
+ argc = switch_separate_string(dup, ',', argv, (sizeof(argv) / sizeof(argv[0])));
+-
+- for (i = 0; i < argc; i++) {
++
++ for (i = 0; i < argc && argv[i]; i++) {
+ if (!strcasecmp(argv[i], command) || !strcasecmp(argv[i], "any")) {
+ ok = 1;
+ break;
+@@ -310,17 +378,17 @@ static abyss_bool is_authorized(const TSession * r, const char *command)
+ return ok ? TRUE : FALSE;
+ }
+
+-static abyss_bool http_directory_auth(TSession * r, char *domain_name)
++static abyss_bool http_directory_auth(TSession *r, char *domain_name)
+ {
+- char *p;
+- char *x;
+- char z[256], t[80];
+- char user[512];
+- char *pass;
++ char *p = NULL;
++ char *x = NULL;
++ char z[256] = "", t[80] = "";
++ char user[512] = "" ;
++ char *pass = NULL;
+ const char *mypass1 = NULL, *mypass2 = NULL;
+ const char *box = NULL;
+ int at = 0;
+- char *dp;
++ char *dp = NULL;
+ abyss_bool rval = FALSE;
+ char *dup_domain = NULL;
+
+@@ -372,13 +440,13 @@ static abyss_bool http_directory_auth(TSession * r, char *domain_name)
+ } else {
+ switch_snprintf(z, sizeof(z), "%s:%s", globals.user, globals.pass);
+ }
+- Base64Encode(z, t);
++ xmlrpc_base64Encode(z, t);
+
+ if (!strcmp(p, t)) {
+ goto authed;
+ }
+ }
+-
++
+ if (!user_attributes(user, domain_name, &mypass1, &mypass2, &box, NULL)) {
+ goto fail;
+ }
+@@ -396,7 +464,7 @@ static abyss_bool http_directory_auth(TSession * r, char *domain_name)
+ } else {
+ switch_snprintf(z, sizeof(z), "%s:%s", user, mypass1);
+ }
+- Base64Encode(z, t);
++ xmlrpc_base64Encode(z, t);
+
+ if (!strcmp(p, t)) {
+ goto authed;
+@@ -408,7 +476,7 @@ static abyss_bool http_directory_auth(TSession * r, char *domain_name)
+ } else {
+ switch_snprintf(z, sizeof(z), "%s:%s", user, mypass2);
+ }
+- Base64Encode(z, t);
++ xmlrpc_base64Encode(z, t);
+
+ if (!strcmp(p, t)) {
+ goto authed;
+@@ -421,7 +489,7 @@ static abyss_bool http_directory_auth(TSession * r, char *domain_name)
+ } else {
+ switch_snprintf(z, sizeof(z), "%s:%s", box, mypass1);
+ }
+- Base64Encode(z, t);
++ xmlrpc_base64Encode(z, t);
+
+ if (!strcmp(p, t)) {
+ goto authed;
+@@ -434,7 +502,7 @@ static abyss_bool http_directory_auth(TSession * r, char *domain_name)
+ switch_snprintf(z, sizeof(z), "%s:%s", box, mypass2);
+ }
+
+- Base64Encode(z, t);
++ xmlrpc_base64Encode(z, t);
+
+ if (!strcmp(p, t)) {
+ goto authed;
+@@ -536,19 +604,19 @@ abyss_bool auth_hook(TSession * r)
+ }
+
+
+-static abyss_bool HTTPWrite(TSession * s, char *buffer, uint32_t len)
++static abyss_bool HTTPWrite(TSession * s, const char *buffer, const uint32_t len)
+ {
+ if (s->chunkedwrite && s->chunkedwritemode) {
+ char t[16];
+
+- if (ConnWrite(s->conn, t, sprintf(t, "%x" CRLF, len)))
+- if (ConnWrite(s->conn, buffer, len))
+- return ConnWrite(s->conn, CRLF, 2);
++ if (ConnWrite(s->connP, t, sprintf(t, "%x" CRLF, len)))
++ if (ConnWrite(s->connP, buffer, len))
++ return ConnWrite(s->connP, CRLF, 2);
+
+ return FALSE;
+ }
+
+- return ConnWrite(s->conn, buffer, len);
++ return ConnWrite(s->connP, buffer, len);
+ }
+
+ static abyss_bool HTTPWriteEnd(TSession * s)
+@@ -559,7 +627,7 @@ static abyss_bool HTTPWriteEnd(TSession * s)
+ if (s->chunkedwrite) {
+ /* May be one day trailer dumping will be added */
+ s->chunkedwritemode = FALSE;
+- return ConnWrite(s->conn, "0" CRLF CRLF, 5);
++ return ConnWrite(s->connP, "0" CRLF CRLF, 5);
+ }
+
+ s->requestInfo.keepalive = FALSE;
+@@ -568,47 +636,48 @@ static abyss_bool HTTPWriteEnd(TSession * s)
+
+ abyss_bool handler_hook(TSession * r)
+ {
+- //char *mime = "text/html";
+- char buf[80] = "HTTP/1.1 200 OK\n";
+ switch_stream_handle_t stream = { 0 };
+ char *command;
+ int i;
+- TTableItem *ti;
+ char *fs_user = NULL, *fs_domain = NULL;
+ char *path_info = NULL;
+ abyss_bool ret = TRUE;
+- int html = 0, text = 0, xml = 0;
++ int html = 0, text = 0, xml = 0, api = 0;
+ const char *api_str;
++ const char *uri = 0;
++ TRequestInfo *info = 0;
++ switch_event_t *evnt = 0; /* shortcut to stream.param_event */
++
++ if (!r || !(info = &r->requestInfo) || !(uri = info->uri)) {
++ return FALSE;
++ }
+
+ stream.data = r;
+ stream.write_function = http_stream_write;
+ stream.raw_write_function = http_stream_raw_write;
+
+- if (!r || !r->requestInfo.uri) {
+- return FALSE;
+- }
+-
+- if ((command = strstr(r->requestInfo.uri, "/api/"))) {
++ if ((command = strstr(uri, "/api/"))) {
+ command += 5;
+- } else if ((command = strstr(r->requestInfo.uri, "/webapi/"))) {
++ api++;
++ } else if ((command = strstr(uri, "/webapi/"))) {
+ command += 8;
+ html++;
+- } else if ((command = strstr(r->requestInfo.uri, "/txtapi/"))) {
++ } else if ((command = strstr(uri, "/txtapi/"))) {
+ command += 8;
+ text++;
+- } else if ((command = strstr(r->requestInfo.uri, "/xmlapi/"))) {
++ } else if ((command = strstr(uri, "/xmlapi/"))) {
+ command += 8;
+ xml++;
+ } else {
+- return FALSE;
++ return FALSE; /* 404 */
+ }
+
+ if ((path_info = strchr(command, '/'))) {
+ *path_info++ = '\0';
+ }
+
+- for (i = 0; i < r->response_headers.size; i++) {
+- ti = &r->response_headers.item[i];
++ for (i = 0; i < r->responseHeaderFields.size; i++) {
++ TTableItem *ti = &r->responseHeaderFields.item[i];
+ if (!strcasecmp(ti->name, "freeswitch-user")) {
+ fs_user = ti->value;
+ } else if (!strcasecmp(ti->name, "freeswitch-domain")) {
+@@ -616,63 +685,58 @@ abyss_bool handler_hook(TSession * r)
+ }
+ }
+
+- if (is_authorized(r, command)) {
+- goto auth;
++ if (!is_authorized(r, command)) {
++ ret = TRUE;
++ goto end;
+ }
+
+- ret = TRUE;
+- goto end;
+-
+- auth:
++/* auth: */
+
+ if (switch_event_create(&stream.param_event, SWITCH_EVENT_API) == SWITCH_STATUS_SUCCESS) {
+ const char *const content_length = RequestHeaderValue(r, "content-length");
+-
+- if (html)
+- switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "Content-type", "text/html");
+- else if (text)
+- switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "Content-type", "text/plain");
+- else if (xml)
+- switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "Content-type", "text/xml");
+- if (fs_user)
+- switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "FreeSWITCH-User", fs_user);
+- if (fs_domain)
+- switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "FreeSWITCH-Domain", fs_domain);
+- if (path_info)
+- switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-Path-Info", path_info);
+- switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-URI", r->requestInfo.uri);
+- if (r->requestInfo.query)
+- switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-QUERY", r->requestInfo.query);
+- if (r->requestInfo.host)
+- switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-HOST", r->requestInfo.host);
+- if (r->requestInfo.from)
+- switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-FROM", r->requestInfo.from);
+- if (r->requestInfo.useragent)
+- switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-USER-AGENT", r->requestInfo.useragent);
+- if (r->requestInfo.referer)
+- switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-REFERER", r->requestInfo.referer);
+- if (r->requestInfo.requestline)
+- switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-REQUESTLINE", r->requestInfo.requestline);
+- if (r->requestInfo.user)
+- switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-USER", r->requestInfo.user);
+- if (r->requestInfo.port)
+- switch_event_add_header(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-PORT", "%u", r->requestInfo.port);
+- if (r->requestInfo.query || content_length) {
++ evnt = stream.param_event;
++
++ if (html) {
++ switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "Content-Type", "text/html");
++ } else if (text) {
++ switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "Content-Type", "text/plain");
++ } else if (xml) {
++ switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "Content-Type", "text/xml");
++ }
++ if (api) {
++ switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "HTTP-API", "api");
++ }
++ if (fs_user) switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "FreeSWITCH-User", fs_user);
++ if (fs_domain) switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "FreeSWITCH-Domain", fs_domain);
++ if (path_info) switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "HTTP-Path-Info", path_info);
++
++ if (info->host) switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "HTTP-HOST", info->host);
++ if (info->from) switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "HTTP-FROM", info->from);
++ if (info->useragent) switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "HTTP-USER-AGENT", info->useragent);
++ if (info->referer) switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "HTTP-REFERER", info->referer);
++ if (info->requestline) switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "HTTP-REQUESTLINE", info->requestline);
++ if (info->user) switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "HTTP-USER", info->user);
++ if (info->port) switch_event_add_header(evnt, SWITCH_STACK_BOTTOM, "HTTP-PORT", "%u", info->port);
++
++ {
+ char *q, *qd;
+ char *next;
+- char *query = (char *) r->requestInfo.query;
++ char *query = (char *) info->query;
+ char *name, *val;
+ char qbuf[8192] = "";
+
+- if (r->requestInfo.method == m_post && content_length) {
++ /* first finish reading from the socket if post method was used*/
++ if (info->method == m_post && content_length) {
+ int len = atoi(content_length);
+ int qlen = 0;
+
+ if (len > 0) {
+- int succeeded;
++ int succeeded = TRUE;
+ char *qp = qbuf;
++ char *readError;
++
+ do {
+- int blen = r->conn->buffersize - r->conn->bufferpos;
++ int blen = r->connP->buffersize - r->connP->bufferpos;
+
+ if ((qlen + blen) > len) {
+ blen = len - qlen;
+@@ -684,75 +748,101 @@ abyss_bool handler_hook(TSession * r)
+ break;
+ }
+
+- memcpy(qp, r->conn->buffer + r->conn->bufferpos, blen);
++ memcpy(qp, r->connP->buffer.b + r->connP->bufferpos, blen);
+ qp += blen;
+
+ if (qlen >= len) {
+ break;
+ }
+- } while ((succeeded = ConnRead(r->conn, 2000)));
++
++ ConnRead(r->connP, 2000, NULL, NULL, &readError);
++ if (readError) {
++ succeeded = FALSE;
++ free(readError);
++ }
++
++ } while (succeeded);
+
+ query = qbuf;
+ }
+ }
+- if (query) {
+- switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-QUERY", query);
+
++ /* parse query and add kv-pairs as event headers */
++ /* a kv pair starts with '&', '+' or \0 mark the end */
++ if (query) {
++ switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "HTTP-QUERY", query);
+ qd = strdup(query);
+- switch_assert(qd != NULL);
+-
+- q = qd;
+- next = q;
+-
+- do {
+- char *p;
++ } else {
++ qd = strdup(uri);
++ }
+
+- if ((next = strchr(next, '&'))) {
+- *next++ = '\0';
++ switch_assert(qd != NULL);
++
++ q = qd;
++ next = q;
++
++ do {
++ char *p;
++
++ if (next = strchr(next, '&')) {
++ if (!query) {
++ /* pass kv pairs from uri to query */
++ /* "?" is absent in url so parse uri */
++ *((char *)uri + (next - q - 1)) = '\0';
++ query = next;
++ switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "HTTP-QUERY", next);
++ /* and strip uri */
++ /* the start of first kv pair marks the end of uri */
++ /* to prevent kv-pairs confusing fs api commands */
++ /* that have arguments separated by space */
+ }
++ *next++ = '\0';
++ }
+
+- for (p = q; p && *p; p++) {
+- if (*p == '+') {
+- *p = ' ';
+- }
++ for (p = q; p && *p; p++) {
++ if (*p == '+') {
++ *p = ' ';
+ }
++ }
++ /* hmmm, get method requests are already decoded ... */
++ switch_url_decode(q);
+
+- switch_url_decode(q);
+-
+- name = q;
+- if ((val = strchr(name, '='))) {
+- *val++ = '\0';
+- switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, name, val);
+- }
+- q = next;
+- } while (q != NULL);
++ name = q;
++ if ((val = strchr(name, '='))) {
++ *val++ = '\0';
++ switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, name, val);
++ }
++ q = next;
++ } while (q != NULL);
+
+- free(qd);
+- }
++ free(qd);
+ }
+ }
+- //ResponseChunked(r);
+
+- //ResponseContentType(r, mime);
+- //ResponseWrite(r);
++ switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "HTTP-URI", uri);
+
+- HTTPWrite(r, buf, (uint32_t) strlen(buf));
++ /* We made it this far, always OK */
++ if (!HTTPWrite(r, "HTTP/1.1 200 OK\r\n", (uint32_t) strlen("HTTP/1.1 200 OK\r\n"))) {
++ return TRUE;
++ }
+
+- //HTTPWrite(r, "<pre>\n\n", 7);
++ ResponseAddField(r, "Connection", "close");
+
+ /* generation of the date field */
++ if (evnt)
+ {
++ ResponseAddField(r, "Date", switch_event_get_header(evnt, "Event-Date-GMT"));
++ }
++ else {
+ const char *dateValue;
+
+ DateToString(r->date, &dateValue);
+-
+ if (dateValue) {
+ ResponseAddField(r, "Date", dateValue);
+- free(dateValue);
++ free((void *)dateValue);
+ }
+ }
+
+-
+ /* Generation of the server field */
+ ResponseAddField(r, "Server", "FreeSWITCH-" SWITCH_VERSION_FULL "-mod_xml_rpc");
+
+@@ -764,48 +854,45 @@ abyss_bool handler_hook(TSession * r)
+ ResponseAddField(r, "Content-Type", "text/xml");
+ }
+
+- for (i = 0; i < r->response_headers.size; i++) {
+- ti = &r->response_headers.item[i];
+- ConnWrite(r->conn, ti->name, (uint32_t) strlen(ti->name));
+- ConnWrite(r->conn, ": ", 2);
+- ConnWrite(r->conn, ti->value, (uint32_t) strlen(ti->value));
+- ConnWrite(r->conn, CRLF, 2);
++ for (i = 0; i < r->responseHeaderFields.size; i++) {
++ TTableItem *ti = &r->responseHeaderFields.item[i];
++ char *header = switch_mprintf("%s: %s\r\n", ti->name, ti->value);
++ if (!ConnWrite(r->connP, header, (uint32_t) strlen(header))) {
++ switch_safe_free(header);
++ return TRUE;
++ }
++ switch_safe_free(header);
+ }
+
+- switch_snprintf(buf, sizeof(buf), "Connection: close\r\n");
+- ConnWrite(r->conn, buf, (uint32_t) strlen(buf));
+-
+- if (html || text || xml) {
+- ConnWrite(r->conn, "\r\n", 2);
++ /* send end http header */
++ if (html||text||xml) {
++ if (!ConnWrite(r->connP, CRLF, 2)) {
++ return TRUE;
++ }
++ }
++ else {
++ /* content-type and end of http header will be streamed by fs api or http_stream_write */
+ }
+
+- if (switch_stristr("unload", command) && switch_stristr("mod_xml_rpc", r->requestInfo.query)) {
++ if (switch_stristr("unload", command) && switch_stristr("mod_xml_rpc", info->query)) {
+ command = "bgapi";
+ api_str = "unload mod_xml_rpc";
+- } else if (switch_stristr("reload", command) && switch_stristr("mod_xml_rpc", r->requestInfo.query)) {
++ } else if (switch_stristr("reload", command) && switch_stristr("mod_xml_rpc", info->query)) {
+ command = "bgapi";
+ api_str = "reload mod_xml_rpc";
+ } else {
+- api_str = r->requestInfo.query;
++ api_str = info->query;
+ }
+
+- if (switch_api_execute(command, api_str, NULL, &stream) == SWITCH_STATUS_SUCCESS) {
+- ResponseStatus(r, 200);
+- r->responseStarted = TRUE;
+- //r->done = TRUE;
+- } else {
+- ResponseStatus(r, 404);
+- ResponseError(r);
+- }
++ /* TODO (maybe): take "refresh=xxx" out of query as to not confuse fs api commands */
+
+- //SocketClose(&(r->conn->socket));
++ /* execute actual fs api command */
++ /* fs api command will write to stream, calling http_stream_write / http_stream_raw_write */
++ /* switch_api_execute will stream INVALID COMMAND before it fails */
++ switch_api_execute(command, api_str, NULL, &stream);
+
+- HTTPWriteEnd(r);
+- //if (r->conn->channelP)
+- //ConnKill(r->conn);
+- //ChannelInterrupt(r->conn->channelP);
+- //ConnClose(r->conn);
+- //ChannelDestroy(r->conn->channelP);
++ r->responseStarted = TRUE;
++ ResponseStatus(r, 200); /* we don't want an assertion failure */
+ r->requestInfo.keepalive = 0;
+
+ end:
+@@ -925,7 +1012,6 @@ static xmlrpc_value *freeswitch_man(xmlrpc_env * const envP, xmlrpc_value * cons
+
+ SWITCH_MODULE_RUNTIME_FUNCTION(mod_xml_rpc_runtime)
+ {
+- xmlrpc_registry *registryP;
+ xmlrpc_env env;
+ char logfile[512];
+ switch_hash_index_t *hi;
+@@ -936,15 +1022,16 @@ SWITCH_MODULE_RUNTIME_FUNCTION(mod_xml_rpc_runtime)
+
+ xmlrpc_env_init(&env);
+
+- registryP = xmlrpc_registry_new(&env);
++ globals.registryP = xmlrpc_registry_new(&env);
+
+- xmlrpc_registry_add_method2(&env, registryP, "freeswitch.api", &freeswitch_api, NULL, NULL, NULL);
+- xmlrpc_registry_add_method2(&env, registryP, "freeswitch_api", &freeswitch_api, NULL, NULL, NULL);
+- xmlrpc_registry_add_method(&env, registryP, NULL, "freeswitch.management", &freeswitch_man, NULL);
+- xmlrpc_registry_add_method(&env, registryP, NULL, "freeswitch_management", &freeswitch_man, NULL);
++ /* TODO why twice and why add_method for freeswitch.api and add_method2 for freeswitch.management ? */
++ xmlrpc_registry_add_method2(&env, globals.registryP, "freeswitch.api", &freeswitch_api, NULL, NULL, NULL);
++ xmlrpc_registry_add_method2(&env, globals.registryP, "freeswitch_api", &freeswitch_api, NULL, NULL, NULL);
++ xmlrpc_registry_add_method(&env, globals.registryP, NULL, "freeswitch.management", &freeswitch_man, NULL);
++ xmlrpc_registry_add_method(&env, globals.registryP, NULL, "freeswitch_management", &freeswitch_man, NULL);
+
+ MIMETypeInit();
+- MIMETypeAdd("text/html", "html");
++
+ for (hi = switch_core_mime_index(); hi; hi = switch_hash_next(hi)) {
+ switch_hash_this(hi, &var, NULL, &val);
+ if (var && val) {
+@@ -955,38 +1042,52 @@ SWITCH_MODULE_RUNTIME_FUNCTION(mod_xml_rpc_runtime)
+ switch_snprintf(logfile, sizeof(logfile), "%s%s%s", SWITCH_GLOBAL_dirs.log_dir, SWITCH_PATH_SEPARATOR, "freeswitch_http.log");
+ ServerCreate(&globals.abyssServer, "XmlRpcServer", globals.port, SWITCH_GLOBAL_dirs.htdocs_dir, logfile);
+
+- xmlrpc_server_abyss_set_handler(&env, &globals.abyssServer, "/RPC2", registryP);
++ xmlrpc_server_abyss_set_handler(&env, &globals.abyssServer, "/RPC2", globals.registryP);
++
++ xmlrpc_env_clean(&env);
+
+ if (ServerInit(&globals.abyssServer) != TRUE) {
+ globals.running = 0;
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to start HTTP Port %d\n", globals.port);
++ xmlrpc_registry_free(globals.registryP);
++ MIMETypeTerm();
++
+ return SWITCH_STATUS_TERM;
+ }
+
+ ServerAddHandler(&globals.abyssServer, handler_hook);
+ ServerAddHandler(&globals.abyssServer, auth_hook);
+- ServerSetKeepaliveTimeout(&globals.abyssServer, 1);
++ ServerSetKeepaliveTimeout(&globals.abyssServer, 5);
++
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Starting HTTP Port %d, DocRoot [%s]\n", globals.port, SWITCH_GLOBAL_dirs.htdocs_dir);
+ ServerRun(&globals.abyssServer);
++
+ switch_yield(1000000);
++
+ globals.running = 0;
+
+ return SWITCH_STATUS_TERM;
+ }
+
++/* upon module unload */
+ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_xml_rpc_shutdown)
+ {
+- //globals.abyssServer.running = 0;
+- //shutdown(globals.abyssServer.listensock, 2);
++
++ /* this makes the worker thread (ServerRun) stop */
+ ServerTerminate(&globals.abyssServer);
+
+ do {
+ switch_yield(100000);
+ } while (globals.running);
+
++ ServerFree(&globals.abyssServer);
++ xmlrpc_registry_free(globals.registryP);
++ MIMETypeTerm();
++
+ switch_safe_free(globals.realm);
+ switch_safe_free(globals.user);
+ switch_safe_free(globals.pass);
++ switch_safe_free(globals.default_domain);
+
+ return SWITCH_STATUS_SUCCESS;
+ }
+diff --git a/src/switch_loadable_module.c b/src/switch_loadable_module.c
+index 7185726..90410d3 100644
+--- a/src/switch_loadable_module.c
++++ b/src/switch_loadable_module.c
+@@ -2259,10 +2259,10 @@ SWITCH_DECLARE(switch_status_t) switch_api_execute(const char *cmd, const char *
+ }
+
+ if (stream->param_event) {
+- if (cmd_used) {
++ if (cmd_used && *cmd_used) {
+ switch_event_add_header_string(stream->param_event, SWITCH_STACK_BOTTOM, "API-Command", cmd_used);
+ }
+- if (arg_used) {
++ if (arg_used && *arg_used) {
+ switch_event_add_header_string(stream->param_event, SWITCH_STACK_BOTTOM, "API-Command-Argument", arg_used);
+ }
+ }
+diff --git a/src/switch_xml.c b/src/switch_xml.c
+index f441567..2e74780 100644
+--- a/src/switch_xml.c
++++ b/src/switch_xml.c
+@@ -972,7 +972,7 @@ SWITCH_DECLARE(switch_xml_t) switch_xml_parse_str_dynamic(char *s, switch_bool_t
+ }
+ }
+
+-/* parse the given xml string and return an switch_xml structure */
++/* parse the given xml string and return a switch_xml structure */
+ SWITCH_DECLARE(switch_xml_t) switch_xml_parse_str(char *s, switch_size_t len)
+ {
+ switch_xml_root_t root = (switch_xml_root_t) switch_xml_new(NULL);
+@@ -2455,7 +2455,7 @@ static char *switch_xml_toxml_r(switch_xml_t xml, char **s, switch_size_t *len,
+ *len += sprintf(*s + *len, "%s", XML_INDENT); /* indent */
+ }
+ }
+- *len += sprintf(*s + (*len), "</%s>\n", xml->name); /* close tag */
++ *len += sprintf(*s + (*len), "</%s>", xml->name); /* close tag */
+ }
+
+ while (txt[off] && off < xml->off)
+@@ -2496,7 +2496,24 @@ SWITCH_DECLARE(char *) switch_xml_toxml(switch_xml_t xml, switch_bool_t prn_head
+ return r;
+ }
+
+-/* converts an switch_xml structure back to xml, returning a string of xml date that
++SWITCH_DECLARE(char *) switch_xml_tohtml(switch_xml_t xml, switch_bool_t prn_header)
++{
++ char *r, *s, *h;
++ switch_size_t rlen = 0;
++ switch_size_t len = SWITCH_XML_BUFSIZE;
++ switch_mutex_lock(XML_GEN_LOCK);
++ s = (char *) malloc(SWITCH_XML_BUFSIZE);
++ switch_assert(s);
++ h = (char *) malloc(SWITCH_XML_BUFSIZE);
++ switch_assert(h);
++ r = switch_xml_toxml_buf(xml, s, SWITCH_XML_BUFSIZE, 0, prn_header);
++ h = switch_xml_ampencode(r, 0, &h, &rlen, &len, 1);
++ switch_safe_free(r);
++ switch_mutex_unlock(XML_GEN_LOCK);
++ return h;
++}
++
++/* converts a switch_xml structure back to xml, returning a string of xml data that
+ must be freed */
+ SWITCH_DECLARE(char *) switch_xml_toxml_buf(switch_xml_t xml, char *buf, switch_size_t buflen, switch_size_t offset, switch_bool_t prn_header)
+ {
+@@ -2684,7 +2701,7 @@ SWITCH_DECLARE(switch_xml_t) switch_xml_new(const char *name)
+ return &root->xml;
+ }
+
+-/* inserts an existing tag into an switch_xml structure */
++/* inserts an existing tag into a switch_xml structure */
+ SWITCH_DECLARE(switch_xml_t) switch_xml_insert(switch_xml_t xml, switch_xml_t dest, switch_size_t off)
+ {
+ switch_xml_t cur, prev, head;