mirror of https://github.com/bjornbytes/lovr.git
Make CMakeLists more modular;
- Enable/disable individual modules, including enet/json - Enable/disable different "backends" (audio/headset) - Choose to use system vs. source versions of different libraries
This commit is contained in:
parent
e2ace89b83
commit
5a9cd5187c
595
CMakeLists.txt
595
CMakeLists.txt
|
@ -1,6 +1,36 @@
|
|||
cmake_minimum_required(VERSION 3.1.0)
|
||||
project(lovr)
|
||||
|
||||
# Options
|
||||
option(LOVR_ENABLE_AUDIO "Enable the audio module" ON)
|
||||
option(LOVR_ENABLE_DATA "Enable the data module" ON)
|
||||
option(LOVR_ENABLE_EVENT "Enable the event module" ON)
|
||||
option(LOVR_ENABLE_FILESYSTEM "Enable the filesystem module" ON)
|
||||
option(LOVR_ENABLE_GRAPHICS "Enable the graphics module" ON)
|
||||
option(LOVR_ENABLE_HEADSET "Enable the headset module" ON)
|
||||
option(LOVR_ENABLE_MATH "Enable the math module" ON)
|
||||
option(LOVR_ENABLE_PHYSICS "Enable the physics module" ON)
|
||||
option(LOVR_ENABLE_THREAD "Enable the thread module" ON)
|
||||
option(LOVR_ENABLE_TIMER "Enable the timer module" ON)
|
||||
|
||||
option(LOVR_ENABLE_ENET "Bundle with lua-enet" ON)
|
||||
option(LOVR_ENABLE_JSON "Bundle with lua-cjson" ON)
|
||||
|
||||
option(LOVR_USE_LUAJIT "Use LuaJIT instead of Lua" ON)
|
||||
option(LOVR_USE_OPENAL "Enable the OpenAL backend for the audio module" ON)
|
||||
option(LOVR_USE_OPENVR "Enable the OpenVR backend for the headset module" ON)
|
||||
option(LOVR_USE_WEBVR "Enable the WebVR backend for the headset module" OFF)
|
||||
option(LOVR_USE_OCULUS "Enable the LibOVR backend for the headset module (be sure to also set LOVR_OCULUS_PATH to point to the Oculus SDK)" OFF)
|
||||
option(LOVR_USE_FAKE_HEADSET "Enable the keyboard/mouse backend for the headset module" ON)
|
||||
|
||||
option(LOVR_SYSTEM_PHYSFS "Use the system-provided PhysFS" OFF)
|
||||
option(LOVR_SYSTEM_ASSIMP "Use the system-provided Assimp" OFF)
|
||||
option(LOVR_SYSTEM_ENET "Use the system-provided enet" OFF)
|
||||
option(LOVR_SYSTEM_GLFW "Use the system-provided glfw" OFF)
|
||||
option(LOVR_SYSTEM_LUA "Use the system-provided Lua" OFF)
|
||||
option(LOVR_SYSTEM_ODE "Use the system-provided ODE" OFF)
|
||||
option(LOVR_SYSTEM_OPENAL "Use the system-provided OpenAL" OFF)
|
||||
|
||||
# Setup
|
||||
if(EMSCRIPTEN)
|
||||
string(CONCAT LOVR_EMSCRIPTEN_FLAGS
|
||||
|
@ -25,164 +55,174 @@ if(EMSCRIPTEN)
|
|||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${LOVR_EMSCRIPTEN_FLAGS}")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LOVR_EMSCRIPTEN_FLAGS}")
|
||||
set(CMAKE_EXECUTABLE_SUFFIX ".html")
|
||||
set(LOVR_USE_WEBVR ON)
|
||||
set(LOVR_USE_OPENVR OFF)
|
||||
set(LOVR_USE_OCULUS OFF)
|
||||
elseif(UNIX)
|
||||
find_package(PkgConfig REQUIRED)
|
||||
if(APPLE)
|
||||
set(CMAKE_MACOSX_RPATH 1)
|
||||
endif()
|
||||
find_package(PkgConfig)
|
||||
endif()
|
||||
|
||||
# PhysicsFS
|
||||
set(PHYSFS_BUILD_STATIC OFF CACHE BOOL "")
|
||||
set(PHYSFS_ARCHIVE_7Z OFF CACHE BOOL "")
|
||||
set(PHYSFS_ARCHIVE_GRP OFF CACHE BOOL "")
|
||||
set(PHYSFS_ARCHIVE_WAD OFF CACHE BOOL "")
|
||||
set(PHYSFS_ARCHIVE_HOG OFF CACHE BOOL "")
|
||||
set(PHYSFS_ARCHIVE_MVL OFF CACHE BOOL "")
|
||||
set(PHYSFS_ARCHIVE_QPAK OFF CACHE BOOL "")
|
||||
set(PHYSFS_ARCHIVE_SLB OFF CACHE BOOL "")
|
||||
set(PHYSFS_ARCHIVE_ISO9660 OFF CACHE BOOL "")
|
||||
set(PHYSFS_ARCHIVE_VDF OFF CACHE BOOL "")
|
||||
set(PHYSFS_BUILD_TEST OFF CACHE BOOL "")
|
||||
set(PHYSFS_BUILD_WX_TEST FALSE CACHE BOOL "")
|
||||
if(EMSCRIPTEN)
|
||||
add_subdirectory(deps/physfs physfs)
|
||||
include_directories(deps/physfs/src)
|
||||
set(LOVR_PHYSFS physfs)
|
||||
elseif(WIN32)
|
||||
add_subdirectory(deps/physfs physfs)
|
||||
include_directories(deps/physfs/src)
|
||||
set(LOVR_PHYSFS physfs)
|
||||
else()
|
||||
find_package(PhysFS REQUIRED)
|
||||
include_directories(${PHYSFS_INCLUDE_DIR})
|
||||
set(LOVR_PHYSFS ${PHYSFS_LIBRARY})
|
||||
if(LOVR_ENABLE_FILESYSTEM)
|
||||
if(LOVR_SYSTEM_PHYSFS)
|
||||
find_package(PhysFS REQUIRED)
|
||||
include_directories(${PHYSFS_INCLUDE_DIR})
|
||||
set(LOVR_PHYSFS ${PHYSFS_LIBRARY})
|
||||
else()
|
||||
set(PHYSFS_BUILD_STATIC OFF CACHE BOOL "")
|
||||
set(PHYSFS_ARCHIVE_7Z OFF CACHE BOOL "")
|
||||
set(PHYSFS_ARCHIVE_GRP OFF CACHE BOOL "")
|
||||
set(PHYSFS_ARCHIVE_WAD OFF CACHE BOOL "")
|
||||
set(PHYSFS_ARCHIVE_HOG OFF CACHE BOOL "")
|
||||
set(PHYSFS_ARCHIVE_MVL OFF CACHE BOOL "")
|
||||
set(PHYSFS_ARCHIVE_QPAK OFF CACHE BOOL "")
|
||||
set(PHYSFS_ARCHIVE_SLB OFF CACHE BOOL "")
|
||||
set(PHYSFS_ARCHIVE_ISO9660 OFF CACHE BOOL "")
|
||||
set(PHYSFS_ARCHIVE_VDF OFF CACHE BOOL "")
|
||||
set(PHYSFS_BUILD_TEST OFF CACHE BOOL "")
|
||||
set(PHYSFS_BUILD_WX_TEST FALSE CACHE BOOL "")
|
||||
add_subdirectory(deps/physfs physfs)
|
||||
include_directories(deps/physfs/src)
|
||||
set(LOVR_PHYSFS physfs)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Assimp
|
||||
set(ASSIMP_BUILD_ASSIMP_TOOLS OFF CACHE BOOL "")
|
||||
set(ASSIMP_BUILD_TESTS OFF CACHE BOOL "")
|
||||
set(ASSIMP_NO_EXPORT ON CACHE BOOL "")
|
||||
set(ASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT OFF CACHE BOOL "")
|
||||
set(ASSIMP_BUILD_FBX_IMPORTER ON CACHE BOOL "")
|
||||
set(ASSIMP_BUILD_GLTF_IMPORTER ON CACHE BOOL "")
|
||||
set(ASSIMP_BUILD_OBJ_IMPORTER ON CACHE BOOL "")
|
||||
if(EMSCRIPTEN)
|
||||
set(ZLIB_FOUND 1)
|
||||
set(ZLIB_LIBRARIES "-s USE_ZLIB=1")
|
||||
set(ZLIB_INCLUDE_DIR "assimp/contrib/zlib")
|
||||
add_subdirectory(deps/assimp assimp)
|
||||
include_directories(deps/assimp/include ${CMAKE_BINARY_DIR}/assimp/include)
|
||||
set(LOVR_ASSIMP assimp)
|
||||
elseif(WIN32)
|
||||
add_subdirectory(deps/assimp assimp)
|
||||
include_directories(deps/assimp/include ${CMAKE_BINARY_DIR}/assimp/include)
|
||||
set(LOVR_ASSIMP assimp)
|
||||
else()
|
||||
pkg_search_module(ASSIMP REQUIRED assimp)
|
||||
include_directories(${ASSIMP_INCLUDE_DIRS})
|
||||
set(LOVR_ASSIMP ${ASSIMP_LIBRARIES})
|
||||
if(LOVR_ENABLE_DATA)
|
||||
if(LOVR_SYSTEM_ASSIMP)
|
||||
pkg_search_module(ASSIMP REQUIRED assimp)
|
||||
include_directories(${ASSIMP_INCLUDE_DIRS})
|
||||
set(LOVR_ASSIMP ${ASSIMP_LIBRARIES})
|
||||
else()
|
||||
if(EMSCRIPTEN)
|
||||
set(ZLIB_FOUND 1)
|
||||
set(ZLIB_LIBRARIES "-s USE_ZLIB=1")
|
||||
set(ZLIB_INCLUDE_DIR "assimp/contrib/zlib")
|
||||
endif()
|
||||
set(ASSIMP_BUILD_ASSIMP_TOOLS OFF CACHE BOOL "")
|
||||
set(ASSIMP_BUILD_TESTS OFF CACHE BOOL "")
|
||||
set(ASSIMP_NO_EXPORT ON CACHE BOOL "")
|
||||
set(ASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT OFF CACHE BOOL "")
|
||||
set(ASSIMP_BUILD_FBX_IMPORTER ON CACHE BOOL "")
|
||||
set(ASSIMP_BUILD_GLTF_IMPORTER ON CACHE BOOL "")
|
||||
set(ASSIMP_BUILD_OBJ_IMPORTER ON CACHE BOOL "")
|
||||
add_subdirectory(deps/assimp assimp)
|
||||
include_directories(deps/assimp/include ${CMAKE_BINARY_DIR}/assimp/include)
|
||||
set(LOVR_ASSIMP assimp)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# enet
|
||||
if(EMSCRIPTEN)
|
||||
set(HAVE_HAS_SOCKLEN_T TRUE CACHE BOOL "")
|
||||
add_definitions(-D__APPLE__)
|
||||
add_subdirectory(deps/enet enet)
|
||||
include_directories(deps/enet/include)
|
||||
set(LOVR_ENET enet)
|
||||
remove_definitions(-D__APPLE__)
|
||||
else()
|
||||
add_subdirectory(deps/enet enet)
|
||||
include_directories(deps/enet/include)
|
||||
set(LOVR_ENET enet)
|
||||
if(WIN32)
|
||||
set(LOVR_ENET ${LOVR_ENET} ws2_32 winmm)
|
||||
if(LOVR_ENABLE_ENET)
|
||||
if(LOVR_SYSTEM_ENET)
|
||||
pkg_search_module(ENET REQUIRED enet)
|
||||
include_directories(${ENET_INCLUDE_DIRS})
|
||||
set(LOVR_ENET ${ENET_LIBRARIES})
|
||||
else()
|
||||
if(EMSCRIPTEN)
|
||||
set(HAVE_HAS_SOCKLEN_T TRUE CACHE BOOL "")
|
||||
endif()
|
||||
add_subdirectory(deps/enet enet)
|
||||
include_directories(deps/enet/include)
|
||||
set(LOVR_ENET enet)
|
||||
if(WIN32)
|
||||
set(LOVR_ENET ${LOVR_ENET} ws2_32 winmm)
|
||||
endif()
|
||||
if(EMSCRIPTEN)
|
||||
target_compile_definitions(enet PRIVATE __APPLE__)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# GLFW
|
||||
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "")
|
||||
set(GLFW_BUILD_TESTS OFF CACHE BOOL "")
|
||||
set(GLFW_BUILD_DOCS OFF CACHE BOOL "")
|
||||
if(WIN32)
|
||||
add_subdirectory(deps/glfw glfw)
|
||||
include_directories(deps/glfw/include)
|
||||
set(LOVR_GLFW glfw ${GLFW_LIBRARIES})
|
||||
elseif(NOT EMSCRIPTEN)
|
||||
pkg_search_module(GLFW REQUIRED glfw3)
|
||||
include_directories(${GLFW_INCLUDE_DIRS})
|
||||
set(LOVR_GLFW ${GLFW_LIBRARIES})
|
||||
if(NOT EMSCRIPTEN)
|
||||
if(LOVR_SYSTEM_GLFW)
|
||||
pkg_search_module(GLFW REQUIRED glfw3)
|
||||
include_directories(${GLFW_INCLUDE_DIRS})
|
||||
set(LOVR_GLFW ${GLFW_LIBRARIES})
|
||||
else()
|
||||
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "")
|
||||
set(GLFW_BUILD_TESTS OFF CACHE BOOL "")
|
||||
set(GLFW_BUILD_DOCS OFF CACHE BOOL "")
|
||||
add_subdirectory(deps/glfw glfw)
|
||||
include_directories(deps/glfw/include)
|
||||
set(LOVR_GLFW glfw ${GLFW_LIBRARIES})
|
||||
endif()
|
||||
unset(LIB_SUFFIX CACHE)
|
||||
endif()
|
||||
unset(LIB_SUFFIX CACHE)
|
||||
|
||||
# Lua
|
||||
if(EMSCRIPTEN)
|
||||
option(LUA_USE_RELATIVE_LOADLIB OFF)
|
||||
option(LUA_USE_ULONGJMP OFF)
|
||||
option(LUA_USE_POPEN OFF)
|
||||
add_subdirectory(deps/lua lua)
|
||||
set_target_properties(lua luac liblua liblua_static PROPERTIES EXCLUDE_FROM_ALL 1)
|
||||
include_directories(deps/lua/src ${CMAKE_BINARY_DIR}/lua)
|
||||
set(LOVR_LUA liblua_static)
|
||||
elseif(WIN32)
|
||||
add_subdirectory(deps/luajit luajit)
|
||||
include_directories(deps/luajit/src ${CMAKE_BINARY_DIR}/luajit)
|
||||
set(LOVR_LUA liblua)
|
||||
else()
|
||||
if(LOVR_USE_LUAJIT AND NOT EMSCRIPTEN)
|
||||
if (APPLE)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pagezero_size 10000 -image_base 100000000")
|
||||
endif()
|
||||
pkg_search_module(LUAJIT REQUIRED luajit)
|
||||
include_directories(${LUAJIT_INCLUDE_DIRS})
|
||||
set(LOVR_LUA ${LUAJIT_LIBRARIES})
|
||||
if(LOVR_SYSTEM_LUA)
|
||||
pkg_search_module(LUAJIT REQUIRED luajit)
|
||||
include_directories(${LUAJIT_INCLUDE_DIRS})
|
||||
set(LOVR_LUA ${LUAJIT_LIBRARIES})
|
||||
else()
|
||||
add_subdirectory(deps/luajit luajit)
|
||||
include_directories(deps/luajit/src ${CMAKE_BINARY_DIR}/luajit)
|
||||
set(LOVR_LUA liblua)
|
||||
endif()
|
||||
set_target_properties(luajit minilua liblua PROPERTIES EXCLUDE_FROM_ALL 1)
|
||||
if(WIN32)
|
||||
set_target_properties(wluajit PROPERTIES EXCLUDE_FROM_ALL 1)
|
||||
endif()
|
||||
else()
|
||||
if(EMSCRIPTEN)
|
||||
option(LUA_USE_RELATIVE_LOADLIB OFF)
|
||||
option(LUA_USE_ULONGJMP OFF)
|
||||
option(LUA_USE_POPEN OFF)
|
||||
endif()
|
||||
if(LOVR_SYSTEM_LUA)
|
||||
pkg_search_module(LUA REQUIRED lua)
|
||||
include_directories(${LUA_INCLUDE_DIRS})
|
||||
set(LOVR_LUA ${LUA_LIBRARIES})
|
||||
else()
|
||||
add_subdirectory(deps/lua lua)
|
||||
include_directories(deps/lua/src ${CMAKE_BINARY_DIR}/lua)
|
||||
set(LOVR_LUA liblua_static)
|
||||
set_target_properties(lua luac liblua liblua_static PROPERTIES EXCLUDE_FROM_ALL 1)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# MSDF
|
||||
set(BUILD_SHARED_LIBS OFF)
|
||||
add_subdirectory(deps/msdfgen lib_msdfgen)
|
||||
set(BUILD_SHARED_LIBS ON)
|
||||
include_directories(deps/msdfgen)
|
||||
set(LOVR_MSDF lib_msdfgen)
|
||||
if(LOVR_ENABLE_DATA)
|
||||
set(BUILD_SHARED_LIBS OFF)
|
||||
add_subdirectory(deps/msdfgen lib_msdfgen)
|
||||
set(BUILD_SHARED_LIBS ON)
|
||||
include_directories(deps/msdfgen)
|
||||
set(LOVR_MSDF lib_msdfgen)
|
||||
endif()
|
||||
|
||||
# ODE
|
||||
if(EMSCRIPTEN)
|
||||
set(ODE_BUILD_SHARED OFF CACHE BOOL "")
|
||||
add_subdirectory(deps/ode ode)
|
||||
set_target_properties(ode PROPERTIES COMPILE_FLAGS "-Wno-unused-volatile-lvalue -Wno-array-bounds -Wno-undefined-var-template")
|
||||
include_directories(deps/ode/include "${CMAKE_CURRENT_BINARY_DIR}/ode/include")
|
||||
set(LOVR_ODE ode)
|
||||
elseif(WIN32)
|
||||
set(ODE_BUILD_SHARED ON CACHE BOOL "")
|
||||
add_subdirectory(deps/ode ode)
|
||||
include_directories(deps/ode/include "${CMAKE_CURRENT_BINARY_DIR}/ode/include")
|
||||
set(LOVR_ODE ode)
|
||||
else()
|
||||
pkg_search_module(ODE REQUIRED ode)
|
||||
include_directories(${ODE_INCLUDE_DIRS})
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lstdc++")
|
||||
if(APPLE)
|
||||
if(LOVR_ENABLE_PHYSICS)
|
||||
if(LOVR_SYSTEM_ODE)
|
||||
pkg_search_module(ODE REQUIRED ode)
|
||||
pkg_search_module(CCD REQUIRED ccd)
|
||||
include_directories(${ODE_INCLUDE_DIRS} ${CCD_INCLUDE_DIRS})
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lstdc++")
|
||||
set(LOVR_ODE ode ccd)
|
||||
else()
|
||||
if(EMSCRIPTEN)
|
||||
set(ODE_BUILD_SHARED OFF CACHE BOOL "")
|
||||
else()
|
||||
set(ODE_BUILD_SHARED ON CACHE BOOL "")
|
||||
endif()
|
||||
add_subdirectory(deps/ode ode)
|
||||
set_target_properties(ode PROPERTIES COMPILE_FLAGS "-Wno-unused-volatile-lvalue -Wno-array-bounds -Wno-undefined-var-template")
|
||||
include_directories(deps/ode/include "${CMAKE_CURRENT_BINARY_DIR}/ode/include")
|
||||
set(LOVR_ODE ode)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# OpenAL
|
||||
set(USE_OPENAL ON CACHE BOOL "If set to OFF, OpenAL is excluded and the behavior of lovr.audio is undefined")
|
||||
set(ALSOFT_UTILS OFF CACHE BOOL "")
|
||||
set(ALSOFT_EXAMPLES OFF CACHE BOOL "")
|
||||
set(ALSOFT_TESTS OFF CACHE BOOL "")
|
||||
|
||||
if(USE_OPENAL)
|
||||
add_definitions(-DUSE_OPENAL)
|
||||
set(LOVR_AUDIO_SRC src/audio/audio.c src/audio/source.c src/audio/microphone.c)
|
||||
|
||||
if(EMSCRIPTEN)
|
||||
include_directories(deps/openal-soft/include)
|
||||
elseif(WIN32)
|
||||
add_subdirectory(deps/openal-soft openal)
|
||||
include_directories(deps/openal-soft/include)
|
||||
set_target_properties(OpenAL PROPERTIES COMPILE_FLAGS "/wd4005 /wd4098")
|
||||
set(LOVR_OPENAL OpenAL)
|
||||
else()
|
||||
if(LOVR_ENABLE_AUDIO AND LOVR_USE_OPENAL)
|
||||
if(LOVR_SYSTEM_OPENAL)
|
||||
pkg_search_module(OPENAL openal-soft)
|
||||
if (NOT OPENAL_FOUND)
|
||||
pkg_search_module(OPENAL openal)
|
||||
|
@ -194,9 +234,19 @@ if(USE_OPENAL)
|
|||
string(REPLACE ";" " " OPENAL_LDFLAGS_STR "${OPENAL_LDFLAGS}")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OPENAL_LDFLAGS_STR}")
|
||||
set(LOVR_OPENAL ${OPENAL_LIBRARIES})
|
||||
else()
|
||||
set(ALSOFT_UTILS OFF CACHE BOOL "")
|
||||
set(ALSOFT_EXAMPLES OFF CACHE BOOL "")
|
||||
set(ALSOFT_TESTS OFF CACHE BOOL "")
|
||||
if(NOT EMSCRIPTEN)
|
||||
add_subdirectory(deps/openal-soft openal)
|
||||
set(LOVR_OPENAL OpenAL)
|
||||
if(WIN32)
|
||||
set_target_properties(OpenAL PROPERTIES COMPILE_FLAGS "/wd4005 /wd4098")
|
||||
endif()
|
||||
endif()
|
||||
include_directories(deps/openal-soft/include)
|
||||
endif()
|
||||
else()
|
||||
set(LOVR_AUDIO_SRC src/audio/null.c)
|
||||
endif()
|
||||
|
||||
# OpenGL
|
||||
|
@ -207,7 +257,7 @@ if(NOT WIN32 AND NOT EMSCRIPTEN)
|
|||
endif()
|
||||
|
||||
# OpenVR
|
||||
if(NOT EMSCRIPTEN)
|
||||
if(LOVR_ENABLE_HEADSET AND LOVR_USE_OPENVR)
|
||||
set(BUILD_SHARED ON CACHE BOOL "")
|
||||
set(BUILD_UNIVERSAL OFF CACHE BOOL "")
|
||||
include_directories(deps/openvr/headers)
|
||||
|
@ -226,20 +276,17 @@ if(NOT EMSCRIPTEN)
|
|||
endif()
|
||||
|
||||
# Oculus SDK
|
||||
if (NOT EMSCRIPTEN AND LOVR_OCULUS_PATH)
|
||||
if (LOVR_ENABLE_HEADSET AND LOVR_USE_OCULUS AND LOVR_OCULUS_PATH)
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
set(OCULUS_BUILD_TYPE "Release")
|
||||
else()
|
||||
set(OCULUS_BUILD_TYPE "Debug")
|
||||
endif()
|
||||
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(OCULUS_ARCH "x64")
|
||||
else()
|
||||
set(OCULUS_ARCH "Win32")
|
||||
endif()
|
||||
|
||||
add_definitions(-DUSE_OCULUS)
|
||||
include_directories("${LOVR_OCULUS_PATH}/LibOVR/Include")
|
||||
link_directories("${LOVR_OCULUS_PATH}/LibOVR/Lib/Windows/${OCULUS_ARCH}/${OCULUS_BUILD_TYPE}/VS2017")
|
||||
set(LOVR_OCULUS LibOVR)
|
||||
|
@ -253,105 +300,195 @@ if(NOT WIN32)
|
|||
endif()
|
||||
|
||||
# LÖVR source
|
||||
if(LOVR_ENABLE_AUDIO)
|
||||
add_definitions(-DLOVR_ENABLE_AUDIO)
|
||||
set(LOVR_AUDIO_SRC
|
||||
src/api/audio.c
|
||||
src/api/types/source.c
|
||||
src/api/types/microphone.c
|
||||
)
|
||||
|
||||
if(LOVR_USE_OPENAL)
|
||||
add_definitions(-DLOVR_USE_OPENAL)
|
||||
set(LOVR_AUDIO_SRC ${LOVR_AUDIO_SRC} src/audio/audio.c src/audio/source.c src/audio/microphone.c)
|
||||
else()
|
||||
set(LOVR_AUDIO_SRC ${LOVR_AUDIO_SRC} src/audio/null.c)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(LOVR_ENABLE_DATA)
|
||||
add_definitions(-DLOVR_ENABLE_DATA)
|
||||
set(LOVR_DATA_SRC
|
||||
src/data/audioStream.c
|
||||
src/data/blob.c
|
||||
src/data/modelData.c
|
||||
src/data/rasterizer.c
|
||||
src/data/soundData.c
|
||||
src/data/textureData.c
|
||||
src/data/vertexData.c
|
||||
src/api/data.c
|
||||
src/api/types/audioStream.c
|
||||
src/api/types/blob.c
|
||||
src/api/types/modelData.c
|
||||
src/api/types/rasterizer.c
|
||||
src/api/types/soundData.c
|
||||
src/api/types/textureData.c
|
||||
src/api/types/vertexData.c
|
||||
src/lib/stb/stb_image.c
|
||||
src/lib/stb/stb_image_write.c
|
||||
src/lib/stb/stb_truetype.c
|
||||
src/lib/stb/stb_vorbis.c
|
||||
)
|
||||
endif()
|
||||
|
||||
if(LOVR_ENABLE_EVENT)
|
||||
add_definitions(-DLOVR_ENABLE_EVENT)
|
||||
set(LOVR_EVENT_SRC
|
||||
src/event/event.c
|
||||
src/api/event.c
|
||||
)
|
||||
endif()
|
||||
|
||||
if(LOVR_ENABLE_FILESYSTEM)
|
||||
add_definitions(-DLOVR_ENABLE_FILESYSTEM)
|
||||
set(LOVR_FILESYSTEM_SRC
|
||||
src/filesystem/file.c
|
||||
src/filesystem/filesystem.c
|
||||
src/api/filesystem.c
|
||||
)
|
||||
endif()
|
||||
|
||||
if(LOVR_ENABLE_GRAPHICS)
|
||||
add_definitions(-DLOVR_ENABLE_GRAPHICS)
|
||||
set(LOVR_GRAPHICS_SRC
|
||||
src/graphics/animator.c
|
||||
src/graphics/font.c
|
||||
src/graphics/graphics.c
|
||||
src/graphics/material.c
|
||||
src/graphics/model.c
|
||||
src/graphics/opengl.c
|
||||
src/api/graphics.c
|
||||
src/api/types/animator.c
|
||||
src/api/types/canvas.c
|
||||
src/api/types/font.c
|
||||
src/api/types/material.c
|
||||
src/api/types/mesh.c
|
||||
src/api/types/model.c
|
||||
src/api/types/shader.c
|
||||
src/api/types/shaderBlock.c
|
||||
src/api/types/texture.c
|
||||
src/resources/shaders.c
|
||||
src/lib/glad/glad.c
|
||||
)
|
||||
endif()
|
||||
|
||||
if(LOVR_ENABLE_HEADSET)
|
||||
add_definitions(-DLOVR_ENABLE_HEADSET)
|
||||
set(LOVR_HEADSET_SRC
|
||||
src/api/headset.c
|
||||
src/api/types/controller.c
|
||||
src/headset/headset.c
|
||||
)
|
||||
|
||||
if(LOVR_USE_OPENVR)
|
||||
add_definitions(-DLOVR_USE_OPENVR)
|
||||
set(LOVR_HEADSET_SRC ${LOVR_HEADSET_SRC} src/headset/openvr.c)
|
||||
endif()
|
||||
if(LOVR_USE_OCULUS)
|
||||
add_definitions(-DLOVR_USE_OCULUS)
|
||||
set(LOVR_HEADSET_SRC ${LOVR_HEADSET_SRC} src/headset/oculus.c)
|
||||
endif()
|
||||
if(LOVR_USE_WEBVR)
|
||||
add_definitions(-DLOVR_USE_WEBVR)
|
||||
set(LOVR_HEADSET_SRC ${LOVR_HEADSET_SRC} src/headset/webvr.c)
|
||||
endif()
|
||||
if(LOVR_USE_FAKE_HEADSET)
|
||||
add_definitions(-DLOVR_USE_FAKE_HEADSET)
|
||||
set(LOVR_HEADSET_SRC ${LOVR_HEADSET_SRC} src/headset/fake.c)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(LOVR_ENABLE_MATH)
|
||||
add_definitions(-DLOVR_ENABLE_MATH)
|
||||
set(LOVR_MATH_SRC
|
||||
src/math/mat4.c
|
||||
src/math/math.c
|
||||
src/math/quat.c
|
||||
src/math/randomGenerator.c
|
||||
src/math/transform.c
|
||||
src/math/vec3.c
|
||||
src/api/math.c
|
||||
src/api/types/randomGenerator.c
|
||||
src/api/types/transform.c
|
||||
src/lib/noise1234/noise1234.c
|
||||
)
|
||||
endif()
|
||||
|
||||
if(LOVR_ENABLE_PHYSICS)
|
||||
add_definitions(-DLOVR_ENABLE_PHYSICS)
|
||||
set(LOVR_PHYSICS_SRC
|
||||
src/physics/physics.c
|
||||
src/api/physics.c
|
||||
src/api/types/collider.c
|
||||
src/api/types/joints.c
|
||||
src/api/types/shapes.c
|
||||
src/api/types/world.c
|
||||
)
|
||||
endif()
|
||||
|
||||
if(LOVR_ENABLE_THREAD)
|
||||
add_definitions(-DLOVR_ENABLE_THREAD)
|
||||
set(LOVR_THREAD_SRC
|
||||
src/thread/channel.c
|
||||
src/thread/thread.c
|
||||
src/api/thread.c
|
||||
src/api/types/channel.c
|
||||
src/api/types/thread.c
|
||||
src/lib/tinycthread/tinycthread.c
|
||||
)
|
||||
endif()
|
||||
|
||||
if(LOVR_ENABLE_TIMER)
|
||||
add_definitions(-DLOVR_ENABLE_TIMER)
|
||||
set(LOVR_TIMER_SRC src/timer/timer.c src/api/timer.c)
|
||||
endif()
|
||||
|
||||
if(LOVR_ENABLE_ENET)
|
||||
add_definitions(-DLOVR_ENABLE_ENET)
|
||||
set(LOVR_ENET_SRC src/lib/lua-enet/enet.c)
|
||||
endif()
|
||||
|
||||
if(LOVR_ENABLE_JSON)
|
||||
add_definitions(-DLOVR_ENABLE_JSON)
|
||||
set(LOVR_JSON_SRC
|
||||
src/lib/lua-cjson/fpconv.c
|
||||
src/lib/lua-cjson/lua_cjson.c
|
||||
src/lib/lua-cjson/strbuf.c
|
||||
)
|
||||
endif()
|
||||
|
||||
set(LOVR_SRC
|
||||
src/api/audio.c
|
||||
src/api/data.c
|
||||
src/api/event.c
|
||||
src/api/filesystem.c
|
||||
src/api/graphics.c
|
||||
src/api/headset.c
|
||||
src/api/lovr.c
|
||||
src/api/math.c
|
||||
src/api/physics.c
|
||||
src/api/thread.c
|
||||
src/api/timer.c
|
||||
src/api/types/animator.c
|
||||
src/api/types/audioStream.c
|
||||
src/api/types/blob.c
|
||||
src/api/types/canvas.c
|
||||
src/api/types/channel.c
|
||||
src/api/types/collider.c
|
||||
src/api/types/controller.c
|
||||
src/api/types/font.c
|
||||
src/api/types/joints.c
|
||||
src/api/types/material.c
|
||||
src/api/types/mesh.c
|
||||
src/api/types/microphone.c
|
||||
src/api/types/model.c
|
||||
src/api/types/modelData.c
|
||||
src/api/types/randomGenerator.c
|
||||
src/api/types/rasterizer.c
|
||||
src/api/types/shader.c
|
||||
src/api/types/shaderBlock.c
|
||||
src/api/types/shapes.c
|
||||
src/api/types/soundData.c
|
||||
src/api/types/source.c
|
||||
src/api/types/texture.c
|
||||
src/api/types/textureData.c
|
||||
src/api/types/thread.c
|
||||
src/api/types/transform.c
|
||||
src/api/types/vertexData.c
|
||||
src/api/types/world.c
|
||||
src/data/audioStream.c
|
||||
src/data/blob.c
|
||||
src/data/modelData.c
|
||||
src/data/rasterizer.c
|
||||
src/data/soundData.c
|
||||
src/data/textureData.c
|
||||
src/data/vertexData.c
|
||||
src/event/event.c
|
||||
src/filesystem/file.c
|
||||
src/filesystem/filesystem.c
|
||||
src/graphics/animator.c
|
||||
src/graphics/font.c
|
||||
src/graphics/graphics.c
|
||||
src/graphics/material.c
|
||||
src/graphics/model.c
|
||||
src/graphics/opengl.c
|
||||
src/headset/fake.c
|
||||
src/headset/headset.c
|
||||
src/lib/glad/glad.c
|
||||
src/lib/lua-cjson/fpconv.c
|
||||
src/lib/lua-cjson/lua_cjson.c
|
||||
src/lib/lua-cjson/strbuf.c
|
||||
src/lib/lua-enet/enet.c
|
||||
src/lib/map/map.c
|
||||
src/lib/noise1234/noise1234.c
|
||||
src/lib/stb/stb_image.c
|
||||
src/lib/stb/stb_image_write.c
|
||||
src/lib/stb/stb_truetype.c
|
||||
src/lib/stb/stb_vorbis.c
|
||||
src/lib/tinycthread/tinycthread.c
|
||||
src/lib/vec/vec.c
|
||||
src/lovr.c
|
||||
src/luax.c
|
||||
src/main.c
|
||||
src/math/mat4.c
|
||||
src/math/math.c
|
||||
src/math/quat.c
|
||||
src/math/randomGenerator.c
|
||||
src/math/transform.c
|
||||
src/math/vec3.c
|
||||
src/physics/physics.c
|
||||
src/resources/shaders.c
|
||||
src/thread/channel.c
|
||||
src/thread/thread.c
|
||||
src/timer/timer.c
|
||||
src/util.c
|
||||
${LOVR_AUDIO_SRC}
|
||||
${LOVR_DATA_SRC}
|
||||
${LOVR_EVENT_SRC}
|
||||
${LOVR_FILESYSTEM_SRC}
|
||||
${LOVR_GRAPHICS_SRC}
|
||||
${LOVR_HEADSET_SRC}
|
||||
${LOVR_MATH_SRC}
|
||||
${LOVR_PHYSICS_SRC}
|
||||
${LOVR_THREAD_SRC}
|
||||
${LOVR_TIMER_SRC}
|
||||
${LOVR_ENET_SRC}
|
||||
${LOVR_JSON_SRC}
|
||||
)
|
||||
|
||||
# Conditional sources
|
||||
if(EMSCRIPTEN)
|
||||
set(LOVR_SRC ${LOVR_SRC} src/headset/webvr.c)
|
||||
else()
|
||||
set(LOVR_SRC ${LOVR_SRC} src/headset/openvr.c)
|
||||
|
||||
if(LOVR_OCULUS_PATH)
|
||||
set(LOVR_SRC ${LOVR_SRC} src/headset/oculus.c)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# LÖVR
|
||||
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)
|
||||
add_executable(lovr ${LOVR_SRC})
|
||||
|
@ -383,20 +520,20 @@ if(WIN32)
|
|||
endif()
|
||||
|
||||
function(move_dll ARG_TARGET)
|
||||
add_custom_command(TARGET lovr POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
$<TARGET_FILE:${ARG_TARGET}>
|
||||
${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>/$<TARGET_FILE_NAME:${ARG_TARGET}>
|
||||
)
|
||||
if(TARGET ${ARG_TARGET})
|
||||
add_custom_command(TARGET lovr POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
$<TARGET_FILE:${ARG_TARGET}>
|
||||
${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>/$<TARGET_FILE_NAME:${ARG_TARGET}>
|
||||
)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
move_dll(${LOVR_ASSIMP})
|
||||
move_dll(${LOVR_GLFW})
|
||||
move_dll(${LOVR_LUA})
|
||||
move_dll(${LOVR_ODE})
|
||||
if (LOVR_OPENAL)
|
||||
move_dll(${LOVR_OPENAL})
|
||||
endif()
|
||||
move_dll(${LOVR_OPENAL})
|
||||
move_dll(${LOVR_OPENVR})
|
||||
move_dll(${LOVR_PHYSFS})
|
||||
endif()
|
||||
|
|
|
@ -11,18 +11,42 @@ int l_lovrInit(lua_State* L) {
|
|||
lua_pushlstring(L, (const char*) logo_png, logo_png_len);
|
||||
lua_setfield(L, -2, "_logo");
|
||||
|
||||
#ifdef LOVR_ENABLE_AUDIO
|
||||
luax_preloadmodule(L, "lovr.audio", l_lovrAudioInit);
|
||||
#endif
|
||||
#ifdef LOVR_ENABLE_DATA
|
||||
luax_preloadmodule(L, "lovr.data", l_lovrDataInit);
|
||||
#endif
|
||||
#ifdef LOVR_ENABLE_EVENT
|
||||
luax_preloadmodule(L, "lovr.event", l_lovrEventInit);
|
||||
#endif
|
||||
#ifdef LOVR_ENABLE_FILESYSTEM
|
||||
luax_preloadmodule(L, "lovr.filesystem", l_lovrFilesystemInit);
|
||||
#endif
|
||||
#ifdef LOVR_ENABLE_GRAPHICS
|
||||
luax_preloadmodule(L, "lovr.graphics", l_lovrGraphicsInit);
|
||||
#endif
|
||||
#ifdef LOVR_ENABLE_HEADSET
|
||||
luax_preloadmodule(L, "lovr.headset", l_lovrHeadsetInit);
|
||||
#endif
|
||||
#ifdef LOVR_ENABLE_MATH
|
||||
luax_preloadmodule(L, "lovr.math", l_lovrMathInit);
|
||||
#endif
|
||||
#ifdef LOVR_ENABLE_PHYSICS
|
||||
luax_preloadmodule(L, "lovr.physics", l_lovrPhysicsInit);
|
||||
#endif
|
||||
#ifdef LOVR_ENABLE_THREAD
|
||||
luax_preloadmodule(L, "lovr.thread", l_lovrThreadInit);
|
||||
#endif
|
||||
#ifdef LOVR_ENABLE_TIMER
|
||||
luax_preloadmodule(L, "lovr.timer", l_lovrTimerInit);
|
||||
luax_preloadmodule(L, "json", luaopen_cjson);
|
||||
#endif
|
||||
#ifdef LOVR_ENABLE_ENET
|
||||
luax_preloadmodule(L, "enet", luaopen_enet);
|
||||
#endif
|
||||
#ifdef LOVR_ENABLE_JSON
|
||||
luax_preloadmodule(L, "json", luaopen_cjson);
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,18 +1,16 @@
|
|||
#include "audio/source.h"
|
||||
#include "audio/microphone.h"
|
||||
#include "lib/vec/vec.h"
|
||||
#ifdef USE_OPENAL
|
||||
#include <AL/al.h>
|
||||
#include <AL/alc.h>
|
||||
#include <AL/alext.h>
|
||||
#endif
|
||||
#include <stdbool.h>
|
||||
|
||||
#pragma once
|
||||
|
||||
#define MAX_MICROPHONES 8
|
||||
|
||||
#ifdef USE_OPENAL
|
||||
#ifdef LOVR_USE_OPENAL
|
||||
#include <AL/al.h>
|
||||
#include <AL/alc.h>
|
||||
#include <AL/alext.h>
|
||||
typedef struct {
|
||||
bool initialized;
|
||||
ALCdevice* device;
|
||||
|
|
|
@ -1,14 +1,12 @@
|
|||
#include "util.h"
|
||||
#include "data/soundData.h"
|
||||
#if USE_OPENAL
|
||||
#include <AL/al.h>
|
||||
#include <AL/alc.h>
|
||||
#endif
|
||||
#include <stdbool.h>
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifdef USE_OPENAL
|
||||
#ifdef LOVR_USE_OPENAL
|
||||
#include <AL/al.h>
|
||||
#include <AL/alc.h>
|
||||
typedef struct {
|
||||
Ref ref;
|
||||
ALCdevice* device;
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
#include "data/audioStream.h"
|
||||
#include "data/soundData.h"
|
||||
#include "util.h"
|
||||
#ifdef USE_OPENAL
|
||||
#include <AL/al.h>
|
||||
#include <AL/alc.h>
|
||||
#endif
|
||||
#include <stdbool.h>
|
||||
|
||||
#pragma once
|
||||
|
@ -21,7 +17,9 @@ typedef enum {
|
|||
UNIT_SAMPLES
|
||||
} TimeUnit;
|
||||
|
||||
#ifdef USE_OPENAL
|
||||
#ifdef LOVR_USE_OPENAL
|
||||
#include <AL/al.h>
|
||||
#include <AL/alc.h>
|
||||
typedef struct {
|
||||
Ref ref;
|
||||
SourceType type;
|
||||
|
|
|
@ -12,13 +12,16 @@ void lovrHeadsetInit(HeadsetDriver* drivers, int count, float offset, int msaa)
|
|||
HeadsetInterface* interface = NULL;
|
||||
|
||||
switch (drivers[i]) {
|
||||
#ifdef LOVR_USE_FAKE_HEADSET
|
||||
case DRIVER_FAKE: interface = &lovrHeadsetFakeDriver; break;
|
||||
#ifndef EMSCRIPTEN
|
||||
#ifdef USE_OCULUS
|
||||
#endif
|
||||
#ifdef LOVR_USE_OCULUS
|
||||
case DRIVER_OCULUS: interface = &lovrHeadsetOculusDriver; break;
|
||||
#endif
|
||||
#ifdef LOVR_USE_OPENVR
|
||||
case DRIVER_OPENVR: interface = &lovrHeadsetOpenVRDriver; break;
|
||||
#else
|
||||
#endif
|
||||
#ifdef LOVR_USE_WEBVR
|
||||
case DRIVER_WEBVR: interface = &lovrHeadsetWebVRDriver; break;
|
||||
#endif
|
||||
default: break;
|
||||
|
|
|
@ -137,7 +137,7 @@ static void openvrPoll() {
|
|||
struct VREvent_t vrEvent;
|
||||
while (state.system->PollNextEvent(&vrEvent, sizeof(vrEvent))) {
|
||||
switch (vrEvent.eventType) {
|
||||
case EVREventType_VREvent_TrackedDeviceActivated:
|
||||
case EVREventType_VREvent_TrackedDeviceActivated: {
|
||||
uint32_t id = vrEvent.trackedDeviceIndex;
|
||||
if (openvrIsController(id)) {
|
||||
Controller* controller = lovrAlloc(Controller, free);
|
||||
|
@ -151,6 +151,7 @@ static void openvrPoll() {
|
|||
});
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case EVREventType_VREvent_TrackedDeviceDeactivated:
|
||||
for (int i = 0; i < state.controllers.length; i++) {
|
||||
|
|
18
src/lovr.c
18
src/lovr.c
|
@ -52,17 +52,33 @@ static void onGlfwError(int code, const char* description) {
|
|||
}
|
||||
|
||||
void lovrDestroy() {
|
||||
#ifdef LOVR_ENABLE_AUDIO
|
||||
lovrAudioDestroy();
|
||||
#endif
|
||||
#ifdef LOVR_ENABLE_EVENT
|
||||
lovrEventDestroy();
|
||||
#endif
|
||||
#ifdef LOVR_ENABLE_FILESYSTEM
|
||||
lovrFilesystemDestroy();
|
||||
#endif
|
||||
#ifdef LOVR_ENABLE_GRAPHICS
|
||||
lovrGraphicsDestroy();
|
||||
#endif
|
||||
#ifdef LOVR_ENABLE_GRAPHICS
|
||||
lovrHeadsetDestroy();
|
||||
#endif
|
||||
#ifdef LOVR_ENABLE_MATH
|
||||
lovrMathDestroy();
|
||||
#endif
|
||||
#ifdef LOVR_ENABLE_PHYSICS
|
||||
lovrPhysicsDestroy();
|
||||
#ifndef EMSCRIPTEN
|
||||
#endif
|
||||
#ifdef LOVR_ENABLE_THREAD
|
||||
lovrThreadDeinit();
|
||||
#endif
|
||||
#ifdef LOVR_ENABLE_TIMER
|
||||
lovrTimerDestroy();
|
||||
#endif
|
||||
}
|
||||
|
||||
bool lovrRun(int argc, char** argv, int* status) {
|
||||
|
|
|
@ -88,7 +88,7 @@ function lovr.boot()
|
|||
local modules = { 'audio', 'data', 'event', 'graphics', 'headset', 'math', 'physics', 'thread', 'timer' }
|
||||
for _, module in ipairs(modules) do
|
||||
if conf.modules[module] then
|
||||
lovr[module] = require('lovr.' .. module)
|
||||
lovr[module] = package.preload['lovr.' .. module] and require('lovr.' .. module)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -233,233 +233,236 @@ unsigned char boot_lua[] = {
|
|||
0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x5b, 0x6d, 0x6f, 0x64,
|
||||
0x75, 0x6c, 0x65, 0x5d, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x5b, 0x6d, 0x6f, 0x64,
|
||||
0x75, 0x6c, 0x65, 0x5d, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69,
|
||||
0x72, 0x65, 0x28, 0x27, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x27, 0x20, 0x2e,
|
||||
0x2e, 0x20, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x29, 0x0a, 0x20, 0x20,
|
||||
0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a,
|
||||
0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x68, 0x61, 0x6e, 0x64,
|
||||
0x6c, 0x65, 0x72, 0x73, 0x20, 0x3d, 0x20, 0x73, 0x65, 0x74, 0x6d, 0x65,
|
||||
0x74, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x28, 0x7b, 0x7d, 0x2c, 0x20,
|
||||
0x7b, 0x20, 0x5f, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20,
|
||||
0x6c, 0x6f, 0x76, 0x72, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x69, 0x66,
|
||||
0x20, 0x63, 0x6f, 0x6e, 0x66, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x74,
|
||||
0x68, 0x65, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x63, 0x6f,
|
||||
0x6e, 0x66, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x29, 0x20, 0x65, 0x6e, 0x64,
|
||||
0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x68, 0x61, 0x73, 0x4d, 0x61, 0x69,
|
||||
0x6e, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69,
|
||||
0x72, 0x65, 0x20, 0x27, 0x6d, 0x61, 0x69, 0x6e, 0x27, 0x20, 0x65, 0x6e,
|
||||
0x64, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c,
|
||||
0x6f, 0x76, 0x72, 0x2e, 0x72, 0x75, 0x6e, 0x28, 0x29, 0x0a, 0x65, 0x6e,
|
||||
0x64, 0x0a, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20,
|
||||
0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x72, 0x75, 0x6e, 0x28, 0x29, 0x0a, 0x20,
|
||||
0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x2e,
|
||||
0x73, 0x74, 0x65, 0x70, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20,
|
||||
0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x74, 0x68,
|
||||
0x65, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x6c, 0x6f, 0x61, 0x64,
|
||||
0x28, 0x61, 0x72, 0x67, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20,
|
||||
0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f,
|
||||
0x76, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x75, 0x6d,
|
||||
0x70, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20,
|
||||
0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x20, 0x61, 0x2c, 0x20, 0x62, 0x2c, 0x20,
|
||||
0x63, 0x2c, 0x20, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x72,
|
||||
0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x6f, 0x6c, 0x6c, 0x28,
|
||||
0x29, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69,
|
||||
0x66, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x27, 0x71,
|
||||
0x75, 0x69, 0x74, 0x27, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x28, 0x6e, 0x6f,
|
||||
0x74, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x71, 0x75, 0x69, 0x74, 0x20,
|
||||
0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e,
|
||||
0x71, 0x75, 0x69, 0x74, 0x28, 0x29, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e,
|
||||
0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
|
||||
0x75, 0x72, 0x6e, 0x20, 0x61, 0x20, 0x6f, 0x72, 0x20, 0x30, 0x0a, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x68,
|
||||
0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x73, 0x5b, 0x6e, 0x61, 0x6d, 0x65,
|
||||
0x5d, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e,
|
||||
0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x73, 0x5b, 0x6e, 0x61, 0x6d,
|
||||
0x65, 0x5d, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x2c, 0x20, 0x63, 0x2c, 0x20,
|
||||
0x64, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65,
|
||||
0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
|
||||
0x20, 0x64, 0x74, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x74,
|
||||
0x69, 0x6d, 0x65, 0x72, 0x2e, 0x73, 0x74, 0x65, 0x70, 0x28, 0x29, 0x0a,
|
||||
0x75, 0x6c, 0x65, 0x5d, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x61,
|
||||
0x67, 0x65, 0x2e, 0x70, 0x72, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x5b, 0x27,
|
||||
0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x27, 0x20, 0x2e, 0x2e, 0x20, 0x6d, 0x6f,
|
||||
0x64, 0x75, 0x6c, 0x65, 0x5d, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65,
|
||||
0x71, 0x75, 0x69, 0x72, 0x65, 0x28, 0x27, 0x6c, 0x6f, 0x76, 0x72, 0x2e,
|
||||
0x27, 0x20, 0x2e, 0x2e, 0x20, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x29,
|
||||
0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x65,
|
||||
0x6e, 0x64, 0x0a, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x68,
|
||||
0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x73, 0x20, 0x3d, 0x20, 0x73, 0x65,
|
||||
0x74, 0x6d, 0x65, 0x74, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x28, 0x7b,
|
||||
0x7d, 0x2c, 0x20, 0x7b, 0x20, 0x5f, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78,
|
||||
0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x20, 0x7d, 0x29, 0x0a, 0x20,
|
||||
0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x45, 0x72, 0x72, 0x6f,
|
||||
0x72, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72,
|
||||
0x28, 0x63, 0x6f, 0x6e, 0x66, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x29, 0x20,
|
||||
0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x68, 0x61, 0x73,
|
||||
0x4d, 0x61, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65,
|
||||
0x71, 0x75, 0x69, 0x72, 0x65, 0x20, 0x27, 0x6d, 0x61, 0x69, 0x6e, 0x27,
|
||||
0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72,
|
||||
0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x72, 0x75, 0x6e, 0x28, 0x29,
|
||||
0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69,
|
||||
0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x72, 0x75, 0x6e, 0x28,
|
||||
0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x74, 0x69, 0x6d,
|
||||
0x65, 0x72, 0x2e, 0x73, 0x74, 0x65, 0x70, 0x28, 0x29, 0x0a, 0x20, 0x20,
|
||||
0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x6c, 0x6f, 0x61, 0x64,
|
||||
0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x6c,
|
||||
0x6f, 0x61, 0x64, 0x28, 0x61, 0x72, 0x67, 0x29, 0x20, 0x65, 0x6e, 0x64,
|
||||
0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x75,
|
||||
0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20,
|
||||
0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e,
|
||||
0x70, 0x75, 0x6d, 0x70, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66,
|
||||
0x6f, 0x72, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x20, 0x61, 0x2c, 0x20,
|
||||
0x62, 0x2c, 0x20, 0x63, 0x2c, 0x20, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x6c,
|
||||
0x6f, 0x76, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x6f,
|
||||
0x6c, 0x6c, 0x28, 0x29, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x3d,
|
||||
0x20, 0x27, 0x71, 0x75, 0x69, 0x74, 0x27, 0x20, 0x61, 0x6e, 0x64, 0x20,
|
||||
0x28, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x71, 0x75,
|
||||
0x69, 0x74, 0x20, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f,
|
||||
0x76, 0x72, 0x2e, 0x71, 0x75, 0x69, 0x74, 0x28, 0x29, 0x29, 0x20, 0x74,
|
||||
0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x20, 0x6f, 0x72, 0x20,
|
||||
0x30, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76,
|
||||
0x72, 0x2e, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x73, 0x5b, 0x6e,
|
||||
0x61, 0x6d, 0x65, 0x5d, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x6c, 0x6f,
|
||||
0x76, 0x72, 0x2e, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x73, 0x5b,
|
||||
0x6e, 0x61, 0x6d, 0x65, 0x5d, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x2c, 0x20,
|
||||
0x63, 0x2c, 0x20, 0x64, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20,
|
||||
0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f,
|
||||
0x63, 0x61, 0x6c, 0x20, 0x64, 0x74, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76,
|
||||
0x72, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x73, 0x74, 0x65, 0x70,
|
||||
0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6c, 0x6f,
|
||||
0x76, 0x72, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x65, 0x74, 0x20, 0x74,
|
||||
0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f,
|
||||
0x76, 0x72, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x65, 0x74, 0x2e, 0x75,
|
||||
0x70, 0x64, 0x61, 0x74, 0x65, 0x28, 0x64, 0x74, 0x29, 0x0a, 0x20, 0x20,
|
||||
0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66,
|
||||
0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x20,
|
||||
0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c,
|
||||
0x6f, 0x76, 0x72, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x2e, 0x75, 0x70,
|
||||
0x64, 0x61, 0x74, 0x65, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x68, 0x65, 0x61,
|
||||
0x64, 0x73, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x61,
|
||||
0x75, 0x64, 0x69, 0x6f, 0x2e, 0x73, 0x65, 0x74, 0x4f, 0x72, 0x69, 0x65,
|
||||
0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x6c, 0x6f, 0x76, 0x72,
|
||||
0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x65, 0x74, 0x2e, 0x67, 0x65, 0x74,
|
||||
0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28,
|
||||
0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c,
|
||||
0x6f, 0x76, 0x72, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x2e, 0x73, 0x65,
|
||||
0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x6c, 0x6f,
|
||||
0x76, 0x72, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x65, 0x74, 0x2e, 0x67,
|
||||
0x65, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29,
|
||||
0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f,
|
||||
0x76, 0x72, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x2e, 0x73, 0x65, 0x74,
|
||||
0x56, 0x65, 0x6c, 0x6f, 0x63, 0x69, 0x74, 0x79, 0x28, 0x6c, 0x6f, 0x76,
|
||||
0x72, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x65, 0x74, 0x2e, 0x67, 0x65,
|
||||
0x74, 0x56, 0x65, 0x6c, 0x6f, 0x63, 0x69, 0x74, 0x79, 0x28, 0x29, 0x29,
|
||||
0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20,
|
||||
0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69,
|
||||
0x66, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74,
|
||||
0x65, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e,
|
||||
0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x28, 0x64, 0x74, 0x29, 0x20, 0x65,
|
||||
0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6c, 0x6f,
|
||||
0x76, 0x72, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x20,
|
||||
0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c,
|
||||
0x6f, 0x76, 0x72, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73,
|
||||
0x2e, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x28, 0x29, 0x0a, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e,
|
||||
0x64, 0x72, 0x61, 0x77, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76,
|
||||
0x72, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x65, 0x74, 0x20, 0x74, 0x68,
|
||||
0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x65,
|
||||
0x74, 0x2e, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x6f, 0x28, 0x6c,
|
||||
0x6f, 0x76, 0x72, 0x2e, 0x64, 0x72, 0x61, 0x77, 0x29, 0x0a, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x76,
|
||||
0x72, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x63,
|
||||
0x6c, 0x65, 0x61, 0x72, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x64, 0x72,
|
||||
0x61, 0x77, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65,
|
||||
0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x76,
|
||||
0x72, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x70,
|
||||
0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20,
|
||||
0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x65,
|
||||
0x6e, 0x64, 0x0a, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
|
||||
0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x65, 0x72, 0x72, 0x68, 0x61, 0x6e,
|
||||
0x64, 0x28, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x29, 0x0a, 0x20,
|
||||
0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x3d, 0x20, 0x64,
|
||||
0x65, 0x62, 0x75, 0x67, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, 0x62, 0x61,
|
||||
0x63, 0x6b, 0x28, 0x27, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x3a, 0x5c, 0x6e,
|
||||
0x27, 0x20, 0x2e, 0x2e, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
|
||||
0x2c, 0x20, 0x32, 0x29, 0x3a, 0x67, 0x73, 0x75, 0x62, 0x28, 0x27, 0x5c,
|
||||
0x6e, 0x5b, 0x5e, 0x5c, 0x6e, 0x5d, 0x2b, 0x24, 0x27, 0x2c, 0x20, 0x27,
|
||||
0x27, 0x29, 0x3a, 0x67, 0x73, 0x75, 0x62, 0x28, 0x27, 0x5c, 0x74, 0x27,
|
||||
0x2c, 0x20, 0x27, 0x27, 0x29, 0x3a, 0x67, 0x73, 0x75, 0x62, 0x28, 0x27,
|
||||
0x73, 0x74, 0x61, 0x63, 0x6b, 0x20, 0x74, 0x72, 0x61, 0x63, 0x65, 0x62,
|
||||
0x61, 0x63, 0x6b, 0x27, 0x2c, 0x20, 0x27, 0x5c, 0x6e, 0x53, 0x74, 0x61,
|
||||
0x63, 0x6b, 0x27, 0x29, 0x0a, 0x20, 0x20, 0x70, 0x72, 0x69, 0x6e, 0x74,
|
||||
0x28, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x29, 0x0a, 0x20, 0x20,
|
||||
0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e,
|
||||
0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x20, 0x74, 0x68, 0x65,
|
||||
0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x75, 0x6e,
|
||||
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, 0x72, 0x65, 0x74, 0x75,
|
||||
0x72, 0x6e, 0x20, 0x31, 0x20, 0x65, 0x6e, 0x64, 0x20, 0x65, 0x6e, 0x64,
|
||||
0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x67, 0x72, 0x61, 0x70,
|
||||
0x68, 0x69, 0x63, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x65, 0x74, 0x28, 0x29,
|
||||
0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x67, 0x72, 0x61, 0x70,
|
||||
0x68, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b,
|
||||
0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x28,
|
||||
0x2e, 0x31, 0x30, 0x35, 0x2c, 0x20, 0x2e, 0x30, 0x39, 0x38, 0x2c, 0x20,
|
||||
0x2e, 0x31, 0x33, 0x37, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x76, 0x72,
|
||||
0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65,
|
||||
0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x2e, 0x38, 0x36, 0x33, 0x2c,
|
||||
0x20, 0x2e, 0x38, 0x36, 0x33, 0x2c, 0x20, 0x2e, 0x38, 0x36, 0x33, 0x29,
|
||||
0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x68,
|
||||
0x65, 0x61, 0x64, 0x73, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20,
|
||||
0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x65, 0x74,
|
||||
0x2e, 0x73, 0x65, 0x74, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x65, 0x64,
|
||||
0x28, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a,
|
||||
0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x6f, 0x6e, 0x74,
|
||||
0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x67, 0x72, 0x61, 0x70,
|
||||
0x68, 0x69, 0x63, 0x73, 0x2e, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6e, 0x74,
|
||||
0x28, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70,
|
||||
0x69, 0x78, 0x65, 0x6c, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x20,
|
||||
0x3d, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x3a, 0x67, 0x65, 0x74, 0x50, 0x69,
|
||||
0x78, 0x65, 0x6c, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x28, 0x29,
|
||||
0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x77, 0x69, 0x64,
|
||||
0x74, 0x68, 0x20, 0x3d, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x3a, 0x67, 0x65,
|
||||
0x74, 0x57, 0x69, 0x64, 0x74, 0x68, 0x28, 0x6d, 0x65, 0x73, 0x73, 0x61,
|
||||
0x67, 0x65, 0x2c, 0x20, 0x2e, 0x35, 0x35, 0x20, 0x2a, 0x20, 0x70, 0x69,
|
||||
0x78, 0x65, 0x6c, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x29, 0x0a,
|
||||
0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63,
|
||||
0x74, 0x69, 0x6f, 0x6e, 0x20, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x28,
|
||||
0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x67,
|
||||
0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x69, 0x6e,
|
||||
0x74, 0x28, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x2d,
|
||||
0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x2f, 0x20, 0x32, 0x2c, 0x20, 0x30,
|
||||
0x2c, 0x20, 0x2d, 0x32, 0x30, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x2c,
|
||||
0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x2e, 0x35,
|
||||
0x35, 0x20, 0x2a, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x44, 0x65, 0x6e,
|
||||
0x73, 0x69, 0x74, 0x79, 0x2c, 0x20, 0x27, 0x6c, 0x65, 0x66, 0x74, 0x27,
|
||||
0x29, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x72, 0x65,
|
||||
0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f,
|
||||
0x6e, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x76, 0x72,
|
||||
0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x75, 0x6d, 0x70, 0x28,
|
||||
0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6e, 0x61,
|
||||
0x6d, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x65,
|
||||
0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x6f, 0x6c, 0x6c, 0x28, 0x29, 0x20,
|
||||
0x64, 0x6f, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x3d,
|
||||
0x3d, 0x20, 0x27, 0x71, 0x75, 0x69, 0x74, 0x27, 0x20, 0x74, 0x68, 0x65,
|
||||
0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x20, 0x65,
|
||||
0x6e, 0x64, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c,
|
||||
0x6f, 0x76, 0x72, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73,
|
||||
0x2e, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20,
|
||||
0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69,
|
||||
0x63, 0x73, 0x2e, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x28, 0x29, 0x0a,
|
||||
0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e,
|
||||
0x68, 0x65, 0x61, 0x64, 0x73, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e,
|
||||
0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e,
|
||||
0x68, 0x65, 0x61, 0x64, 0x73, 0x65, 0x74, 0x2e, 0x75, 0x70, 0x64, 0x61,
|
||||
0x74, 0x65, 0x28, 0x64, 0x74, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65,
|
||||
0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6c, 0x6f,
|
||||
0x76, 0x72, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x20, 0x74, 0x68, 0x65,
|
||||
0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x76, 0x72,
|
||||
0x2e, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74,
|
||||
0x65, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66,
|
||||
0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x65,
|
||||
0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x61, 0x75, 0x64, 0x69,
|
||||
0x6f, 0x2e, 0x73, 0x65, 0x74, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61,
|
||||
0x74, 0x69, 0x6f, 0x6e, 0x28, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x68, 0x65,
|
||||
0x61, 0x64, 0x73, 0x65, 0x74, 0x2e, 0x67, 0x65, 0x74, 0x4f, 0x72, 0x69,
|
||||
0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x29, 0x0a,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x76, 0x72,
|
||||
0x2e, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x2e, 0x73, 0x65, 0x74, 0x50, 0x6f,
|
||||
0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x6c, 0x6f, 0x76, 0x72, 0x2e,
|
||||
0x68, 0x65, 0x61, 0x64, 0x73, 0x65, 0x74, 0x2e, 0x67, 0x65, 0x74, 0x50,
|
||||
0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x29, 0x0a, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e,
|
||||
0x61, 0x75, 0x64, 0x69, 0x6f, 0x2e, 0x73, 0x65, 0x74, 0x56, 0x65, 0x6c,
|
||||
0x6f, 0x63, 0x69, 0x74, 0x79, 0x28, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x68,
|
||||
0x65, 0x61, 0x64, 0x73, 0x65, 0x74, 0x2e, 0x67, 0x65, 0x74, 0x56, 0x65,
|
||||
0x6c, 0x6f, 0x63, 0x69, 0x74, 0x79, 0x28, 0x29, 0x29, 0x0a, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20,
|
||||
0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6c,
|
||||
0x6f, 0x76, 0x72, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74,
|
||||
0x68, 0x65, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x75, 0x70, 0x64,
|
||||
0x61, 0x74, 0x65, 0x28, 0x64, 0x74, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a,
|
||||
0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e,
|
||||
0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x20, 0x74, 0x68, 0x65,
|
||||
0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x76, 0x72,
|
||||
0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x6f, 0x72,
|
||||
0x69, 0x67, 0x69, 0x6e, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x64, 0x72, 0x61,
|
||||
0x77, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x68,
|
||||
0x65, 0x61, 0x64, 0x73, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f,
|
||||
0x76, 0x72, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x65, 0x74, 0x2e, 0x72,
|
||||
0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x6f, 0x28, 0x6c, 0x6f, 0x76, 0x72,
|
||||
0x2e, 0x64, 0x72, 0x61, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x67,
|
||||
0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x63, 0x6c, 0x65, 0x61,
|
||||
0x72, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x64, 0x72, 0x61, 0x77, 0x28,
|
||||
0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e,
|
||||
0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x67,
|
||||
0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x65, 0x73,
|
||||
0x65, 0x6e, 0x74, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e,
|
||||
0x64, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64, 0x0a,
|
||||
0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f,
|
||||
0x76, 0x72, 0x2e, 0x65, 0x72, 0x72, 0x68, 0x61, 0x6e, 0x64, 0x28, 0x6d,
|
||||
0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x6d, 0x65,
|
||||
0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x3d, 0x20, 0x64, 0x65, 0x62, 0x75,
|
||||
0x67, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x28,
|
||||
0x27, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x3a, 0x5c, 0x6e, 0x27, 0x20, 0x2e,
|
||||
0x2e, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x32,
|
||||
0x29, 0x3a, 0x67, 0x73, 0x75, 0x62, 0x28, 0x27, 0x5c, 0x6e, 0x5b, 0x5e,
|
||||
0x5c, 0x6e, 0x5d, 0x2b, 0x24, 0x27, 0x2c, 0x20, 0x27, 0x27, 0x29, 0x3a,
|
||||
0x67, 0x73, 0x75, 0x62, 0x28, 0x27, 0x5c, 0x74, 0x27, 0x2c, 0x20, 0x27,
|
||||
0x27, 0x29, 0x3a, 0x67, 0x73, 0x75, 0x62, 0x28, 0x27, 0x73, 0x74, 0x61,
|
||||
0x63, 0x6b, 0x20, 0x74, 0x72, 0x61, 0x63, 0x65, 0x62, 0x61, 0x63, 0x6b,
|
||||
0x27, 0x2c, 0x20, 0x27, 0x5c, 0x6e, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x27,
|
||||
0x29, 0x0a, 0x20, 0x20, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x28, 0x6d, 0x65,
|
||||
0x73, 0x73, 0x61, 0x67, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20,
|
||||
0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x67, 0x72, 0x61,
|
||||
0x70, 0x68, 0x69, 0x63, 0x73, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72,
|
||||
0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69,
|
||||
0x6f, 0x6e, 0x28, 0x29, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
|
||||
0x31, 0x20, 0x65, 0x6e, 0x64, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20,
|
||||
0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63,
|
||||
0x73, 0x2e, 0x72, 0x65, 0x73, 0x65, 0x74, 0x28, 0x29, 0x0a, 0x20, 0x20,
|
||||
0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63,
|
||||
0x73, 0x2e, 0x73, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f,
|
||||
0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x2e, 0x31, 0x30,
|
||||
0x35, 0x2c, 0x20, 0x2e, 0x30, 0x39, 0x38, 0x2c, 0x20, 0x2e, 0x31, 0x33,
|
||||
0x37, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x67, 0x72,
|
||||
0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x43, 0x6f,
|
||||
0x6c, 0x6f, 0x72, 0x28, 0x2e, 0x38, 0x36, 0x33, 0x2c, 0x20, 0x2e, 0x38,
|
||||
0x36, 0x33, 0x2c, 0x20, 0x2e, 0x38, 0x36, 0x33, 0x29, 0x0a, 0x20, 0x20,
|
||||
0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x68, 0x65, 0x61, 0x64,
|
||||
0x73, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x6c, 0x6f, 0x76,
|
||||
0x72, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x65, 0x74, 0x2e, 0x73, 0x65,
|
||||
0x74, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x65, 0x64, 0x28, 0x66, 0x61,
|
||||
0x6c, 0x73, 0x65, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x6c,
|
||||
0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x3d, 0x20,
|
||||
0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63,
|
||||
0x73, 0x2e, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6e, 0x74, 0x28, 0x29, 0x0a,
|
||||
0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65,
|
||||
0x6c, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x20, 0x3d, 0x20, 0x66,
|
||||
0x6f, 0x6e, 0x74, 0x3a, 0x67, 0x65, 0x74, 0x50, 0x69, 0x78, 0x65, 0x6c,
|
||||
0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x28, 0x29, 0x0a, 0x20, 0x20,
|
||||
0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x20,
|
||||
0x3d, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x3a, 0x67, 0x65, 0x74, 0x57, 0x69,
|
||||
0x64, 0x74, 0x68, 0x28, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2c,
|
||||
0x20, 0x2e, 0x35, 0x35, 0x20, 0x2a, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c,
|
||||
0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x29, 0x0a, 0x20, 0x20, 0x6c,
|
||||
0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f,
|
||||
0x6e, 0x20, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x28, 0x29, 0x0a, 0x20,
|
||||
0x20, 0x20, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x67, 0x72, 0x61, 0x70,
|
||||
0x68, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x28, 0x6d,
|
||||
0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x2d, 0x77, 0x69, 0x64,
|
||||
0x74, 0x68, 0x20, 0x2f, 0x20, 0x32, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x2d,
|
||||
0x32, 0x30, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c,
|
||||
0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x2e, 0x35, 0x35, 0x20, 0x2a,
|
||||
0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74,
|
||||
0x79, 0x2c, 0x20, 0x27, 0x6c, 0x65, 0x66, 0x74, 0x27, 0x29, 0x0a, 0x20,
|
||||
0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72,
|
||||
0x6e, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29,
|
||||
0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x65, 0x76,
|
||||
0x65, 0x6e, 0x74, 0x2e, 0x70, 0x75, 0x6d, 0x70, 0x28, 0x29, 0x0a, 0x20,
|
||||
0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20,
|
||||
0x69, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x65, 0x76, 0x65, 0x6e,
|
||||
0x74, 0x2e, 0x70, 0x6f, 0x6c, 0x6c, 0x28, 0x29, 0x20, 0x64, 0x6f, 0x20,
|
||||
0x69, 0x66, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x27,
|
||||
0x71, 0x75, 0x69, 0x74, 0x27, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72,
|
||||
0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x20, 0x65, 0x6e, 0x64, 0x20,
|
||||
0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x76, 0x72,
|
||||
0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x63, 0x6c,
|
||||
0x65, 0x61, 0x72, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f,
|
||||
0x76, 0x72, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e,
|
||||
0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20,
|
||||
0x20, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x68, 0x65, 0x61,
|
||||
0x64, 0x73, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x6c, 0x6f,
|
||||
0x76, 0x72, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x73, 0x65, 0x74, 0x2e, 0x72,
|
||||
0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x6f, 0x28, 0x72, 0x65, 0x6e, 0x64,
|
||||
0x65, 0x72, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20,
|
||||
0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20,
|
||||
0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69,
|
||||
0x63, 0x73, 0x2e, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x28, 0x29,
|
||||
0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a,
|
||||
0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x76,
|
||||
0x72, 0x2e, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x72, 0x6f,
|
||||
0x72, 0x28, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2c, 0x20, 0x65, 0x72,
|
||||
0x72, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x27,
|
||||
0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72,
|
||||
0x5c, 0x6e, 0x5c, 0x6e, 0x27, 0x20, 0x2e, 0x2e, 0x20, 0x65, 0x72, 0x72,
|
||||
0x2c, 0x20, 0x30, 0x29, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x72, 0x65,
|
||||
0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f,
|
||||
0x6e, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20,
|
||||
0x65, 0x72, 0x72, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x3d, 0x20, 0x66, 0x61,
|
||||
0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20,
|
||||
0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x6e, 0x65,
|
||||
0x72, 0x72, 0x6f, 0x72, 0x28, 0x2e, 0x2e, 0x2e, 0x29, 0x20, 0x69, 0x66,
|
||||
0x20, 0x6e, 0x6f, 0x74, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x65, 0x64,
|
||||
0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x65,
|
||||
0x64, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x72, 0x65, 0x74,
|
||||
0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x65, 0x72, 0x72,
|
||||
0x68, 0x61, 0x6e, 0x64, 0x28, 0x2e, 0x2e, 0x2e, 0x29, 0x20, 0x65, 0x6c,
|
||||
0x73, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x75,
|
||||
0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, 0x72, 0x65, 0x74,
|
||||
0x75, 0x72, 0x6e, 0x20, 0x31, 0x20, 0x65, 0x6e, 0x64, 0x20, 0x65, 0x6e,
|
||||
0x64, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61,
|
||||
0x6c, 0x20, 0x5f, 0x2c, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20,
|
||||
0x3d, 0x20, 0x78, 0x70, 0x63, 0x61, 0x6c, 0x6c, 0x28, 0x6c, 0x6f, 0x76,
|
||||
0x72, 0x2e, 0x62, 0x6f, 0x6f, 0x74, 0x2c, 0x20, 0x6f, 0x6e, 0x65, 0x72,
|
||||
0x72, 0x6f, 0x72, 0x29, 0x0a, 0x0a, 0x20, 0x20, 0x77, 0x68, 0x69, 0x6c,
|
||||
0x65, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20,
|
||||
0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6f, 0x6b, 0x2c, 0x20,
|
||||
0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x78, 0x70, 0x63,
|
||||
0x61, 0x6c, 0x6c, 0x28, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2c, 0x20,
|
||||
0x6f, 0x6e, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x29, 0x0a, 0x20, 0x20, 0x20,
|
||||
0x20, 0x69, 0x66, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x61,
|
||||
0x6e, 0x64, 0x20, 0x6f, 0x6b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72,
|
||||
0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
|
||||
0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x69, 0x66, 0x20,
|
||||
0x6e, 0x6f, 0x74, 0x20, 0x6f, 0x6b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20,
|
||||
0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x73,
|
||||
0x75, 0x6c, 0x74, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20,
|
||||
0x63, 0x6f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65, 0x2e, 0x79, 0x69,
|
||||
0x65, 0x6c, 0x64, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a,
|
||||
0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x0a,
|
||||
0x65, 0x6e, 0x64, 0x0a
|
||||
0x74, 0x2e, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x6f, 0x28, 0x72,
|
||||
0x65, 0x6e, 0x64, 0x65, 0x72, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20,
|
||||
0x20, 0x20, 0x20, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x28, 0x29, 0x0a,
|
||||
0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x67, 0x72, 0x61,
|
||||
0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e,
|
||||
0x74, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e,
|
||||
0x64, 0x0a, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20,
|
||||
0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x65,
|
||||
0x72, 0x72, 0x6f, 0x72, 0x28, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2c,
|
||||
0x20, 0x65, 0x72, 0x72, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x72, 0x72, 0x6f,
|
||||
0x72, 0x28, 0x27, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x65, 0x72,
|
||||
0x72, 0x6f, 0x72, 0x5c, 0x6e, 0x5c, 0x6e, 0x27, 0x20, 0x2e, 0x2e, 0x20,
|
||||
0x65, 0x72, 0x72, 0x2c, 0x20, 0x30, 0x29, 0x0a, 0x65, 0x6e, 0x64, 0x0a,
|
||||
0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x75, 0x6e, 0x63,
|
||||
0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63,
|
||||
0x61, 0x6c, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x3d,
|
||||
0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63,
|
||||
0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20,
|
||||
0x6f, 0x6e, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x2e, 0x2e, 0x2e, 0x29,
|
||||
0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x65, 0x72, 0x72, 0x6f,
|
||||
0x72, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x65, 0x72, 0x72,
|
||||
0x6f, 0x72, 0x65, 0x64, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20,
|
||||
0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x72, 0x2e,
|
||||
0x65, 0x72, 0x72, 0x68, 0x61, 0x6e, 0x64, 0x28, 0x2e, 0x2e, 0x2e, 0x29,
|
||||
0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
|
||||
0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20,
|
||||
0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x20, 0x65, 0x6e, 0x64,
|
||||
0x20, 0x65, 0x6e, 0x64, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x6c,
|
||||
0x6f, 0x63, 0x61, 0x6c, 0x20, 0x5f, 0x2c, 0x20, 0x74, 0x68, 0x72, 0x65,
|
||||
0x61, 0x64, 0x20, 0x3d, 0x20, 0x78, 0x70, 0x63, 0x61, 0x6c, 0x6c, 0x28,
|
||||
0x6c, 0x6f, 0x76, 0x72, 0x2e, 0x62, 0x6f, 0x6f, 0x74, 0x2c, 0x20, 0x6f,
|
||||
0x6e, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x29, 0x0a, 0x0a, 0x20, 0x20, 0x77,
|
||||
0x68, 0x69, 0x6c, 0x65, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x64, 0x6f,
|
||||
0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6f,
|
||||
0x6b, 0x2c, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20,
|
||||
0x78, 0x70, 0x63, 0x61, 0x6c, 0x6c, 0x28, 0x74, 0x68, 0x72, 0x65, 0x61,
|
||||
0x64, 0x2c, 0x20, 0x6f, 0x6e, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x29, 0x0a,
|
||||
0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c,
|
||||
0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x6b, 0x20, 0x74, 0x68, 0x65,
|
||||
0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73,
|
||||
0x75, 0x6c, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65,
|
||||
0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6f, 0x6b, 0x20, 0x74, 0x68,
|
||||
0x65, 0x6e, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x3d, 0x20,
|
||||
0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20,
|
||||
0x20, 0x20, 0x20, 0x63, 0x6f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65,
|
||||
0x2e, 0x79, 0x69, 0x65, 0x6c, 0x64, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x65,
|
||||
0x6e, 0x64, 0x0a, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
|
||||
0x20, 0x31, 0x0a, 0x65, 0x6e, 0x64, 0x0a
|
||||
};
|
||||
unsigned int boot_lua_len = 5536;
|
||||
unsigned int boot_lua_len = 5575;
|
||||
|
|
Loading…
Reference in New Issue