483 lines
		
	
	
		
			43 KiB
		
	
	
	
		
			C++
		
	
	
	
		
		
			
		
	
	
			483 lines
		
	
	
		
			43 KiB
		
	
	
	
		
			C++
		
	
	
	
|  | //     __ _____ _____ _____
 | ||
|  | //  __|  |   __|     |   | |  JSON for Modern C++
 | ||
|  | // |  |  |__   |  |  | | | |  version 3.11.3
 | ||
|  | // |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 | ||
|  | //
 | ||
|  | // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me>
 | ||
|  | // SPDX-License-Identifier: MIT
 | ||
|  | 
 | ||
|  | #pragma once
 | ||
|  | 
 | ||
|  | #include <utility> // declval, pair
 | ||
|  | #include <nlohmann/detail/meta/detected.hpp>
 | ||
|  | #include <nlohmann/thirdparty/hedley/hedley.hpp>
 | ||
|  | 
 | ||
|  | // This file contains all internal macro definitions (except those affecting ABI)
 | ||
|  | // You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them
 | ||
|  | 
 | ||
|  | #include <nlohmann/detail/abi_macros.hpp>
 | ||
|  | 
 | ||
|  | // exclude unsupported compilers
 | ||
|  | #if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK)
 | ||
|  |     #if defined(__clang__)
 | ||
|  |         #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400
 | ||
|  |             #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers"
 | ||
|  |         #endif
 | ||
|  |     #elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER))
 | ||
|  |         #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800
 | ||
|  |             #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers"
 | ||
|  |         #endif
 | ||
|  |     #endif
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | // C++ language standard detection
 | ||
|  | // if the user manually specified the used c++ version this is skipped
 | ||
|  | #if !defined(JSON_HAS_CPP_20) && !defined(JSON_HAS_CPP_17) && !defined(JSON_HAS_CPP_14) && !defined(JSON_HAS_CPP_11)
 | ||
|  |     #if (defined(__cplusplus) && __cplusplus >= 202002L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 202002L)
 | ||
|  |         #define JSON_HAS_CPP_20
 | ||
|  |         #define JSON_HAS_CPP_17
 | ||
|  |         #define JSON_HAS_CPP_14
 | ||
|  |     #elif (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464
 | ||
|  |         #define JSON_HAS_CPP_17
 | ||
|  |         #define JSON_HAS_CPP_14
 | ||
|  |     #elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1)
 | ||
|  |         #define JSON_HAS_CPP_14
 | ||
|  |     #endif
 | ||
|  |     // the cpp 11 flag is always specified because it is the minimal required version
 | ||
|  |     #define JSON_HAS_CPP_11
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #ifdef __has_include
 | ||
|  |     #if __has_include(<version>)
 | ||
|  |         #include <version>
 | ||
|  |     #endif
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #if !defined(JSON_HAS_FILESYSTEM) && !defined(JSON_HAS_EXPERIMENTAL_FILESYSTEM)
 | ||
|  |     #ifdef JSON_HAS_CPP_17
 | ||
|  |         #if defined(__cpp_lib_filesystem)
 | ||
|  |             #define JSON_HAS_FILESYSTEM 1
 | ||
|  |         #elif defined(__cpp_lib_experimental_filesystem)
 | ||
|  |             #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
 | ||
|  |         #elif !defined(__has_include)
 | ||
|  |             #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
 | ||
|  |         #elif __has_include(<filesystem>)
 | ||
|  |             #define JSON_HAS_FILESYSTEM 1
 | ||
|  |         #elif __has_include(<experimental/filesystem>)
 | ||
|  |             #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1
 | ||
|  |         #endif
 | ||
|  | 
 | ||
|  |         // std::filesystem does not work on MinGW GCC 8: https://sourceforge.net/p/mingw-w64/bugs/737/
 | ||
|  |         #if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ == 8
 | ||
|  |             #undef JSON_HAS_FILESYSTEM
 | ||
|  |             #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM
 | ||
|  |         #endif
 | ||
|  | 
 | ||
|  |         // no filesystem support before GCC 8: https://en.cppreference.com/w/cpp/compiler_support
 | ||
|  |         #if defined(__GNUC__) && !defined(__clang__) && __GNUC__ < 8
 | ||
