You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ab...@apache.org on 2019/11/10 23:02:11 UTC

[nifi-minifi-cpp] branch master updated: MINIFICPP-1065 - Fix UUID generation uniqueness and thread safety

This is an automated email from the ASF dual-hosted git repository.

aboda pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git


The following commit(s) were added to refs/heads/master by this push:
     new 1474910  MINIFICPP-1065 - Fix UUID generation uniqueness and thread safety
1474910 is described below

commit 1474910a6b400f319391aeaed30d78881342c887
Author: Daniel Bakai <ba...@gmail.com>
AuthorDate: Thu Nov 7 16:59:31 2019 +0100

    MINIFICPP-1065 - Fix UUID generation uniqueness and thread safety
    
     - Changed UUID implementation to native functions on Windows and OSSP uuid on other platforms
     - Added UUID tests, including multi-threaded collision resistance
    
    Signed-off-by: Arpad Boda <ab...@apache.org>
    
    This closes #677
---
 CMakeLists.txt                                     |  14 +-
 LICENSE                                            |  56 +-
 cmake/BundledOSSPUUID.cmake                        |  79 ++
 cmake/uuid/dummy/FindUUID.cmake                    |  18 -
 cmake/uuid/sys/FindUUID.cmake                      |  37 -
 controller/CMakeLists.txt                          |   7 +-
 extensions/civetweb/tests/ListenHTTPTests.cpp      |   1 -
 extensions/http-curl/client/HTTPClient.h           |   1 -
 extensions/http-curl/processors/InvokeHTTP.cpp     |   1 -
 extensions/http-curl/sitetosite/HTTPProtocol.h     |   1 -
 .../http-curl/tests/unit/HTTPClientTests.cpp       |   3 +-
 .../http-curl/tests/unit/InvokeHTTPTests.cpp       |   1 -
 extensions/jni/ExecuteJavaControllerService.cpp    |   1 -
 extensions/jni/ExecuteJavaProcessor.cpp            |   1 -
 extensions/opencv/tests/CaptureRTSPFrameTest.cpp   |   1 -
 extensions/pcap/CapturePacket.cpp                  |   1 -
 extensions/rocksdb-repos/CMakeLists.txt            |   4 +-
 extensions/script/CMakeLists.txt                   |   5 +-
 extensions/sftp/CMakeLists.txt                     |   4 +-
 extensions/sftp/client/SFTPClient.h                |   1 -
 .../standard-processors/processors/PutFile.cpp     |   1 -
 .../tests/integration/TestExecuteProcess.cpp       |   1 -
 .../tests/unit/ClassLoaderTests.cpp                |   1 -
 .../tests/unit/ControllerServiceTests.cpp          |   1 -
 .../tests/unit/ExtractTextTests.cpp                |   1 -
 .../standard-processors/tests/unit/GetTCPTests.cpp |   1 -
 .../tests/unit/HashContentTest.cpp                 |   1 -
 .../tests/unit/ProcessorTests.cpp                  |   1 -
 .../tests/unit/PutFileTests.cpp                    |   1 -
 .../tests/unit/TailFileTests.cpp                   |   1 -
 extensions/usb-camera/CMakeLists.txt               |   3 +-
 extensions/windows-event-log/CMakeLists.txt        |   4 +-
 .../tests/MetadataWalkerTests.cpp                  |   3 +-
 libminifi/CMakeLists.txt                           |  16 +-
 libminifi/cmake/FindUUID.cmake                     |  37 -
 libminifi/include/Connection.h                     |   1 -
 libminifi/include/FlowController.h                 |   1 -
 libminifi/include/FlowFileRecord.h                 |   1 -
 libminifi/include/ResourceClaim.h                  |   1 -
 libminifi/include/SchedulingAgent.h                |   1 -
 libminifi/include/core/Core.h                      |   1 -
 libminifi/include/core/ProcessContext.h            |   1 -
 libminifi/include/core/ProcessContextBuilder.h     |   1 -
 libminifi/include/core/ProcessGroup.h              |   1 -
 libminifi/include/core/ProcessSession.h            |   1 -
 libminifi/include/core/Processor.h                 |   1 -
 libminifi/include/core/Relationship.h              |   1 -
 libminifi/include/core/Repository.h                |   1 -
 libminifi/include/provenance/Provenance.h          |   1 -
 libminifi/include/sitetosite/Peer.h                |   1 -
 libminifi/include/sitetosite/RawSocketProtocol.h   |   1 -
 libminifi/include/utils/Id.h                       |  26 +-
 libminifi/src/RemoteProcessorGroupPort.cpp         |   1 -
 libminifi/src/ResourceClaim.cpp                    |   1 -
 libminifi/src/core/Connectable.cpp                 |   1 -
 libminifi/src/core/ProcessSession.cpp              |   1 -
 libminifi/src/utils/Id.cpp                         | 124 ++-
 .../test/archive-tests/CompressContentTests.cpp    |   1 -
 libminifi/test/archive-tests/FocusArchiveTests.cpp |   1 -
 .../test/archive-tests/ManipulateArchiveTests.cpp  |   1 -
 libminifi/test/archive-tests/MergeFileTests.cpp    |   1 -
 .../test/bustache-tests/ApplyTemplateTests.cpp     |   1 -
 libminifi/test/gps-tests/GPSTests.cpp              |   1 -
 libminifi/test/sqlite-tests/SQLiteTests.cpp        |   1 -
 libminifi/test/unit/C2MetricsTests.cpp             |   1 -
 libminifi/test/unit/ControllerTests.cpp            |   1 -
 libminifi/test/unit/FileStreamTests.cpp            |   1 -
 libminifi/test/unit/FileTriggerTests.cpp           |   1 -
 libminifi/test/unit/IdTests.cpp                    | 163 ++++
 .../test/unit/NetworkPrioritizerServiceTests.cpp   |   1 -
 libminifi/test/unit/SerializationTests.cpp         |   1 -
 libminifi/test/unit/Site2SiteTests.cpp             |   1 -
 libminifi/test/unit/UpdatePolicyTests.cpp          |   1 -
 main/CMakeLists.txt                                |   6 +-
 nanofi/include/core/cuuid.h                        |   1 -
 nanofi/include/cxx/ReflexiveSession.h              |   1 -
 nanofi/include/sitetosite/CPeer.h                  |   1 -
 nanofi/include/sitetosite/CRawSocketProtocol.h     |   1 -
 nanofi/src/core/cuuid.c                            |  72 +-
 nanofi/tests/CAPITests.cpp                         |   1 -
 nanofi/tests/CSite2SiteTests.cpp                   |   3 +-
 nanofi/tests/CUUIDTests.cpp                        |  66 +-
 thirdparty/ossp-uuid/ossp-uuid-mac-fix.patch       |  84 ++
 thirdparty/uuid/CMakeLists.txt                     |  55 --
 thirdparty/uuid/COPYING                            |  25 -
 thirdparty/uuid/clear.c                            |  44 --
 thirdparty/uuid/compare.c                          |  56 --
 thirdparty/uuid/copy.c                             |  46 --
 thirdparty/uuid/gen_uuid.c                         | 664 ----------------
 thirdparty/uuid/include/posix/uuid/config.h        | 847 ---------------------
 thirdparty/uuid/include/posix/uuid/uuid.h          | 112 ---
 thirdparty/uuid/include/posix/uuid/uuidP.h         |  63 --
 thirdparty/uuid/include/posix/uuid/uuidd.h         |  54 --
 thirdparty/uuid/include/win32/uuid/config.h        |  88 ---
 thirdparty/uuid/include/win32/uuid/uuid.h          | 115 ---
 thirdparty/uuid/include/win32/uuid/uuidP.h         |  63 --
 thirdparty/uuid/include/win32/uuid/uuidd.h         |  54 --
 thirdparty/uuid/isnull.c                           |  51 --
 thirdparty/uuid/makefile                           |  72 --
 thirdparty/uuid/pack.c                             |  70 --
 thirdparty/uuid/parse.c                            |  80 --
 thirdparty/uuid/unpack.c                           |  64 --
 thirdparty/uuid/unparse.c                          |  77 --
 thirdparty/uuid/uuid_time.c                        | 173 -----
 104 files changed, 637 insertions(+), 3130 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4d26dd0..9a04e55 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -37,7 +37,6 @@ cmake_dependent_option(STATIC_BUILD "Attempts to statically link as many depende
 option(LIBC_STATIC "Instructs the build system to statically link libstdc++ and glibc into minifiexe. Experiemental" OFF)
 option(OPENSSL_OFF "Disables OpenSSL" OFF)
 option(ENABLE_OPS "Enable Operations/zlib Tools" ON)
-option(USE_SYSTEM_UUID "Instructs the build system to search for and use a UUID library available in the host system" OFF)
 option(ENABLE_JNI "Instructs the build system to enable the JNI extension" OFF)
 option(ENABLE_OPENCV "Instructs the build system to enable the OpenCV extension" OFF)
 option(ENABLE_OPC "Instructs the build system to enable the OPC extension" OFF)
@@ -253,17 +252,12 @@ SET(TEST_DIR ${CMAKE_SOURCE_DIR}/libminifi/test)
 
 include(Extensions)
 
-list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/uuid/dummy")
-if (WIN32)
-	include_directories("thirdparty/uuid/include/win32/")
-else()
-	include_directories("thirdparty/uuid/include/posix")
+if(NOT WIN32)
+	include(BundledOSSPUUID)
+	use_bundled_osspuuid(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
 endif()
-add_subdirectory("thirdparty/uuid")
-include_directories(thirdparty/ut)
-set(UUID_FOUND "YES" CACHE STRING "" FORCE)
-set(UUID_LIBRARIES "uuid" CACHE STRING "" FORCE)
 
+include_directories(thirdparty/ut)
 
 if (DISABLE_CURL)
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDISABLE_CURL")
diff --git a/LICENSE b/LICENSE
index 370b7e5..813c4d0 100644
--- a/LICENSE
+++ b/LICENSE
@@ -238,36 +238,6 @@ This product bundles 'cpplint.py' which is  available under a 3-Clause BSD Licen
 	 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 	 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-This product bundles 'libuuid' which is available under a "3-clause BSD" license.
-
-	Copyright (C) 1996, 1997 Theodore Ts'o.
-
-	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, and the entire permission notice in its entirety,
-	   including the disclaimer of warranties.
-	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 ``AS IS'' AND ANY EXPRESS OR IMPLIED
-	WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-	OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
-	WHICH ARE HEREBY 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 NOT ADVISED OF THE POSSIBILITY OF SUCH
-	DAMAGE.
-
 This product bundles 'spdlog' which is available under an MIT license.
 
 	Copyright (c) 2016 Alexander Dalshov.
@@ -1797,3 +1767,29 @@ 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.
+
+This product bundles 'OSSP uuid' which is available under an MIT license
+
+Copyright (c) 2004-2008 Ralf S. Engelschall <rs...@engelschall.com>
+Copyright (c) 2004-2008 The OSSP Project <http://www.ossp.org/>
+
+This file is part of OSSP uuid, a library for the generation
+of UUIDs which can found at http://www.ossp.org/pkg/lib/uuid/
+
+Permission to use, copy, modify, and distribute this software for
+any purpose with or without fee is hereby granted, provided that
+the above copyright notice and this permission notice appear in all
+copies.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 AUTHORS AND COPYRIGHT HOLDERS AND THEIR
+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/cmake/BundledOSSPUUID.cmake b/cmake/BundledOSSPUUID.cmake
new file mode 100644
index 0000000..723633d
--- /dev/null
+++ b/cmake/BundledOSSPUUID.cmake
@@ -0,0 +1,79 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+function(use_bundled_osspuuid SOURCE_DIR BINARY_DIR)
+    message("Using bundled ossp-uuid")
+
+    # Define patch step
+    find_package(Patch REQUIRED)
+    set(PC "${Patch_EXECUTABLE}" -p1 -i "${SOURCE_DIR}/thirdparty/ossp-uuid/ossp-uuid-mac-fix.patch")
+
+    # Define byproducts
+    set(BYPRODUCTS "lib/libuuid.a"
+                   "lib/libuuid++.a")
+
+    set(OSSPUUID_BIN_DIR "${BINARY_DIR}/thirdparty/ossp-uuid-install" CACHE STRING "" FORCE)
+
+    FOREACH(BYPRODUCT ${BYPRODUCTS})
+        LIST(APPEND OSSPUUID_LIBRARIES_LIST "${OSSPUUID_BIN_DIR}/${BYPRODUCT}")
+    ENDFOREACH(BYPRODUCT)
+
+    # Build project
+    set(CONFIGURE_COMMAND ./configure "CFLAGS=-fPIC" "CXXFLAGS=-fPIC" --with-cxx --without-perl --without-php --without-pgsql "--prefix=${BINARY_DIR}/thirdparty/ossp-uuid-install")
+    string(TOLOWER "${CMAKE_BUILD_TYPE}" build_type)
+    if(NOT build_type MATCHES debug)
+        list(APPEND CONFIGURE_COMMAND --enable-debug=yes)
+    endif()
+
+    ExternalProject_Add(
+            ossp-uuid-external
+            URL "https://deb.debian.org/debian/pool/main/o/ossp-uuid/ossp-uuid_1.6.2.orig.tar.gz"
+            URL_HASH "SHA256=11a615225baa5f8bb686824423f50e4427acd3f70d394765bdff32801f0fd5b0"
+            BUILD_IN_SOURCE true
+            SOURCE_DIR "${BINARY_DIR}/thirdparty/ossp-uuid-src"
+            BUILD_COMMAND make
+            CMAKE_COMMAND ""
+            UPDATE_COMMAND ""
+            INSTALL_COMMAND make install
+            BUILD_BYPRODUCTS ${OSSPUUID_LIBRARIES_LIST}
+            CONFIGURE_COMMAND ""
+            PATCH_COMMAND ${PC} && ${CONFIGURE_COMMAND}
+            STEP_TARGETS build
+            EXCLUDE_FROM_ALL TRUE
+    )
+
+    # Set variables
+    set(UUID_FOUND "YES" CACHE STRING "" FORCE)
+    set(UUID_INCLUDE_DIRS "${OSSPUUID_BIN_DIR}/include" CACHE STRING "" FORCE)
+    set(UUID_LIBRARY "${OSSPUUID_BIN_DIR}/lib/libuuid.a" CACHE STRING "" FORCE)
+    set(UUID_CPP_LIBRARY "${OSSPUUID_BIN_DIR}/lib/libuuid++.a" CACHE STRING "" FORCE)
+
+    # Create imported targets
+    file(MAKE_DIRECTORY ${UUID_INCLUDE_DIRS})
+
+    add_library(OSSP::libuuid STATIC IMPORTED)
+    set_target_properties(OSSP::libuuid PROPERTIES IMPORTED_LOCATION "${UUID_LIBRARY}")
+    add_dependencies(OSSP::libuuid ossp-uuid-external)
+    set_property(TARGET OSSP::libuuid APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${UUID_INCLUDE_DIRS}")
+
+    add_library(OSSP::libuuid++ STATIC IMPORTED)
+    set_target_properties(OSSP::libuuid++ PROPERTIES IMPORTED_LOCATION "${UUID_CPP_LIBRARY}")
+    add_dependencies(OSSP::libuuid++ ossp-uuid-external)
+    set_property(TARGET OSSP::libuuid++ APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${UUID_INCLUDE_DIRS}")
+endfunction(use_bundled_osspuuid)
diff --git a/cmake/uuid/dummy/FindUUID.cmake b/cmake/uuid/dummy/FindUUID.cmake
deleted file mode 100644
index 81ea510..0000000
--- a/cmake/uuid/dummy/FindUUID.cmake
+++ /dev/null
@@ -1,18 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-# 
-#   http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# Dummy UUID find for when we use bundled version
diff --git a/cmake/uuid/sys/FindUUID.cmake b/cmake/uuid/sys/FindUUID.cmake
deleted file mode 100644
index 2402d08..0000000
--- a/cmake/uuid/sys/FindUUID.cmake
+++ /dev/null
@@ -1,37 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-# 
-#   http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-
-find_path(UUID_INCLUDE_DIR
-	NAMES uuid/uuid.h
-	HINTS ${UUID_DIR}/include
-			$ENV{UUID_DIR}/include
-	PATHS /usr/include
-          /usr/local/include )
-
-find_library(UUID_LIBRARY NAMES uuid
-             PATHS /usr/lib /usr/local/lib /usr/local/lib64 /lib/i386-linux-gnu /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu)
-
-set(UUID_INCLUDE_DIRS ${UUID_INCLUDE_DIR})
-set(UUID_LIBRARIES ${UUID_LIBRARY})
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(UUID  DEFAULT_MSG
-                                  UUID_LIBRARY UUID_INCLUDE_DIR)
-
-
-mark_as_advanced(UUID_INCLUDE_DIRS UUID_LIBRARIES)
diff --git a/controller/CMakeLists.txt b/controller/CMakeLists.txt
index 370197a..9ab9cfb 100644
--- a/controller/CMakeLists.txt
+++ b/controller/CMakeLists.txt
@@ -54,11 +54,8 @@ if(CMAKE_THREAD_LIBS_INIT)
   target_link_libraries(minificontroller "${CMAKE_THREAD_LIBS_INIT}")
 endif()
 
-# Include UUID
-find_package(UUID REQUIRED)
-
 # Include OpenSSL
-find_package(OpenSSL )
+find_package(OpenSSL)
 if (OPENSSL_FOUND)
 include_directories(${OPENSSL_INCLUDE_DIR})
 endif(OPENSSL_FOUND)
@@ -80,7 +77,7 @@ if (WIN32)
   	target_link_libraries(minificontroller semaphore)
 endif()
 
-target_link_libraries(minificontroller yaml-cpp c-library civetweb-cpp ${JSON_CPP_LIB} ${UUID_LIBRARIES} cxxopts)
+target_link_libraries(minificontroller yaml-cpp c-library civetweb-cpp ${JSON_CPP_LIB} cxxopts)
 
 
 if (APPLE)
diff --git a/extensions/civetweb/tests/ListenHTTPTests.cpp b/extensions/civetweb/tests/ListenHTTPTests.cpp
index 76e9342..b628139 100644
--- a/extensions/civetweb/tests/ListenHTTPTests.cpp
+++ b/extensions/civetweb/tests/ListenHTTPTests.cpp
@@ -16,7 +16,6 @@
  * limitations under the License.
  */
 
-#include <uuid/uuid.h>
 #include <fstream>
 #include <map>
 #include <memory>
diff --git a/extensions/http-curl/client/HTTPClient.h b/extensions/http-curl/client/HTTPClient.h
index b876bac..d00a7e9 100644
--- a/extensions/http-curl/client/HTTPClient.h
+++ b/extensions/http-curl/client/HTTPClient.h
@@ -33,7 +33,6 @@
 #include <iostream>
 #include <string>
 #include <curl/easy.h>
-#include <uuid/uuid.h>
 #ifdef WIN32
 #include <regex>
 #else
diff --git a/extensions/http-curl/processors/InvokeHTTP.cpp b/extensions/http-curl/processors/InvokeHTTP.cpp
index 483cfa3..dbb28ad 100644
--- a/extensions/http-curl/processors/InvokeHTTP.cpp
+++ b/extensions/http-curl/processors/InvokeHTTP.cpp
@@ -23,7 +23,6 @@
 #include <regex.h>
 #endif
 #include <curl/easy.h>
-#include <uuid/uuid.h>
 #include <memory>
 #include <algorithm>
 #include <cctype>
diff --git a/extensions/http-curl/sitetosite/HTTPProtocol.h b/extensions/http-curl/sitetosite/HTTPProtocol.h
index f31db8f..25dc180 100644
--- a/extensions/http-curl/sitetosite/HTTPProtocol.h
+++ b/extensions/http-curl/sitetosite/HTTPProtocol.h
@@ -26,7 +26,6 @@
 #include <set>
 #include <thread>
 #include <algorithm>
-#include <uuid/uuid.h>
 #include "HTTPTransaction.h"
 #include "sitetosite/SiteToSite.h"
 #include "sitetosite/SiteToSiteClient.h"
diff --git a/extensions/http-curl/tests/unit/HTTPClientTests.cpp b/extensions/http-curl/tests/unit/HTTPClientTests.cpp
index 82919b0..c256c69 100644
--- a/extensions/http-curl/tests/unit/HTTPClientTests.cpp
+++ b/extensions/http-curl/tests/unit/HTTPClientTests.cpp
@@ -16,7 +16,6 @@
  * limitations under the License.
  */
 
-#include <uuid/uuid.h>
 #include <fstream>
 #include <map>
 #include <memory>
@@ -93,4 +92,4 @@ TEST_CASE("HTTPClientTestChunkedResponse", "[basic]") {
   REQUIRE("foobar\r\nbuzz" == std::string(response.begin(), response.end()));
 
   LogTestController::getInstance().reset();
-}
\ No newline at end of file
+}
diff --git a/extensions/http-curl/tests/unit/InvokeHTTPTests.cpp b/extensions/http-curl/tests/unit/InvokeHTTPTests.cpp
index 9a5822a..48e6710 100644
--- a/extensions/http-curl/tests/unit/InvokeHTTPTests.cpp
+++ b/extensions/http-curl/tests/unit/InvokeHTTPTests.cpp
@@ -16,7 +16,6 @@
  * limitations under the License.
  */
 
-#include <uuid/uuid.h>
 #include <fstream>
 #include <map>
 #include <memory>
diff --git a/extensions/jni/ExecuteJavaControllerService.cpp b/extensions/jni/ExecuteJavaControllerService.cpp
index 7ea1585..66f7bfe 100644
--- a/extensions/jni/ExecuteJavaControllerService.cpp
+++ b/extensions/jni/ExecuteJavaControllerService.cpp
@@ -19,7 +19,6 @@
 #include "ExecuteJavaControllerService.h"
 
 #include <regex>
-#include <uuid/uuid.h>
 #include <memory>
 #include <algorithm>
 #include <cctype>
diff --git a/extensions/jni/ExecuteJavaProcessor.cpp b/extensions/jni/ExecuteJavaProcessor.cpp
index 3a7d154..aadfae2 100644
--- a/extensions/jni/ExecuteJavaProcessor.cpp
+++ b/extensions/jni/ExecuteJavaProcessor.cpp
@@ -19,7 +19,6 @@
 #include "ExecuteJavaProcessor.h"
 
 #include <regex>
-#include <uuid/uuid.h>
 #include <memory>
 #include <algorithm>
 #include <cctype>
diff --git a/extensions/opencv/tests/CaptureRTSPFrameTest.cpp b/extensions/opencv/tests/CaptureRTSPFrameTest.cpp
index 9993da3..0c02c2f 100644
--- a/extensions/opencv/tests/CaptureRTSPFrameTest.cpp
+++ b/extensions/opencv/tests/CaptureRTSPFrameTest.cpp
@@ -18,7 +18,6 @@
 
 #include "CaptureRTSPFrame.h"
 
-#include <uuid/uuid.h>
 #include <map>
 #include <memory>
 #include <fstream>
diff --git a/extensions/pcap/CapturePacket.cpp b/extensions/pcap/CapturePacket.cpp
index 1b5d2e7..f232d9e 100644
--- a/extensions/pcap/CapturePacket.cpp
+++ b/extensions/pcap/CapturePacket.cpp
@@ -17,7 +17,6 @@
  */
 
 #include <regex>
-#include <uuid/uuid.h>
 #include <memory>
 #include <algorithm>
 #include <cctype>
diff --git a/extensions/rocksdb-repos/CMakeLists.txt b/extensions/rocksdb-repos/CMakeLists.txt
index 34faace..56ec15e 100644
--- a/extensions/rocksdb-repos/CMakeLists.txt
+++ b/extensions/rocksdb-repos/CMakeLists.txt
@@ -40,9 +40,7 @@ if(CMAKE_THREAD_LIBS_INIT)
 endif()
 
 
-# Include UUID
-find_package(UUID REQUIRED)
-target_link_libraries(minifi-rocksdb-repos ${LIBMINIFI} ${UUID_LIBRARIES})
+target_link_libraries(minifi-rocksdb-repos ${LIBMINIFI})
 target_link_libraries(minifi-rocksdb-repos ${CMAKE_DL_LIBS} )
 if (ROCKSDB_FOUND AND NOT BUILD_ROCKSDB)
 	target_link_libraries(minifi-rocksdb-repos ${ROCKSDB_LIBRARIES} )
diff --git a/extensions/script/CMakeLists.txt b/extensions/script/CMakeLists.txt
index bbb53f6..a82b2aa 100644
--- a/extensions/script/CMakeLists.txt
+++ b/extensions/script/CMakeLists.txt
@@ -52,8 +52,7 @@ if(CMAKE_THREAD_LIBS_INIT)
   target_link_libraries(minifi-script-extensions "${CMAKE_THREAD_LIBS_INIT}")
 endif()
 
-find_package(UUID REQUIRED)
-target_link_libraries(minifi-script-extensions ${LIBMINIFI} ${UUID_LIBRARIES})
+target_link_libraries(minifi-script-extensions ${LIBMINIFI})
 find_package(OpenSSL REQUIRED)
 include_directories(${OPENSSL_INCLUDE_DIR})
 target_link_libraries(minifi-script-extensions ${CMAKE_DL_LIBS})
@@ -73,7 +72,7 @@ if (NOT DISABLE_PYTHON_SCRIPTING)
     file(GLOB PY_SOURCES  "python/*.cpp")
     add_library(minifi-python-extensions STATIC ${PY_SOURCES})
 
-    target_link_libraries(minifi-python-extensions ${PYTHON_LIBRARIES})
+    target_link_libraries(minifi-python-extensions ${LIBMINIFI} ${PYTHON_LIBRARIES})
     target_link_libraries(minifi-script-extensions minifi-python-extensions)
 endif()
 
diff --git a/extensions/sftp/CMakeLists.txt b/extensions/sftp/CMakeLists.txt
index 073acb8..47ea7bc 100644
--- a/extensions/sftp/CMakeLists.txt
+++ b/extensions/sftp/CMakeLists.txt
@@ -44,9 +44,7 @@ if (CURL_FOUND)
 	endif()
 endif ()
 
-# Include UUID
-find_package(UUID REQUIRED)
-target_link_libraries(minifi-sftp ${LIBMINIFI} ${UUID_LIBRARIES})
+target_link_libraries(minifi-sftp ${LIBMINIFI})
 
 # Include OpenSSL
 set(OPENSSL_USE_STATIC_LIBS TRUE)
diff --git a/extensions/sftp/client/SFTPClient.h b/extensions/sftp/client/SFTPClient.h
index 8e6c234..6bf2af8 100644
--- a/extensions/sftp/client/SFTPClient.h
+++ b/extensions/sftp/client/SFTPClient.h
@@ -24,7 +24,6 @@
 #include <vector>
 #include <iostream>
 #include <string>
-#include <uuid/uuid.h>
 #include <vector>
 
 #include "utils/HTTPClient.h"
diff --git a/extensions/standard-processors/processors/PutFile.cpp b/extensions/standard-processors/processors/PutFile.cpp
index 54b5b04..1496feb 100644
--- a/extensions/standard-processors/processors/PutFile.cpp
+++ b/extensions/standard-processors/processors/PutFile.cpp
@@ -20,7 +20,6 @@
 
 #include "PutFile.h"
 #include <sys/stat.h>
-#include <uuid/uuid.h>
 #include <cstdint>
 #include <cstdio>
 #include <iostream>
diff --git a/extensions/standard-processors/tests/integration/TestExecuteProcess.cpp b/extensions/standard-processors/tests/integration/TestExecuteProcess.cpp
index 0f01433..138e610 100644
--- a/extensions/standard-processors/tests/integration/TestExecuteProcess.cpp
+++ b/extensions/standard-processors/tests/integration/TestExecuteProcess.cpp
@@ -19,7 +19,6 @@
 
 #include <type_traits> //NOLINT
 #include <sys/stat.h> //NOLINT
-#include <uuid/uuid.h> //NOLINT
 #include <chrono> //NOLINT
 #include <thread> //NOLINT
 #undef NDEBUG
diff --git a/extensions/standard-processors/tests/unit/ClassLoaderTests.cpp b/extensions/standard-processors/tests/unit/ClassLoaderTests.cpp
index fdc0b26..37f1145 100644
--- a/extensions/standard-processors/tests/unit/ClassLoaderTests.cpp
+++ b/extensions/standard-processors/tests/unit/ClassLoaderTests.cpp
@@ -15,7 +15,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#include <uuid/uuid.h>
 #include "TestBase.h"
 #include "io/ClientSocket.h"
 #include "core/Processor.h"
diff --git a/extensions/standard-processors/tests/unit/ControllerServiceTests.cpp b/extensions/standard-processors/tests/unit/ControllerServiceTests.cpp
index fc53aa3..2b468cb 100644
--- a/extensions/standard-processors/tests/unit/ControllerServiceTests.cpp
+++ b/extensions/standard-processors/tests/unit/ControllerServiceTests.cpp
@@ -15,7 +15,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#include <uuid/uuid.h>
 #include <memory>
 #include <string>
 #include <fstream>
diff --git a/extensions/standard-processors/tests/unit/ExtractTextTests.cpp b/extensions/standard-processors/tests/unit/ExtractTextTests.cpp
index a67c853..95f912a 100644
--- a/extensions/standard-processors/tests/unit/ExtractTextTests.cpp
+++ b/extensions/standard-processors/tests/unit/ExtractTextTests.cpp
@@ -15,7 +15,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#include <uuid/uuid.h>
 #include <list>
 #include <fstream>
 #include <map>
diff --git a/extensions/standard-processors/tests/unit/GetTCPTests.cpp b/extensions/standard-processors/tests/unit/GetTCPTests.cpp
index f8ae3ea..86a8221 100644
--- a/extensions/standard-processors/tests/unit/GetTCPTests.cpp
+++ b/extensions/standard-processors/tests/unit/GetTCPTests.cpp
@@ -15,7 +15,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#include <uuid/uuid.h>
 #include <utility>
 #include <memory>
 #include <string>
diff --git a/extensions/standard-processors/tests/unit/HashContentTest.cpp b/extensions/standard-processors/tests/unit/HashContentTest.cpp
index 55b964a..fe4e775 100644
--- a/extensions/standard-processors/tests/unit/HashContentTest.cpp
+++ b/extensions/standard-processors/tests/unit/HashContentTest.cpp
@@ -18,7 +18,6 @@
 
 #ifdef OPENSSL_SUPPORT
 
-#include <uuid/uuid.h>
 #include <fstream>
 #include <map>
 #include <memory>
diff --git a/extensions/standard-processors/tests/unit/ProcessorTests.cpp b/extensions/standard-processors/tests/unit/ProcessorTests.cpp
index 5c382f1..4024e67 100644
--- a/extensions/standard-processors/tests/unit/ProcessorTests.cpp
+++ b/extensions/standard-processors/tests/unit/ProcessorTests.cpp
@@ -15,7 +15,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#include <uuid/uuid.h>
 #include <utility>
 #include <memory>
 #include <string>
diff --git a/extensions/standard-processors/tests/unit/PutFileTests.cpp b/extensions/standard-processors/tests/unit/PutFileTests.cpp
index b5b43f0..680a494 100644
--- a/extensions/standard-processors/tests/unit/PutFileTests.cpp
+++ b/extensions/standard-processors/tests/unit/PutFileTests.cpp
@@ -15,7 +15,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#include <uuid/uuid.h>
 #include <sys/stat.h>
 #include <utility>
 #include <memory>
diff --git a/extensions/standard-processors/tests/unit/TailFileTests.cpp b/extensions/standard-processors/tests/unit/TailFileTests.cpp
index e0d2991..fda9df2 100644
--- a/extensions/standard-processors/tests/unit/TailFileTests.cpp
+++ b/extensions/standard-processors/tests/unit/TailFileTests.cpp
@@ -17,7 +17,6 @@
  */
 
 #include <stdio.h>
-#include <uuid/uuid.h>
 #include <fstream>
 #include <map>
 #include <memory>
diff --git a/extensions/usb-camera/CMakeLists.txt b/extensions/usb-camera/CMakeLists.txt
index 7c1acd1..cfe1258 100644
--- a/extensions/usb-camera/CMakeLists.txt
+++ b/extensions/usb-camera/CMakeLists.txt
@@ -57,8 +57,7 @@ if(CMAKE_THREAD_LIBS_INIT)
   target_link_libraries(minifi-usb-camera-extensions "${CMAKE_THREAD_LIBS_INIT}")
 endif()
 
-find_package(UUID REQUIRED)
-target_link_libraries(minifi-usb-camera-extensions ${LIBMINIFI} ${UUID_LIBRARIES})
+target_link_libraries(minifi-usb-camera-extensions ${LIBMINIFI})
 find_package(OpenSSL REQUIRED)
 include_directories(${OPENSSL_INCLUDE_DIR})
 target_link_libraries(minifi-usb-camera-extensions ${CMAKE_DL_LIBS} )
diff --git a/extensions/windows-event-log/CMakeLists.txt b/extensions/windows-event-log/CMakeLists.txt
index 18a9ecf..584820f 100644
--- a/extensions/windows-event-log/CMakeLists.txt
+++ b/extensions/windows-event-log/CMakeLists.txt
@@ -47,9 +47,7 @@ set(BYPRODUCT "${PUGI_BYPRODUCT_DIR}/lib/pugixml.lib")
 
 include_directories("${PUGI_BYPRODUCT_DIR}/include")
 add_dependencies(minifi-wel pugixml-external)
-# Include UUID
-find_package(UUID REQUIRED)
-target_link_libraries(minifi-wel ${LIBMINIFI} ${BYPRODUCT} ${UUID_LIBRARIES})
+target_link_libraries(minifi-wel ${LIBMINIFI} ${BYPRODUCT})
 
 target_link_libraries(minifi-wel ${CMAKE_DL_LIBS} )
 find_package(ZLIB REQUIRED)
diff --git a/extensions/windows-event-log/tests/MetadataWalkerTests.cpp b/extensions/windows-event-log/tests/MetadataWalkerTests.cpp
index b9531b0..a517c9f 100644
--- a/extensions/windows-event-log/tests/MetadataWalkerTests.cpp
+++ b/extensions/windows-event-log/tests/MetadataWalkerTests.cpp
@@ -16,7 +16,6 @@
  * limitations under the License.
  */
 
-#include <uuid/uuid.h>
 #include <fstream>
 #include <map>
 #include <memory>
@@ -123,4 +122,4 @@ TEST_CASE("TestMultipleSids", "[Resolutions]") {
 	REQUIRE(expected == programmaticallyResolved);
 
 
-}
\ No newline at end of file
+}
diff --git a/libminifi/CMakeLists.txt b/libminifi/CMakeLists.txt
index 80a7119..34f72dd 100644
--- a/libminifi/CMakeLists.txt
+++ b/libminifi/CMakeLists.txt
@@ -33,10 +33,8 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 if (WIN32)
 	add_definitions(-DWIN32_LEAN_AND_MEAN)
-	include_directories("thirdparty/uuid/include/win32/")
-else()
-	include_directories("thirdparty/uuid/include/posix")
 endif()
+
 IF (IOS)
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fobjc-abi-version=2 -fobjc-arc -std=gnu++11 -stdlib=libc++ -isysroot ${CMAKE_OSX_SYSROOT} -DIOS")
 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fobjc-abi-version=2 -fobjc-arc -isysroot ${CMAKE_OSX_SYSROOT} -DIOS")
@@ -109,7 +107,7 @@ file(GLOB SPD_SOURCES "../thirdparty/spdlog-20170710/include/spdlog/*")
 # header only library
 add_library(spdlog STATIC ${SPD_SOURCES})
 add_library(core-minifi STATIC ${SOURCES})
-target_link_libraries(core-minifi ${CMAKE_DL_LIBS} ${UUID_LIBRARIES} yaml-cpp)
+target_link_libraries(core-minifi ${CMAKE_DL_LIBS} yaml-cpp)
 
 #target_link_libraries(core-minifi  PRIVATE bsdiff )
 
@@ -118,6 +116,10 @@ include_directories(${ZLIB_INCLUDE_DIRS})
 
 target_link_libraries (core-minifi ${ZLIB_LIBRARIES})
 
+if(NOT WIN32)
+	target_link_libraries (core-minifi OSSP::libuuid++)
+endif()
+
 
 # Include OpenSSL
 if (OPENSSL_FOUND)
@@ -155,13 +157,17 @@ add_library(core-minifi-shared SHARED ${SOURCES})
 if (APPLE)
 	target_link_libraries(core-minifi-shared ${CMAKE_DL_LIBS} yaml-cpp)
 else()
-	target_link_libraries(core-minifi-shared ${CMAKE_DL_LIBS} uuid-shared yaml-cpp)
+	target_link_libraries(core-minifi-shared ${CMAKE_DL_LIBS} yaml-cpp)
 endif()
 
 include_directories(${ZLIB_INCLUDE_DIRS})
 
 target_link_libraries (core-minifi-shared ${ZLIB_LIBRARIES})
 
+if(NOT WIN32)
+	target_link_libraries (core-minifi-shared OSSP::libuuid++)
+endif()
+
 # Include OpenSSL
 
 if (OPENSSL_FOUND)
diff --git a/libminifi/cmake/FindUUID.cmake b/libminifi/cmake/FindUUID.cmake
deleted file mode 100644
index 2402d08..0000000
--- a/libminifi/cmake/FindUUID.cmake
+++ /dev/null
@@ -1,37 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-# 
-#   http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-
-find_path(UUID_INCLUDE_DIR
-	NAMES uuid/uuid.h
-	HINTS ${UUID_DIR}/include
-			$ENV{UUID_DIR}/include
-	PATHS /usr/include
-          /usr/local/include )
-
-find_library(UUID_LIBRARY NAMES uuid
-             PATHS /usr/lib /usr/local/lib /usr/local/lib64 /lib/i386-linux-gnu /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu)
-
-set(UUID_INCLUDE_DIRS ${UUID_INCLUDE_DIR})
-set(UUID_LIBRARIES ${UUID_LIBRARY})
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(UUID  DEFAULT_MSG
-                                  UUID_LIBRARY UUID_INCLUDE_DIR)
-
-
-mark_as_advanced(UUID_INCLUDE_DIRS UUID_LIBRARIES)
diff --git a/libminifi/include/Connection.h b/libminifi/include/Connection.h
index 1f81fec..c2d30df 100644
--- a/libminifi/include/Connection.h
+++ b/libminifi/include/Connection.h
@@ -20,7 +20,6 @@
 #ifndef __CONNECTION_H__
 #define __CONNECTION_H__
 
-#include <uuid/uuid.h>
 #include <vector>
 #include <queue>
 #include <map>
diff --git a/libminifi/include/FlowController.h b/libminifi/include/FlowController.h
index aa3da22..2e40bb9 100644
--- a/libminifi/include/FlowController.h
+++ b/libminifi/include/FlowController.h
@@ -20,7 +20,6 @@
 #ifndef __FLOW_CONTROLLER_H__
 #define __FLOW_CONTROLLER_H__
 
-#include <uuid/uuid.h>
 #include <stdio.h>
 #include <vector>
 #include <queue>
diff --git a/libminifi/include/FlowFileRecord.h b/libminifi/include/FlowFileRecord.h
index 795003f..f233627 100644
--- a/libminifi/include/FlowFileRecord.h
+++ b/libminifi/include/FlowFileRecord.h
@@ -20,7 +20,6 @@
 #ifndef __FLOW_FILE_RECORD_H__
 #define __FLOW_FILE_RECORD_H__
 
-#include <uuid/uuid.h>
 #include <vector>
 #include <queue>
 #include <map>
diff --git a/libminifi/include/ResourceClaim.h b/libminifi/include/ResourceClaim.h
index e4523e4..bd0b6b8 100644
--- a/libminifi/include/ResourceClaim.h
+++ b/libminifi/include/ResourceClaim.h
@@ -21,7 +21,6 @@
 #define __RESOURCE_CLAIM_H__
 
 #include <string>
-#include <uuid/uuid.h>
 #include <vector>
 #include <queue>
 #include <map>
diff --git a/libminifi/include/SchedulingAgent.h b/libminifi/include/SchedulingAgent.h
index 3b94d0e..07126ab 100644
--- a/libminifi/include/SchedulingAgent.h
+++ b/libminifi/include/SchedulingAgent.h
@@ -20,7 +20,6 @@
 #ifndef __SCHEDULING_AGENT_H__
 #define __SCHEDULING_AGENT_H__
 
-#include <uuid/uuid.h>
 #include <vector>
 #include <map>
 #include <mutex>
diff --git a/libminifi/include/core/Core.h b/libminifi/include/core/Core.h
index e18999c..51712e3 100644
--- a/libminifi/include/core/Core.h
+++ b/libminifi/include/core/Core.h
@@ -24,7 +24,6 @@
 #include <iostream>
 #include <memory>
 #include <string>
-#include <uuid/uuid.h>
 #include <properties/Configure.h>
 
 #ifdef WIN32
diff --git a/libminifi/include/core/ProcessContext.h b/libminifi/include/core/ProcessContext.h
index be8ed91..db44db9 100644
--- a/libminifi/include/core/ProcessContext.h
+++ b/libminifi/include/core/ProcessContext.h
@@ -18,7 +18,6 @@
 #ifndef __PROCESS_CONTEXT_H__
 #define __PROCESS_CONTEXT_H__
 
-#include <uuid/uuid.h>
 #include <vector>
 #include <queue>
 #include <map>
diff --git a/libminifi/include/core/ProcessContextBuilder.h b/libminifi/include/core/ProcessContextBuilder.h
index 7975024..fad89af 100644
--- a/libminifi/include/core/ProcessContextBuilder.h
+++ b/libminifi/include/core/ProcessContextBuilder.h
@@ -18,7 +18,6 @@
 #ifndef __PROCESS_CONTEXT_BUILDER_H__
 #define __PROCESS_CONTEXT_BUILDER_H__
 
-#include <uuid/uuid.h>
 #include <vector>
 #include <queue>
 #include <map>
diff --git a/libminifi/include/core/ProcessGroup.h b/libminifi/include/core/ProcessGroup.h
index 6341523..ca65bee 100644
--- a/libminifi/include/core/ProcessGroup.h
+++ b/libminifi/include/core/ProcessGroup.h
@@ -18,7 +18,6 @@
 #ifndef __PROCESS_GROUP_H__
 #define __PROCESS_GROUP_H__
 
-#include <uuid/uuid.h>
 #include <vector>
 #include <queue>
 #include <map>
diff --git a/libminifi/include/core/ProcessSession.h b/libminifi/include/core/ProcessSession.h
index 26b8184..ddb6189 100644
--- a/libminifi/include/core/ProcessSession.h
+++ b/libminifi/include/core/ProcessSession.h
@@ -18,7 +18,6 @@
 #ifndef __PROCESS_SESSION_H__
 #define __PROCESS_SESSION_H__
 
-#include <uuid/uuid.h>
 #include <vector>
 #include <queue>
 #include <map>
diff --git a/libminifi/include/core/Processor.h b/libminifi/include/core/Processor.h
index ee16b62..56e4c76 100644
--- a/libminifi/include/core/Processor.h
+++ b/libminifi/include/core/Processor.h
@@ -18,7 +18,6 @@
 #ifndef __PROCESSOR_H__
 #define __PROCESSOR_H__
 
-#include <uuid/uuid.h>
 #include <vector>
 #include <queue>
 #include <map>
diff --git a/libminifi/include/core/Relationship.h b/libminifi/include/core/Relationship.h
index f2c442a..d48a6b7 100644
--- a/libminifi/include/core/Relationship.h
+++ b/libminifi/include/core/Relationship.h
@@ -21,7 +21,6 @@
 #define __RELATIONSHIP_H__
 
 #include <string>
-#include <uuid/uuid.h>
 #include <vector>
 #include <queue>
 #include <map>
diff --git a/libminifi/include/core/Repository.h b/libminifi/include/core/Repository.h
index 099eeca..ca40ef5 100644
--- a/libminifi/include/core/Repository.h
+++ b/libminifi/include/core/Repository.h
@@ -20,7 +20,6 @@
 #ifndef __REPOSITORY_H__
 #define __REPOSITORY_H__
 
-#include <uuid/uuid.h>
 #include <atomic>
 #include <cstdint>
 #include <cstring>
diff --git a/libminifi/include/provenance/Provenance.h b/libminifi/include/provenance/Provenance.h
index 8e0ee64..2804009 100644
--- a/libminifi/include/provenance/Provenance.h
+++ b/libminifi/include/provenance/Provenance.h
@@ -18,7 +18,6 @@
 #ifndef __PROVENANCE_H__
 #define __PROVENANCE_H__
 
-#include <uuid/uuid.h>
 #include <atomic>
 #include <cstdint>
 #include <cstring>
diff --git a/libminifi/include/sitetosite/Peer.h b/libminifi/include/sitetosite/Peer.h
index 2c9e2a0..05bb4aa 100644
--- a/libminifi/include/sitetosite/Peer.h
+++ b/libminifi/include/sitetosite/Peer.h
@@ -21,7 +21,6 @@
 #include <stdio.h>
 #include <string>
 #include <errno.h>
-#include <uuid/uuid.h>
 #include <string>
 #include <mutex>
 #include <atomic>
diff --git a/libminifi/include/sitetosite/RawSocketProtocol.h b/libminifi/include/sitetosite/RawSocketProtocol.h
index 1624ed6..bd9d211 100644
--- a/libminifi/include/sitetosite/RawSocketProtocol.h
+++ b/libminifi/include/sitetosite/RawSocketProtocol.h
@@ -27,7 +27,6 @@
 #include <chrono>
 #include <thread>
 #include <algorithm>
-#include <uuid/uuid.h>
 
 #include "SiteToSite.h"
 #include "SiteToSiteClient.h"
diff --git a/libminifi/include/utils/Id.h b/libminifi/include/utils/Id.h
index 81a3a62..175cb5e 100644
--- a/libminifi/include/utils/Id.h
+++ b/libminifi/include/utils/Id.h
@@ -21,17 +21,28 @@
 #include <atomic>
 #include <memory>
 #include <string>
-#include "uuid/uuid.h"
+#include <thread>
+
+#ifndef WIN32
+class uuid;
+#endif
 
 #include "core/logging/Logger.h"
 #include "properties/Properties.h"
 
-#define UNSIGNED_CHAR_MAX 255
 #define UUID_TIME_IMPL 0
 #define UUID_RANDOM_IMPL 1
 #define UUID_DEFAULT_IMPL 2
 #define MINIFI_UID_IMPL 3
 
+#define UUID_RANDOM_STR "random"
+#define UUID_WINDOWS_RANDOM_STR "windows_random"
+#define UUID_DEFAULT_STR "uuid_default"
+#define MINIFI_UID_STR "minifi_uid"
+#define UUID_TIME_STR "time"
+#define UUID_WINDOWS_STR "windows"
+
+
 namespace org {
 namespace apache {
 namespace nifi {
@@ -95,6 +106,8 @@ class IdentifierBase {
   T id_;
 };
 
+typedef uint8_t UUID_FIELD[16];
+
 class Identifier : public IdentifierBase<UUID_FIELD, std::string> {
  public:
   Identifier(UUID_FIELD u);
@@ -136,6 +149,8 @@ class IdGenerator {
   Identifier generate();
   void initialize(const std::shared_ptr<Properties> & properties);
 
+  ~IdGenerator();
+
   static std::shared_ptr<IdGenerator> getIdGenerator() {
     static std::shared_ptr<IdGenerator> generator = std::shared_ptr<IdGenerator>(new IdGenerator());
     return generator;
@@ -147,8 +162,15 @@ class IdGenerator {
   IdGenerator();
   int implementation_;
   std::shared_ptr<minifi::core::logging::Logger> logger_;
+
   unsigned char deterministic_prefix_[8];
   std::atomic<uint64_t> incrementor_;
+
+#ifndef WIN32
+  std::mutex uuid_mutex_;
+  std::unique_ptr<uuid> uuid_impl_;
+  bool generateWithUuidImpl(unsigned int mode, UUID_FIELD output);
+#endif
 };
 
 class NonRepeatingStringGenerator {
diff --git a/libminifi/src/RemoteProcessorGroupPort.cpp b/libminifi/src/RemoteProcessorGroupPort.cpp
index 1dc9201..534f6ef 100644
--- a/libminifi/src/RemoteProcessorGroupPort.cpp
+++ b/libminifi/src/RemoteProcessorGroupPort.cpp
@@ -20,7 +20,6 @@
 
 #include "RemoteProcessorGroupPort.h"
 
-#include <uuid/uuid.h>
 #include <algorithm>
 #include <cstdint>
 #include <memory>
diff --git a/libminifi/src/ResourceClaim.cpp b/libminifi/src/ResourceClaim.cpp
index 609ca20..1e08e20 100644
--- a/libminifi/src/ResourceClaim.cpp
+++ b/libminifi/src/ResourceClaim.cpp
@@ -18,7 +18,6 @@
  * limitations under the License.
  */
 #include "ResourceClaim.h"
-#include <uuid/uuid.h>
 #include <map>
 #include <queue>
 #include <string>
diff --git a/libminifi/src/core/Connectable.cpp b/libminifi/src/core/Connectable.cpp
index bd5cae1..c4715d6 100644
--- a/libminifi/src/core/Connectable.cpp
+++ b/libminifi/src/core/Connectable.cpp
@@ -16,7 +16,6 @@
  * limitations under the License.
  */
 #include "core/Connectable.h"
-#include <uuid/uuid.h>
 #include <utility>
 #include <memory>
 #include <string>
diff --git a/libminifi/src/core/ProcessSession.cpp b/libminifi/src/core/ProcessSession.cpp
index fb1f17d..5ecfcd0 100644
--- a/libminifi/src/core/ProcessSession.cpp
+++ b/libminifi/src/core/ProcessSession.cpp
@@ -29,7 +29,6 @@
 #include <chrono>
 #include <thread>
 #include <iostream>
-#include <uuid/uuid.h>
 /* This implementation is only for native Windows systems.  */
 #if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
 #define _WINSOCKAPI_
diff --git a/libminifi/src/utils/Id.cpp b/libminifi/src/utils/Id.cpp
index 5abe714..e88b710 100644
--- a/libminifi/src/utils/Id.cpp
+++ b/libminifi/src/utils/Id.cpp
@@ -16,25 +16,64 @@
  * limitations under the License.
  */
 
+// This needs to be included first to let uuid.h sort out the system header collisions
+#ifndef WIN32
+#include "uuid++.hh"
+#endif
+
 #include "utils/Id.h"
+
 #define __STDC_FORMAT_MACROS 1
 #include <inttypes.h>
-#include <uuid/uuid.h>
-
 #include <algorithm>
 #include <chrono>
 #include <cmath>
+#include <cstdio>
 #include <memory>
 #include <string>
+#include <limits>
 #include "core/logging/LoggerConfiguration.h"
 #include "utils/StringUtils.h"
 
+#ifdef WIN32
+#include "Rpc.h"
+#include "Winsock2.h"
+#pragma comment(lib, "Rpcrt4.lib")
+#pragma comment(lib, "Ws2_32.lib")
+#endif
+
 namespace org {
 namespace apache {
 namespace nifi {
 namespace minifi {
 namespace utils {
 
+#ifdef WIN32
+namespace {
+  void windowsUuidToUuidField(UUID* uuid, UUID_FIELD out) {
+    uint32_t Data1BE = htonl(uuid->Data1);
+    memcpy(out, &Data1BE, 4);
+    uint16_t Data2BE = htons(uuid->Data2);
+    memcpy(out + 4, &Data2BE, 2);
+    uint16_t Data3BE = htons(uuid->Data3);
+    memcpy(out + 6, &Data3BE, 2);
+    memcpy(out + 8, uuid->Data4, 8);
+  }
+
+  void windowsUuidGenerateTime(UUID_FIELD out) {
+    UUID uuid;
+    UuidCreateSequential(&uuid);
+    windowsUuidToUuidField(&uuid, out);
+  }
+
+  void windowsUuidGenerateRandom(UUID_FIELD out) {
+    UUID uuid;
+    UuidCreate(&uuid);
+    windowsUuidToUuidField(&uuid, out);
+  }
+}
+#endif
+
 Identifier::Identifier(UUID_FIELD u)
     : IdentifierBase(u) {
   build_string();
@@ -85,8 +124,13 @@ Identifier &Identifier::operator=(UUID_FIELD o) {
 }
 
 Identifier &Identifier::operator=(std::string id) {
-  uuid_parse(id.c_str(), id_);
-  converted_ = id;
+  sscanf(id.c_str(), "%02hhx%02hhx%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx",
+         &id_[0], &id_[1], &id_[2], &id_[3],
+         &id_[4], &id_[5],
+         &id_[6], &id_[7],
+         &id_[8], &id_[9],
+         &id_[10], &id_[11], &id_[12], &id_[13], &id_[14], &id_[15]);
+  build_string();
   return *this;
 }
 
@@ -115,8 +159,13 @@ const unsigned char * const Identifier::toArray() const {
 }
 
 void Identifier::build_string() {
-  char uuidStr[37] = { 0 };
-  uuid_unparse_lower(id_, uuidStr);
+  char uuidStr[37];
+  snprintf(uuidStr, sizeof(uuidStr), "%02hhx%02hhx%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx",
+      id_[0], id_[1], id_[2], id_[3],
+      id_[4], id_[5],
+      id_[6], id_[7],
+      id_[8], id_[9],
+      id_[10], id_[11], id_[12], id_[13], id_[14], id_[15]);
   converted_ = uuidStr;
 }
 
@@ -131,6 +180,12 @@ IdGenerator::IdGenerator()
     : implementation_(UUID_TIME_IMPL),
       logger_(logging::LoggerFactory<IdGenerator>::getLogger()),
       incrementor_(0) {
+#ifndef WIN32
+  uuid_impl_ = std::unique_ptr<uuid>(new uuid());
+#endif
+}
+
+IdGenerator::~IdGenerator() {
 }
 
 uint64_t IdGenerator::getDeviceSegmentFromString(const std::string& str, int numBits) const {
@@ -157,7 +212,15 @@ uint64_t IdGenerator::getRandomDeviceSegment(int numBits) const {
   uint64_t deviceSegment = 0;
   UUID_FIELD random_uuid;
   for (int word = 0; word < 2; word++) {
-    uuid_generate_random(random_uuid);
+#ifdef WIN32
+    windowsUuidGenerateRandom(random_uuid);
+#else
+    uuid temp_uuid;
+    temp_uuid.make(UUID_MAKE_V4);
+    void* uuid_bin = temp_uuid.binary();
+    memcpy(random_uuid, uuid_bin, 16);
+    free(uuid_bin);
+#endif
     for (int i = 0; i < 4; i++) {
       deviceSegment += random_uuid[i];
       deviceSegment <<= 8;
@@ -174,13 +237,13 @@ void IdGenerator::initialize(const std::shared_ptr<Properties> & properties) {
   implementation_ = UUID_TIME_IMPL;
   if (properties->get("uid.implementation", implementation_str)) {
     std::transform(implementation_str.begin(), implementation_str.end(), implementation_str.begin(), ::tolower);
-    if ("random" == implementation_str) {
+    if (UUID_RANDOM_STR == implementation_str || UUID_WINDOWS_RANDOM_STR == implementation_str) {
       logging::LOG_DEBUG(logger_) << "Using uuid_generate_random for uids.";
       implementation_ = UUID_RANDOM_IMPL;
-    } else if ("uuid_default" == implementation_str) {
+    } else if (UUID_DEFAULT_STR == implementation_str) {
       logging::LOG_DEBUG(logger_) << "Using uuid_generate for uids.";
       implementation_ = UUID_DEFAULT_IMPL;
-    } else if ("minifi_uid" == implementation_str) {
+    } else if (MINIFI_UID_STR == implementation_str) {
       logging::LOG_DEBUG(logger_) << "Using minifi uid implementation for uids";
       implementation_ = MINIFI_UID_IMPL;
 
@@ -201,11 +264,11 @@ void IdGenerator::initialize(const std::shared_ptr<Properties> & properties) {
         logging::LOG_DEBUG(logger_) << "Using minifi uid prefix: " << std::hex << prefix;
       }
       for (int i = 0; i < 8; i++) {
-        unsigned char prefix_element = (prefix >> ((7 - i) * 8)) & UNSIGNED_CHAR_MAX;
+        unsigned char prefix_element = (prefix >> ((7 - i) * 8)) & std::numeric_limits<unsigned char>::max();
         deterministic_prefix_[i] = prefix_element;
       }
       incrementor_ = 0;
-    } else if ("time" == implementation_str) {
+    } else if (UUID_TIME_STR == implementation_str || UUID_WINDOWS_STR == implementation_str) {
       logging::LOG_DEBUG(logger_) << "Using uuid_generate_time implementation for uids.";
     } else {
       logging::LOG_DEBUG(logger_) << "Invalid value for uid.implementation (" << implementation_str << "). Using uuid_generate_time implementation for uids.";
@@ -215,6 +278,24 @@ void IdGenerator::initialize(const std::shared_ptr<Properties> & properties) {
   }
 }
 
+#ifndef WIN32
+bool IdGenerator::generateWithUuidImpl(unsigned int mode, UUID_FIELD output) {
+  void* uuid = nullptr;
+  try {
+    std::lock_guard<std::mutex> lock(uuid_mutex_);
+    uuid_impl_->make(mode);
+    uuid = uuid_impl_->binary();
+  } catch (uuid_error_t& uuid_error){
+    logger_->log_error("Failed to generate UUID, error: %s", uuid_error.string());
+    return false;
+  }
+
+  memcpy(output, uuid, 16);
+  free(uuid);
+  return true;
+}
+#endif
+
 Identifier IdGenerator::generate() {
   Identifier ident;
   generate(ident);
@@ -225,21 +306,28 @@ void IdGenerator::generate(Identifier &ident) {
   UUID_FIELD output;
   switch (implementation_) {
     case UUID_RANDOM_IMPL:
-      uuid_generate_random(output);
-      break;
     case UUID_DEFAULT_IMPL:
-      uuid_generate(output);
+#ifdef WIN32
+      windowsUuidGenerateRandom(output);
+#else
+      generateWithUuidImpl(UUID_MAKE_V4, output);
+#endif
       break;
     case MINIFI_UID_IMPL: {
       std::memcpy(output, deterministic_prefix_, sizeof(deterministic_prefix_));
       uint64_t incrementor_value = incrementor_++;
       for (int i = 8; i < 16; i++) {
-        output[i] = (incrementor_value >> ((15 - i) * 8)) & UNSIGNED_CHAR_MAX;
+        output[i] = (incrementor_value >> ((15 - i) * 8)) & std::numeric_limits<unsigned char>::max();
       }
     }
-      break;
+    break;
+    case UUID_TIME_IMPL:
     default:
-      uuid_generate_time(output);
+#ifdef WIN32
+      windowsUuidGenerateTime(output);
+#else
+      generateWithUuidImpl(UUID_MAKE_V1, output);
+#endif
       break;
   }
   ident = output;
diff --git a/libminifi/test/archive-tests/CompressContentTests.cpp b/libminifi/test/archive-tests/CompressContentTests.cpp
index db82607..3ac080c 100644
--- a/libminifi/test/archive-tests/CompressContentTests.cpp
+++ b/libminifi/test/archive-tests/CompressContentTests.cpp
@@ -16,7 +16,6 @@
  * limitations under the License.
  */
 
-#include <uuid/uuid.h>
 #include <fstream>
 #include <map>
 #include <memory>
diff --git a/libminifi/test/archive-tests/FocusArchiveTests.cpp b/libminifi/test/archive-tests/FocusArchiveTests.cpp
index 721e974..4e4e045 100644
--- a/libminifi/test/archive-tests/FocusArchiveTests.cpp
+++ b/libminifi/test/archive-tests/FocusArchiveTests.cpp
@@ -16,7 +16,6 @@
  * limitations under the License.
  */
 
-#include <uuid/uuid.h>
 #include <iostream>
 #include <map>
 #include <set>
diff --git a/libminifi/test/archive-tests/ManipulateArchiveTests.cpp b/libminifi/test/archive-tests/ManipulateArchiveTests.cpp
index ee85d15..cbb4449 100644
--- a/libminifi/test/archive-tests/ManipulateArchiveTests.cpp
+++ b/libminifi/test/archive-tests/ManipulateArchiveTests.cpp
@@ -16,7 +16,6 @@
  * limitations under the License.
  */
 
-#include <uuid/uuid.h>
 #include <iostream>
 #include <map>
 #include <set>
diff --git a/libminifi/test/archive-tests/MergeFileTests.cpp b/libminifi/test/archive-tests/MergeFileTests.cpp
index 7076ed2..b3f672a 100644
--- a/libminifi/test/archive-tests/MergeFileTests.cpp
+++ b/libminifi/test/archive-tests/MergeFileTests.cpp
@@ -16,7 +16,6 @@
  * limitations under the License.
  */
 
-#include <uuid/uuid.h>
 #include <fstream>
 #include <map>
 #include <memory>
diff --git a/libminifi/test/bustache-tests/ApplyTemplateTests.cpp b/libminifi/test/bustache-tests/ApplyTemplateTests.cpp
index e986b5a..9899d13 100644
--- a/libminifi/test/bustache-tests/ApplyTemplateTests.cpp
+++ b/libminifi/test/bustache-tests/ApplyTemplateTests.cpp
@@ -16,7 +16,6 @@
  * limitations under the License.
  */
 
-#include <uuid/uuid.h>
 #include <fstream>
 #include <map>
 #include <memory>
diff --git a/libminifi/test/gps-tests/GPSTests.cpp b/libminifi/test/gps-tests/GPSTests.cpp
index 4446bca..e308f83 100644
--- a/libminifi/test/gps-tests/GPSTests.cpp
+++ b/libminifi/test/gps-tests/GPSTests.cpp
@@ -17,7 +17,6 @@
  */
 
 #define CATCH_CONFIG_MAIN  // This tells Catch to provide a main() - only do this in one cpp file
-#include <uuid/uuid.h>
 #include <fstream>
 #include <map>
 #include <memory>
diff --git a/libminifi/test/sqlite-tests/SQLiteTests.cpp b/libminifi/test/sqlite-tests/SQLiteTests.cpp
index 87b3070..6ba6eee 100644
--- a/libminifi/test/sqlite-tests/SQLiteTests.cpp
+++ b/libminifi/test/sqlite-tests/SQLiteTests.cpp
@@ -16,7 +16,6 @@
  * limitations under the License.
  */
 
-#include <uuid/uuid.h>
 #include <fstream>
 #include <map>
 #include <memory>
diff --git a/libminifi/test/unit/C2MetricsTests.cpp b/libminifi/test/unit/C2MetricsTests.cpp
index 526812e..96aa551 100644
--- a/libminifi/test/unit/C2MetricsTests.cpp
+++ b/libminifi/test/unit/C2MetricsTests.cpp
@@ -15,7 +15,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#include <uuid/uuid.h>
 #include <memory>
 
 #include "../../include/core/state/nodes/ProcessMetrics.h"
diff --git a/libminifi/test/unit/ControllerTests.cpp b/libminifi/test/unit/ControllerTests.cpp
index 843e301..297a948 100644
--- a/libminifi/test/unit/ControllerTests.cpp
+++ b/libminifi/test/unit/ControllerTests.cpp
@@ -15,7 +15,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#include <uuid/uuid.h>
 #include <vector>
 #include <memory>
 #include <utility>
diff --git a/libminifi/test/unit/FileStreamTests.cpp b/libminifi/test/unit/FileStreamTests.cpp
index be1b2b8..86be792 100644
--- a/libminifi/test/unit/FileStreamTests.cpp
+++ b/libminifi/test/unit/FileStreamTests.cpp
@@ -19,7 +19,6 @@
 #include <string>
 #include <vector>
 #include <iostream>
-#include <uuid/uuid.h>
 #include "../TestBase.h"
 
 TEST_CASE("TestFileOverWrite", "[TestFiles]") {
diff --git a/libminifi/test/unit/FileTriggerTests.cpp b/libminifi/test/unit/FileTriggerTests.cpp
index b4168d3..21a3285 100644
--- a/libminifi/test/unit/FileTriggerTests.cpp
+++ b/libminifi/test/unit/FileTriggerTests.cpp
@@ -17,7 +17,6 @@
  */
 #include <chrono>
 #include <thread>
-#include <uuid/uuid.h>
 #include <memory>
 
 #include "c2/triggers/FileUpdateTrigger.h"
diff --git a/libminifi/test/unit/IdTests.cpp b/libminifi/test/unit/IdTests.cpp
index a70bc59..2492349 100644
--- a/libminifi/test/unit/IdTests.cpp
+++ b/libminifi/test/unit/IdTests.cpp
@@ -19,6 +19,8 @@
 #include <string>
 #include <memory>
 #include <ctime>
+#include <algorithm>
+#include <cctype>
 #include "../TestBase.h"
 #include "utils/Id.h"
 
@@ -44,6 +46,14 @@ TEST_CASE("Test time", "[id]") {
   generator->initialize(id_props);
 
   REQUIRE(true == LogTestController::getInstance().contains("Using uuid_generate_time implementation for uids."));
+
+  utils::Identifier id;
+  generator->generate(id);
+
+  const uint8_t* bytes = id.toArray();
+  uint8_t version = bytes[6] >> 4;
+  REQUIRE(0x01 == version);
+
   LogTestController::getInstance().reset();
 }
 
@@ -75,6 +85,14 @@ TEST_CASE("Test random", "[id]") {
   generator->initialize(id_props);
 
   REQUIRE(true == LogTestController::getInstance().contains("Using uuid_generate_random for uids."));
+
+  utils::Identifier id;
+  generator->generate(id);
+
+  const uint8_t* bytes = id.toArray();
+  uint8_t version = bytes[6] >> 4;
+  REQUIRE(0x04 == version);
+
   LogTestController::getInstance().reset();
 }
 
@@ -106,6 +124,77 @@ TEST_CASE("Test invalid", "[id]") {
   LogTestController::getInstance().reset();
 }
 
+TEST_CASE("Test parse", "[id]") {
+  TestController test_controller;
+
+  LogTestController::getInstance().setDebug<utils::IdGenerator>();
+  std::shared_ptr<minifi::Properties> id_props = std::make_shared<minifi::Properties>();
+  id_props->set("uid.implementation", "time");
+
+  std::shared_ptr<utils::IdGenerator> generator = utils::IdGenerator::getIdGenerator();
+  generator->initialize(id_props);
+
+  utils::Identifier id;
+
+  const std::map<std::string, std::array<uint8_t, 16U>> test_cases = {
+      {"00000000-0000-0000-0000-000000000000", {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}},
+      {"1d412e16-0148-11ea-880b-9bf2c1d8f5be", {0x1D, 0x41, 0x2E, 0x16, 0x01, 0x48, 0x11, 0xEA, 0x88, 0x0B, 0x9B, 0xF2, 0xC1, 0xD8, 0xF5, 0xBE}},
+      {"d85b49a4-32dc-42de-a26a-c2eb6222118c", {0xD8, 0x5B, 0x49, 0xA4, 0x32, 0xDC, 0x42, 0xDE, 0xA2, 0x6A, 0xC2, 0xEB, 0x62, 0x22, 0x11, 0x8C}},
+      {"CEF85A08-0148-11EA-97D5-93123D0B5F8A", {0xCE, 0xF8, 0x5A, 0x08, 0x01, 0x48, 0x11, 0xEA, 0x97, 0xD5, 0x93, 0x12, 0x3D, 0x0B, 0x5F, 0x8A}},
+  };
+
+  for (const auto& test_case : test_cases) {
+    id = test_case.first;
+    REQUIRE(memcmp(id.toArray(), test_case.second.data(), 16U) == 0);
+    REQUIRE(utils::StringUtils::equalsIgnoreCase(test_case.first, id.to_string()));
+  }
+
+  LogTestController::getInstance().reset();
+}
+
+TEST_CASE("Test to_string", "[id]") {
+  TestController test_controller;
+
+  LogTestController::getInstance().setDebug<utils::IdGenerator>();
+  std::shared_ptr<minifi::Properties> id_props = std::make_shared<minifi::Properties>();
+  id_props->set("uid.implementation", "time");
+
+  std::shared_ptr<utils::IdGenerator> generator = utils::IdGenerator::getIdGenerator();
+  generator->initialize(id_props);
+
+  utils::Identifier id;
+  generator->generate(id);
+
+  std::string id_str = id.to_string();
+  std::cerr << "Generated UUID " << id_str << std::endl;
+
+  REQUIRE(36 == id_str.length());
+  REQUIRE('-' == id_str[8]);
+  REQUIRE('-' == id_str[13]);
+  REQUIRE('-' == id_str[18]);
+  REQUIRE('-' == id_str[23]);
+  for (size_t i : {0, 1, 2, 3, 4, 5, 6, 7}) {
+    REQUIRE(isxdigit(id_str[i]));
+  }
+  for (size_t i : {9, 10, 11, 12}) {
+    REQUIRE(isxdigit(id_str[i]));
+  }
+  for (size_t i : {14, 15, 16, 17}) {
+    REQUIRE(isxdigit(id_str[i]));
+  }
+  for (size_t i : {14, 15, 16, 17}) {
+    REQUIRE(isxdigit(id_str[i]));
+  }
+  for (size_t i : {19, 20, 21, 22}) {
+    REQUIRE(isxdigit(id_str[i]));
+  }
+  for (size_t i : {24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35}) {
+    REQUIRE(isxdigit(id_str[i]));
+  }
+
+  LogTestController::getInstance().reset();
+}
+
 TEST_CASE("Test Hex Device Segment 16 bits correct digits", "[id]") {
   TestController test_controller;
 
@@ -199,3 +288,77 @@ TEST_CASE("Test Hex Device Segment 18 bits", "[id]") {
   REQUIRE(true == LogTestController::getInstance().contains("Using minifi uid prefix: 9af8"));
   LogTestController::getInstance().reset();
 }
+
+
+TEST_CASE("Collision", "[collision]") {
+  TestController test_controller;
+
+  LogTestController::getInstance().setDebug<utils::IdGenerator>();
+  std::shared_ptr<minifi::Properties> id_props = std::make_shared<minifi::Properties>();
+  SECTION("random") {
+    id_props->set("uid.implementation", "random");
+  }
+  SECTION("time") {
+    id_props->set("uid.implementation", "time");
+  }
+  SECTION("uuid_default") {
+    id_props->set("uid.implementation", "uuid_default");
+  }
+
+  std::shared_ptr<utils::IdGenerator> generator = utils::IdGenerator::getIdGenerator();
+  generator->initialize(id_props);
+
+  std::vector<utils::Identifier> uuids(16 * 1024U);
+  std::vector<std::thread> threads;
+  for (size_t i = 0U; i < 16U; i++) {
+    threads.emplace_back([&generator, &uuids, i](){
+      for (size_t j = 0U; j < 1024U; j++) {
+        generator->generate(uuids[i * 1024U + j]);
+      }
+    });
+  }
+  for (auto& thread : threads) {
+    thread.join();
+  }
+
+  std::sort(uuids.begin(), uuids.end(), [](const utils::Identifier& a, const utils::Identifier& b) {
+    return memcmp(a.toArray(), b.toArray(), 16U) < 0;
+  });
+  REQUIRE(uuids.end() == std::adjacent_find(uuids.begin(), uuids.end()));
+
+  LogTestController::getInstance().reset();
+}
+
+TEST_CASE("Speed", "[speed]") {
+  TestController test_controller;
+
+  LogTestController::getInstance().setDebug<utils::IdGenerator>();
+  std::shared_ptr<minifi::Properties> id_props = std::make_shared<minifi::Properties>();
+  std::string implementation;
+  SECTION("random") {
+    implementation = "random";
+  }
+  SECTION("time") {
+    implementation = "time";
+  }
+  SECTION("uuid_default") {
+    implementation = "uuid_default";
+  }
+  id_props->set("uid.implementation", implementation);
+
+  std::shared_ptr<utils::IdGenerator> generator = utils::IdGenerator::getIdGenerator();
+  generator->initialize(id_props);
+
+  std::vector<utils::Identifier> uuids(128U * 1024U);
+  // Prime the generator
+  generator->generate(uuids[0]);
+
+  auto before = std::chrono::high_resolution_clock::now();
+  for (size_t i = 0U; i < uuids.size(); i++) {
+    generator->generate(uuids[i]);
+  }
+  auto duration = std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::high_resolution_clock::now() - before).count();
+  std::cerr << "Generating one " << implementation << " UUID took " << (duration / uuids.size()) << "ns" << std::endl;
+
+  LogTestController::getInstance().reset();
+}
diff --git a/libminifi/test/unit/NetworkPrioritizerServiceTests.cpp b/libminifi/test/unit/NetworkPrioritizerServiceTests.cpp
index 54babe7..e0c3547 100644
--- a/libminifi/test/unit/NetworkPrioritizerServiceTests.cpp
+++ b/libminifi/test/unit/NetworkPrioritizerServiceTests.cpp
@@ -15,7 +15,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#include <uuid/uuid.h>
 #include <vector>
 #include <memory>
 #include <utility>
diff --git a/libminifi/test/unit/SerializationTests.cpp b/libminifi/test/unit/SerializationTests.cpp
index fe703f2..50831ae 100644
--- a/libminifi/test/unit/SerializationTests.cpp
+++ b/libminifi/test/unit/SerializationTests.cpp
@@ -16,7 +16,6 @@
  * limitations under the License.
  */
 #include "io/BaseStream.h"
-#include <uuid/uuid.h>
 #include "SiteToSiteHelper.h"
 #include <algorithm>
 #include <string>
diff --git a/libminifi/test/unit/Site2SiteTests.cpp b/libminifi/test/unit/Site2SiteTests.cpp
index 732df70..6e8d6ae 100644
--- a/libminifi/test/unit/Site2SiteTests.cpp
+++ b/libminifi/test/unit/Site2SiteTests.cpp
@@ -16,7 +16,6 @@
  * limitations under the License.
  */
 
-#include <uuid/uuid.h>
 #include <string>
 #include <memory>
 #include <utility>
diff --git a/libminifi/test/unit/UpdatePolicyTests.cpp b/libminifi/test/unit/UpdatePolicyTests.cpp
index 851e3db..d0f73c9 100644
--- a/libminifi/test/unit/UpdatePolicyTests.cpp
+++ b/libminifi/test/unit/UpdatePolicyTests.cpp
@@ -15,7 +15,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#include <uuid/uuid.h>
 #include <vector>
 #include <memory>
 #include <utility>
diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt
index c0cf8c2..e94d35c 100644
--- a/main/CMakeLists.txt
+++ b/main/CMakeLists.txt
@@ -69,12 +69,8 @@ if(CMAKE_THREAD_LIBS_INIT)
   target_link_libraries(minifiexe "${CMAKE_THREAD_LIBS_INIT}")
 endif()
 
-# Include UUID
-
 set (WIN32_ARCHIVES "")
 
-
-
 # Link against minifi, yaml-cpp, civetweb-cpp, uuid, openssl, and rocksdb
 #target_link_libraries(minifiexe core-minifi)
 
@@ -113,7 +109,7 @@ else()
 	#set_target_properties(minifiexe PROPERTIES LINK_FLAGS "${LINK_FLAGS} /WHOLEARCHIVE:minifi")
 endif ()
 
-target_link_libraries(minifiexe yaml-cpp ${UUID_LIBRARIES} ${JEMALLOC_LIBRARIES}) #
+target_link_libraries(minifiexe yaml-cpp ${JEMALLOC_LIBRARIES}) #
 
 if (WIN32)
 	include_directories("../thirdparty/Simple-Windows-Posix-Semaphore")
diff --git a/nanofi/include/core/cuuid.h b/nanofi/include/core/cuuid.h
index ea26810..dd90b0d 100644
--- a/nanofi/include/core/cuuid.h
+++ b/nanofi/include/core/cuuid.h
@@ -19,7 +19,6 @@
 #ifndef NIFI_MINIFI_CPP_CUUID_H
 #define NIFI_MINIFI_CPP_CUUID_H
 
-#include "uuid/uuid.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/nanofi/include/cxx/ReflexiveSession.h b/nanofi/include/cxx/ReflexiveSession.h
index ebf6cbe..3f08548 100644
--- a/nanofi/include/cxx/ReflexiveSession.h
+++ b/nanofi/include/cxx/ReflexiveSession.h
@@ -18,7 +18,6 @@
 #ifndef __REFLEXIVE_SESSION_H__
 #define __REFLEXIVE_SESSION_H__
 
-#include <uuid/uuid.h>
 #include <vector>
 #include <queue>
 #include <map>
diff --git a/nanofi/include/sitetosite/CPeer.h b/nanofi/include/sitetosite/CPeer.h
index 11e4ece..d23cab3 100644
--- a/nanofi/include/sitetosite/CPeer.h
+++ b/nanofi/include/sitetosite/CPeer.h
@@ -22,7 +22,6 @@
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
-#include <uuid/uuid.h>
 #include "core/cstream.h"
 
 #ifdef __cplusplus
diff --git a/nanofi/include/sitetosite/CRawSocketProtocol.h b/nanofi/include/sitetosite/CRawSocketProtocol.h
index 977b482..c01996e 100644
--- a/nanofi/include/sitetosite/CRawSocketProtocol.h
+++ b/nanofi/include/sitetosite/CRawSocketProtocol.h
@@ -21,7 +21,6 @@
 #include <stdlib.h>
 #include <string.h>
 #include <ctype.h>
-#include <uuid/uuid.h>
 
 #include "api/nanofi.h"
 #include "CSiteToSite.h"
diff --git a/nanofi/src/core/cuuid.c b/nanofi/src/core/cuuid.c
index 7f3f372..fa38966 100644
--- a/nanofi/src/core/cuuid.c
+++ b/nanofi/src/core/cuuid.c
@@ -16,20 +16,80 @@
  * limitations under the License.
  */
 
+// This needs to be included first to let uuid.h sort out the system header collisions
+#ifndef WIN32
+#include "uuid.h"
+#endif
+
 #include "core/cuuid.h"
 
+#ifdef WIN32
+#include "Rpc.h"
+#include "Winsock2.h"
+#pragma comment(lib, "Rpcrt4.lib")
+#pragma comment(lib, "Ws2_32.lib")
+#else
+#include <pthread.h>
+#endif
+
+#ifdef WIN32
+  void windows_uuid_to_str(const UUID* uuid, char* out) {
+    RPC_CSTR str = NULL;
+    UuidToStringA(uuid, &str);
+    snprintf(out, 37, "%.36s", (char*)str);
+    RpcStringFreeA(&str);
+  }
+
+  void windows_uuid_generate_time(char* out) {
+    UUID uuid;
+    UuidCreateSequential(&uuid);
+    windows_uuid_to_str(&uuid, out);
+  }
+
+  void windows_uuid_generate_random(char* out) {
+    UUID uuid;
+    UuidCreate(&uuid);
+    windows_uuid_to_str(&uuid, out);
+  }
+#else
+  int generate_uuid_with_uuid_impl(unsigned int mode, char* out) {
+    static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
+    static uuid_t* uuid_impl = NULL;
+    pthread_mutex_lock(&mutex);
+    if (uuid_impl == NULL) {
+      if (uuid_create(&uuid_impl) != UUID_RC_OK) {
+        pthread_mutex_unlock(&mutex);
+        return -1;
+      }
+    }
+    uuid_make(uuid_impl, mode);
+    size_t len = UUID_LEN_STR+1;
+    if (uuid_export(uuid_impl, UUID_FMT_STR, &out, &len) != UUID_RC_OK) {
+      pthread_mutex_unlock(&mutex);
+      return -1;
+    }
+    pthread_mutex_unlock(&mutex);
+    return 0;
+  }
+#endif
+
 void generate_uuid(const CIDGenerator * generator, char * out) {
-  UUID_FIELD output;
   switch (generator->implementation_) {
     case CUUID_RANDOM_IMPL:
-      uuid_generate_random(output);
-      break;
     case CUUID_DEFAULT_IMPL:
-      uuid_generate(output);
+#ifdef WIN32
+      windows_uuid_generate_random(out);
+#else
+      generate_uuid_with_uuid_impl(UUID_MAKE_V4, out);
+#endif
       break;
+    case CUUID_TIME_IMPL:
     default:
-      uuid_generate_time(output);
+#ifdef WIN32
+      windows_uuid_generate_time(out);
+#else
+      generate_uuid_with_uuid_impl(UUID_MAKE_V1, out);
+#endif
       break;
   }
-  uuid_unparse_lower(output, out);
 }
diff --git a/nanofi/tests/CAPITests.cpp b/nanofi/tests/CAPITests.cpp
index 769b1dc..4112155 100644
--- a/nanofi/tests/CAPITests.cpp
+++ b/nanofi/tests/CAPITests.cpp
@@ -15,7 +15,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#include <uuid/uuid.h>
 #include <sys/stat.h>
 #include <utility>
 #include <memory>
diff --git a/nanofi/tests/CSite2SiteTests.cpp b/nanofi/tests/CSite2SiteTests.cpp
index cc2902f..0ecb4a7 100644
--- a/nanofi/tests/CSite2SiteTests.cpp
+++ b/nanofi/tests/CSite2SiteTests.cpp
@@ -33,7 +33,6 @@
 #include "sitetosite/CRawSocketProtocol.h"
 #include "sitetosite/CSiteToSite.h"
 #include "sitetosite/RawSocketProtocol.h"
-#include "uuid/uuid.h"
 #include "core/cstructs.h"
 #include "RandomServerSocket.h"
 #include "core/log.h"
@@ -229,4 +228,4 @@ TEST_CASE("TestSiteToBootStrap", "[S2S3]") {
     REQUIRE(received_data.attributes[ATTR_NAME] == ATTR_VALUE);
     REQUIRE(std::string(reinterpret_cast<const char*>(received_data.payload.data()), received_data.payload.size()) == PAYLOAD);
   }
-}
\ No newline at end of file
+}
diff --git a/nanofi/tests/CUUIDTests.cpp b/nanofi/tests/CUUIDTests.cpp
index 3a3ed4b..0802e31 100644
--- a/nanofi/tests/CUUIDTests.cpp
+++ b/nanofi/tests/CUUIDTests.cpp
@@ -17,12 +17,15 @@
  */
 
 #include <string>
+#include <cstring>
+#include <thread>
 #include "TestBase.h"
 #include "core/cuuid.h"
 
 bool verify_uuid(const char * uuid) {
   std::string uuid_str(uuid, 36);
-  if(uuid_str.length() != 36) {
+  fprintf(stderr, "Verifying UUID %s\n", uuid_str.c_str());
+  if(strlen(uuid_str.c_str()) != 36) {
     return false;
   }
   for(int i = 0; i < uuid_str.length(); ++i) {
@@ -40,11 +43,66 @@ bool verify_uuid(const char * uuid) {
 }
 
 TEST_CASE("Test C UUID generation", "[testCUUID]") {
-  char uuid[36];
+  char uuid[37];
   CIDGenerator gen;
-  for(int i = 0; i < 4; ++i) {
+  for(int i = 0; i < 3; ++i) {
+    gen.implementation_ = i;
     generate_uuid(&gen, uuid);
     REQUIRE(verify_uuid(uuid));
-    gen.implementation_ = i;
   }
 }
+
+TEST_CASE("Speed test", "[testCUUID]") {
+  CIDGenerator gen;
+  SECTION("CUUID_TIME_IMPL") {
+    gen.implementation_ = CUUID_TIME_IMPL;
+  }
+  SECTION("CUUID_RANDOM_IMPL") {
+    gen.implementation_ = CUUID_RANDOM_IMPL;
+  }
+  SECTION("CUUID_DEFAULT_IMPL") {
+    gen.implementation_ = CUUID_DEFAULT_IMPL;
+  }
+
+  std::vector<std::array<char, 37U>> uuids(128U * 1024U);
+  // Prime the generator
+  generate_uuid(&gen, uuids[0].data());
+
+  auto before = std::chrono::high_resolution_clock::now();
+  for (size_t i = 0U; i < uuids.size(); i++) {
+    generate_uuid(&gen, uuids[i].data());
+  }
+  auto duration = std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::high_resolution_clock::now() - before).count();
+  std::cerr << "Generating one " << gen.implementation_  << " UUID took " << (duration / uuids.size()) << "ns" << std::endl;
+}
+
+TEST_CASE("Collision test", "[testCUUID]") {
+  CIDGenerator gen;
+  SECTION("CUUID_TIME_IMPL") {
+    gen.implementation_ = CUUID_TIME_IMPL;
+  }
+  SECTION("CUUID_RANDOM_IMPL") {
+    gen.implementation_ = CUUID_RANDOM_IMPL;
+  }
+  SECTION("CUUID_DEFAULT_IMPL") {
+    gen.implementation_ = CUUID_DEFAULT_IMPL;
+  }
+
+  std::vector<std::string> uuids(16 * 1024U);
+  std::vector<std::thread> threads;
+  for (size_t i = 0U; i < 16U; i++) {
+    threads.emplace_back([&gen, &uuids, i](){
+      char buffer[37];
+      for (size_t j = 0U; j < 1024U; j++) {
+        generate_uuid(&gen, buffer);
+        uuids[i * 1024U + j] = buffer;
+      }
+    });
+  }
+  for (auto& thread : threads) {
+    thread.join();
+  }
+
+  std::sort(uuids.begin(), uuids.end());
+  REQUIRE(uuids.end() == std::adjacent_find(uuids.begin(), uuids.end()));
+}
diff --git a/thirdparty/ossp-uuid/ossp-uuid-mac-fix.patch b/thirdparty/ossp-uuid/ossp-uuid-mac-fix.patch
new file mode 100644
index 0000000..d3f5e50
--- /dev/null
+++ b/thirdparty/ossp-uuid/ossp-uuid-mac-fix.patch
@@ -0,0 +1,84 @@
+diff -rupN orig/uuid.c patched/uuid.c
+--- orig/uuid.c	2008-03-07 11:49:59.000000000 +0100
++++ patched/uuid.c	2019-11-05 17:51:43.000000000 +0100
+@@ -135,7 +135,7 @@ uuid_rc_t uuid_create(uuid_t **uuid)
+     /* resolve MAC address for insertion into node field of UUIDs */
+     if (!mac_address((unsigned char *)(obj->mac), sizeof(obj->mac))) {
+         memset(obj->mac, 0, sizeof(obj->mac));
+-        obj->mac[0] = BM_OCTET(1,0,0,0,0,0,0,0);
++        obj->mac[0] = IEEE_MAC_MCBIT;
+     }
+ 
+     /* initialize time attributes */
+@@ -967,7 +967,7 @@ static uuid_rc_t uuid_make_v1(uuid_t *uu
+      *  GENERATE NODE
+      */
+ 
+-    if ((mode & UUID_MAKE_MC) || (uuid->mac[0] & BM_OCTET(1,0,0,0,0,0,0,0))) {
++    if ((mode & UUID_MAKE_MC) || (uuid->mac[0] & IEEE_MAC_MCBIT)) {
+         /* generate random IEEE 802 local multicast MAC address */
+         if (prng_data(uuid->prng, (void *)&(uuid->obj.node), sizeof(uuid->obj.node)) != PRNG_RC_OK)
+             return UUID_RC_INT;
+@@ -1214,4 +1214,3 @@ unsigned long uuid_version(void)
+ {
+     return (unsigned long)(_UUID_VERSION);
+ }
+-
+diff -rupN orig/uuid_mac.c patched/uuid_mac.c
+--- orig/uuid_mac.c	2008-03-07 11:49:59.000000000 +0100
++++ patched/uuid_mac.c	2019-11-07 14:09:09.000000000 +0100
+@@ -122,26 +122,40 @@ int mac_address(unsigned char *data_ptr,
+     }
+ #endif
+ 
+-#if defined(HAVE_NET_IF_H) && defined(SIOCGIFHWADDR)
++#if defined(HAVE_NET_IF_H) && defined(SIOCGIFCONF) && defined(SIOCGIFHWADDR)
+     /* use SIOCGIFHWADDR ioctl(2) on Linux class platforms */
+     {
+-        struct ifreq ifr;
++        struct ifreq ifrs[16];
++        struct ifconf ifc;
+         struct sockaddr *sa;
+         int s;
+-        int i;
++        int i, j;
++        int empty;
+ 
+         if ((s = socket(PF_INET, SOCK_DGRAM, 0)) < 0)
+             return FALSE;
+-        sprintf(ifr.ifr_name, "eth0");
+-        if (ioctl(s, SIOCGIFHWADDR, &ifr) < 0) {
++        ifc.ifc_len = sizeof(ifrs);
++        ifc.ifc_req = ifrs;
++        if (ioctl(s, SIOCGIFCONF, &ifc) < 0) {
+             close(s);
+             return FALSE;
+         }
+-        sa = (struct sockaddr *)&ifr.ifr_addr;
+-        for (i = 0; i < MAC_LEN; i++)
+-            data_ptr[i] = (unsigned char)(sa->sa_data[i] & 0xff);
++        for (i = 0; i < ifc.ifc_len / sizeof(ifrs[0]); i++) {
++            if (ioctl(s, SIOCGIFHWADDR, &ifrs[i]) < 0)
++                continue;
++            sa = (struct sockaddr *)&(ifrs[i].ifr_hwaddr);
++            empty = TRUE;
++            for (j = 0; j < MAC_LEN; j++) {
++                empty &= (sa->sa_data[j] & 0xff) == 0x00;
++                data_ptr[j] = (unsigned char)(sa->sa_data[j] & 0xff);
++            }
++            if (empty)
++                continue;
++            close(s);
++            return TRUE;
++        }
+         close(s);
+-        return TRUE;
++        return FALSE;
+     }
+ #endif
+ 
+@@ -180,4 +194,3 @@ int mac_address(unsigned char *data_ptr,
+ 
+     return FALSE;
+ }
+-
diff --git a/thirdparty/uuid/CMakeLists.txt b/thirdparty/uuid/CMakeLists.txt
deleted file mode 100644
index 2efaf42..0000000
--- a/thirdparty/uuid/CMakeLists.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-#
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-if (WIN32)
-	include_directories("include/win32/uuid")
-else()
-	include_directories("include/posix/uuid")
-endif()
-
-add_library(
-    uuid
-    clear.c
-    compare.c
-    copy.c
-    gen_uuid.c
-    isnull.c
-    pack.c
-    parse.c
-    unpack.c
-    unparse.c
-    uuid_time.c
-)
-
-
-add_library(
-    uuid-shared
-    clear.c
-    compare.c
-    copy.c
-    gen_uuid.c
-    isnull.c
-    pack.c
-    parse.c
-    unpack.c
-    unparse.c
-    uuid_time.c
-)
-
-set_property(TARGET uuid-shared PROPERTY POSITION_INDEPENDENT_CODE ON)
\ No newline at end of file
diff --git a/thirdparty/uuid/COPYING b/thirdparty/uuid/COPYING
deleted file mode 100644
index 2f17068..0000000
--- a/thirdparty/uuid/COPYING
+++ /dev/null
@@ -1,25 +0,0 @@
-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, and the entire permission notice in its entirety,
-   including the disclaimer of warranties.
-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 ``AS IS'' AND ANY EXPRESS OR IMPLIED
-WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
-WHICH ARE HEREBY 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 NOT ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGE.
diff --git a/thirdparty/uuid/clear.c b/thirdparty/uuid/clear.c
deleted file mode 100644
index d963b5a..0000000
--- a/thirdparty/uuid/clear.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * clear.c -- Clear a UUID
- *
- * Copyright (C) 1996, 1997 Theodore Ts'o.
- *
- * %Begin-Header%
- * 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, and the entire permission notice in its entirety,
- *    including the disclaimer of warranties.
- * 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 ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
- * WHICH ARE HEREBY 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 NOT ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- * %End-Header%
- */
-
-#include "config.h"
-#include "string.h"
-
-#include "uuidP.h"
-
-void uuid_clear(UUID_FIELD uu)
-{
-	memset(uu, 0, 16);
-}
-
diff --git a/thirdparty/uuid/compare.c b/thirdparty/uuid/compare.c
deleted file mode 100644
index 0e1d95a..0000000
--- a/thirdparty/uuid/compare.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * compare.c --- compare whether or not two UUID's are the same
- *
- * Returns 0 if the two UUID's are different, and 1 if they are the same.
- *
- * Copyright (C) 1996, 1997 Theodore Ts'o.
- *
- * %Begin-Header%
- * 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, and the entire permission notice in its entirety,
- *    including the disclaimer of warranties.
- * 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 ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
- * WHICH ARE HEREBY 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 NOT ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- * %End-Header%
- */
-
-#include "config.h"
-#include "uuidP.h"
-#include <string.h>
-
-#define UUCMP(u1,u2) if (u1 != u2) return((u1 < u2) ? -1 : 1);
-
-int uuid_compare(const UUID_FIELD uu1, const UUID_FIELD uu2)
-{
-	struct uuid	uuid1, uuid2;
-
-	uuid_unpack(uu1, &uuid1);
-	uuid_unpack(uu2, &uuid2);
-
-	UUCMP(uuid1.time_low, uuid2.time_low);
-	UUCMP(uuid1.time_mid, uuid2.time_mid);
-	UUCMP(uuid1.time_hi_and_version, uuid2.time_hi_and_version);
-	UUCMP(uuid1.clock_seq, uuid2.clock_seq);
-	return memcmp(uuid1.node, uuid2.node, 6);
-}
-
diff --git a/thirdparty/uuid/copy.c b/thirdparty/uuid/copy.c
deleted file mode 100644
index efc250e..0000000
--- a/thirdparty/uuid/copy.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * copy.c --- copy UUIDs
- *
- * Copyright (C) 1996, 1997 Theodore Ts'o.
- *
- * %Begin-Header%
- * 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, and the entire permission notice in its entirety,
- *    including the disclaimer of warranties.
- * 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 ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
- * WHICH ARE HEREBY 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 NOT ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- * %End-Header%
- */
-
-#include "config.h"
-#include "uuidP.h"
-
-void uuid_copy(UUID_FIELD dst, const UUID_FIELD src)
-{
-	unsigned char		*cp1;
-	const unsigned char	*cp2;
-	int			i;
-
-	for (i=0, cp1 = dst, cp2 = src; i < 16; i++)
-		*cp1++ = *cp2++;
-}
diff --git a/thirdparty/uuid/gen_uuid.c b/thirdparty/uuid/gen_uuid.c
deleted file mode 100644
index b3e5b81..0000000
--- a/thirdparty/uuid/gen_uuid.c
+++ /dev/null
@@ -1,664 +0,0 @@
-/*
- * gen_uuid.c --- generate a DCE-compatible uuid
- *
- * Copyright (C) 1996, 1997, 1998, 1999 Theodore Ts'o.
- *
- * %Begin-Header%
- * 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, and the entire permission notice in its entirety,
- *    including the disclaimer of warranties.
- * 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 ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
- * WHICH ARE HEREBY 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 NOT ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- * %End-Header%
- */
-
- /*
-  * Force inclusion of SVID stuff since we need it if we're compiling in
-  * gcc-wall wall mode
-  * But not deprecated in glibc >= 20, and not needed nowadays.
-  */
-  /* #define _SVID_SOURCE */
-
-#include "config.h"
-#if defined(_MSC_VER)
-#include <BaseTsd.h>
-typedef SSIZE_T ssize_t;
-#endif
-#ifdef WIN32
-#define WIN32_WINNT 0x0500
-#include <io.h>
-typedef int mode_t;
-#include <windows.h>
-#define UUID MYUUID
-#endif
-#include <stdio.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#include <string.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <limits.h>
-#include <sys/types.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <sys/stat.h>
-#ifdef HAVE_SYS_FILE_H
-#include <sys/file.h>
-#endif
-#ifdef HAVE_SYS_IOCTL_H
-#include <sys/ioctl.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_SYS_UN_H
-#include <sys/un.h>
-#endif
-#ifdef HAVE_SYS_SOCKIO_H
-#include <sys/sockio.h>
-#endif
-#ifdef HAVE_NET_IF_H
-#include <net/if.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_NET_IF_DL_H
-#include <net/if_dl.h>
-#endif
-#if defined(__linux__) && defined(HAVE_SYS_SYSCALL_H)
-#include <sys/syscall.h>
-#endif
-
-#include "uuidP.h"
-#include "uuidd.h"
-
-#ifdef HAVE_TLS
-#define THREAD_LOCAL static __thread
-#else
-#define THREAD_LOCAL static
-#endif
-
-#ifdef WIN32
-static void gettimeofday(struct st_tm_val *tv, void *dummy)
-{
-	FILETIME	ftime;
-	uint64_t	n;
-
-	GetSystemTimeAsFileTime(&ftime);
-	n = (((uint64_t)ftime.dwHighDateTime << 32)
-		+ (uint64_t)ftime.dwLowDateTime);
-	if (n) {
-		n /= 10;
-		n -= ((369 * 365 + 89) * (uint64_t)86400) * 1000000;
-	}
-
-	tv->tv_sec = n / 1000000;
-	tv->tv_usec = n % 1000000;
-}
-
-static int getuid(void)
-{
-	return 1;
-}
-#endif
-
-/*
- * Get the ethernet hardware address, if we can find it...
- *
- * XXX for a windows version, probably should use GetAdaptersInfo:
- * http://www.codeguru.com/cpp/i-n/network/networkinformation/article.php/c5451
- * commenting out get_node_id just to get gen_uuid to compile under windows
- * is not the right way to go!
- */
-static int get_node_id(unsigned char *node_id)
-{
-#ifdef HAVE_NET_IF_H
-	int		sd;
-	struct ifreq	ifr, *ifrp;
-	struct ifconf	ifc;
-	char buf[1024];
-	int		n, i;
-	unsigned char	*a;
-#ifdef HAVE_NET_IF_DL_H
-	struct sockaddr_dl *sdlp;
-#endif
-
-	/*
-	 * BSD 4.4 defines the size of an ifreq to be
-	 * max(sizeof(ifreq), sizeof(ifreq.ifr_name)+ifreq.ifr_addr.sa_len
-	 * However, under earlier systems, sa_len isn't present, so the size is
-	 * just sizeof(struct ifreq)
-	 */
-#ifdef HAVE_SA_LEN
-#define max(x, y) (((x) > (y)) ? (x) : (y))
-#define ifreq_size(i) max(sizeof(struct ifreq),\
-     sizeof((i).ifr_name)+(i).ifr_addr.sa_len)
-#else
-#define ifreq_size(i) sizeof(struct ifreq)
-#endif /* HAVE_SA_LEN */
-
-	sd = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
-	if (sd < 0) {
-		return -1;
-	}
-	memset(buf, 0, sizeof(buf));
-	ifc.ifc_len = sizeof(buf);
-	ifc.ifc_buf = buf;
-	if (ioctl(sd, SIOCGIFCONF, (char *)&ifc) < 0) {
-		close(sd);
-		return -1;
-	}
-	n = ifc.ifc_len;
-	for (i = 0; i < n; i += ifreq_size(*ifrp)) {
-		ifrp = (struct ifreq *)((char *)ifc.ifc_buf + i);
-		strncpy(ifr.ifr_name, ifrp->ifr_name, IFNAMSIZ);
-#ifdef SIOCGIFHWADDR
-		if (ioctl(sd, SIOCGIFHWADDR, &ifr) < 0)
-			continue;
-		a = (unsigned char *)&ifr.ifr_hwaddr.sa_data;
-#else
-#ifdef SIOCGENADDR
-		if (ioctl(sd, SIOCGENADDR, &ifr) < 0)
-			continue;
-		a = (unsigned char *)ifr.ifr_enaddr;
-#else
-#ifdef HAVE_NET_IF_DL_H
-		sdlp = (struct sockaddr_dl *) &ifrp->ifr_addr;
-		if ((sdlp->sdl_family != AF_LINK) || (sdlp->sdl_alen != 6))
-			continue;
-		a = (unsigned char *)&sdlp->sdl_data[sdlp->sdl_nlen];
-#else
-		/*
-		 * XXX we don't have a way of getting the hardware
-		 * address
-		 */
-		close(sd);
-		return 0;
-#endif /* HAVE_NET_IF_DL_H */
-#endif /* SIOCGENADDR */
-#endif /* SIOCGIFHWADDR */
-		if (!a[0] && !a[1] && !a[2] && !a[3] && !a[4] && !a[5])
-			continue;
-		if (node_id) {
-			memcpy(node_id, a, 6);
-			close(sd);
-			return 1;
-		}
-	}
-	close(sd);
-#endif
-	return 0;
-}
-
-#if defined(__linux__) && defined(__NR_gettid) && defined(HAVE_JRAND48)
-#define DO_JRAND_MIX
-static unsigned short ul_jrand_seed[3];
-#endif
-
-static int random_get_fd(void)
-{
-	int i, fd = -1;
-	struct st_tm_val  tv;
-
-	gettimeofday(&tv, 0);
-#ifndef WIN32
-	fd = open("/dev/urandom", O_RDONLY);
-	if (fd == -1)
-		fd = open("/dev/random", O_RDONLY | O_NONBLOCK);
-	if (fd >= 0) {
-		i = fcntl(fd, F_GETFD);
-		if (i >= 0)
-			fcntl(fd, F_SETFD, i | FD_CLOEXEC);
-	}
-#endif
-	srand((getpid() << 16) ^ getuid() ^ tv.tv_sec ^ tv.tv_usec);
-
-#ifdef DO_JRAND_MIX
-	ul_jrand_seed[0] = getpid() ^ (tv.tv_sec & 0xFFFF);
-	ul_jrand_seed[1] = getppid() ^ (tv.tv_usec & 0xFFFF);
-	ul_jrand_seed[2] = (tv.tv_sec ^ tv.tv_usec) >> 16;
-#endif
-	/* Crank the random number generator a few times */
-	gettimeofday(&tv, 0);
-	for (i = (tv.tv_sec ^ tv.tv_usec) & 0x1F; i > 0; i--)
-		rand();
-	return fd;
-}
-
-/*
- * Generate a stream of random nbytes into buf.
- * Use /dev/urandom if possible, and if not,
- * use glibc pseudo-random functions.
- */
-static void random_get_bytes(void *buf, size_t nbytes)
-{
-	size_t i, n = nbytes;
-	int fd = random_get_fd();
-	int lose_counter = 0;
-	unsigned char *cp = (unsigned char *)buf;
-
-	if (fd >= 0) {
-		while (n > 0) {
-			ssize_t x = read(fd, cp, n);
-			if (x <= 0) {
-				if (lose_counter++ > 16)
-					break;
-				continue;
-			}
-			n -= x;
-			cp += x;
-			lose_counter = 0;
-		}
-
-		close(fd);
-	}
-
-	/*
-	 * We do this all the time, but this is the only source of
-	 * randomness if /dev/random/urandom is out to lunch.
-	 */
-	for (cp = buf, i = 0; i < nbytes; i++)
-		*cp++ ^= (rand() >> 7) & 0xFF;
-
-#ifdef DO_JRAND_MIX
-	{
-		unsigned short tmp_seed[3];
-
-		memcpy(tmp_seed, ul_jrand_seed, sizeof(tmp_seed));
-		ul_jrand_seed[2] = ul_jrand_seed[2] ^ syscall(__NR_gettid);
-		for (cp = buf, i = 0; i < nbytes; i++)
-			*cp++ ^= (jrand48(tmp_seed) >> 7) & 0xFF;
-		memcpy(ul_jrand_seed, tmp_seed,
-			sizeof(ul_jrand_seed) - sizeof(unsigned short));
-	}
-#endif
-
-	return;
-}
-
-#ifdef WIN32 /* compatibility layer */
-#define LOCK_EX 1
-#define LOCK_UN 2
-static int flock(int fd, int op)
-{
-	HANDLE h = (HANDLE)_get_osfhandle(fd);
-	OVERLAPPED offset;
-	if (h < 0)
-		return -1;
-	memset(&offset, 0, sizeof(offset));
-	switch (op) {
-	case LOCK_EX:
-		return (LockFileEx(h, LOCKFILE_EXCLUSIVE_LOCK, 0, 1, 0, &offset)) ? 0 : -1;
-	case LOCK_UN:
-		UnlockFileEx(h, 0, 1, 0, &offset);
-		return 0;
-	}
-	return -1;
-}
-#endif
-
-/* Assume that the gettimeofday() has microsecond granularity */
-#define MAX_ADJUSTMENT 10
-
-static int get_random_fd(void)
-{
-	struct st_tm_val  tv;
-	static int  fd = -2;
-	int    i;
-#ifndef WIN32
-	if (fd == -2) {
-		gettimeofday(&tv, 0);
-		fd = open("/dev/urandom", O_RDONLY);
-		if (fd == -1)
-			fd = open("/dev/random", O_RDONLY | O_NONBLOCK);
-		srand((getpid() << 16) ^ getuid() ^ tv.tv_sec ^ tv.tv_usec);
-	}
-	/* Crank the random number generator a few times */
-	gettimeofday(&tv, 0);
-	for (i = (tv.tv_sec ^ tv.tv_usec) & 0x1F; i > 0; i--)
-		rand();
-#endif
-	return fd;
-}
-
-/*
- * Generate a series of random bytes.  Use /dev/urandom if possible,
- * and if not, use srandom/random.
- */
-static void get_random_bytes(void *buf, int nbytes)
-{
-	int i, n = nbytes, fd = get_random_fd();
-	int lose_counter = 0;
-	unsigned char *cp = (unsigned char *)buf;
-
-	if (fd >= 0) {
-		while (n > 0) {
-			i = read(fd, cp, n);
-			if (i <= 0) {
-				if (lose_counter++ > 16)
-					break;
-				continue;
-			}
-			n -= i;
-			cp += i;
-			lose_counter = 0;
-		}
-	}
-
-	/*
-	 * We do this all the time, but this is the only source of
-	 * randomness if /dev/random/urandom is out to lunch.
-	 */
-	for (cp = buf, i = 0; i < nbytes; i++)
-		*cp++ ^= (rand() >> 7) & 0xFF;
-}
-
-
-/*
- * Get clock from global sequence clock counter.
- *
- * Return -1 if the clock counter could not be opened/locked (in this case
- * pseudorandom value is returned in @ret_clock_seq), otherwise return 0.
- */
- /**/
-static int get_clock(uint32_t *clock_high, uint32_t *clock_low,
-  uint16_t *ret_clock_seq, int *num)
-#ifdef WIN32
-{
-	static int      adjustment = 0;
-	static struct st_tm_val    last = { 0, 0 };
-	static uint16_t      clock_seq;
-	struct st_tm_val      tv;
-	uint64_t    clock_reg;
-
-try_again:
-	gettimeofday(&tv, 0);
-	if ((last.tv_sec == 0) && (last.tv_usec == 0)) {
-		get_random_bytes(&clock_seq, sizeof(clock_seq));
-		clock_seq &= 0x3FFF;
-		last = tv;
-		last.tv_sec--;
-	}
-	if ((tv.tv_sec < last.tv_sec) ||
-		((tv.tv_sec == last.tv_sec) &&
-		(tv.tv_usec < last.tv_usec))) {
-		clock_seq = (clock_seq + 1) & 0x3FFF;
-		adjustment = 0;
-		last = tv;
-	}
-	else if ((tv.tv_sec == last.tv_sec) &&
-		(tv.tv_usec == last.tv_usec)) {
-		if (adjustment >= MAX_ADJUSTMENT)
-			goto try_again;
-		adjustment++;
-	}
-	else {
-		adjustment = 0;
-		last = tv;
-	}
-
-	clock_reg = tv.tv_usec * 10 + adjustment;
-	clock_reg += ((uint64_t)tv.tv_sec) * 10000000;
-	clock_reg += (((uint64_t)0x01B21DD2) << 32) + 0x13814000;
-
-	*clock_high = clock_reg >> 32;
-	*clock_low = clock_reg;
-	*ret_clock_seq = clock_seq;
-	return 0;
-}
-#else
-{
-	THREAD_LOCAL int		adjustment = 0;
-	THREAD_LOCAL struct st_tm_val	last = { 0, 0 };
-	THREAD_LOCAL int		state_fd = -2;
-	THREAD_LOCAL FILE		*state_f;
-	THREAD_LOCAL uint16_t		clock_seq;
-	struct st_tm_val			tv;
-	uint64_t			clock_reg;
-	mode_t				save_umask;
-	int				len;
-	int				ret = 0;
-
-	if (state_fd == -2) {
-		save_umask = umask(0);
-		state_fd = open(LIBUUID_CLOCK_FILE, O_RDWR | O_CREAT, 0660);
-		(void)umask(save_umask);
-		if (state_fd != -1) {
-			state_f = fdopen(state_fd, "r+");
-			if (!state_f) {
-				close(state_fd);
-				state_fd = -1;
-				ret = -1;
-			}
-		}
-		else
-			ret = -1;
-	}
-	if (state_fd >= 0) {
-		rewind(state_f);
-#ifdef HAVE_FLOCK
-		while (flock(state_fd, LOCK_EX) < 0) {
-			if ((errno == EAGAIN) || (errno == EINTR))
-				continue;
-			fclose(state_f);
-			close(state_fd);
-			state_fd = -1;
-			ret = -1;
-			break;
-		}
-#endif
-	}
-	if (state_fd >= 0) {
-		unsigned int cl;
-		unsigned long tv1, tv2;
-		int a;
-
-		if (fscanf(state_f, "clock: %04x tv: %lu %lu adj: %d\n",
-			&cl, &tv1, &tv2, &a) == 4) {
-			clock_seq = cl & 0x3FFF;
-			last.tv_sec = tv1;
-			last.tv_usec = tv2;
-			adjustment = a;
-		}
-	}
-
-	if ((last.tv_sec == 0) && (last.tv_usec == 0)) {
-		random_get_bytes(&clock_seq, sizeof(clock_seq));
-		clock_seq &= 0x3FFF;
-		gettimeofday(&last, 0);
-		last.tv_sec--;
-	}
-
-try_again:
-	gettimeofday(&tv, 0);
-	if ((tv.tv_sec < last.tv_sec) ||
-		((tv.tv_sec == last.tv_sec) &&
-		(tv.tv_usec < last.tv_usec))) {
-		clock_seq = (clock_seq + 1) & 0x3FFF;
-		adjustment = 0;
-		last = tv;
-	}
-	else if ((tv.tv_sec == last.tv_sec) &&
-		(tv.tv_usec == last.tv_usec)) {
-		if (adjustment >= MAX_ADJUSTMENT)
-			goto try_again;
-		adjustment++;
-	}
-	else {
-		adjustment = 0;
-		last = tv;
-	}
-
-	clock_reg = tv.tv_usec * 10 + adjustment;
-	clock_reg += ((uint64_t)tv.tv_sec) * 10000000;
-	clock_reg += (((uint64_t)0x01B21DD2) << 32) + 0x13814000;
-
-	if (num && (*num > 1)) {
-		adjustment += *num - 1;
-		last.tv_usec += adjustment / 10;
-		adjustment = adjustment % 10;
-		last.tv_sec += last.tv_usec / 1000000;
-		last.tv_usec = last.tv_usec % 1000000;
-	}
-
-	if (state_fd >= 0) {
-		rewind(state_f);
-		len = fprintf(state_f,
-			"clock: %04x tv: %016lu %08lu adj: %08d\n",
-			clock_seq, (unsigned long)last.tv_sec, (unsigned long)last.tv_usec, adjustment);
-		fflush(state_f);
-		if (ftruncate(state_fd, len) < 0) {
-			fprintf(state_f, "                   \n");
-			fflush(state_f);
-		}
-		rewind(state_f);
-#ifdef HAVE_FLOCK
-		flock(state_fd, LOCK_UN);
-#endif
-	}
-
-	*clock_high = clock_reg >> 32;
-	*clock_low = clock_reg;
-	*ret_clock_seq = clock_seq;
-	return ret;
-}
-#endif
-
-
-int __uuid_generate_time(UUID_FIELD out, int *num)
-{
-	static unsigned char node_id[6];
-	static int has_init = 0;
-	struct uuid uu;
-	uint32_t	clock_mid;
-	int ret;
-
-	if (!has_init) {
-		if (get_node_id(node_id) <= 0) {
-			random_get_bytes(node_id, 6);
-			/*
-			 * Set multicast bit, to prevent conflicts
-			 * with IEEE 802 addresses obtained from
-			 * network cards
-			 */
-			node_id[0] |= 0x01;
-		}
-		has_init = 1;
-	}
-	ret = get_clock(&clock_mid, &uu.time_low, &uu.clock_seq, num);
-	uu.clock_seq |= 0x8000;
-	uu.time_mid = (uint16_t)clock_mid;
-	uu.time_hi_and_version = ((clock_mid >> 16) & 0x0FFF) | 0x1000;
-	memcpy(uu.node, node_id, 6);
-	uuid_pack(&uu, out);
-	return ret;
-}
-
-/*
- * Generate time-based UUID and store it to @out
- *
- * Since there is no daemon here, use fall-back right away
- */
-static int uuid_generate_time_generic(UUID_FIELD out) {
-	return __uuid_generate_time(out, 0);
-}
-
-/*
- * Generate time-based UUID and store it to @out.
- *
- * Discards return value from uuid_generate_time_generic()
- */
-void uuid_generate_time(UUID_FIELD out)
-{
-	(void)uuid_generate_time_generic(out);
-}
-
-
-int uuid_generate_time_safe(UUID_FIELD out)
-{
-	return uuid_generate_time_generic(out);
-}
-
-
-void __uuid_generate_random(UUID_FIELD out, int *num)
-{
-	UUID_FIELD	buf;
-	struct uuid uu;
-	int i, n;
-
-	if (!num || !*num)
-		n = 1;
-	else
-		n = *num;
-
-	for (i = 0; i < n; i++) {
-		random_get_bytes(buf, sizeof(buf));
-		uuid_unpack(buf, &uu);
-
-		uu.clock_seq = (uu.clock_seq & 0x3FFF) | 0x8000;
-		uu.time_hi_and_version = (uu.time_hi_and_version & 0x0FFF)
-			| 0x4000;
-		uuid_pack(&uu, out);
-		out += sizeof(UUID_FIELD);
-	}
-}
-
-void uuid_generate_random(UUID_FIELD out)
-{
-	int	num = 1;
-	/* No real reason to use the daemon for random uuid's -- yet */
-
-	__uuid_generate_random(out, &num);
-}
-
-/*
- * Check whether good random source (/dev/random or /dev/urandom)
- * is available.
- */
-static int have_random_source(void)
-{
-	struct stat s;
-
-	return (!stat("/dev/random", &s) || !stat("/dev/urandom", &s));
-}
-
-
-/*
- * This is the generic front-end to uuid_generate_random and
- * uuid_generate_time.  It uses uuid_generate_random only if
- * /dev/urandom is available, since otherwise we won't have
- * high-quality randomness.
- */
-void uuid_generate(UUID_FIELD out)
-{
-	if (have_random_source())
-		uuid_generate_random(out);
-	else
-		uuid_generate_time(out);
-}
diff --git a/thirdparty/uuid/include/posix/uuid/config.h b/thirdparty/uuid/include/posix/uuid/config.h
deleted file mode 100644
index 333ee12..0000000
--- a/thirdparty/uuid/include/posix/uuid/config.h
+++ /dev/null
@@ -1,847 +0,0 @@
-/* lib/config.h.  Generated from config.h.in by configure.  */
-/* lib/config.h.in.  Generated from configure.in by autoheader.  */
-
-/* Define if building universal (internal helper macro) */
-/* #undef AC_APPLE_UNIVERSAL_BUILD */
-
-/* Define to 1 if debugging the blkid library */
-/* #undef CONFIG_BLKID_DEBUG */
-
-/* Define to 1 to compile findfs */
-#define CONFIG_BUILD_FINDFS 1
-
-/* Define to 1 if debugging ext3/4 journal code */
-/* #undef CONFIG_JBD_DEBUG */
-
-/* Define to 1 to enable quota support */
-/* #undef CONFIG_QUOTA */
-
-/* Define to 1 if the testio I/O manager should be enabled */
-#define CONFIG_TESTIO_DEBUG 1
-
-/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
-   systems. This function is required for `alloca.c' support on those systems.
-   */
-/* #undef CRAY_STACKSEG_END */
-
-/* Define to 1 if using `alloca.c'. */
-/* #undef C_ALLOCA */
-
-/* Define to 1 to disable use of backtrace */
-/* #undef DISABLE_BACKTRACE */
-
-/* Define to 1 if ext2 compression enabled */
-/* #undef ENABLE_COMPRESSION */
-
-/* Define to 1 if ext3/4 htree support enabled */
-#define ENABLE_HTREE 1
-
-/* Define to 1 if translation of program messages to the user's native
-   language is requested. */
-#define ENABLE_NLS 1
-
-/* Define to 1 if you have `alloca', as a function or macro. */
-#define HAVE_ALLOCA 1
-
-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
-   */
-#define HAVE_ALLOCA_H 1
-
-/* Define to 1 if you have the `argz_count' function. */
-#define HAVE_ARGZ_COUNT 1
-
-/* Define to 1 if you have the <argz.h> header file. */
-#define HAVE_ARGZ_H 1
-
-/* Define to 1 if you have the `argz_next' function. */
-#define HAVE_ARGZ_NEXT 1
-
-/* Define to 1 if you have the `argz_stringify' function. */
-#define HAVE_ARGZ_STRINGIFY 1
-
-/* Define to 1 if you have the `asprintf' function. */
-#define HAVE_ASPRINTF 1
-
-/* Define to 1 if you have the `backtrace' function. */
-#define HAVE_BACKTRACE 1
-
-/* Define to 1 if you have the `blkid_probe_enable_partitions' function. */
-/* #undef HAVE_BLKID_PROBE_ENABLE_PARTITIONS */
-
-/* Define to 1 if you have the `blkid_probe_get_topology' function. */
-/* #undef HAVE_BLKID_PROBE_GET_TOPOLOGY */
-
-/* Define to 1 if the compiler understands __builtin_expect. */
-#define HAVE_BUILTIN_EXPECT 1
-
-/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the
-   CoreFoundation framework. */
-/* #undef HAVE_CFLOCALECOPYCURRENT */
-
-/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in
-   the CoreFoundation framework. */
-/* #undef HAVE_CFPREFERENCESCOPYAPPVALUE */
-
-/* Define to 1 if you have the `chflags' function. */
-/* #undef HAVE_CHFLAGS */
-
-/* Define if the GNU dcgettext() function is already present or preinstalled.
-   */
-#define HAVE_DCGETTEXT 1
-
-/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you
-   don't. */
-#define HAVE_DECL_FEOF_UNLOCKED 1
-
-/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if
-   you don't. */
-#define HAVE_DECL_FGETS_UNLOCKED 1
-
-/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you
-   don't. */
-#define HAVE_DECL_GETC_UNLOCKED 1
-
-/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you
-   don't. */
-#define HAVE_DECL__SNPRINTF 0
-
-/* Define to 1 if you have the declaration of `_snwprintf', and to 0 if you
-   don't. */
-#define HAVE_DECL__SNWPRINTF 0
-
-/* Define to 1 if you have the <dirent.h> header file. */
-#define HAVE_DIRENT_H 1
-
-/* Define to 1 if dlopen/libdl exists */
-#define HAVE_DLOPEN 1
-
-/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
-/* #undef HAVE_DOPRNT */
-
-/* Define to 1 if you have the <errno.h> header file. */
-#define HAVE_ERRNO_H 1
-
-/* Define to 1 if you have the <execinfo.h> header file. */
-#define HAVE_EXECINFO_H 1
-
-/* Define to 1 if Ext2 ioctls present */
-#define HAVE_EXT2_IOCTLS 1
-
-/* Define to 1 if you have the `fadvise64' function. */
-/* #undef HAVE_FADVISE64 */
-
-/* Define to 1 if you have the `fallocate' function. */
-#define HAVE_FALLOCATE 1
-
-/* Define to 1 if you have the `fallocate64' function. */
-#define HAVE_FALLOCATE64 1
-
-/* Define to 1 if you have the `fchown' function. */
-#define HAVE_FCHOWN 1
-
-/* Define to 1 if you have the `fdatasync' function. */
-#define HAVE_FDATASYNC 1
-
-/* Define to 1 if you have the <features.h> header file. */
-#define HAVE_FEATURES_H 1
-
-/* Define to 1 if you have the `fstat64' function. */
-#define HAVE_FSTAT64 1
-
-/* Define to 1 if you have the `ftruncate64' function. */
-#define HAVE_FTRUNCATE64 1
-
-/* Define to 1 if you have the `futimes' function. */
-#define HAVE_FUTIMES 1
-
-/* Define to 1 if you have the `fwprintf' function. */
-#define HAVE_FWPRINTF 1
-
-/* Define to 1 if you have the `getcwd' function. */
-#define HAVE_GETCWD 1
-
-/* Define to 1 if you have the `getdtablesize' function. */
-#define HAVE_GETDTABLESIZE 1
-
-/* Define to 1 if you have the `getegid' function. */
-#define HAVE_GETEGID 1
-
-/* Define to 1 if you have the `geteuid' function. */
-#define HAVE_GETEUID 1
-
-/* Define to 1 if you have the `getgid' function. */
-#define HAVE_GETGID 1
-
-/* Define to 1 if you have the `getmntinfo' function. */
-/* #undef HAVE_GETMNTINFO */
-
-/* Define to 1 if you have the <getopt.h> header file. */
-#define HAVE_GETOPT_H 1
-
-/* Define to 1 if you have the `getpagesize' function. */
-#define HAVE_GETPAGESIZE 1
-
-/* Define to 1 if you have the `getpwuid_r' function. */
-#define HAVE_GETPWUID_R 1
-
-/* Define to 1 if you have the `getrlimit' function. */
-#define HAVE_GETRLIMIT 1
-
-/* Define to 1 if you have the `getrusage' function. */
-#define HAVE_GETRUSAGE 1
-
-/* Define if the GNU gettext() function is already present or preinstalled. */
-#define HAVE_GETTEXT 1
-
-/* Define to 1 if you have the `getuid' function. */
-#define HAVE_GETUID 1
-
-/* Define if you have the iconv() function and it works. */
-#define HAVE_ICONV 1
-
-/* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */
-#define HAVE_INTMAX_T 1
-
-/* Define to 1 if the system has the type `intptr_t'. */
-#define HAVE_INTPTR_T 1
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
-
-/* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and
-   declares uintmax_t. */
-#define HAVE_INTTYPES_H_WITH_UINTMAX 1
-
-/* Define to 1 if you have the `jrand48' function. */
-#define HAVE_JRAND48 1
-
-/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
-#define HAVE_LANGINFO_CODESET 1
-
-/* Define if your <locale.h> file defines LC_MESSAGES. */
-#define HAVE_LC_MESSAGES 1
-
-/* Define to 1 if you have the <limits.h> header file. */
-#define HAVE_LIMITS_H 1
-
-/* Define to 1 if you have the <linux/falloc.h> header file. */
-#define HAVE_LINUX_FALLOC_H 1
-
-/* Define to 1 if you have the <linux/fd.h> header file. */
-#define HAVE_LINUX_FD_H 1
-
-/* Define to 1 if you have the <linux/loop.h> header file. */
-#define HAVE_LINUX_LOOP_H 1
-
-/* Define to 1 if you have the <linux/major.h> header file. */
-#define HAVE_LINUX_MAJOR_H 1
-
-/* Define to 1 if you have the `llseek' function. */
-#define HAVE_LLSEEK 1
-
-/* Define to 1 if llseek declared in unistd.h */
-/* #undef HAVE_LLSEEK_PROTOTYPE */
-
-/* Define to 1 if the system has the type 'long long int'. */
-#define HAVE_LONG_LONG_INT 1
-
-/* Define to 1 if you have the `lseek64' function. */
-#define HAVE_LSEEK64 1
-
-/* Define to 1 if lseek64 declared in unistd.h */
-#define HAVE_LSEEK64_PROTOTYPE 1
-
-/* Define to 1 if you have the `mallinfo' function. */
-#define HAVE_MALLINFO 1
-
-/* Define to 1 if you have the <malloc.h> header file. */
-#define HAVE_MALLOC_H 1
-
-/* Define to 1 if you have the `mbrtowc' function. */
-#define HAVE_MBRTOWC 1
-
-/* Define to 1 if you have the `mbstowcs' function. */
-#define HAVE_MBSTOWCS 1
-
-/* Define to 1 if you have the `memalign' function. */
-#define HAVE_MEMALIGN 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the `mempcpy' function. */
-#define HAVE_MEMPCPY 1
-
-/* Define to 1 if you have the `mmap' function. */
-#define HAVE_MMAP 1
-
-/* Define to 1 if you have the <mntent.h> header file. */
-#define HAVE_MNTENT_H 1
-
-/* Define to 1 if you have the `msync' function. */
-#define HAVE_MSYNC 1
-
-/* Define to 1 if you have the `munmap' function. */
-#define HAVE_MUNMAP 1
-
-/* Define to 1 if you have the `nanosleep' function. */
-#define HAVE_NANOSLEEP 1
-
-/* Define to 1 if you have the <netinet/in.h> header file. */
-#define HAVE_NETINET_IN_H 1
-
-/* Define to 1 if you have the <net/if_dl.h> header file. */
-/* #undef HAVE_NET_IF_DL_H */
-
-/* Define to 1 if you have the <net/if.h> header file. */
-#define HAVE_NET_IF_H 1
-
-/* Define to 1 if you have the `newlocale' function. */
-#define HAVE_NEWLOCALE 1
-
-/* Define to 1 if you have the `open64' function. */
-#define HAVE_OPEN64 1
-
-/* Define to 1 if optreset for getopt is present */
-/* #undef HAVE_OPTRESET */
-
-/* Define to 1 if you have the `pathconf' function. */
-#define HAVE_PATHCONF 1
-
-/* Define to 1 if you have the <paths.h> header file. */
-#define HAVE_PATHS_H 1
-
-/* Define to 1 if you have the `posix_fadvise' function. */
-#define HAVE_POSIX_FADVISE 1
-
-/* Define to 1 if you have the `posix_fadvise64' function. */
-#define HAVE_POSIX_FADVISE64 1
-
-/* Define to 1 if you have the `posix_memalign' function. */
-#define HAVE_POSIX_MEMALIGN 1
-
-/* Define if your printf() function supports format strings with positions. */
-#define HAVE_POSIX_PRINTF 1
-
-/* Define to 1 if you have the `prctl' function. */
-#define HAVE_PRCTL 1
-
-/* Define to 1 if you have the `pread' function. */
-#define HAVE_PREAD 1
-
-/* Define to 1 if you have the `pread64' function. */
-#define HAVE_PREAD64 1
-
-/* Define if the <pthread.h> defines PTHREAD_MUTEX_RECURSIVE. */
-#define HAVE_PTHREAD_MUTEX_RECURSIVE 1
-
-/* Define if the POSIX multithreading library has read/write locks. */
-#define HAVE_PTHREAD_RWLOCK 1
-
-/* Define to 1 if you have the `putenv' function. */
-#define HAVE_PUTENV 1
-
-/* Define to 1 if you have the `pwrite' function. */
-#define HAVE_PWRITE 1
-
-/* Define to 1 if you have the `pwrite64' function. */
-#define HAVE_PWRITE64 1
-
-/* Define to 1 if dirent has d_reclen */
-#define HAVE_RECLEN_DIRENT 1
-
-/* Define to 1 if if struct sockaddr contains sa_len */
-/* #undef HAVE_SA_LEN */
-
-/* Define to 1 if you have the `secure_getenv' function. */
-#define HAVE_SECURE_GETENV 1
-
-/* Define to 1 if you have the <semaphore.h> header file. */
-#define HAVE_SEMAPHORE_H 1
-
-/* Define to 1 if sem_init() exists */
-#define HAVE_SEM_INIT 1
-
-/* Define to 1 if you have the `setenv' function. */
-#define HAVE_SETENV 1
-
-/* Define to 1 if you have the <setjmp.h> header file. */
-#define HAVE_SETJMP_H 1
-
-/* Define to 1 if you have the `setlocale' function. */
-#define HAVE_SETLOCALE 1
-
-/* Define to 1 if you have the `setmntent' function. */
-#define HAVE_SETMNTENT 1
-
-/* Define to 1 if you have the `setresgid' function. */
-#define HAVE_SETRESGID 1
-
-/* Define to 1 if you have the `setresuid' function. */
-#define HAVE_SETRESUID 1
-
-/* Define to 1 if you have the <signal.h> header file. */
-#define HAVE_SIGNAL_H 1
-
-/* Define to 1 if you have the `snprintf' function. */
-#define HAVE_SNPRINTF 1
-
-/* Define to 1 if you have the `srandom' function. */
-#define HAVE_SRANDOM 1
-
-/* Define to 1 if struct stat has st_flags */
-/* #undef HAVE_STAT_FLAGS */
-
-/* Define to 1 if you have the <stdarg.h> header file. */
-#define HAVE_STDARG_H 1
-
-/* Define to 1 if you have the <stddef.h> header file. */
-#define HAVE_STDDEF_H 1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H 1
-
-/* Define if <stdint.h> exists, doesn't clash with <sys/types.h>, and declares
-   uintmax_t. */
-#define HAVE_STDINT_H_WITH_UINTMAX 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the `stpcpy' function. */
-#define HAVE_STPCPY 1
-
-/* Define to 1 if you have the `strcasecmp' function. */
-#define HAVE_STRCASECMP 1
-
-/* Define to 1 if you have the `strdup' function. */
-#define HAVE_STRDUP 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the `strnlen' function. */
-#define HAVE_STRNLEN 1
-
-/* Define to 1 if you have the `strptime' function. */
-#define HAVE_STRPTIME 1
-
-/* Define to 1 if you have the `strtoul' function. */
-#define HAVE_STRTOUL 1
-
-/* Define to 1 if you have the `strtoull' function. */
-#define HAVE_STRTOULL 1
-
-/* Define to 1 if `st_atim' is a member of `struct stat'. */
-#define HAVE_STRUCT_STAT_ST_ATIM 1
-
-/* Define to 1 if you have the `symlink' function. */
-#define HAVE_SYMLINK 1
-
-/* Define to 1 if you have the `sync_file_range' function. */
-#define HAVE_SYNC_FILE_RANGE 1
-
-/* Define to 1 if you have the `sysconf' function. */
-#define HAVE_SYSCONF 1
-
-/* Define to 1 if you have the <sys/disklabel.h> header file. */
-/* #undef HAVE_SYS_DISKLABEL_H */
-
-/* Define to 1 if you have the <sys/disk.h> header file. */
-/* #undef HAVE_SYS_DISK_H */
-
-/* Define to 1 if you have the <sys/file.h> header file. */
-#define HAVE_SYS_FILE_H 1
-
-/* Define to 1 if you have the <sys/ioctl.h> header file. */
-#define HAVE_SYS_IOCTL_H 1
-
-/* Define to 1 if you have the <sys/mkdev.h> header file. */
-/* #undef HAVE_SYS_MKDEV_H */
-
-/* Define to 1 if you have the <sys/mman.h> header file. */
-#define HAVE_SYS_MMAN_H 1
-
-/* Define to 1 if you have the <sys/mount.h> header file. */
-#define HAVE_SYS_MOUNT_H 1
-
-/* Define to 1 if you have the <sys/param.h> header file. */
-#define HAVE_SYS_PARAM_H 1
-
-/* Define to 1 if you have the <sys/prctl.h> header file. */
-#define HAVE_SYS_PRCTL_H 1
-
-/* Define to 1 if you have the <sys/resource.h> header file. */
-#define HAVE_SYS_RESOURCE_H 1
-
-/* Define to 1 if you have the <sys/select.h> header file. */
-#define HAVE_SYS_SELECT_H 1
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#define HAVE_SYS_SOCKET_H 1
-
-/* Define to 1 if you have the <sys/sockio.h> header file. */
-/* #undef HAVE_SYS_SOCKIO_H */
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/syscall.h> header file. */
-#define HAVE_SYS_SYSCALL_H 1
-
-/* Define to 1 if you have the <sys/sysmacros.h> header file. */
-#define HAVE_SYS_SYSMACROS_H 1
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#define HAVE_SYS_TIME_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the <sys/un.h> header file. */
-#define HAVE_SYS_UN_H 1
-
-/* Define to 1 if you have the <sys/wait.h> header file. */
-#define HAVE_SYS_WAIT_H 1
-
-/* Define to 1 if you have the <termios.h> header file. */
-#define HAVE_TERMIOS_H 1
-
-/* Define to 1 if you have the <termio.h> header file. */
-#define HAVE_TERMIO_H 1
-
-/* Define to 1 if you have the `tsearch' function. */
-#define HAVE_TSEARCH 1
-
-/* Define to 1 if ssize_t declared */
-#define HAVE_TYPE_SSIZE_T 1
-
-/* Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>. */
-#define HAVE_UINTMAX_T 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define to 1 if the system has the type 'unsigned long long int'. */
-#define HAVE_UNSIGNED_LONG_LONG_INT 1
-
-/* Define to 1 if you have the `uselocale' function. */
-#define HAVE_USELOCALE 1
-
-/* Define to 1 if you have the `usleep' function. */
-#define HAVE_USLEEP 1
-
-/* Define to 1 if you have the `utime' function. */
-#define HAVE_UTIME 1
-
-/* Define to 1 if you have the `utimes' function. */
-#define HAVE_UTIMES 1
-
-/* Define to 1 if you have the <utime.h> header file. */
-#define HAVE_UTIME_H 1
-
-/* Define to 1 if you have the `valloc' function. */
-#define HAVE_VALLOC 1
-
-/* Define to 1 or 0, depending whether the compiler supports simple visibility
-   declarations. */
-#define HAVE_VISIBILITY 1
-
-/* Define to 1 if you have the `vprintf' function. */
-#define HAVE_VPRINTF 1
-
-/* Define if you have the 'wchar_t' type. */
-#define HAVE_WCHAR_T 1
-
-/* Define to 1 if you have the `wcrtomb' function. */
-#define HAVE_WCRTOMB 1
-
-/* Define to 1 if you have the `wcslen' function. */
-#define HAVE_WCSLEN 1
-
-/* Define to 1 if you have the `wcsnlen' function. */
-#define HAVE_WCSNLEN 1
-
-/* Define if you have the 'wint_t' type. */
-#define HAVE_WINT_T 1
-
-/* Define to 1 if O_NOATIME works. */
-#define HAVE_WORKING_O_NOATIME 1
-
-/* Define to 1 if O_NOFOLLOW works. */
-#define HAVE_WORKING_O_NOFOLLOW 1
-
-/* Define to 1 if you have the `__fsetlocking' function. */
-#define HAVE___FSETLOCKING 1
-
-/* Define to 1 if you have the `__secure_getenv' function. */
-/* #undef HAVE___SECURE_GETENV */
-
-/* Define as const if the declaration of iconv() needs const. */
-#define ICONV_CONST 
-
-/* Define if integer division by zero raises signal SIGFPE. */
-#define INTDIV0_RAISES_SIGFPE 1
-
-/* package name for gettext */
-#define PACKAGE "e2fsprogs"
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT ""
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME ""
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING ""
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME ""
-
-/* Define to the home page for this package. */
-#define PACKAGE_URL ""
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION ""
-
-/* Define if <inttypes.h> exists and defines unusable PRI* macros. */
-/* #undef PRI_MACROS_BROKEN */
-
-/* Define if the pthread_in_use() detection is hard. */
-/* #undef PTHREAD_IN_USE_DETECTION_HARD */
-
-/* The size of `int', as computed by sizeof. */
-#define SIZEOF_INT 4
-
-/* The size of `long', as computed by sizeof. */
-#define SIZEOF_LONG 8
-
-/* The size of `long long', as computed by sizeof. */
-#define SIZEOF_LONG_LONG 8
-
-/* The size of `off_t', as computed by sizeof. */
-#define SIZEOF_OFF_T 8
-
-/* The size of `short', as computed by sizeof. */
-#define SIZEOF_SHORT 2
-
-/* Define as the maximum value of type 'size_t', if the system doesn't define
-   it. */
-#ifndef SIZE_MAX
-/* # undef SIZE_MAX */
-#endif
-
-/* If using the C implementation of alloca, define if you know the
-   direction of stack growth for your system; otherwise it will be
-   automatically deduced at runtime.
-	STACK_DIRECTION > 0 => grows toward higher addresses
-	STACK_DIRECTION < 0 => grows toward lower addresses
-	STACK_DIRECTION = 0 => direction of growth unknown */
-/* #undef STACK_DIRECTION */
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* If the compiler supports a TLS storage class define it to that here */
-#define TLS __thread
-
-/* Define if the POSIX multithreading library can be used. */
-#define USE_POSIX_THREADS 1
-
-/* Define if references to the POSIX multithreading library should be made
-   weak. */
-#define USE_POSIX_THREADS_WEAK 1
-
-/* Define if the GNU Pth multithreading library can be used. */
-/* #undef USE_PTH_THREADS */
-
-/* Define if references to the GNU Pth multithreading library should be made
-   weak. */
-/* #undef USE_PTH_THREADS_WEAK */
-
-/* Define if the old Solaris multithreading library can be used. */
-/* #undef USE_SOLARIS_THREADS */
-
-/* Define if references to the old Solaris multithreading library should be
-   made weak. */
-/* #undef USE_SOLARIS_THREADS_WEAK */
-
-/* Enable extensions on AIX 3, Interix.  */
-#ifndef _ALL_SOURCE
-# define _ALL_SOURCE 1
-#endif
-/* Enable GNU extensions on systems that have them.  */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-/* Enable threading extensions on Solaris.  */
-#ifndef _POSIX_PTHREAD_SEMANTICS
-# define _POSIX_PTHREAD_SEMANTICS 1
-#endif
-/* Enable extensions on HP NonStop.  */
-#ifndef _TANDEM_SOURCE
-# define _TANDEM_SOURCE 1
-#endif
-/* Enable general extensions on Solaris.  */
-#ifndef __EXTENSIONS__
-# define __EXTENSIONS__ 1
-#endif
-
-
-/* Define to 1 to build uuidd */
-#define USE_UUIDD 1
-
-/* Define if the native Windows multithreading API can be used. */
-/* #undef USE_WINDOWS_THREADS */
-
-/* version for gettext */
-#define VERSION "0.14.1"
-
-/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
-   significant byte first (like Motorola and SPARC, unlike Intel). */
-#if defined AC_APPLE_UNIVERSAL_BUILD
-# if defined __BIG_ENDIAN__
-#  define WORDS_BIGENDIAN 1
-# endif
-#else
-# ifndef WORDS_BIGENDIAN
-/* #  undef WORDS_BIGENDIAN */
-# endif
-#endif
-
-/* Define to 1 if Apple Darwin libintl workaround is needed */
-/* #undef _INTL_REDIRECT_MACROS */
-
-/* Define to 1 if on MINIX. */
-/* #undef _MINIX */
-
-/* Define to 2 if the system does not provide POSIX.1 features except with
-   this defined. */
-/* #undef _POSIX_1_SOURCE */
-
-/* Define to 1 if you need to in order for `stat' and other things to work. */
-/* #undef _POSIX_SOURCE */
-
-/* Please see the Gnulib manual for how to use these macros.
-
-   Suppress extern inline with HP-UX cc, as it appears to be broken; see
-   <http://lists.gnu.org/archive/html/bug-texinfo/2013-02/msg00030.html>.
-
-   Suppress extern inline with Sun C in standards-conformance mode, as it
-   mishandles inline functions that call each other.  E.g., for 'inline void f
-   (void) { } inline void g (void) { f (); }', c99 incorrectly complains
-   'reference to static identifier "f" in extern inline function'.
-   This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16.
-
-   Suppress the use of extern inline on Apple's platforms, as Libc at least
-   through Libc-825.26 (2013-04-09) is incompatible with it; see, e.g.,
-   <http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html>.
-   Perhaps Apple will fix this some day.  */
-#if ((__GNUC__ \
-      ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
-      : (199901L <= __STDC_VERSION__ \
-         && !defined __HP_cc \
-         && !(defined __SUNPRO_C && __STDC__))) \
-     && !defined __APPLE__)
-# define _GL_INLINE inline
-# define _GL_EXTERN_INLINE extern inline
-#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \
-       && !defined __APPLE__)
-# if __GNUC_GNU_INLINE__
-   /* __gnu_inline__ suppresses a GCC 4.2 diagnostic.  */
-#  define _GL_INLINE extern inline __attribute__ ((__gnu_inline__))
-# else
-#  define _GL_INLINE extern inline
-# endif
-# define _GL_EXTERN_INLINE extern
-#else
-# define _GL_INLINE static _GL_UNUSED
-# define _GL_EXTERN_INLINE static _GL_UNUSED
-#endif
-
-#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__)
-# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__
-#  define _GL_INLINE_HEADER_CONST_PRAGMA
-# else
-#  define _GL_INLINE_HEADER_CONST_PRAGMA \
-     _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"")
-# endif
-  /* Suppress GCC's bogus "no previous prototype for 'FOO'"
-     and "no previous declaration for 'FOO'"  diagnostics,
-     when FOO is an inline function in the header; see
-     <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113>.  */
-# define _GL_INLINE_HEADER_BEGIN \
-    _Pragma ("GCC diagnostic push") \
-    _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \
-    _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \
-    _GL_INLINE_HEADER_CONST_PRAGMA
-# define _GL_INLINE_HEADER_END \
-    _Pragma ("GCC diagnostic pop")
-#else
-# define _GL_INLINE_HEADER_BEGIN
-# define _GL_INLINE_HEADER_END
-#endif
-
-/* Define to `__inline__' or `__inline' if that's what the C compiler
-   calls it, or to nothing if 'inline' is not supported under any name.  */
-#ifndef __cplusplus
-/* #undef inline */
-#endif
-
-/* Define as the type of the result of subtracting two pointers, if the system
-   doesn't define it. */
-/* #undef ptrdiff_t */
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-/* #undef size_t */
-
-/* Define to unsigned long or unsigned long long if <stdint.h> and
-   <inttypes.h> don't define. */
-/* #undef uintmax_t */
-
-
-
-#define __libc_lock_t                   gl_lock_t
-#define __libc_lock_define              gl_lock_define
-#define __libc_lock_define_initialized  gl_lock_define_initialized
-#define __libc_lock_init                gl_lock_init
-#define __libc_lock_lock                gl_lock_lock
-#define __libc_lock_unlock              gl_lock_unlock
-#define __libc_lock_recursive_t                   gl_recursive_lock_t
-#define __libc_lock_define_recursive              gl_recursive_lock_define
-#define __libc_lock_define_initialized_recursive  gl_recursive_lock_define_initialized
-#define __libc_lock_init_recursive                gl_recursive_lock_init
-#define __libc_lock_lock_recursive                gl_recursive_lock_lock
-#define __libc_lock_unlock_recursive              gl_recursive_lock_unlock
-#define glthread_in_use  libintl_thread_in_use
-#define glthread_lock_init_func     libintl_lock_init_func
-#define glthread_lock_lock_func     libintl_lock_lock_func
-#define glthread_lock_unlock_func   libintl_lock_unlock_func
-#define glthread_lock_destroy_func  libintl_lock_destroy_func
-#define glthread_rwlock_init_multithreaded     libintl_rwlock_init_multithreaded
-#define glthread_rwlock_init_func              libintl_rwlock_init_func
-#define glthread_rwlock_rdlock_multithreaded   libintl_rwlock_rdlock_multithreaded
-#define glthread_rwlock_rdlock_func            libintl_rwlock_rdlock_func
-#define glthread_rwlock_wrlock_multithreaded   libintl_rwlock_wrlock_multithreaded
-#define glthread_rwlock_wrlock_func            libintl_rwlock_wrlock_func
-#define glthread_rwlock_unlock_multithreaded   libintl_rwlock_unlock_multithreaded
-#define glthread_rwlock_unlock_func            libintl_rwlock_unlock_func
-#define glthread_rwlock_destroy_multithreaded  libintl_rwlock_destroy_multithreaded
-#define glthread_rwlock_destroy_func           libintl_rwlock_destroy_func
-#define glthread_recursive_lock_init_multithreaded     libintl_recursive_lock_init_multithreaded
-#define glthread_recursive_lock_init_func              libintl_recursive_lock_init_func
-#define glthread_recursive_lock_lock_multithreaded     libintl_recursive_lock_lock_multithreaded
-#define glthread_recursive_lock_lock_func              libintl_recursive_lock_lock_func
-#define glthread_recursive_lock_unlock_multithreaded   libintl_recursive_lock_unlock_multithreaded
-#define glthread_recursive_lock_unlock_func            libintl_recursive_lock_unlock_func
-#define glthread_recursive_lock_destroy_multithreaded  libintl_recursive_lock_destroy_multithreaded
-#define glthread_recursive_lock_destroy_func           libintl_recursive_lock_destroy_func
-#define glthread_once_func            libintl_once_func
-#define glthread_once_singlethreaded  libintl_once_singlethreaded
-#define glthread_once_multithreaded   libintl_once_multithreaded
-
-
-#define LIBUUID_CLOCK_FILE "/var/lib/libuuid/clock.txt"
\ No newline at end of file
diff --git a/thirdparty/uuid/include/posix/uuid/uuid.h b/thirdparty/uuid/include/posix/uuid/uuid.h
deleted file mode 100644
index 7966427..0000000
--- a/thirdparty/uuid/include/posix/uuid/uuid.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Public include file for the UUID library
- *
- * Copyright (C) 1996, 1997, 1998 Theodore Ts'o.
- *
- * %Begin-Header%
- * 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, and the entire permission notice in its entirety,
- *    including the disclaimer of warranties.
- * 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 ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
- * WHICH ARE HEREBY 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 NOT ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- * %End-Header%
- */
-
-#ifndef _UUID_UUID_H
-#define _UUID_UUID_H
-
-#include <sys/types.h>
-#ifndef _WIN32
-#include <sys/time.h>
-#endif
-#include <time.h>
-
-typedef unsigned char uuid_t[16];
-
-/* UUID Variant definitions */
-#define UUID_VARIANT_NCS 	0
-#define UUID_VARIANT_DCE 	1
-#define UUID_VARIANT_MICROSOFT	2
-#define UUID_VARIANT_OTHER	3
-
-/* UUID Type definitions */
-#define UUID_TYPE_DCE_TIME   1
-#define UUID_TYPE_DCE_RANDOM 4
-
-/* Allow UUID constants to be defined */
-#ifdef __GNUC__
-#define UUID_DEFINE(name,u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,u15) \
-	static const uuid_t name __attribute__ ((unused)) = {u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,u15}
-#else
-#define UUID_DEFINE(name,u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,u15) \
-	static const uuid_t name = {u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,u15}
-#endif
-
-#define UUID_FIELD uuid_t
-
-struct st_tm_val {
-  long    tv_sec;         /* seconds */
-  long    tv_usec;        /* and microseconds */
-};
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* clear.c */
-void uuid_clear(UUID_FIELD uu);
-
-/* compare.c */
-int uuid_compare(const UUID_FIELD uu1, const UUID_FIELD uu2);
-
-/* copy.c */
-void uuid_copy(UUID_FIELD dst, const UUID_FIELD src);
-
-/* gen_uuid.c */
-void uuid_generate(UUID_FIELD out);
-void uuid_generate_random(UUID_FIELD out);
-void uuid_generate_time(UUID_FIELD out);
-
-/* isnull.c */
-int uuid_is_null(const UUID_FIELD uu);
-
-/* parse.c */
-int uuid_parse(const char *in, UUID_FIELD uu);
-
-/* unparse.c */
-void uuid_unparse(const UUID_FIELD uu, char *out);
-void uuid_unparse_lower(const UUID_FIELD uu, char *out);
-void uuid_unparse_upper(const UUID_FIELD uu, char *out);
-
-/* m_uuidime.c */
-time_t m_uuidime(const UUID_FIELD uu, struct st_tm_val *ret_tv);
-int m_uuidype(const UUID_FIELD uu);
-int uuid_variant(const UUID_FIELD uu);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _UUID_UUID_H */
diff --git a/thirdparty/uuid/include/posix/uuid/uuidP.h b/thirdparty/uuid/include/posix/uuid/uuidP.h
deleted file mode 100644
index 5f0d24c..0000000
--- a/thirdparty/uuid/include/posix/uuid/uuidP.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * uuid.h -- private header file for uuids
- *
- * Copyright (C) 1996, 1997 Theodore Ts'o.
- *
- * %Begin-Header%
- * 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, and the entire permission notice in its entirety,
- *    including the disclaimer of warranties.
- * 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 ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
- * WHICH ARE HEREBY 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 NOT ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- * %End-Header%
- */
-
-#ifdef HAVE_INTTYPES_H
-#include <inttypes.h>
-#else
-#include <uuid/m_uuidypes.h>
-#endif
-#include <sys/types.h>
-
-#include "uuid.h"
-
-/*
- * Offset between 15-Oct-1582 and 1-Jan-70
- */
-#define TIME_OFFSET_HIGH 0x01B21DD2
-#define TIME_OFFSET_LOW  0x13814000
-
-struct uuid {
-	uint32_t	time_low;
-	uint16_t	time_mid;
-	uint16_t	time_hi_and_version;
-	uint16_t	clock_seq;
-	uint8_t	node[6];
-};
-
-
-/*
- * prototypes
- */
-void uuid_pack(const struct uuid *uu, UUID_FIELD ptr);
-void uuid_unpack(const UUID_FIELD in, struct uuid *uu);
diff --git a/thirdparty/uuid/include/posix/uuid/uuidd.h b/thirdparty/uuid/include/posix/uuid/uuidd.h
deleted file mode 100644
index c71f4b7..0000000
--- a/thirdparty/uuid/include/posix/uuid/uuidd.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Definitions used by the uuidd daemon
- *
- * Copyright (C) 2007 Theodore Ts'o.
- *
- * %Begin-Header%
- * 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, and the entire permission notice in its entirety,
- *    including the disclaimer of warranties.
- * 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 ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
- * WHICH ARE HEREBY 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 NOT ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- * %End-Header%
- */
-
-#ifndef _UUID_UUIDD_H
-#define _UUID_UUIDD_H
-
-#define UUIDD_DIR		"/var/lib/libuuid"
-#define UUIDD_SOCKET_PATH	UUIDD_DIR "/request"
-#define UUIDD_PIDFILE_PATH	UUIDD_DIR "/uuidd.pid"
-#define UUIDD_PATH		"/usr/sbin/uuidd"
-
-#define UUIDD_OP_GETPID			0
-#define UUIDD_OP_GET_MAXOP		1
-#define UUIDD_OP_TIME_UUID		2
-#define UUIDD_OP_RANDOM_UUID		3
-#define UUIDD_OP_BULK_TIME_UUID		4
-#define UUIDD_OP_BULK_RANDOM_UUID	5
-#define UUIDD_MAX_OP			UUIDD_OP_BULK_RANDOM_UUID
-
-extern void uuid__generate_time(uuid_t out, int *num);
-extern void uuid__generate_random(uuid_t out, int *num);
-
-#endif /* _UUID_UUID_H */
diff --git a/thirdparty/uuid/include/win32/uuid/config.h b/thirdparty/uuid/include/win32/uuid/config.h
deleted file mode 100644
index b8cf1b4..0000000
--- a/thirdparty/uuid/include/win32/uuid/config.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* src/config.h.  Generated from config.h.in by configure.  */
-/* src/config.h.in.  Generated from configure.ac by autoheader.  */
-/* -- reflects MinGW + Win32 -- */
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
-
-/* Define to 1 if you have the `flock' function. */
-#define HAVE_FLOCK 1
-
-/* Define to 1 if you have the `jrand48' function. */
-/* #undef HAVE_JRAND48 */
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the <netinet/in.h> header file. */
-/* #undef HAVE_NETINET_IN_H */
-
-/* Define to 1 if you have the <net/if_dl.h> header file. */
-/* #undef HAVE_NET_IF_DL_H */
-
-/* Define to 1 if you have the <net/if.h> header file. */
-/* #undef HAVE_NET_IF_H */
-
-/* Define if struct sockaddr contains sa_len */
-/* #undef HAVE_SA_LEN */
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the <sys/file.h> header file. */
-//#define HAVE_SYS_FILE_H 1
-
-/* Define to 1 if you have the <sys/ioctl.h> header file. */
-/* #undef HAVE_SYS_IOCTL_H */
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-/* #undef HAVE_SYS_SOCKET_H */
-
-/* Define to 1 if you have the <sys/sockio.h> header file. */
-/* #undef HAVE_SYS_SOCKIO_H */
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/syscall.h> header file. */
-/* #undef HAVE_SYS_SYSCALL_H */
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-//#define HAVE_SYS_TIME_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the <sys/un.h> header file. */
-/* #undef HAVE_SYS_UN_H */
-
-/* Define to 1 if you have the <unistd.h> header file. */
-//#define HAVE_UNISTD_H 0
-
-
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "uuid"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "uuid 0.1"
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "uuid"
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "0.1"
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-#define LIBUUID_CLOCK_FILE "c:/windows/system32/clock.txt"
\ No newline at end of file
diff --git a/thirdparty/uuid/include/win32/uuid/uuid.h b/thirdparty/uuid/include/win32/uuid/uuid.h
deleted file mode 100644
index 5177fdc..0000000
--- a/thirdparty/uuid/include/win32/uuid/uuid.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Public include file for the UUID library
- *
- * Copyright (C) 1996, 1997, 1998 Theodore Ts'o.
- *
- * %Begin-Header%
- * 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, and the entire permission notice in its entirety,
- *    including the disclaimer of warranties.
- * 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 ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
- * WHICH ARE HEREBY 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 NOT ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- * %End-Header%
- */
-
-#ifndef _UUID_UUID_H
-#define _UUID_UUID_H
-
-#include <sys/types.h>
-#ifndef _WIN32
-#include <sys/time.h>
-#endif
-#include <time.h>
-
-typedef unsigned char m_uuid[16];
-
-/* UUID Variant definitions */
-#define UUID_VARIANT_NCS 	0
-#define UUID_VARIANT_DCE 	1
-#define UUID_VARIANT_MICROSOFT	2
-#define UUID_VARIANT_OTHER	3
-
-/* UUID Type definitions */
-#define UUID_TYPE_DCE_TIME   1
-#define UUID_TYPE_DCE_RANDOM 4
-
-/* Allow UUID constants to be defined */
-#ifdef __GNUC__
-#define UUID_DEFINE(name,u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,u15) \
-	static const m_uuid name __attribute__ ((unused)) = {u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,u15}
-#else
-#define UUID_DEFINE(name,u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,u15) \
-	static const m_uuid name = {u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,u15}
-#endif
-
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define UUID_FIELD m_uuid
-
-struct st_tm_val {
-  long    tv_sec;         /* seconds */
-  long    tv_usec;        /* and microseconds */
-};
-
-
-
-/* clear.c */
-void uuid_clear(m_uuid uu);
-
-/* compare.c */
-int uuid_compare(const m_uuid uu1, const m_uuid uu2);
-
-/* copy.c */
-void uuid_copy(m_uuid dst, const m_uuid src);
-
-/* gen_uuid.c */
-void uuid_generate(m_uuid out);
-void uuid_generate_random(m_uuid out);
-void uuid_generate_time(m_uuid out);
-
-/* isnull.c */
-int uuid_is_null(const m_uuid uu);
-
-/* parse.c */
-int uuid_parse(const char *in, m_uuid uu);
-
-/* unparse.c */
-void uuid_unparse(const m_uuid uu, char *out);
-void uuid_unparse_lower(const m_uuid uu, char *out);
-void uuid_unparse_upper(const m_uuid uu, char *out);
-
-/* m_uuidime.c */
-time_t m_uuidime(const m_uuid uu, struct st_tm_val *ret_tv);
-int m_uuidype(const m_uuid uu);
-int uuid_variant(const m_uuid uu);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _UUID_UUID_H */
diff --git a/thirdparty/uuid/include/win32/uuid/uuidP.h b/thirdparty/uuid/include/win32/uuid/uuidP.h
deleted file mode 100644
index 6ae188a..0000000
--- a/thirdparty/uuid/include/win32/uuid/uuidP.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * uuid.h -- private header file for uuids
- *
- * Copyright (C) 1996, 1997 Theodore Ts'o.
- *
- * %Begin-Header%
- * 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, and the entire permission notice in its entirety,
- *    including the disclaimer of warranties.
- * 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 ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
- * WHICH ARE HEREBY 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 NOT ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- * %End-Header%
- */
-
-#ifdef HAVE_INTTYPES_H
-#include <inttypes.h>
-#else
-#include <uuid/m_uuidypes.h>
-#endif
-#include <sys/types.h>
-
-#include <uuid/uuid.h>
-
-/*
- * Offset between 15-Oct-1582 and 1-Jan-70
- */
-#define TIME_OFFSET_HIGH 0x01B21DD2
-#define TIME_OFFSET_LOW  0x13814000
-
-struct uuid {
-	uint32_t	time_low;
-	uint16_t	time_mid;
-	uint16_t	time_hi_and_version;
-	uint16_t	clock_seq;
-	uint8_t	node[6];
-};
-
-
-/*
- * prototypes
- */
-void uuid_pack(const struct uuid *uu, UUID_FIELD ptr);
-void uuid_unpack(const UUID_FIELD in, struct uuid *uu);
diff --git a/thirdparty/uuid/include/win32/uuid/uuidd.h b/thirdparty/uuid/include/win32/uuid/uuidd.h
deleted file mode 100644
index f704a1e..0000000
--- a/thirdparty/uuid/include/win32/uuid/uuidd.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Definitions used by the uuidd daemon
- *
- * Copyright (C) 2007 Theodore Ts'o.
- *
- * %Begin-Header%
- * 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, and the entire permission notice in its entirety,
- *    including the disclaimer of warranties.
- * 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 ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
- * WHICH ARE HEREBY 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 NOT ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- * %End-Header%
- */
-
-#ifndef _UUID_UUIDD_H
-#define _UUID_UUIDD_H
-
-#define UUIDD_DIR		"/var/lib/libuuid"
-#define UUIDD_SOCKET_PATH	UUIDD_DIR "/request"
-#define UUIDD_PIDFILE_PATH	UUIDD_DIR "/uuidd.pid"
-#define UUIDD_PATH		"/usr/sbin/uuidd"
-
-#define UUIDD_OP_GETPID			0
-#define UUIDD_OP_GET_MAXOP		1
-#define UUIDD_OP_TIME_UUID		2
-#define UUIDD_OP_RANDOM_UUID		3
-#define UUIDD_OP_BULK_TIME_UUID		4
-#define UUIDD_OP_BULK_RANDOM_UUID	5
-#define UUIDD_MAX_OP			UUIDD_OP_BULK_RANDOM_UUID
-
-extern void uuid__generate_time(UUID_FIELD out, int *num);
-extern void uuid__generate_random(UUID_FIELD out, int *num);
-
-#endif /* _UUID_UUID_H */
diff --git a/thirdparty/uuid/isnull.c b/thirdparty/uuid/isnull.c
deleted file mode 100644
index 8a48e2a..0000000
--- a/thirdparty/uuid/isnull.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * isnull.c --- Check whether or not the UUID is null
- *
- * Copyright (C) 1996, 1997 Theodore Ts'o.
- *
- * %Begin-Header%
- * 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, and the entire permission notice in its entirety,
- *    including the disclaimer of warranties.
- * 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 ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
- * WHICH ARE HEREBY 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 NOT ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- * %End-Header%
- */
-
-#include "config.h"
-#include "uuidP.h"
-
-/* Returns 1 if the uuid is the NULL uuid */
-int uuid_is_null(const UUID_FIELD uu)
-{
-	const unsigned char 	*cp = uu;
-	int			i;
-
-	if (cp == 0x00)
-		return 1;
-	for (i=0, cp = uu; i < 16; i++)
-		if (*cp++)
-			return 0;
-	return 1;
-}
-
diff --git a/thirdparty/uuid/makefile b/thirdparty/uuid/makefile
deleted file mode 100644
index d0adfcf..0000000
--- a/thirdparty/uuid/makefile
+++ /dev/null
@@ -1,72 +0,0 @@
-#Define bridge streaming lib
-LIB=libuuid.a
-
-# define the C++ compiler to use
-CC=$(CROSS_COMPILE)-gcc
-
-COMPILERFLAGS = -O0 -ggdb -g3 -fexceptions -Wno-write-strings -fvisibility=hidden -fPIC
-
-# define any compile-time flags
-CFLAGS= -g -Wall -rdynamic  $(COMPILERFLAGS)
-
-# define any directories containing header files other than /usr/include
-#
-INCLUDES=-I..
-
-# define library paths in addition to /usr/lib
-#   if I wanted to include libraries not in /usr/lib I'd specify
-#   their path using -Lpath, something like:
-LFLAGS=
-
-# define any libraries to link into executable:
-#   if I want to link in libraries (libx.so or libx.a) I use the -llibname 
-#   option, something like (this will link in libmylib.so and libm.so:
-LIBS=-lpthread
-
-# define the CPP source files
-SRCS=clear.c  compare.c  copy.c  gen_uuid.c  isnull.c  pack.c  parse.c  unpack.c  unparse.c  m_uuidime.c
-
-# define the C object files 
-#
-# This uses Suffix Replacement within a macro:
-#   $(name:string1=string2)
-#         For each word in 'name' replace 'string1' with 'string2'
-# Below we are replacing the suffix .c of all words in the macro SRCS
-# with the .o suffix
-#
-OBJS=$(SRCS:.c=.o)
-
-#
-# The following part of the makefile is generic; it can be used to 
-# build any executable just by changing the definitions above and by
-# deleting dependencies appended to the file from 'make depend'
-#
-
-.PHONY: depend clean
-
-all:    $(LIB) tests
-
-#create static library
-$(LIB): $(OBJS) 
-		rm -f  $(LIB)
-		$(CROSS_COMPILE)-ar -cvq $(LIB) $(OBJS) 	
-
-# this is a suffix replacement rule for building .o's from .cpp's
-# it uses automatic variables $<: the name of the prerequisite of
-# the rule(a .cpp file) and $@: the name of the target of the rule (a .o file) 
-# (see the gnu make manual section about automatic variables)
-.c.o:
-		$(CC) $(CFLAGS) $(INCLUDES) -c $<  -o $@
-
-clean:
-		$(RM) *.o $(LIB)
-		find ./ -iname "*.o" -exec $(RM) {} \;
-
-tests: $(LIB) ./tst_uuid.c
-	$(CC) $(CFLAGS) $(INCLUDES) ./tst_uuid.c  $(LIB) -o ./tst_uuid
-
-depend: $(SRCS)
-		makedepend $(INCLUDES) $^
-
-# DO NOT DELETE THIS LINE -- make depend needs it
-
diff --git a/thirdparty/uuid/pack.c b/thirdparty/uuid/pack.c
deleted file mode 100644
index 1693f05..0000000
--- a/thirdparty/uuid/pack.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Internal routine for packing UUID's
- *
- * Copyright (C) 1996, 1997 Theodore Ts'o.
- *
- * %Begin-Header%
- * 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, and the entire permission notice in its entirety,
- *    including the disclaimer of warranties.
- * 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 ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
- * WHICH ARE HEREBY 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 NOT ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- * %End-Header%
- */
-
-#include "config.h"
-#include <string.h>
-#include "uuidP.h"
-
-void uuid_pack(const struct uuid *uu, UUID_FIELD ptr)
-{
-	uint32_t	tmp;
-	unsigned char	*out = ptr;
-
-	tmp = uu->time_low;
-	out[3] = (unsigned char) tmp;
-	tmp >>= 8;
-	out[2] = (unsigned char) tmp;
-	tmp >>= 8;
-	out[1] = (unsigned char) tmp;
-	tmp >>= 8;
-	out[0] = (unsigned char) tmp;
-
-	tmp = uu->time_mid;
-	out[5] = (unsigned char) tmp;
-	tmp >>= 8;
-	out[4] = (unsigned char) tmp;
-
-	tmp = uu->time_hi_and_version;
-	out[7] = (unsigned char) tmp;
-	tmp >>= 8;
-	out[6] = (unsigned char) tmp;
-
-	tmp = uu->clock_seq;
-	out[9] = (unsigned char) tmp;
-	tmp >>= 8;
-	out[8] = (unsigned char) tmp;
-
-	memcpy(out+10, uu->node, 6);
-}
-
diff --git a/thirdparty/uuid/parse.c b/thirdparty/uuid/parse.c
deleted file mode 100644
index fdf76e0..0000000
--- a/thirdparty/uuid/parse.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * parse.c --- UUID parsing
- *
- * Copyright (C) 1996, 1997 Theodore Ts'o.
- *
- * %Begin-Header%
- * 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, and the entire permission notice in its entirety,
- *    including the disclaimer of warranties.
- * 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 ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
- * WHICH ARE HEREBY 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 NOT ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- * %End-Header%
- */
-
-#include "config.h"
-#include <stdlib.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <string.h>
-
-#include "uuidP.h"
-
-int uuid_parse(const char *in, UUID_FIELD uu)
-{
-	struct uuid	uuid;
-	int 		i;
-	const char	*cp;
-	char		buf[3];
-
-	if (strlen(in) != 36)
-		return -1;
-	for (i=0, cp = in; i <= 36; i++,cp++) {
-		if ((i == 8) || (i == 13) || (i == 18) ||
-		    (i == 23)) {
-			if (*cp == '-')
-				continue;
-			else
-				return -1;
-		}
-		if (i== 36)
-			if (*cp == 0)
-				continue;
-		if (!isxdigit(*cp))
-			return -1;
-	}
-	uuid.time_low = strtoul(in, NULL, 16);
-	uuid.time_mid = strtoul(in+9, NULL, 16);
-	uuid.time_hi_and_version = strtoul(in+14, NULL, 16);
-	uuid.clock_seq = strtoul(in+19, NULL, 16);
-	cp = in+24;
-	buf[2] = 0;
-	for (i=0; i < 6; i++) {
-		buf[0] = *cp++;
-		buf[1] = *cp++;
-		uuid.node[i] = strtoul(buf, NULL, 16);
-	}
-
-	uuid_pack(&uuid, uu);
-	return 0;
-}
diff --git a/thirdparty/uuid/unpack.c b/thirdparty/uuid/unpack.c
deleted file mode 100644
index bea3808..0000000
--- a/thirdparty/uuid/unpack.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Internal routine for unpacking UUID
- *
- * Copyright (C) 1996, 1997 Theodore Ts'o.
- *
- * %Begin-Header%
- * 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, and the entire permission notice in its entirety,
- *    including the disclaimer of warranties.
- * 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 ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
- * WHICH ARE HEREBY 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 NOT ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- * %End-Header%
- */
-
-#include "config.h"
-#include <string.h>
-#include "uuidP.h"
-
-void uuid_unpack(const UUID_FIELD in, struct uuid *uu)
-{
-	const uint8_t	*ptr = in;
-	uint32_t		tmp;
-
-	tmp = *ptr++;
-	tmp = (tmp << 8) | *ptr++;
-	tmp = (tmp << 8) | *ptr++;
-	tmp = (tmp << 8) | *ptr++;
-	uu->time_low = tmp;
-
-	tmp = *ptr++;
-	tmp = (tmp << 8) | *ptr++;
-	uu->time_mid = tmp;
-
-	tmp = *ptr++;
-	tmp = (tmp << 8) | *ptr++;
-	uu->time_hi_and_version = tmp;
-
-	tmp = *ptr++;
-	tmp = (tmp << 8) | *ptr++;
-	uu->clock_seq = tmp;
-
-	memcpy(uu->node, ptr, 6);
-}
-
diff --git a/thirdparty/uuid/unparse.c b/thirdparty/uuid/unparse.c
deleted file mode 100644
index f695232..0000000
--- a/thirdparty/uuid/unparse.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * unparse.c -- convert a UUID to string
- *
- * Copyright (C) 1996, 1997 Theodore Ts'o.
- *
- * %Begin-Header%
- * 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, and the entire permission notice in its entirety,
- *    including the disclaimer of warranties.
- * 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 ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
- * WHICH ARE HEREBY 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 NOT ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- * %End-Header%
- */
-
-#include "config.h"
-#include <stdio.h>
-
-#include "uuidP.h"
-
-static const char *fmt_lower =
-	"%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x";
-
-static const char *fmt_upper =
-	"%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X";
-
-#ifdef UUID_UNPARSE_DEFAULT_UPPER
-#define FMT_DEFAULT fmt_upper
-#else
-#define FMT_DEFAULT fmt_lower
-#endif
-
-static void uuid_unparse_x(const UUID_FIELD uu, char *out, const char *fmt)
-{
-	struct uuid uuid;
-
-	uuid_unpack(uu, &uuid);
-	sprintf(out, fmt,
-		uuid.time_low, uuid.time_mid, uuid.time_hi_and_version,
-		uuid.clock_seq >> 8, uuid.clock_seq & 0xFF,
-		uuid.node[0], uuid.node[1], uuid.node[2],
-		uuid.node[3], uuid.node[4], uuid.node[5]);
-}
-
-void uuid_unparse_lower(const UUID_FIELD uu, char *out)
-{
-	uuid_unparse_x(uu, out,	fmt_lower);
-}
-
-void uuid_unparse_upper(const UUID_FIELD uu, char *out)
-{
-	uuid_unparse_x(uu, out,	fmt_upper);
-}
-
-void uuid_unparse(const UUID_FIELD uu, char *out)
-{
-	uuid_unparse_x(uu, out, FMT_DEFAULT);
-}
diff --git a/thirdparty/uuid/uuid_time.c b/thirdparty/uuid/uuid_time.c
deleted file mode 100644
index 8061143..0000000
--- a/thirdparty/uuid/uuid_time.c
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * m_uuidime.c --- Interpret the time field from a uuid.  This program
- * 	violates the UUID abstraction barrier by reaching into the guts
- *	of a UUID and interpreting it.
- *
- * Copyright (C) 1998, 1999 Theodore Ts'o.
- *
- * %Begin-Header%
- * 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, and the entire permission notice in its entirety,
- *    including the disclaimer of warranties.
- * 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 ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
- * WHICH ARE HEREBY 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 NOT ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- * %End-Header%
- */
-
-#include "config.h"
-
-#ifdef _WIN32
-#define _WIN32_WINNT 0x0500
-#include <windows.h>
-#define UUID MYUUID
-#endif
-
-#include <stdio.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <stdlib.h>
-#include <sys/types.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <time.h>
-
-#include "uuidP.h"
-
-time_t m_uuidime(const UUID_FIELD uu, struct st_tm_val *ret_tv)
-{
-	struct st_tm_val		tv;
-	struct uuid		uuid;
-	uint32_t		high;
-	uint64_t		clock_reg;
-
-	uuid_unpack(uu, &uuid);
-
-	high = uuid.time_mid | ((uuid.time_hi_and_version & 0xFFF) << 16);
-	clock_reg = uuid.time_low | ((uint64_t) high << 32);
-
-	clock_reg -= (((uint64_t) 0x01B21DD2) << 32) + 0x13814000;
-	tv.tv_sec = clock_reg / 10000000;
-	tv.tv_usec = (clock_reg % 10000000) / 10;
-
-	if (ret_tv)
-		*ret_tv = tv;
-
-	return tv.tv_sec;
-}
-
-int m_uuidype(const UUID_FIELD uu)
-{
-	struct uuid		uuid;
-
-	uuid_unpack(uu, &uuid);
-	return ((uuid.time_hi_and_version >> 12) & 0xF);
-}
-
-int uuid_variant(const UUID_FIELD uu)
-{
-	struct uuid		uuid;
-	int			var;
-
-	uuid_unpack(uu, &uuid);
-	var = uuid.clock_seq;
-
-	if ((var & 0x8000) == 0)
-		return UUID_VARIANT_NCS;
-	if ((var & 0x4000) == 0)
-		return UUID_VARIANT_DCE;
-	if ((var & 0x2000) == 0)
-		return UUID_VARIANT_MICROSOFT;
-	return UUID_VARIANT_OTHER;
-}
-
-#ifdef DEBUG
-static const char *variant_string(int variant)
-{
-	switch (variant) {
-	case UUID_VARIANT_NCS:
-		return "NCS";
-	case UUID_VARIANT_DCE:
-		return "DCE";
-	case UUID_VARIANT_MICROSOFT:
-		return "Microsoft";
-	default:
-		return "Other";
-	}
-}
-
-
-int
-main(int argc, char **argv)
-{
-	UUID_FIELD		buf;
-	time_t		time_reg;
-	struct st_tm_val	tv;
-	int		type, variant;
-
-	if (argc != 2) {
-		fprintf(stderr, "Usage: %s uuid\n", argv[0]);
-		exit(1);
-	}
-	if (uuid_parse(argv[1], buf)) {
-		fprintf(stderr, "Invalid UUID: %s\n", argv[1]);
-		exit(1);
-	}
-	variant = uuid_variant(buf);
-	type = m_uuidype(buf);
-	time_reg = m_uuidime(buf, &tv);
-
-	printf("UUID variant is %d (%s)\n", variant, variant_string(variant));
-	if (variant != UUID_VARIANT_DCE) {
-		printf("Warning: This program only knows how to interpret "
-		       "DCE UUIDs.\n\tThe rest of the output is likely "
-		       "to be incorrect!!\n");
-	}
-	printf("UUID type is %d", type);
-	switch (type) {
-	case 1:
-		printf(" (time based)\n");
-		break;
-	case 2:
-		printf(" (DCE)\n");
-		break;
-	case 3:
-		printf(" (name-based)\n");
-		break;
-	case 4:
-		printf(" (random)\n");
-		break;
-	default:
-		printf("\n");
-	}
-	if (type != 1) {
-		printf("Warning: not a time-based UUID, so UUID time "
-		       "decoding will likely not work!\n");
-	}
-	printf("UUID time is: (%ld, %ld): %s\n", tv.tv_sec, (long)tv.tv_usec,
-	       ctime(&time_reg));
-
-	return 0;
-}
-#endif