|  |             #undef JSON_HAS_FILESYSTEM
 | ||
|  |             #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM
 | ||
|  |         #endif
 | ||
|  | 
 | ||
|  |         // no filesystem support before Clang 7: https://en.cppreference.com/w/cpp/compiler_support
 | ||
|  |         #if defined(__clang_major__) && __clang_major__ < 7
 | ||
|  |             #undef JSON_HAS_FILESYSTEM
 | ||
|  |             #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM
 | ||
|  |         #endif
 | ||
|  | 
 | ||
|  |         // no filesystem support before MSVC 19.14: https://en.cppreference.com/w/cpp/compiler_support
 | ||
|  |         #if defined(_MSC_VER) && _MSC_VER < 1914
 | ||
|  |             #undef JSON_HAS_FILESYSTEM
 | ||
|  |             #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM
 | ||
|  |         #endif
 | ||
|  | 
 | ||
|  |         // no filesystem support before iOS 13
 | ||
|  |         #if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 130000
 | ||
|  |             #undef JSON_HAS_FILESYSTEM
 | ||
|  |             #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM
 | ||
|  |         #endif
 | ||
|  | 
 | ||
|  |         // no filesystem support before macOS Catalina
 | ||
|  |         #if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500
 | ||
|  |             #undef JSON_HAS_FILESYSTEM
 | ||
|  |             #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM
 | ||
|  |         #endif
 | ||
|  |     #endif
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #ifndef JSON_HAS_EXPERIMENTAL_FILESYSTEM
 | ||
|  |     #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 0
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #ifndef JSON_HAS_FILESYSTEM
 | ||
|  |     #define JSON_HAS_FILESYSTEM 0
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #ifndef JSON_HAS_THREE_WAY_COMPARISON
 | ||
|  |     #if defined(__cpp_impl_three_way_comparison) && __cpp_impl_three_way_comparison >= 201907L \
 | ||
|  |         && defined(__cpp_lib_three_way_comparison) && __cpp_lib_three_way_comparison >= 201907L | ||
|  |         #define JSON_HAS_THREE_WAY_COMPARISON 1
 | ||
|  |     #else
 | ||
|  |         #define JSON_HAS_THREE_WAY_COMPARISON 0
 | ||
|  |     #endif
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #ifndef JSON_HAS_RANGES
 | ||
|  |     // ranges header shipping in GCC 11.1.0 (released 2021-04-27) has syntax error
 | ||
|  |     #if defined(__GLIBCXX__) && __GLIBCXX__ == 20210427
 | ||
|  |         #define JSON_HAS_RANGES 0
 | ||
|  |     #elif defined(__cpp_lib_ranges)
 | ||
|  |         #define JSON_HAS_RANGES 1
 | ||
|  |     #else
 | ||
|  |         #define JSON_HAS_RANGES 0
 | ||
|  |     #endif
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #ifndef JSON_HAS_STATIC_RTTI
 | ||
|  |     #if !defined(_HAS_STATIC_RTTI) || _HAS_STATIC_RTTI != 0
 | ||
|  |         #define JSON_HAS_STATIC_RTTI 1
 | ||
|  |     #else
 | ||
|  |         #define JSON_HAS_STATIC_RTTI 0
 | ||
|  |     #endif
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #ifdef JSON_HAS_CPP_17
 | ||
|  |     #define JSON_INLINE_VARIABLE inline
 | ||
|  | #else
 | ||
|  |     #define JSON_INLINE_VARIABLE
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #if JSON_HEDLEY_HAS_ATTRIBUTE(no_unique_address)
 | ||
|  |     #define JSON_NO_UNIQUE_ADDRESS [[no_unique_address]]
 | ||
|  | #else
 | ||
|  |     #define JSON_NO_UNIQUE_ADDRESS
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | // disable documentation warnings on clang
 | ||
|  | #if defined(__clang__)
 | ||
|  |     #pragma clang diagnostic push
 | ||
|  |     #pragma clang diagnostic ignored "-Wdocumentation"
 | ||
|  |     #pragma clang diagnostic ignored "-Wdocumentation-unknown-command"
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | // allow disabling exceptions
 | ||
|  | #if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION)
 | ||
|  |     #define JSON_THROW(exception) throw exception
 | ||
|  |     #define JSON_TRY try
 | ||
|  |     #define JSON_CATCH(exception) catch(exception)
 | ||
|  |     #define JSON_INTERNAL_CATCH(exception) catch(exception)
 | ||
|  | #else
 | ||
|  |     #include <cstdlib>
 | ||
|  |     #define JSON_THROW(exception) std::abort()
 | ||
|  |     #define JSON_TRY if(true)
 | ||
|  |     #define JSON_CATCH(exception) if(false)
 | ||
|  |     #define JSON_INTERNAL_CATCH(exception) if(false)
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | // override exception macros
 | ||
|  | #if defined(JSON_THROW_USER)
 | ||
|  |     #undef JSON_THROW
 | ||
|  |     #define JSON_THROW JSON_THROW_USER
 | ||
|  | #endif
 | ||
|  | #if defined(JSON_TRY_USER)
 | ||
|  |     #undef JSON_TRY
 | ||
|  |     #define JSON_TRY JSON_TRY_USER
 | ||
|  | #endif
 | ||
|  | #if defined(JSON_CATCH_USER)
 | ||
|  |     #undef JSON_CATCH
 | ||
|  |     #define JSON_CATCH JSON_CATCH_USER
 | ||
|  |     #undef JSON_INTERNAL_CATCH
 | ||
|  |     #define JSON_INTERNAL_CATCH JSON_CATCH_USER
 | ||
|  | #endif
 | ||
|  | #if defined(JSON_INTERNAL_CATCH_USER)
 | ||
|  |     #undef JSON_INTERNAL_CATCH
 | ||
|  |     #define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | // allow overriding assert
 | ||
|  | #if !defined(JSON_ASSERT)
 | ||
|  |     #include <cassert> // assert
 | ||
|  |     #define JSON_ASSERT(x) assert(x)
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | // allow to access some private functions (needed by the test suite)
 | ||
|  | #if defined(JSON_TESTS_PRIVATE)
 | ||
|  |     #define JSON_PRIVATE_UNLESS_TESTED public
 | ||
|  | #else
 | ||
|  |     #define JSON_PRIVATE_UNLESS_TESTED private
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | /*!
 | ||
|  | @brief macro to briefly define a mapping between an enum and JSON | ||
|  | @def NLOHMANN_JSON_SERIALIZE_ENUM | ||
|  | @since version 3.4.0 | ||
|  | */ | ||
|  | #define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...)                                            \
 | ||
|  |     template<typename BasicJsonType>                                                            \ | ||
|  |     inline void to_json(BasicJsonType& j, const ENUM_TYPE& e)                                   \ | ||
|  |     {                                                                                           \ | ||
|  |         static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!");          \ | ||
|  |         static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__;                     \ | ||
|  |         auto it = std::find_if(std::begin(m), std::end(m),                                      \ | ||
|  |                                [e](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool  \ | ||
|  |         {                                                                                       \ | ||
|  |             return ej_pair.first == e;                                                          \ | ||
|  |         });                                                                                     \ | ||
|  |         j = ((it != std::end(m)) ? it : std::begin(m))->second;                                 \ | ||
|  |     }                                                                                           \ | ||
|  |     template<typename BasicJsonType>                                                            \ | ||
|  |     inline void from_json(const BasicJsonType& j, ENUM_TYPE& e)                                 \ | ||
|  |     {                                                                                           \ | ||
|  |         static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!");          \ | ||
|  |         static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__;                     \ | ||
|  |         auto it = std::find_if(std::begin(m), std::end(m),                                      \ | ||
|  |                                [&j](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool \ | ||
|  |         {                                                                                       \ | ||
|  |             return ej_pair.second == j;                                                         \ | ||
|  |         });                                                                                     \ | ||
|  |         e = ((it != std::end(m)) ? it : std::begin(m))->first;                                  \ | ||
|  |     } | ||
|  | 
 | ||
|  | // Ugly macros to avoid uglier copy-paste when specializing basic_json. They
 | ||
|  | // may be removed in the future once the class is split.
 | ||
|  | 
 | ||
|  | #define NLOHMANN_BASIC_JSON_TPL_DECLARATION                                \
 | ||
|  |     template<template<typename, typename, typename...> class ObjectType,   \ | ||
|  |              template<typename, typename...> class ArrayType,              \ | ||
|  |              class StringType, class BooleanType, class NumberIntegerType, \ | ||
|  |              class NumberUnsignedType, class NumberFloatType,              \ | ||
|  |              template<typename> class AllocatorType,                       \ | ||
|  |              template<typename, typename = void> class JSONSerializer,     \ | ||
|  |              class BinaryType,                                             \ | ||
|  |              class CustomBaseClass> | ||
|  | 
 | ||
|  | #define NLOHMANN_BASIC_JSON_TPL                                            \
 | ||
|  |     basic_json<ObjectType, ArrayType, StringType, BooleanType,             \ | ||
|  |     NumberIntegerType, NumberUnsignedType, NumberFloatType,                \ | ||
|  |     AllocatorType, JSONSerializer, BinaryType, CustomBaseClass> | ||
|  | 
 | ||
|  | // Macros to simplify conversion from/to types
 | ||
|  | 
 | ||
|  | #define NLOHMANN_JSON_EXPAND( x ) x
 | ||
|  | #define NLOHMANN_JSON_GET_MACRO(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, NAME,...) NAME
 | ||
|  | #define NLOHMANN_JSON_PASTE(...) NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_GET_MACRO(__VA_ARGS__, \
 | ||
|  |         NLOHMANN_JSON_PASTE64, \ | ||
|  |         NLOHMANN_JSON_PASTE63, \ | ||
|  |         NLOHMANN_JSON_PASTE62, \ | ||
|  |         NLOHMANN_JSON_PASTE61, \ | ||
|  |         NLOHMANN_JSON_PASTE60, \ | ||
|  |         NLOHMANN_JSON_PASTE59, \ | ||
|  |         NLOHMANN_JSON_PASTE58, \ | ||
|  |         NLOHMANN_JSON_PASTE57, \ | ||
|  |         NLOHMANN_JSON_PASTE56, \ | ||
|  |         NLOHMANN_JSON_PASTE55, \ | ||
|  |         NLOHMANN_JSON_PASTE54, \ | ||
|  |         NLOHMANN_JSON_PASTE53, \ | ||
|  |         NLOHMANN_JSON_PASTE52, \ | ||
|  |         NLOHMANN_JSON_PASTE51, \ | ||
|  |         NLOHMANN_JSON_PASTE50, \ | ||
|  |         NLOHMANN_JSON_PASTE49, \ | ||
|  |         NLOHMANN_JSON_PASTE48, \ | ||
|  |         NLOHMANN_JSON_PASTE47, \ | ||
|  |         NLOHMANN_JSON_PASTE46, \ | ||
|  |         NLOHMANN_JSON_PASTE45, \ | ||
|  |         NLOHMANN_JSON_PASTE44, \ | ||
|  |         NLOHMANN_JSON_PASTE43, \ | ||
|  |         NLOHMANN_JSON_PASTE42, \ | ||
|  |         NLOHMANN_JSON_PASTE41, \ | ||
|  |         NLOHMANN_JSON_PASTE40, \ | ||
|  |         NLOHMANN_JSON_PASTE39, \ | ||
|  |         NLOHMANN_JSON_PASTE38, \ | ||
|  |         NLOHMANN_JSON_PASTE37, \ | ||
|  |         NLOHMANN_JSON_PASTE36, \ | ||
|  |         NLOHMANN_JSON_PASTE35, \ | ||
|  |         NLOHMANN_JSON_PASTE34, \ | ||
|  |         NLOHMANN_JSON_PASTE33, \ | ||
|  |         NLOHMANN_JSON_PASTE32, \ | ||
|  |         NLOHMANN_JSON_PASTE31, \ | ||
|  |         NLOHMANN_JSON_PASTE30, \ | ||
|  |         NLOHMANN_JSON_PASTE29, \ | ||
|  |         NLOHMANN_JSON_PASTE28, \ | ||
|  |         NLOHMANN_JSON_PASTE27, \ | ||
|  |         NLOHMANN_JSON_PASTE26, \ | ||
|  |         NLOHMANN_JSON_PASTE25, \ | ||
|  |         NLOHMANN_JSON_PASTE24, \ | ||
|  |         NLOHMANN_JSON_PASTE23, \ | ||
|  |         NLOHMANN_JSON_PASTE22, \ | ||
|  |         NLOHMANN_JSON_PASTE21, \ | ||
|  |         NLOHMANN_JSON_PASTE20, \ | ||
|  |         NLOHMANN_JSON_PASTE19, \ | ||
|  |         NLOHMANN_JSON_PASTE18, \ | ||
|  |         NLOHMANN_JSON_PASTE17, \ | ||
|  |         NLOHMANN_JSON_PASTE16, \ | ||
|  |         NLOHMANN_JSON_PASTE15, \ | ||
|  |         NLOHMANN_JSON_PASTE14, \ | ||
|  |         NLOHMANN_JSON_PASTE13, \ | ||
|  |         NLOHMANN_JSON_PASTE12, \ | ||
|  |         NLOHMANN_JSON_PASTE11, \ | ||
|  |         NLOHMANN_JSON_PASTE10, \ | ||
|  |         NLOHMANN_JSON_PASTE9, \ | ||
|  |         NLOHMANN_JSON_PASTE8, \ | ||
|  |         NLOHMANN_JSON_PASTE7, \ | ||
|  |         NLOHMANN_JSON_PASTE6, \ | ||
|  |         NLOHMANN_JSON_PASTE5, \ | ||
|  |         NLOHMANN_JSON_PASTE4, \ | ||
|  |         NLOHMANN_JSON_PASTE3, \ | ||
|  |         NLOHMANN_JSON_PASTE2, \ | ||
|  |         NLOHMANN_JSON_PASTE1)(__VA_ARGS__)) | ||
|  | #define NLOHMANN_JSON_PASTE2(func, v1) func(v1)
 | ||
|  | #define NLOHMANN_JSON_PASTE3(func, v1, v2) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE2(func, v2)
 | ||
|  | #define NLOHMANN_JSON_PASTE4(func, v1, v2, v3) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE3(func, v2, v3)
 | ||
|  | #define NLOHMANN_JSON_PASTE5(func, v1, v2, v3, v4) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE4(func, v2, v3, v4)
 | ||
|  | #define NLOHMANN_JSON_PASTE6(func, v1, v2, v3, v4, v5) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE5(func, v2, v3, v4, v5)
 | ||
|  | #define NLOHMANN_JSON_PASTE7(func, v1, v2, v3, v4, v5, v6) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE6(func, v2, v3, v4, v5, v6)
 | ||
|  | #define NLOHMANN_JSON_PASTE8(func, v1, v2, v3, v4, v5, v6, v7) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE7(func, v2, v3, v4, v5, v6, v7)
 | ||
|  | #define NLOHMANN_JSON_PASTE9(func, v1, v2, v3, v4, v5, v6, v7, v8) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE8(func, v2, v3, v4, v5, v6, v7, v8)
 | ||
|  | #define NLOHMANN_JSON_PASTE10(func, v1, v2, v3, v4, v5, v6, v7, v8, v9) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE9(func, v2, v3, v4, v5, v6, v7, v8, v9)
 | ||
|  | #define NLOHMANN_JSON_PASTE11(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE10(func, v2, v3, v4, v5, v6, v7, v8, v9, v10)
 | ||
|  | #define NLOHMANN_JSON_PASTE12(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE11(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11)
 | ||
|  | #define NLOHMANN_JSON_PASTE13(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE12(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12)
 | ||
|  | #define NLOHMANN_JSON_PASTE14(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE13(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13)
 | ||
|  | #define NLOHMANN_JSON_PASTE15(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE14(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14)
 | ||
|  | #define NLOHMANN_JSON_PASTE16(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE15(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15)
 | ||
|  | #define NLOHMANN_JSON_PASTE17(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE16(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16)
 | ||
|  | #define NLOHMANN_JSON_PASTE18(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE17(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17)
 | ||
|  | #define NLOHMANN_JSON_PASTE19(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE18(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18)
 | ||
|  | #define NLOHMANN_JSON_PASTE20(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE19(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19)
 | ||
|  | #define NLOHMANN_JSON_PASTE21(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE20(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20)
 | ||
|  | #define NLOHMANN_JSON_PASTE22(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE21(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21)
 | ||
|  | #define NLOHMANN_JSON_PASTE23(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE22(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22)
 | ||
|  | #define NLOHMANN_JSON_PASTE24(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE23(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23)
 | ||
|  | #define NLOHMANN_JSON_PASTE25(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE24(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24)
 | ||
|  | #define NLOHMANN_JSON_PASTE26(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE25(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25)
 | ||
|  | #define NLOHMANN_JSON_PASTE27(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE26(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26)
 | ||
|  | #define NLOHMANN_JSON_PASTE28(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE27(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27)
 | ||
|  | #define NLOHMANN_JSON_PASTE29(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE28(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28)
 | ||
|  | #define NLOHMANN_JSON_PASTE30(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE29(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29)
 | ||
|  | #define NLOHMANN_JSON_PASTE31(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE30(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30)
 | ||
|  | #define NLOHMANN_JSON_PASTE32(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE31(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31)
 | ||
|  | #define NLOHMANN_JSON_PASTE33(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE32(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32)
 | ||
|  | #define NLOHMANN_JSON_PASTE34(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE33(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33)
 | ||
|  | #define NLOHMANN_JSON_PASTE35(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE34(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34)
 | ||
|  | #define NLOHMANN_JSON_PASTE36(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE35(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35)
 | ||
|  | #define NLOHMANN_JSON_PASTE37(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE36(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36)
 | ||
|  | #define NLOHMANN_JSON_PASTE38(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE37(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37)
 | ||
|  | #define NLOHMANN_JSON_PASTE39(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE38(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38)
 | ||
|  | #define NLOHMANN_JSON_PASTE40(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE39(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39)
 | ||
|  | #define NLOHMANN_JSON_PASTE41(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE40(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40)
 | ||
|  | #define NLOHMANN_JSON_PASTE42(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE41(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41)
 | ||
|  | #define NLOHMANN_JSON_PASTE43(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE42(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42)
 | ||
|  | #define NLOHMANN_JSON_PASTE44(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE43(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43)
 | ||
|  | #define NLOHMANN_JSON_PASTE45(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE44(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44)
 | ||
|  | #define NLOHMANN_JSON_PASTE46(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE45(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45)
 | ||
|  | #define NLOHMANN_JSON_PASTE47(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE46(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46)
 | ||
|  | #define NLOHMANN_JSON_PASTE48(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE47(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47)
 | ||
|  | #define NLOHMANN_JSON_PASTE49(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE48(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48)
 | ||
|  | #define NLOHMANN_JSON_PASTE50(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE49(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49)
 | ||
|  | #define NLOHMANN_JSON_PASTE51(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE50(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50)
 | ||
|  | #define NLOHMANN_JSON_PASTE52(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE51(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51)
 | ||
|  | #define NLOHMANN_JSON_PASTE53(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE52(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52)
 | ||
|  | #define NLOHMANN_JSON_PASTE54(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE53(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53)
 | ||
|  | #define NLOHMANN_JSON_PASTE55(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE54(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54)
 | ||
|  | #define NLOHMANN_JSON_PASTE56(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE55(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55)
 | ||
|  | #define NLOHMANN_JSON_PASTE57(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE56(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56)
 | ||
|  | #define NLOHMANN_JSON_PASTE58(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE57(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57)
 | ||
|  | #define NLOHMANN_JSON_PASTE59(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE58(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58)
 | ||
|  | #define NLOHMANN_JSON_PASTE60(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE59(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59)
 | ||
|  | #define NLOHMANN_JSON_PASTE61(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE60(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60)
 | ||
|  | #define NLOHMANN_JSON_PASTE62(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE61(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61)
 | ||
|  | #define NLOHMANN_JSON_PASTE63(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE62(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62)
 | ||
|  | #define NLOHMANN_JSON_PASTE64(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE63(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63)
 | ||
|  | 
 | ||
|  | #define NLOHMANN_JSON_TO(v1) nlohmann_json_j[#v1] = nlohmann_json_t.v1;
 | ||
|  | #define NLOHMANN_JSON_FROM(v1) nlohmann_json_j.at(#v1).get_to(nlohmann_json_t.v1);
 | ||
|  | #define NLOHMANN_JSON_FROM_WITH_DEFAULT(v1) nlohmann_json_t.v1 = nlohmann_json_j.value(#v1, nlohmann_json_default_obj.v1);
 | ||
|  | 
 | ||
|  | /*!
 | ||
|  | @brief macro | ||
|  | @def NLOHMANN_DEFINE_TYPE_INTRUSIVE | ||
|  | @since version 3.9.0 | ||
|  | */ | ||
|  | #define NLOHMANN_DEFINE_TYPE_INTRUSIVE(Type, ...)  \
 | ||
|  |     friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ | ||
|  |     friend void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } | ||
|  | 
 | ||
|  | #define NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(Type, ...)  \
 | ||
|  |     friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ | ||
|  |     friend void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } | ||
|  | 
 | ||
|  | #define NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE(Type, ...)  \
 | ||
|  |     friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } | ||
|  | 
 | ||
|  | /*!
 | ||
|  | @brief macro | ||
|  | @def NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE | ||
|  | @since version 3.9.0 | ||
|  | */ | ||
|  | #define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Type, ...)  \
 | ||
|  |     inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ | ||
|  |     inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } | ||
|  | 
 | ||
|  | #define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(Type, ...)  \
 | ||
|  |     inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } | ||
|  | 
 | ||
|  | #define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(Type, ...)  \
 | ||
|  |     inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ | ||
|  |     inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } | ||
|  | 
 | ||
|  | // inspired from https://stackoverflow.com/a/26745591
 | ||
|  | // allows to call any std function as if (e.g. with begin):
 | ||
|  | // using std::begin; begin(x);
 | ||
|  | //
 | ||
|  | // it allows using the detected idiom to retrieve the return type
 | ||
|  | // of such an expression
 | ||
|  | #define NLOHMANN_CAN_CALL_STD_FUNC_IMPL(std_name)                                 \
 | ||
|  |     namespace detail {                                                            \ | ||
|  |     using std::std_name;                                                          \ | ||
|  |     \ | ||
|  |     template<typename... T>                                                       \ | ||
|  |     using result_of_##std_name = decltype(std_name(std::declval<T>()...));        \ | ||
|  |     }                                                                             \ | ||
|  |     \ | ||
|  |     namespace detail2 {                                                           \ | ||
|  |     struct std_name##_tag                                                         \ | ||
|  |     {                                                                             \ | ||
|  |     };                                                                            \ | ||
|  |     \ | ||
|  |     template<typename... T>                                                       \ | ||
|  |     std_name##_tag std_name(T&&...);                                              \ | ||
|  |     \ | ||
|  |     template<typename... T>                                                       \ | ||
|  |     using result_of_##std_name = decltype(std_name(std::declval<T>()...));        \ | ||
|  |     \ | ||
|  |     template<typename... T>                                                       \ | ||
|  |     struct would_call_std_##std_name                                              \ | ||
|  |     {                                                                             \ | ||
|  |         static constexpr auto const value = ::nlohmann::detail::                  \ | ||
|  |                                             is_detected_exact<std_name##_tag, result_of_##std_name, T...>::value; \ | ||
|  |     };                                                                            \ | ||
|  |     } /* namespace detail2 */ \ | ||
|  |     \ | ||
|  |     template<typename... T>                                                       \ | ||
|  |     struct would_call_std_##std_name : detail2::would_call_std_##std_name<T...>   \ | ||
|  |     {                                                                             \ | ||
|  |     } | ||
|  | 
 | ||
|  | #ifndef JSON_USE_IMPLICIT_CONVERSIONS
 | ||
|  |     #define JSON_USE_IMPLICIT_CONVERSIONS 1
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #if JSON_USE_IMPLICIT_CONVERSIONS
 | ||
|  |     #define JSON_EXPLICIT
 | ||
|  | #else
 | ||
|  |     #define JSON_EXPLICIT explicit
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #ifndef JSON_DISABLE_ENUM_SERIALIZATION
 | ||
|  |     #define JSON_DISABLE_ENUM_SERIALIZATION 0
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #ifndef JSON_USE_GLOBAL_UDLS
 | ||
|  |     #define JSON_USE_GLOBAL_UDLS 1
 | ||
|  | #endif
 |