From d78c6cecd8ce07a1ddcf9dea080f86f88eb6712b Mon Sep 17 00:00:00 2001 From: Snider Date: Thu, 9 Oct 2025 13:44:34 +0100 Subject: [PATCH 01/65] Add initial Oatpp-based API server implementation Introduces a new API module using Oatpp and Oatpp-Swagger, including controllers, DTOs, and server setup. Updates build scripts and dependencies to support the new API layer for Lethean, providing endpoints and Swagger documentation. --- conanfile.py | 4 +- src/CMakeLists.txt | 1 + src/api/ApiServer.hpp | 38 +++++++++++ src/api/CMakeLists.txt | 30 +++++++++ src/api/controller/RootController.hpp | 35 ++++++++++ src/api/controller/info/InfoController.hpp | 37 +++++++++++ src/api/dto/DTOs.hpp | 36 ++++++++++ src/api/main.cpp | 76 ++++++++++++++++++++++ 8 files changed, 256 insertions(+), 1 deletion(-) create mode 100644 src/api/ApiServer.hpp create mode 100644 src/api/CMakeLists.txt create mode 100644 src/api/controller/RootController.hpp create mode 100644 src/api/controller/info/InfoController.hpp create mode 100644 src/api/dto/DTOs.hpp create mode 100644 src/api/main.cpp diff --git a/conanfile.py b/conanfile.py index ab1a89cb..69cd53e7 100644 --- a/conanfile.py +++ b/conanfile.py @@ -26,7 +26,9 @@ class BlockchainConan(ConanFile): "boost/1.85.0", "openssl/3.2.0", "miniupnpc/2.2.5", - "jwt-cpp/0.7.1" + "jwt-cpp/0.7.1", + "oatpp/1.3.0.latest", + "oatpp-swagger/1.3.0.latest" ] def generate(self): diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 541dc852..2132a36a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -85,6 +85,7 @@ INIT_SHARED_PCH() add_subdirectory(config) add_subdirectory(genesis) +add_subdirectory(api) add_library(common ${COMMON}) add_dependencies(common version config ${PCH_LIB_NAME}) diff --git a/src/api/ApiServer.hpp b/src/api/ApiServer.hpp new file mode 100644 index 00000000..2aa6f74a --- /dev/null +++ b/src/api/ApiServer.hpp @@ -0,0 +1,38 @@ +#ifndef ApiServer_hpp +#define ApiServer_hpp + +#include "oatpp/web/server/HttpConnectionHandler.hpp" +#include "oatpp/network/tcp/server/ConnectionProvider.hpp" +#include "oatpp/core/macro/component.hpp" +#include "oatpp-swagger/Resources.hpp" + +#include "oatpp/parser/json/mapping/ObjectMapper.hpp" +#include "oatpp-swagger/Resources.hpp" +#include "oatpp-swagger/Model.hpp" +class ApiServer { +public: + + OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionProvider)([] { + return oatpp::network::tcp::server::ConnectionProvider::createShared({"0.0.0.0", 8000, oatpp::network::Address::IP_4}); + }()); + + OATPP_CREATE_COMPONENT(std::shared_ptr, httpRouter)([] { + return oatpp::web::server::HttpRouter::createShared(); + }()); + + OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionHandler)([] { + OATPP_COMPONENT(std::shared_ptr, router); + return oatpp::web::server::HttpConnectionHandler::createShared(router); + }()); + + OATPP_CREATE_COMPONENT(std::shared_ptr, apiObjectMapper)([] { + return oatpp::parser::json::mapping::ObjectMapper::createShared(); + }()); + + OATPP_CREATE_COMPONENT(std::shared_ptr, swaggerResources)([] { + return oatpp::swagger::Resources::loadResources(OATPP_SWAGGER_RES_PATH); + }()); + +}; + +#endif /* ApiServer_hpp */ diff --git a/src/api/CMakeLists.txt b/src/api/CMakeLists.txt new file mode 100644 index 00000000..cb452681 --- /dev/null +++ b/src/api/CMakeLists.txt @@ -0,0 +1,30 @@ +if(NOT PROJECT_NAME) + project(lethean-api) +endif() + +find_package(oatpp 1.3.0 REQUIRED) +if(oatpp_FOUND) + message(STATUS "Found oatpp version: ${oatpp_VERSION_STRING}") +else() + message(FATAL_ERROR "Could not find oatpp") +endif() + +find_package(oatpp-swagger 1.3.0 REQUIRED) +if(oatpp-swagger_FOUND) + message(STATUS "Found oatpp-swagger version: ${oatpp-swagger_VERSION_STRING}") +else() + message(FATAL_ERROR "Could not find oatpp-swagger") +endif() + +add_library(lthn_api INTERFACE) +add_library(lthn::api ALIAS lthn_api) + +target_include_directories(lthn_api INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) +include_directories(${oatpp_INCLUDE_DIRS}) +include_directories(${oatpp-swagger_INCLUDE_DIRS}) +add_executable(lethean-api main.cpp) + +target_link_libraries(lethean-api PRIVATE lthn::api PUBLIC oatpp::oatpp oatpp::oatpp-swagger) + +add_definitions(-DOATPP_SWAGGER_RES_PATH="${oatpp-swagger_INCLUDE_DIRS}/../bin/oatpp-swagger/res") +#add_subdirectory(tests) diff --git a/src/api/controller/RootController.hpp b/src/api/controller/RootController.hpp new file mode 100644 index 00000000..37dd5745 --- /dev/null +++ b/src/api/controller/RootController.hpp @@ -0,0 +1,35 @@ +#ifndef RootController_hpp +#define RootController_hpp + +#include "./info/InfoController.hpp" +#include "../dto/DTOs.hpp" + +#include "oatpp/web/server/api/ApiController.hpp" +#include "oatpp/core/macro/codegen.hpp" +#include "oatpp/core/macro/component.hpp" + +#include OATPP_CODEGEN_BEGIN(ApiController) + +class RootController : public oatpp::web::server::api::ApiController { +private: + std::shared_ptr m_infoController; +public: + RootController(OATPP_COMPONENT(std::shared_ptr, objectMapper)) + : oatpp::web::server::api::ApiController(objectMapper), + m_infoController(std::make_shared(objectMapper)) + {} +public: + + // oatpp::web::server::api::Endpoints(m_infoController, "/info"); + + ENDPOINT("GET", "/hello", root) { + auto dto = MyDto::createShared(); + dto->message = "Hello World!"; + return createDtoResponse(Status::CODE_200, dto); + } + +}; + +#include OATPP_CODEGEN_END(ApiController) + +#endif /* RootController_hpp */ diff --git a/src/api/controller/info/InfoController.hpp b/src/api/controller/info/InfoController.hpp new file mode 100644 index 00000000..ab2ece69 --- /dev/null +++ b/src/api/controller/info/InfoController.hpp @@ -0,0 +1,37 @@ +#ifndef InfoController_hpp +#define InfoController_hpp + +#include "oatpp/web/server/api/ApiController.hpp" +#include "oatpp/core/macro/codegen.hpp" +#include "oatpp/core/macro/component.hpp" + +#include OATPP_CODEGEN_BEGIN(ApiController) + +class InfoController : public oatpp::web::server::api::ApiController { +public: + InfoController(OATPP_COMPONENT(std::shared_ptr, objectMapper)) + : oatpp::web::server::api::ApiController(objectMapper) + {} +public: + + ENDPOINT_INFO(version) { + info->summary = "Get API version"; + info->description = "Returns the current version of the API."; + } + ENDPOINT("GET", "/version", version) { + return createResponse(Status::CODE_200, "v0.0.1"); + } + + ENDPOINT_INFO(root) { + info->summary = "Get info root"; + info->description = "Returns a placeholder for the info root."; + } + ENDPOINT("GET", "/", root) { + return createResponse(Status::CODE_200, "Info root"); + } + +}; + +#include OATPP_CODEGEN_END(ApiController) + +#endif /* InfoController_hpp */ diff --git a/src/api/dto/DTOs.hpp b/src/api/dto/DTOs.hpp new file mode 100644 index 00000000..e8bd3111 --- /dev/null +++ b/src/api/dto/DTOs.hpp @@ -0,0 +1,36 @@ +// Copyright (c) 2014-2018 Zano Project +// Copyright (c) 2014-2018 The Louisdor Project +// Copyright (c) 2012-2013 The Boolberry developers +// Copyright (c) 2017-2025 Lethean (https://lt.hn) +// +// Licensed under the European Union Public Licence (EUPL) version 1.2. +// You may obtain a copy of the licence at: +// +// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl +// +// The EUPL is a copyleft licence that is compatible with the MIT/X11 +// licence used by the original projects; the MIT terms are therefore +// considered “grandfathered” under the EUPL for this code. +// +// SPDX‑License‑Identifier: EUPL-1.2 +// + +#ifndef DTOs_hpp +#define DTOs_hpp + +#include "oatpp/core/macro/codegen.hpp" +#include "oatpp/core/Types.hpp" + +#include OATPP_CODEGEN_BEGIN(DTO) + +class MyDto : public oatpp::DTO { + + DTO_INIT(MyDto, DTO); + + DTO_FIELD(String, message); + +}; + +#include OATPP_CODEGEN_END(DTO) + +#endif /* DTOs_hpp */ diff --git a/src/api/main.cpp b/src/api/main.cpp new file mode 100644 index 00000000..dbea164d --- /dev/null +++ b/src/api/main.cpp @@ -0,0 +1,76 @@ +#include "controller/RootController.hpp" +#include "ApiServer.hpp" + +#include "oatpp/network/Server.hpp" +#include "oatpp-swagger/Controller.hpp" + +#include + +void run() { + /* Register Components in scope of run() method */ + ApiServer components; + + /* Get router component */ + OATPP_COMPONENT(std::shared_ptr, router); + + /* Create RootController and add all of its endpoints to router */ + auto rootController = std::make_shared(); + router->addController(rootController); + + OATPP_CREATE_COMPONENT(std::shared_ptr, swaggerDocumentInfo)([] { + + oatpp::swagger::DocumentInfo::Builder builder; + + builder + .setTitle("Lethean Blockchain API") + .setDescription("New API layer for Lethean") + .setVersion("1.0") + .setContactName("Lethean") + .setContactUrl("https://lt.hn/") + + .setLicenseName("EUPL-1.2") + .setLicenseUrl("https://joinup.ec.europa.eu/software/page/eupl/licence-eupl") + + .addServer("http://localhost:8000", "server on localhost"); + + // When you are using the AUTHENTICATION() Endpoint-Macro you must add an SecurityScheme object (https://swagger.io/specification/#securitySchemeObject) + // For basic-authentication you can use the default Basic-Authorization-Security-Scheme like this + // For more complex authentication schemes you can use the oatpp::swagger::DocumentInfo::SecuritySchemeBuilder builder + // Don't forget to add info->addSecurityRequirement("basic_auth") to your ENDPOINT_INFO() Macro! + //.addSecurityScheme("basic_auth", oatpp::swagger::DocumentInfo::SecuritySchemeBuilder::DefaultBasicAuthorizationSecurityScheme()); + + return builder.build(); + +}()); + + /* Create Swagger-UI controller and add its endpoints to router */ + auto swaggerController = oatpp::swagger::Controller::createShared(rootController->getEndpoints()); + router->addController(swaggerController); + + /* Get connection handler component */ + OATPP_COMPONENT(std::shared_ptr, connectionHandler); + + /* Get connection provider component */ + OATPP_COMPONENT(std::shared_ptr, connectionProvider); + + /* Create server which takes provided TCP connections and passes them to HTTP connection handler */ + oatpp::network::Server server(connectionProvider, connectionHandler); + + /* Print server port */ + OATPP_LOGI("lethean-api", "Server running on port %s", connectionProvider->getProperty("port").getData()); + + /* Run server */ + server.run(); +} + +int main(int argc, const char * argv[]) { + + oatpp::base::Environment::init(); + + run(); + + /* Destroy oatpp Environment */ + oatpp::base::Environment::destroy(); + + return 0; +} From c5c90dad6b3cb923670f97547b72fcd5b9664992 Mon Sep 17 00:00:00 2001 From: Snider Date: Thu, 9 Oct 2025 15:38:58 +0100 Subject: [PATCH 02/65] Update docs --- docs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs b/docs index 12e20efc..5f842e05 160000 --- a/docs +++ b/docs @@ -1 +1 @@ -Subproject commit 12e20efce7eaf51e38d8953c318633b1c5189256 +Subproject commit 5f842e053886802d3ef5322e19442c84f3b4aa63 From bac3c459d24bea599e4795f3663b8cf0ada7eadf Mon Sep 17 00:00:00 2001 From: Snider Date: Thu, 9 Oct 2025 23:46:45 +0100 Subject: [PATCH 03/65] Update src/api/ApiServer.hpp Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/api/ApiServer.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/api/ApiServer.hpp b/src/api/ApiServer.hpp index 2aa6f74a..d02e4b0b 100644 --- a/src/api/ApiServer.hpp +++ b/src/api/ApiServer.hpp @@ -7,7 +7,6 @@ #include "oatpp-swagger/Resources.hpp" #include "oatpp/parser/json/mapping/ObjectMapper.hpp" -#include "oatpp-swagger/Resources.hpp" #include "oatpp-swagger/Model.hpp" class ApiServer { public: From 4cfc57b1f19e65f1019557a23874b0006e625a20 Mon Sep 17 00:00:00 2001 From: Snider Date: Thu, 9 Oct 2025 23:46:58 +0100 Subject: [PATCH 04/65] Update src/api/controller/RootController.hpp Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/api/controller/RootController.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/api/controller/RootController.hpp b/src/api/controller/RootController.hpp index 37dd5745..817fa833 100644 --- a/src/api/controller/RootController.hpp +++ b/src/api/controller/RootController.hpp @@ -20,7 +20,6 @@ public: {} public: - // oatpp::web::server::api::Endpoints(m_infoController, "/info"); ENDPOINT("GET", "/hello", root) { auto dto = MyDto::createShared(); From 10f35173eb63012db658514e70db4223869fce4f Mon Sep 17 00:00:00 2001 From: Snider Date: Fri, 10 Oct 2025 00:44:54 +0100 Subject: [PATCH 05/65] Revise README with updated build instructions Simplified and modernized the README to focus on Makefile-based build and packaging workflow. Removed outdated manual steps for Linux, Windows, and macOS, and added concise instructions for cloning, building, and customizing builds using Makefile variables. Updated Discord badge and removed legacy information. --- README.md | 222 +++++++++++++----------------------------------------- 1 file changed, 54 insertions(+), 168 deletions(-) diff --git a/README.md b/README.md index dcee9f03..03a00bd0 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,4 @@ -[![Coverity Scan](https://scan.coverity.com/projects/18767/badge.svg)](https://scan.coverity.com/projects/zanoproject) -[![Discord](https://img.shields.io/discord/538361472691077130?label=discord&logo=discord)](https://discord.gg/wE3rmYY) - -## Cloning - -Be sure to clone the repository properly:\ -`$ git clone --recursive https://github.com/hyle-team/zano.git` - -# Building --------- - +[![Discord](https://img.shields.io/discord/379876792003067906?label=discord&logo=discord)](https://discord.gg/pfgT2Kz) ### Dependencies | component / version | minimum
(not recommended but may work) | recommended | most recent of what we have ever tested | @@ -18,179 +8,75 @@ Be sure to clone the repository properly:\ | [MSVC](https://visualstudio.microsoft.com/downloads/) (Windows) | 2017 (15.9.30) | 2022 (17.11.5) | 2022 (17.12.3) | | [XCode](https://developer.apple.com/downloads/) (macOS) | 12.3 | 14.3 | 15.2 | | [CMake](https://cmake.org/download/) | 3.26.3 | 3.26.3 | 3.31.6 | -| [Boost](https://www.boost.org/users/download/) | 1.75 | 1.84 | 1.84 | -| [OpenSSL](https://www.openssl.org/source/) [(win)](https://slproweb.com/products/Win32OpenSSL.html) | 1.1.1n | 1.1.1w | 3.4 | -| [Qt](https://download.qt.io/archive/qt/) (*only for GUI*) | 6.8.3 | 6.8.3 | 6.8.3 | - -Note:\ -[*server version*] denotes steps required for building command-line tools (daemon, simplewallet, etc.).\ -[*GUI version*] denotes steps required for building Zano executable with GUI. - -
- -### Linux - -Recommended OS versions: Ubuntu 20.04, 22.04 LTS. - -1. Prerequisites - - [*server version*] - - sudo apt-get install -y build-essential g++ curl autotools-dev libicu-dev libbz2-dev cmake git screen checkinstall zlib1g-dev libssl-dev bzip2 - - [*GUI version*] - - sudo apt-get install -y build-essential g++ python-dev autotools-dev libicu-dev libbz2-dev cmake git screen checkinstall zlib1g-dev libssl-dev bzip2 mesa-common-dev libglu1-mesa-dev - - Make sure you have correct versions installed (see 'Dependencies' section above): - - cmake --version && gcc --version - - -3. Clone Zano into a local folder\ - (If for some reason you need to use alternative Zano branch, change 'master' to the required branch name.) - - git clone --recursive https://github.com/hyle-team/zano.git -b master - - In the following steps we assume that you cloned Zano into '~/zano' folder in your home directory. - - 4. Download and build Boost\ - (Assuming you have cloned Zano into the 'zano' folder. If you used a different location for Zano, **edit line 4** accordingly.) - - curl -OL https://archives.boost.io/release/1.84.0/source/boost_1_84_0.tar.bz2 - echo "cc4b893acf645c9d4b698e9a0f08ca8846aa5d6c68275c14c3e7949c24109454 boost_1_84_0.tar.bz2" | shasum -c && tar -xjf boost_1_84_0.tar.bz2 - rm boost_1_84_0.tar.bz2 && cd boost_1_84_0 - ./bootstrap.sh --with-libraries=system,filesystem,thread,date_time,chrono,regex,serialization,atomic,program_options,locale,timer,log - ./b2 && cd .. - Make sure that you see "The Boost C++ Libraries were successfully built!" message at the end. - - 5. Install Qt\ - (*GUI version only, skip this step if you're building server version*) - - [*GUI version*] - - curl -L -O https://download.qt.io/official_releases/online_installers/qt-online-installer-linux-x64-online.run && - chmod u+x qt-online-installer-linux-x64-online.run - ./qt-online-installer-linux-x64-online.run \ - --accept-licenses \ - --default-answer \ - --confirm-command install \ - qt.qt6.683.linux_gcc_64 \ - qt.qt6.683.addons.qt5compat.linux_gcc_64 \ - qt.qt6.683.addons.qtpositioning.linux_gcc_64 \ - qt.qt6.683.addons.qtwebchannel.linux_gcc_64 \ - qt.qt6.683.addons.qtwebsockets.linux_gcc_64 \ - qt.qt6.683.addons.qtwebengine.linux_gcc_64 \ - qt.qt6.683.addons.qtwebview.linux_gcc_64 - This will download the online installer and perform an unattended installation with the Chromium-based WebEngine -6. Install OpenSSL +## Cloning - We recommend installing OpenSSL v1.1.1w locally unless you would like to use the same version system-wide.\ - (Assuming that `$HOME` environment variable is set to your home directory. Otherwise, edit line 4 accordingly.) +Be sure to clone the repository properly, with `--recursive` flag, or you'll get angry: +`git clone --recursive https://github.com/letheanVPN/blockchain.git` - curl -OL https://www.openssl.org/source/openssl-1.1.1w.tar.gz - echo "cf3098950cb4d853ad95c0841f1f9c6d3dc102dccfcacd521d93925208b76ac8 openssl-1.1.1w.tar.gz" | shasum -c && tar xaf openssl-1.1.1w.tar.gz - cd openssl-1.1.1w/ - ./config --prefix=$HOME/openssl --openssldir=$HOME/openssl shared zlib - make && make test && make install && cd .. +# Building +-------- +The project uses a `Makefile` that provides a simple and powerful interface for building. It automatically handles dependency installation with Conan and compilation with CMake. -7. [*OPTIONAL*] Set global environment variables for convenient use\ -For instance, by adding the following lines to `~/.bashrc` +## Simple Workflow Builds (Recommended) - [*server version*] +For most use cases, these two commands are all you need. They handle the entire build process from start to finish. - export BOOST_ROOT=/home/user/boost_1_84_0 - export OPENSSL_ROOT_DIR=/home/user/openssl +* **Build for Mainnet:** + ```shell + make mainnet + ``` +* **Build for Testnet:** + ```shell + make testnet + ``` - [*GUI version*] +## Custom Builds - export BOOST_ROOT=/home/user/boost_1_84_0 - export OPENSSL_ROOT_DIR=/home/user/openssl - export QT_PREFIX_PATH=/home/user/Qt5.11.2/5.11.2/gcc_64 +You can use the `make build` target with variables for more control over the final binaries. - **NOTICE: Please edit the lines above according to your actual paths.** - - **NOTICE 2:** Make sure you've restarted your terminal session (by reopening the terminal window or reconnecting the server) to apply these changes. +* **Build a `testnet` version:** + ```shell + make build TESTNET=1 + ``` +* **Build a statically-linked version:** + ```shell + make build STATIC=1 + ``` -8. Build the binaries - 1. If you skipped step 6 and did not set the environment variables: +## Creating Release Packages - cd zano && mkdir build && cd build - BOOST_ROOT=$HOME/boost_1_84_0 OPENSSL_ROOT_DIR=$HOME/openssl cmake .. - make -j1 daemon simplewallet +To create distributable packages (e.g., `.zip`, `.deb`), run the `release` target. This will build the project, build the documentation, and then package everything. - 2. If you set the variables in step 6: + ```shell + make release + ``` +The final packages will be located in the `build/release/` directory - cd zano && mkdir build && cd build - cmake .. - make -j1 daemon simplewallet +## Advanced Build Customization (Makefile Variables) - or simply: +For advanced use cases, you can override variables in the `Makefile` to customize the build process. - cd zano && make -j1 - - **NOTICE**: If you are building on a machine with a relatively high amount of RAM or with the proper setting of virtual memory, then you can use `-j2` or `-j` option to speed up the building process. Use with caution. - - **NOTICE 2**: If you'd like to build binaries for the testnet, use `cmake -D TESTNET=TRUE ..` instead of `cmake ..` . - - 1. Build GUI: - - cd zano - utils/build_script_linux.sh - - Look for the binaries in `build` folder - -
- -### Windows -Recommended OS version: Windows 7 x64, Windows 11 x64. -1. Install required prerequisites (Boost, Qt, CMake, OpenSSL). -2. Edit paths in `utils/configure_local_paths.cmd`. -3. Run one of `utils/configure_win64_msvsNNNN_gui.cmd` according to your MSVC version. -4. Go to the build folder and open generated Zano.sln in MSVC. -5. Build. - -In order to correctly deploy Qt GUI application, you also need to do the following: - -6. Run `PATH_TO_QT\bin\windeployqt.exe PATH_TO_PROJECT_ROOT\build\src\Debug\Zano.exe` (choose the Debug or Release folder depending on the configuration you built). -7. You can now run the application using one of the following options: - * Start the program from Visual Studio - * Run `Zano.exe --html-path=PATH_TO_HTML`, where PATH_TO_HTML is by default located at PATH_TO_PROJECT_ROOT\src\gui\qt-daemon\layout\html - * Copy the contents of PATH_TO_PROJECT_ROOT\src\gui\qt-daemon\layout\html to a folder named "html" located in the same directory as the Zano.exe binary. -
- -### macOS -Recommended OS version: macOS Big Sur 11.4 x64. -1. Install required prerequisites. -2. Set environment variables as stated in `utils/macosx_build_config.command`. -3. `mkdir build`
`cd build`
`cmake ..`
`make` - -To build GUI application: - -1. Create self-signing certificate via Keychain Access:\ - a. Run Keychain Access.\ - b. Choose Keychain Access > Certificate Assistant > Create a Certificate.\ - c. Use “Zano” (without quotes) as certificate name.\ - d. Choose “Code Signing” in “Certificate Type” field.\ - e. Press “Create”, then “Done”.\ - f. Make sure the certificate was added to keychain "System". If not—move it to "System".\ - g. Double click the certificate you've just added, enter the trust section and under "When using this certificate" select "Always trust".\ - h. Unfold the certificate in Keychain Access window and double click the underlying private key "Zano". Select "Access Control" tab, then select "Allow all applications to access this item". Click "Save Changes". -2. Revise building script, comment out unwanted steps and run it: `utils/build_script_mac_osx.sh` -3. The application should be here: `/buid_mac_osx_64/release/src` - -
-
- -## Supporting project/donations - -ZANO @dev
-BTC bc1qpa8w8eaehlplfepmnzpd7v9j046899nktxnkxp
-BCH qqgq078vww5exd9kt3frx6krdyznmp80hcygzlgqzd
-ETH 0x206c52b78141498e74FF074301ea90888C40c178
-XMR 45gp9WTobeB5Km3kLQgVmPJkvm9rSmg4gdyHheXqXijXYMjUY48kLgL7QEz5Ar8z9vQioQ68WYDKsQsjAEonSeFX4UeLSiX
+Example: +```shell +make build BUILD_TYPE=Debug CPU_CORES=8 +``` +| Variable | Description | Default Value | +|--------------------|------------------------------------------------------------------------|-------------------------------------------------------------------| +| `BUILD_TYPE` | Sets the build configuration (e.g., `Release`, `Debug`). | `Release` | +| `TESTNET` | Set to `1` to build for the test network. | `0` | +| `STATIC` | Set to `1` to link libraries statically. | `0` | +| `CPU_CORES` | Number of CPU cores to use for parallel compilation. | Auto-detected | +| `BUILD_VERSION` | The version string to embed in the binaries. | `6.0.1` | +| `BUILD_FOLDER` | The output directory for the build. | `build/release` | +| `PRESET_CONFIGURE` | The CMake preset to use for the `configure` step. | `conan-release` | +| `PRESET_BUILD` | The CMake preset to use for the `build` step. | `conan-release` | +| `CONAN_CACHE` | The path for the local Conan cache, where the dependencies are stored. | `./build/sdk` | +| `CONAN_EXECUTABLE` | The path to the usable Conan executable. | `./build/bin/conan` | +| `CONAN_URL` | The URL for the Conan remote repository. | `https://artifacts.host.uk.com/artifactory/api/conan/conan-build` | +| `CONAN_USER` | The username for the Conan remote. | `public` | +| `CONAN_PASSWORD` | The password for the Conan remote. | | \ No newline at end of file From 4eebc0ac87aca7e2ee8ac950ce0eab1c5d9c9103 Mon Sep 17 00:00:00 2001 From: Snider Date: Fri, 10 Oct 2025 12:03:46 +0100 Subject: [PATCH 06/65] Update README with build and packaging instructions Improved documentation for build customization, added examples for using Makefile variables, clarified release packaging output directory, and included instructions for cleaning the build directory. Also updated formatting for better readability. --- README.md | 85 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 48 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index 03a00bd0..1353c12f 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ [![Discord](https://img.shields.io/discord/379876792003067906?label=discord&logo=discord)](https://discord.gg/pfgT2Kz) ### Dependencies -| component / version | minimum
(not recommended but may work) | recommended | most recent of what we have ever tested | -|-----------------------------------------------------------------------------------------------------|--------------------------------------------|----------------|-----------------------------------------| -| gcc (Linux) | 8.4.0 | 9.4.0 | 12.3.0 | -| llvm/clang (Linux) | UNKNOWN | 7.0.1 | 8.0.0 | -| [MSVC](https://visualstudio.microsoft.com/downloads/) (Windows) | 2017 (15.9.30) | 2022 (17.11.5) | 2022 (17.12.3) | -| [XCode](https://developer.apple.com/downloads/) (macOS) | 12.3 | 14.3 | 15.2 | -| [CMake](https://cmake.org/download/) | 3.26.3 | 3.26.3 | 3.31.6 | +| component / version | minimum
(not recommended but may work) | recommended | most recent of what we have ever tested | +|-----------------------------------------------------------------------------|--------------------------------------------|----------------|-----------------------------------------| +| gcc (Linux) | 8.4.0 | 9.4.0 | 12.3.0 | +| llvm/clang (Linux) | UNKNOWN | 7.0.1 | 8.0.0 | +| [MSVC](https://visualstudio.microsoft.com/downloads/) (Windows) | 2017 (15.9.30) | 2022 (17.11.5) | 2022 (17.12.3) | +| [XCode](https://developer.apple.com/downloads/) (macOS) | 12.3 | 14.3 | 15.2 | +| [CMake](https://cmake.org/download/) | 3.26.3 | 3.26.3 | 3.31.6 | ## Cloning @@ -38,6 +38,20 @@ For most use cases, these two commands are all you need. They handle the entire You can use the `make build` target with variables for more control over the final binaries. + +## Creating Release Packages + +To create distributable packages (e.g., `.zip`, `.msi`, `.pkg`, `.deb`), run the `release` target. This will build the project, build the documentation, and then package everything. + + ```shell + make release TESTNET=1 + ``` +The final packages will be located in the `build/packages/` directory + +## Advanced Build Customization (Makefile Variables) + +For advanced use cases, you can override variables in the `Makefile` to customize the build process. + * **Build a `testnet` version:** ```shell make build TESTNET=1 @@ -46,37 +60,34 @@ You can use the `make build` target with variables for more control over the fin ```shell make build STATIC=1 ``` +* **Build a Debug build with 8 compile threads:** + ```shell + make build BUILD_TYPE=Debug CPU_CORES=8 + ``` +* **Use custom CMakePresets:** + ```shell + make build PRESET_CONFIGURE=my-config-preset PRESET_BUILD=my-build-preset + ``` -## Creating Release Packages +| Variable | Description | Default Value | +|--------------------|------------------------------------------------------------------------|-------------------------| +| `BUILD_TYPE` | Sets the build configuration (e.g., `Release`, `Debug`). | `Release` | +| `TESTNET` | Set to `1` to build for the test network. | `0` | +| `STATIC` | Set to `1` to link libraries statically. | `0` | +| `CPU_CORES` | Number of CPU cores to use for parallel compilation. | Auto-detected | +| `BUILD_VERSION` | The version string to embed in the binaries. | `6.0.1` | +| `BUILD_FOLDER` | The output directory for the build. | `build/release` | +| `PRESET_CONFIGURE` | The CMake preset to use for the `configure` step. | `conan-release` | +| `PRESET_BUILD` | The CMake preset to use for the `build` step. | `conan-release` | +| `CONAN_CACHE` | The path for the local Conan cache, where the dependencies are stored. | `./build/sdk` | +| `CONAN_EXECUTABLE` | The path to the usable Conan executable. | `./build/bin/conan` | +| `CONAN_URL` | The URL for the Conan remote repository. | `artifacts.host.uk.com` | +| `CONAN_USER` | The username for the Conan remote. | `public` | +| `CONAN_PASSWORD` | The password for the Conan remote. | | -To create distributable packages (e.g., `.zip`, `.deb`), run the `release` target. This will build the project, build the documentation, and then package everything. +## Cleaning the Build Directory - ```shell - make release - ``` -The final packages will be located in the `build/release/` directory +You can nuke the build directory with `make clean-build` -## Advanced Build Customization (Makefile Variables) - -For advanced use cases, you can override variables in the `Makefile` to customize the build process. - -Example: -```shell -make build BUILD_TYPE=Debug CPU_CORES=8 -``` - -| Variable | Description | Default Value | -|--------------------|------------------------------------------------------------------------|-------------------------------------------------------------------| -| `BUILD_TYPE` | Sets the build configuration (e.g., `Release`, `Debug`). | `Release` | -| `TESTNET` | Set to `1` to build for the test network. | `0` | -| `STATIC` | Set to `1` to link libraries statically. | `0` | -| `CPU_CORES` | Number of CPU cores to use for parallel compilation. | Auto-detected | -| `BUILD_VERSION` | The version string to embed in the binaries. | `6.0.1` | -| `BUILD_FOLDER` | The output directory for the build. | `build/release` | -| `PRESET_CONFIGURE` | The CMake preset to use for the `configure` step. | `conan-release` | -| `PRESET_BUILD` | The CMake preset to use for the `build` step. | `conan-release` | -| `CONAN_CACHE` | The path for the local Conan cache, where the dependencies are stored. | `./build/sdk` | -| `CONAN_EXECUTABLE` | The path to the usable Conan executable. | `./build/bin/conan` | -| `CONAN_URL` | The URL for the Conan remote repository. | `https://artifacts.host.uk.com/artifactory/api/conan/conan-build` | -| `CONAN_USER` | The username for the Conan remote. | `public` | -| `CONAN_PASSWORD` | The password for the Conan remote. | | \ No newline at end of file +To completely reset the build directory to its cached warm-up state, run `make clean`; +the selective clean script can be edited here: `cmake/CleanBuild.cmake` \ No newline at end of file From 671a8528cccf8f2fa5855a2fc35c9b568393a6ee Mon Sep 17 00:00:00 2001 From: Snider Date: Fri, 10 Oct 2025 12:19:20 +0100 Subject: [PATCH 07/65] Improve build cleaning instructions and Makefile targets Updated the README to clarify proper cleaning procedures for the build directory, emphasizing the use of 'make clean' and consequences of manual deletion. Modified the Makefile so 'clean-build' now depends on 'clean' for a more thorough cleanup. Updated docs submodule to latest commit. --- Makefile | 2 +- README.md | 17 +++++++++++------ docs | 2 +- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 60068533..914e0606 100644 --- a/Makefile +++ b/Makefile @@ -157,7 +157,7 @@ docs-dev: configure clean: @cmake -P cmake/CleanBuild.cmake -clean-build: +clean-build: clean rm -rf build tags: diff --git a/README.md b/README.md index 1353c12f..2a767574 100644 --- a/README.md +++ b/README.md @@ -9,14 +9,12 @@ | [XCode](https://developer.apple.com/downloads/) (macOS) | 12.3 | 14.3 | 15.2 | | [CMake](https://cmake.org/download/) | 3.26.3 | 3.26.3 | 3.31.6 | - ## Cloning Be sure to clone the repository properly, with `--recursive` flag, or you'll get angry: `git clone --recursive https://github.com/letheanVPN/blockchain.git` # Building --------- The project uses a `Makefile` that provides a simple and powerful interface for building. It automatically handles dependency installation with Conan and compilation with CMake. @@ -38,7 +36,6 @@ For most use cases, these two commands are all you need. They handle the entire You can use the `make build` target with variables for more control over the final binaries. - ## Creating Release Packages To create distributable packages (e.g., `.zip`, `.msi`, `.pkg`, `.deb`), run the `release` target. This will build the project, build the documentation, and then package everything. @@ -87,7 +84,15 @@ For advanced use cases, you can override variables in the `Makefile` to customiz ## Cleaning the Build Directory -You can nuke the build directory with `make clean-build` +ALWAYS USE `make clean` to clean the build directory, manually deleting the `build/release`, `build/SOME_FOLDER` will cause you issues. -To completely reset the build directory to its cached warm-up state, run `make clean`; -the selective clean script can be edited here: `cmake/CleanBuild.cmake` \ No newline at end of file +Our `make clean` triggers a cmake script that completely resets the build directory & dynamically added CMakePresets to its cached warm-up state, +the selective clean script can be edited here: `cmake/CleanBuild.cmake` or directly run from the repo root `cmake -P cmake/CleanBuild.cmake` + +You can NUKE the build directory with `make clean-build` which is `rm -rf build`. + +If you do manually delete build folders and get CMake errors (if you have compiled anything previously, you will), +the ConanPresets.json file has entries in the `include` property, delete them all and try again. + +This happens because CMakePresets.json includes ConanPresets.json, that has the list of toolchains to use that gets populated during the CMake config step, +when you manually delete a folder, the toolchain is now a broken path, and CMake throws a fatal error. \ No newline at end of file diff --git a/docs b/docs index 5f842e05..e40a78d5 160000 --- a/docs +++ b/docs @@ -1 +1 @@ -Subproject commit 5f842e053886802d3ef5322e19442c84f3b4aa63 +Subproject commit e40a78d5020661f05d9bae64f2edd4519d9d98b3 From 066e4570f2df7609375872886e3c37ac307d77cd Mon Sep 17 00:00:00 2001 From: Snider Date: Fri, 10 Oct 2025 12:31:14 +0100 Subject: [PATCH 08/65] Update README with build and packaging details Expanded build instructions to clarify required tools and dependency handling. Added context about historical distribution methods and CPack usage for packaging. Provided guidance on skipping the packing step and removed redundant custom build section. --- README.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 2a767574..c3d6db02 100644 --- a/README.md +++ b/README.md @@ -11,12 +11,21 @@ ## Cloning -Be sure to clone the repository properly, with `--recursive` flag, or you'll get angry: +Be sure to clone the repository properly, with `--recursive` flag, or you'll get angry:
`git clone --recursive https://github.com/letheanVPN/blockchain.git` # Building -The project uses a `Makefile` that provides a simple and powerful interface for building. It automatically handles dependency installation with Conan and compilation with CMake. +The project uses a `Makefile` that provides a simple and powerful interface for building. +It automatically handles dependency installation with Conan and compilation with CMake. + +You need CMake and Make installed on your system, other than that you don't need to worry about Python, Conan, Boost, OpenSSL, or any other dependencies. + +The final packages are created as they are due to a historical distribution method used in china: USB Stick, CD, DVD, etc. + +We use CPack, so our pakages are self-contained, have searchable HTML documentation, and are ready to be installed on any system. + +To skip the packing step, use `make build` as defined in the section below for Advanced Build Customization ## Simple Workflow Builds (Recommended) @@ -32,10 +41,6 @@ For most use cases, these two commands are all you need. They handle the entire make testnet ``` -## Custom Builds - -You can use the `make build` target with variables for more control over the final binaries. - ## Creating Release Packages To create distributable packages (e.g., `.zip`, `.msi`, `.pkg`, `.deb`), run the `release` target. This will build the project, build the documentation, and then package everything. From 2bb5eb7544d1329513ad340183a8f1fa3325fa84 Mon Sep 17 00:00:00 2001 From: Snider Date: Fri, 10 Oct 2025 12:43:40 +0100 Subject: [PATCH 09/65] Update README with Web2/Web3 links and typo fix Added Web2 and Web3 gateway links and domain information to the README. Fixed a typo in the word 'packages' in the CPack section. --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c3d6db02..f6607c63 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,11 @@ [![Discord](https://img.shields.io/discord/379876792003067906?label=discord&logo=discord)](https://discord.gg/pfgT2Kz) +Web2 Website: https://lt.hn/ + +Web3 Network Gateway [HNS](https://handshake.org): [https://lthn](https://www.namebase.io/domains/lthn) +
_(our chain aliases come with a working Web2(`*.lt.hn`)+Web3(`*.lthn`) domain name)_ + + ### Dependencies | component / version | minimum
(not recommended but may work) | recommended | most recent of what we have ever tested | |-----------------------------------------------------------------------------|--------------------------------------------|----------------|-----------------------------------------| @@ -23,7 +29,7 @@ You need CMake and Make installed on your system, other than that you don't need The final packages are created as they are due to a historical distribution method used in china: USB Stick, CD, DVD, etc. -We use CPack, so our pakages are self-contained, have searchable HTML documentation, and are ready to be installed on any system. +We use CPack, so our packages are self-contained, have searchable HTML documentation, and are ready to be installed on any system. To skip the packing step, use `make build` as defined in the section below for Advanced Build Customization From 4b1762f7f18cc1c8f38e82e82bcb13c7de70238b Mon Sep 17 00:00:00 2001 From: Snider Date: Fri, 10 Oct 2025 12:55:05 +0100 Subject: [PATCH 10/65] Rename Conan CMake scripts for consistency Renamed 'GetConan.cmake' to 'ConanGet.cmake' and 'conan_provider.cmake' to 'ConanProvider.cmake' for consistent naming. Updated references in CMakePresets.json, Makefile, and related CMake scripts to reflect these changes. --- CMakePresets.json | 4 ++-- Makefile | 2 +- cmake/{GetConan.cmake => ConanGet.cmake} | 2 +- cmake/{conan_provider.cmake => ConanProvider.cmake} | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) rename cmake/{GetConan.cmake => ConanGet.cmake} (99%) rename cmake/{conan_provider.cmake => ConanProvider.cmake} (99%) diff --git a/CMakePresets.json b/CMakePresets.json index 07cb3684..80247a7d 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -18,7 +18,7 @@ "cacheVariables": { "TESTNET": "ON", "CMAKE_BUILD_TYPE": "Release", - "CMAKE_PROJECT_TOP_LEVEL_INCLUDES":"cmake/conan_provider.cmake" + "CMAKE_PROJECT_TOP_LEVEL_INCLUDES":"cmake/ConanProvider.cmake" } }, { @@ -30,7 +30,7 @@ "cacheVariables": { "TESTNET": "OFF", "CMAKE_BUILD_TYPE": "Release", - "CMAKE_PROJECT_TOP_LEVEL_INCLUDES":"cmake/conan_provider.cmake" + "CMAKE_PROJECT_TOP_LEVEL_INCLUDES":"cmake/ConanProvider.cmake" } } ], diff --git a/Makefile b/Makefile index 914e0606..c0de80b1 100644 --- a/Makefile +++ b/Makefile @@ -140,7 +140,7 @@ test-debug: # allowing this target to error quietly saves cross brwoser file detection conan-get: - cmake -P cmake/GetConan.cmake + cmake -P cmake/ConanGet.cmake (CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) remote add conan_build $(CONAN_URL) && \ CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) remote login conan_build $(CONAN_USER) -p $(CONAN_PASSWORD)) || true diff --git a/cmake/GetConan.cmake b/cmake/ConanGet.cmake similarity index 99% rename from cmake/GetConan.cmake rename to cmake/ConanGet.cmake index 9b7437ee..6110328e 100644 --- a/cmake/GetConan.cmake +++ b/cmake/ConanGet.cmake @@ -1,4 +1,4 @@ -# cmake/GetConan.cmake +# cmake/ConanGet.cmake # This module downloads and installs Conan if it's not found. diff --git a/cmake/conan_provider.cmake b/cmake/ConanProvider.cmake similarity index 99% rename from cmake/conan_provider.cmake rename to cmake/ConanProvider.cmake index c524fb7f..036ede6e 100644 --- a/cmake/conan_provider.cmake +++ b/cmake/ConanProvider.cmake @@ -572,7 +572,7 @@ macro(conan_provide_dependency method package_name) endif () if(NOT EXISTS ${CONAN_COMMAND}) message(STATUS "CMake-Conan: Local conan not found, attempting to download it.") - execute_process(COMMAND "${CMAKE_COMMAND}" -P "${CMAKE_SOURCE_DIR}/cmake/GetConan.cmake" + execute_process(COMMAND "${CMAKE_COMMAND}" -P "${CMAKE_SOURCE_DIR}/cmake/ConanGet.cmake" RESULT_VARIABLE result WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}") if(NOT result EQUAL 0) From 5f7709631aeaeff7e3d5af0c50205a4959955e74 Mon Sep 17 00:00:00 2001 From: Snider Date: Fri, 10 Oct 2025 13:03:32 +0100 Subject: [PATCH 11/65] Refactor and clean up utility and resource files Moved static assert test and Dockerfile to new locations for better organization. Renamed several JSON config files. Removed unused resource files, shell scripts, desktop entries, and utility scripts from the utils and resources directories. Updated CMakeLists.txt and docker-compose.yml to reflect new file paths. --- CMakeLists.txt | 2 +- {utils => cmake}/test-static-assert.c | 0 docker-compose.yml | 2 +- resources/Zano WP.pdf | Bin 2631432 -> 0 bytes resources/app_icon.svg | 42 ---- resources/app_icon_256.png | Bin 9869 -> 0 bytes resources/dmg_installer_bg.png | Bin 668173 -> 0 bytes resources/installer_bg_164x313.bmp | Bin 205384 -> 0 bytes resources/installer_bg_191x385.bmp | Bin 294196 -> 0 bytes resources/installer_bg_246x457.bmp | Bin 449744 -> 0 bytes resources/installer_bg_328x628.bmp | Bin 823992 -> 0 bytes snap/snapcraft.yaml | 75 ------ utils/.gitignore | 1 - utils/Directory.Build.props.in | 8 - utils/{ => JS}/payment_request.json | 0 utils/{ => JS}/premine_config.json | 0 utils/{ => JS}/update_alert.json | 0 utils/Zano.desktop | 12 - utils/Zano.sh | 44 ---- utils/Zano_appimage_wrapper.sh | 51 ---- utils/api_response.txt | 7 - utils/contrib/create-dmg/LICENSE | 21 -- utils/contrib/create-dmg/create-dmg | 230 ------------------ utils/contrib/create-dmg/origin.txt | 1 - .../contrib/create-dmg/support/dmg-license.py | 163 ------------- .../create-dmg/support/template.applescript | 79 ------ utils/deeplink.rm | 1 - utils/docker/containers/README.md | 5 - .../docker/{images => }/lthn-chain/Dockerfile | 0 utils/increment_build_number.sh | 29 --- utils/macos_entitlements.plist | 8 - utils/macosx_dmg_builder.sh | 28 --- utils/setup_32.iss | 151 ------------ utils/setup_64.iss | 119 --------- utils/snap/snapcraft.yaml | 125 ---------- utils/test_wallet_rpc_api.bat | 2 - 36 files changed, 2 insertions(+), 1204 deletions(-) rename {utils => cmake}/test-static-assert.c (100%) delete mode 100644 resources/Zano WP.pdf delete mode 100644 resources/app_icon.svg delete mode 100644 resources/app_icon_256.png delete mode 100644 resources/dmg_installer_bg.png delete mode 100644 resources/installer_bg_164x313.bmp delete mode 100644 resources/installer_bg_191x385.bmp delete mode 100644 resources/installer_bg_246x457.bmp delete mode 100644 resources/installer_bg_328x628.bmp delete mode 100644 snap/snapcraft.yaml delete mode 100644 utils/.gitignore delete mode 100644 utils/Directory.Build.props.in rename utils/{ => JS}/payment_request.json (100%) rename utils/{ => JS}/premine_config.json (100%) rename utils/{ => JS}/update_alert.json (100%) delete mode 100644 utils/Zano.desktop delete mode 100755 utils/Zano.sh delete mode 100755 utils/Zano_appimage_wrapper.sh delete mode 100644 utils/api_response.txt delete mode 100644 utils/contrib/create-dmg/LICENSE delete mode 100755 utils/contrib/create-dmg/create-dmg delete mode 100644 utils/contrib/create-dmg/origin.txt delete mode 100644 utils/contrib/create-dmg/support/dmg-license.py delete mode 100644 utils/contrib/create-dmg/support/template.applescript delete mode 100644 utils/deeplink.rm delete mode 100644 utils/docker/containers/README.md rename utils/docker/{images => }/lthn-chain/Dockerfile (100%) delete mode 100644 utils/increment_build_number.sh delete mode 100644 utils/macos_entitlements.plist delete mode 100644 utils/macosx_dmg_builder.sh delete mode 100644 utils/setup_32.iss delete mode 100644 utils/setup_64.iss delete mode 100644 utils/snap/snapcraft.yaml delete mode 100644 utils/test_wallet_rpc_api.bat diff --git a/CMakeLists.txt b/CMakeLists.txt index a2268001..f898ec73 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -182,7 +182,7 @@ else() endif() set(C_WARNINGS "-Waggregate-return -Wnested-externs -Wstrict-prototypes -Wno-comment") set(CXX_WARNINGS "-Wno-reorder -Wno-missing-field-initializers") - try_compile(STATIC_ASSERT_RES "${CMAKE_CURRENT_BINARY_DIR}/static-assert" "${CMAKE_CURRENT_SOURCE_DIR}/utils/test-static-assert.c" COMPILE_DEFINITIONS "-std=c++14") + try_compile(STATIC_ASSERT_RES "${CMAKE_CURRENT_BINARY_DIR}/static-assert" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/test-static-assert.c" COMPILE_DEFINITIONS "-std=c++14") if(STATIC_ASSERT_RES) set(STATIC_ASSERT_FLAG "") else() diff --git a/utils/test-static-assert.c b/cmake/test-static-assert.c similarity index 100% rename from utils/test-static-assert.c rename to cmake/test-static-assert.c diff --git a/docker-compose.yml b/docker-compose.yml index 0653393a..a55c13e9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: tags: - lthn/chain:testnet - dockerfile: utils/docker/images/lthn-chain/Dockerfile + dockerfile: utils/docker/lthn-chain/Dockerfile context: . target: chain-service args: diff --git a/resources/Zano WP.pdf b/resources/Zano WP.pdf deleted file mode 100644 index b62e01645cbebfdc69962716497bde4ca3e83214..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2631432 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%0D?i@M#_I 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

Jiyn5wgo;BBg^uC%`Hrya;i*VkrqlNS;xNA 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 Ul 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

|i5INplD}#+{^kFdVUA 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

&HmSZg+gFfM#*Gpv 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%0Df-K|}*rba+yEu#=qp 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

+rTy$YD|9Kprv6FHQV59FAPi5umg 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

?3?ldGjIy_nrw-vr8{dou==3Ds8T^H^ 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%0AdJk!Rx2;r05x_5 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 z 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%0Du7O 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±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

-Z0>xX&nZJZoeJ^bq?e$STVk*v`yH>f2sX2wdz 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 mLjOblfBXC2#{m5Q@_8i{;_Bw*3bVxI=HkPor - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/app_icon_256.png b/resources/app_icon_256.png deleted file mode 100644 index c2cb15254cc9cd6689594c8267945fe485c123d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9869 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 diff --git a/resources/dmg_installer_bg.png b/resources/dmg_installer_bg.png deleted file mode 100644 index ee45f1e05609334f6dd525edb8d1f9f232384599..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 668173 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%0AgoI^YZ2jCX8E?Ur$p@>G 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

3`1yr?;dJ8R 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

$X(yM2&@TSyWco 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 z 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%0A+XeI7fhA1 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
++pH3=NEw& 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

?n3xpMQr2o6O>!rUw}K9|25fv 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

DbQQG8p!k{yKD|~ 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

`t_aU}8j}u_!i+YFRg52T4`Ffei(?S41;z5bRH? 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 M07*qoM6N<$f?#J`I{*Lx diff --git a/resources/installer_bg_164x313.bmp b/resources/installer_bg_164x313.bmp deleted file mode 100644 index 80599afeda4c30ca327c7ca81d47efd76324b6ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205384 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 diff --git a/resources/installer_bg_328x628.bmp b/resources/installer_bg_328x628.bmp deleted file mode 100644 index 5d7613d8bef8f0b1269789ba5f029e930700f6f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 823992 zcmc${cYIc5*6zQ~`S*9m8I|69@4bZ*dPxEaA-$1=g!JC&p@Se+L`5koma%sML5kSL zMoU6dAdQlS^Vj*Vd++_^3C1}y@0s`f-p}WH@BNen2l9M#U2CoT-kx3`?D$`z|2GQt zL9_mcNY?)p`5)4SMbyzTuG z+3tQ>-2MTH?(m?*pd}q2lz5cT=|M^A{GcRvc~H{2wvY^z+3i8e>i(eQpu8R}q@ZU@ zDeT=!mZOz@TFDx;wqGk*-@lb?9N1bm4{R%2RD;^c6T{odOXE7q+mpM<-zRpKePcVw zv!mO~^J6;5UanOyjPD>XPUt8vP3R;qdvualCU%n7(BCI@lGi79k~h&?Q##Aro?YZq zpPuq{NMHFTw6C1->nTU)_mE=?dddlOazQWo+^?6MTG&gzbmZSlz6$6g-=OaTddv5L zth{zQu&+oM8l*kZn#`rI!rDlSh~D)gj`8Ly7JnU zrNia7tg%wDW{Om8nkJR3H}WRPjqLGKo-;wpb3KeISSxcTN@X_ERUez@SoOKgiBgq? zawf~|O|zx;F(0YfGDq&Lo-TKmPnA2XrpxV>)8&?}+xBC9&PX4xnqhQ@=k)zXE2qgF zRI_%5)NP(E^$*RHx`*aU?bbQ0bEMX#SzI@#nLIzkrMhi=pKa67RH-%cWSwGbGOL@m zPnH^^Nm8@T15I%04%fFgj+L9sMo4wm5UENZBvl!MxE{#g!vLu?>d)T|%IPl^+5MzE zv!C2Z>nr7X{iJH+5V^g33>qudJBCZu_MuX~W&r;dedO2Vo^mw>rCPd@+Dk4Q^_0sz ze>tTG>Moa3yUWGY9#WdnP0CWc$<^Y1a{ZCPa&6l{DO=uK&L(z~pQ1a0J zx&EH#zF*u~zC~Z7ucA81my0{f7m*$1^N3DzJhX$HitZ%eXLOfyEBLv~?jc9RJIW^k z?d3zicJe-Y7ro=#PTrp1PTurxC$D?8lh@EIUTx*&d8#(@!kjj;cUBwOGqa7n>eEg> z3hE?>L%Yc93p&cv)7r}8Q(B`|^4R27@`y((+3wL=9-7cfHji&98^^Vj^n#4QnBVLm!laVSJtk^SK__Lb3)tC>j0v%=ddhQv2R7Nqz2@_+Ix* zT+at&Nss#_21R#=8Qow<7Z`#F`$xK#SV{Rs7riO%}HOtN6BsOUS1U zoNE0S@oxDS@j~;^Tv#;+&1wPP9<($AzD-BdY)yrEQ~&nA#1l>V+h6`|J}M*s$jAHs zB|b*L$0)41635ABVf~ zaTttjl*Pvp@X^xcr6b|vD7c8?xaRS1S>xg3RQNapK2DYL{E2cS2QI2ye1w5{lVIXx zKJO@3uO0C?d$Lria;CsX`1RNV_&5(f&V-N3x|wirCVaGX+kULisr2CQ~OhShG|tlP%-F^rrJ3suvQJ1do! zwzf}!hcFU;)@)NoPIT!Gyu7_}9DE!J4~I%s8hnJ2)tRiQ(r6$nf|V871EiewMjDJv z?<*BW1Lfu;BjxtfW98NpqojKKa4BCkP=3pRk4bP*8ENy;urV1%@>~->Cc{TqY517j zO)eMpk!uePlO(`e1wf(MA&=` z?jR?*{x-R*oGF5jS@1EUvwY&;UOrd=ACbeyx8UO&HXmPgLJxXq8xNDA6MWVSEFM5<2wA~2K?hDyrX)^&G-1n z*YS`0$99z6qdUkR{NuiHmW+SIL%!tEQ4Zi6U*>(UqQ6h-EN`fPoPvM!RR7o+|A-$9 z=`UZ0_LJidAARwUzP;q63jg>yY&0HHz2lEqS-%~dMBwxzH0wY6*Ui<`aR<9y^Jbz6~PrNv8S zbsHWOM%J^|ZJTMcQaz<=I#O?GGjqG`Egyo955Y;7VC6#-<<5rj@NpD;90nf;8%9=V zu)1V%vI0-3Dn~cc`x}+#;4_Pd%B{yo%dKa|z{e3%z5+g`!N_&7)|ukJ5rdHzTI;7@qOA7J8X^u4kXeT%+9U&GI@ zc+VH%o#Yf!|9A{Oo(StGUoY({Kj-$6?=ySKXOW%dVMMX6!^Vb_y9gy(_-En`UhO9#JD7Tgo!>^@={N zWffWjAJ@Xi^#fYV#sO_$WE;cB$H~_(kgwk)U%w9T_H(_Pd~Ns$EBEnuKiPUeY<$t3 zkCVvbe9ar=>Nnw{i;weRUg!Y%I;=l@>?KFZ)yH7saa$)B_Lk56`^YKurD{UK`p7fN$Gov}C4ZchCXbX7@^c9}x`e!3N_H-D(y@Kvb2B*L0NUDOIXm zM^o{S-ctL-LKxyBw~OcC4`G~g(qW)-(8zgCSAA}-Q4On0@KUd9*LlH5Z@9KV>L2!% z`t2&Nx5G;#A69qq-iK8%_2GGq+QGF;_|YBk(j~aLW2RBv4l?<}HYc~j$*pAYEo5(2 zeL}jD&YrM~Z2gueBNSd+{ zCA;|efXUafJuEgZ?)rd4!p3likDcISN4I=!vNimHkG}A6f#z$xqfcu*q{BzJ_+R7W zed1~O=+qzYbJZW+`KUEWtv@Ooo75oHKi zGYPR?RYtr+9jjsm$3aFf2*UmA9)7IN)}e5GM0-{&by4Lj%a7>2q8OLxN0op2M? zJ&Esp3ZJM?8CoLAO6kokBRWn)d{xpk^#}{|C_~>o(5#RWhH+-Du#z)wAU=E)deB%qqosWBGP@kOF$j7H_J}Mh6 z??~+t@3?s!Ic^Mm#5LGct@L$)E=Ag5#JaG8)I$n=GCjJpVdNlI!HD#n5AJs!@ zf99)D@^u(|BqulWQ5o4=EdSVBP8l{f<>R-?$YAB8`p5zBahP0$kC$D1#6yyoOUTkC za8Vg)@o|(GJ}M(&;pId;XA)dZL;xvqwlH@UvO*;i_w2!fA(a%U|WdlgJ9)~t;T7rkJh_dTMYv)U0{ z4VSxnqU7%Lk#hH$FuD7zyF%qI+*CC@4KsJa%U$sDX_d{&Ct>7c zu<>!eA8L5a8^J`EVB=$|IkqfL)<46#3syc(9#>DP9uhBkXWc}(walH5aIpy=he{=n zD^xZkU3^TZPMA7Cs#Xt^+mG@+9vMT8gI-x`f4RB@J}y;8_Tk?MJ|@6NTbEcbI)amB zs1#jD=qcxy;wuaL$*&v9*Q*A=$L{cvY#l+ihK;K4xc-LcR9~Slkj2I>auPPGK2tsh z<0oO_xAcR)qYiq4>ks`p$h&0dcgfT5z{WT6j<3VV*XEI}VdKk&jbtu-<9@Uk@3;r= z`22KBFVF2DhXTph^E=8@p6VOv$xP5(4IAO&R0NI+p3`)j7YHub%do!?c32cm^C!>8CldZ|snys}r6HH$wsDt)qsNvbYnT5(n zq`evSk50Z;|LA1vIe5rfc)3|{%dioqDI3)XD(_5R=0C(o<01KTypi^>tr{dAS8I@( zv0G7tgp2AQgQz=NHORk7IM>?4HW{1xqxP_4sXxY%t+fW3VE3?7ojx{<%<4|YM!7v& zT0NRx{GC&KTmc(bA5~ zc*HNzmjV4;{_$HpV^cm-Tg)FXm-8p!A4f|`lEuXmaZ-yE#*biq};G^x>Oe0GK_?e1>|sKJYzm=%;W2nk%p5q zmMzpCpA3eN3*n=WVPXwyO)*+yi|bmh8#SM6dOAjWjg*%wU}Z5`dI!Go*$7w{2D^gb zCER;BfZVKFgz$;{c@5halEM9`Px|8Z7FgOkAOA_6axI>41+~l-Wakz1X6TdGu7Gzd z>CZHgr_`*3fvQ#H>W%ou9b|79S^u=M6EC@$_Y_Z*+so;%WQ~-Ysl&+EC|zZ7vWn}< zG?m54$_$&6^l{45@Q?7ZqG+hx+(Hd<$5?(xjgV_RcQqE@7>AbjrGM5}E-&pv4Y{|` zMOH^; zpBo#WqgSmuFsFljvWU+EIs2(8ZRKHQt<8{y&>v=Q&PZWQ${>W(H`!^OsI&HRaG zYkXrizA+Ofro%)hTPO8-fZ8KQH3*)*b0vldBiu8MSY1 zdB?xW0&=xxYo|A(Y@A2EaW0wzr<9EjA7{cwQ+I@k(`-5ZQR|MD@Q;6ioo+Ke%2Jhb zRp)ygnT$=o{zJy*Ig61FANg-?hL2Xprq1fdM>FRG7ndNN^H~ZXlVGFPAXDkl7!PUl zF$X>x4+$TOoEoIb*sZBSwwCqqaXoBQMn0l^q|W%(B>ba`j~(D6-VrwL9p9-bAL-8= zz-PWPxwFm3uJZcSuJXoIekP{cd<@b0qs7M~zP;r$xOfa5SHZ^7%wYrlb+mVX>!_;@MbLrPP|$c4m_MkTPYl-%sdu#qf%Iccnsa`9^N1i6|t z0q0zyWNk}T_(J8P#Yeq{i3PLdX5MV1j70fd z7f?&w;!nN~g^!Ei;{x~y=U8it5&Sda+G3&m>dR|xTFq-KVH@SxpV{A!?JFy?3F9`CjXpWhxpcw=&>k3S3kfK2ncNXJ*Idqps%K zc*!BKk*tkwq{7J@GI{YR>W|~`?$m8oL~s{5j%Pd` z+)0iGbd;lb$m4wNS8?58WDkpv)D7Rp1HLt{gS-hR)jR%uPJ4M3y#gB#;2B>~Hj<^) zJF0I~F78%Mr7k(E13jLme0<1_kDJHfP1HNW#^Mq5PVtQ^;p1{ReAVd|W^cPuXZ{kIKka^k=m0sBC1_ zzRYa$w3DsXL%R3~54At7eQGCPD<3Dr#ec>}SH^~u4j<>-TZ8;h@DVotOMHZl1r8s3 z)1z_Y<2sv<%E(4O!nr^2vD3fF$1awCG<+P0f9xyG^RXX%><=INH^aw)@UcI9#2Zj+ zyvXPF60AeIzBX?T>s%hwTiFr-AH$g)3?ze+v6XXc{oo^7)2JG* z?^W%Zg}g__`&O%9Bh0K@3kx@snIDCbkD+ZLFcD^M^q2Y#D!k(c^7DGMj`zdgIy|T) zSh*5L!t>g!=~9ycBUPDGEk=T1CXF6VGBwB)twX9t8dY&!g@1JMF%|zvAEz8Ysk%YEvYgyq$qePq?Gy0s)Pghq z4}8Q|mbnBUsa0Bh>?LQTdrCu4DhL7FlyAb#Y>r~&k^D!7c!o`#51bvg^ zLDU}6(Ev-I!O&AN-Q_ECyYY|szPDz>Mi{By@pWb6toHKq?Dnwn9zJTOR^JF0pSAVE zj1KaVFJ8l|qwJjAR! zuFkOemUY(B!q{|-Jn9#R=O`=9X9%tD%+eUE>{ zL%Qc{*PJ;1F;aWj?sMYg?B@8GM!wF#Kbnk(d2Hf%H+OK)>5d>jWKm5r9J z;2WNRS^sM^K%rV&=z4If#+@Q>u`B`Ds~Wq9cF zkNC<`TV>QKOXJ`pj6BbJc5yF$SN1b(yi@=m>FxXw-h-bPi;v&J$FJd|ddDwe}l=qxm+?_r)e2nTQ?|U=L0T17Ri?7ecJHo|Rczgi8G?Tsz zo^e0*#(mTAkFe3jN6)tM4B9_~`SJzSo#@j%IjJpdY%N>K)0(R{n`}*XgO66-k^LL+ zarsdCGO)3LOr19X|A=y!1x|l%jJ;zR|JLyFO~c2o@UfHZX7*9@^&YadY9IB-{T`jEL3WlG@t7}>uU{r# zTQx}d=m}e=b|YhVlSAlZ&9w1)@;TsJf2Qv=| zCxZve&-7x-@Q#=8G$m={lSSfOm>x)L^46~WIU-cv}85*}6+TB>Hf2@?$)^S$6BJ(#UQ zQoAz}K8DDh^<-@2;JQW3FuJLj>wls;UTdP&JYMY&E6LSc>BYduMn=+)*$5{$z(^zB zvksQ3=QJXJ<6-NU;UROG88?iyIhmu3R8fmmPV#qAlVh)N@{V$n`h#-vb{d>iU%A|q z8YHuoJLt!(roa*x0CYu5ZA|>nV829Qe3N z^Ys|Ho<3Nv#`J@aD301Ax`Zy;Ds$tba>GVdEEujqp#|2oqJu(Psg$(Vx9u=m_sQ5!p??B)1=r>@M%Y$2VreM!2ZC`Ze{A z%17Av5}Eo1!$$ft)7r_NsqOHN?PRxSJ9&m$k8z(-|cCb?Q`kH$MvbJV({vT>=_9!+0{xgNOa z^ku@~qI$<*m8&LCLM$`^ryrXgIgf9UzpqoXEN6c5<_7q+~zMdwP{Nn`tqw;Y) zd{i!~CN%O9PF_;M#>=qrO3Gvyi4v8QlbP?K)<{3O`k{qVMSr7mxfgv^>X5Lo63=B+ z1P_hiVq6jTu+*v6s)FDg zt4lDo*pd75jo0&ePTYL;uqOXVtNt*A?0iRo`Cw!d6P7g3oJ z?1P1+wo2gT1+G=+V#wD~^s$wX+3*oYp5glYupVR%*ht3y8hr^Lm5rLMPa@+R@r=jN zXPT+iJ1(S`h(6`HYY>SVYtv8XUH=+&jaXox2hL5X;@_B@d%i*Hq9Zl^~y(8H=L%kzh zbn1>t>K*UlW3*;#{9~lD5rsK?R5t2d4}1);`_^Wz$9P9&<6o?qa5p~AgNfR=o{g`Y zWvfYF2F|(I*c>0>qQyt6hi&oE@|(@^QD-3a&vNJEy?YH^eAFH`axs!z9gOs>iZIRC zW)70S3)twKRiS*;86W4Y3a5u{YLIru&Vi44)FBIdsfV=ZeDIH}(VG5k$l7gWo8cq1 zXw$zYUytt$A3MQE%R3tX$aDKtc*y;*@deoUk{cgig^La&Kk;F2Oenky8_e(O{_wFM zeC*Hf?EdEQG1z#V{Com^j!vO3;NutM=`YdOAw$?tLk%)`i2M{!kDAZv#e%7F0Z((D zp7eQ`cmcmy0t+3LlB3ID;zf9P30+Q^0v|o`ktlHreDs8myUmu~X-W`U(!1=Je1&|`iw7CuJN&!CUJ7DlcQgO6cw zQ56ce=&zVnuT?O$Smius)$4n;hOb*~ak8H4hAmOj@JOu1$*t5S;cvHgrhLPms92GUmY&e+>Cspbv;bcv=ihbkm%HpgH?Rm3zsHO;>u7i)v4BaAg z-(;5brg}(f8#k%{-ZY%VOEOngse+jmc*=4-WqC4t3DFI7JyGkBuc}M?If?_KOgsC z4=>(PJ)?4Qoq9*@S>qj73}rT1bM+AVsDtn^1L+yS#_axh9QF}rz{WI~n1YmziJGfz z@3=&LqxNMqThot;(7ueFtwYGwPPPtEJ|gvwekNO6J?q9jGge>5IgettJ@aVz2)|r& zJ@`G%)ml?@WX*(IbK#Tmij&;=XnRPlRk~+$*PIXE&%KB3FtV{f<30yz&p^7>AOm4y z5DGkE(!bVx-7Fu;+0L9#R!{z};iL9x-1)c?HfkMmHGEWU8_MrOYK?}E zWas_k;Nuu-kYhWOtr3rP-8Z3&?B(@++QWgRFB(2}HTn8g&#s1#%E*tsncKkwei=4| z-_-;7Iqc8R;{bjx2bjml7SY!>d>n*-9K_G?Ab!semQ#k0urXvPGm(Sg<52iWABN0# zkvYW+^jpuTz(*K)0gqT>1S4Uk#mC8pj~A1t$R*f#Ib|w*M2RpmX)61#sW&o1Q@u41 zKKe`LO68(EAL-jH!&fe&K3T;3ieRDPqaTd)mLM1SHsSg%2;0CvRE2+z)00rc)6a}@T(2$=-o%Pvne9VTA*?7q;6@D^H83`YilUcLiBj;kEJ6YDMyi`wV_(<=*b}d;Q-Qw@x z@R5I$Tg(gGR8bGEMpg98R249@98Q+g$0<*8<0Jb*Z)m@JHT&C_d&o6>>JqUhJoVkL2Rlrol&e_zJz~ zm#1^?0PB7pt9RUI*hr>UHqw8220e|GjXU9?=IwXpaK;s1^B9je!N>I@sA(Z(V=?nQ ztCWq}lYx(g@KM>AH=w26lTq(z@i7%Hnq19ldNSl{Wn(N{bl4aL7oEDJW^2PoJ6kV; zjXL+J-qE*>ldJKM_(s#0X=T?Q$<}%ng~Lbnjk?dp@KJO1|4)2eK)&|1=fs`8G}^~* zmX9#f;iJxp>l~!cKxz##ks4$&XH}T6- z8a_^>2W|LBzP9=JJZx0$nb6s=(eP2<10$7>2PSuwm#IHC$H%Xl;p0)*=+4Izu<>Nz zVET)H!pAuHNbYOoqX&GPX!DVtHl9&cN`5Ybi^|4}c*aX`(ZxsDcqM5Xd}QX4`dl@A zm8y*aK>uP1e8fX47uW0B zsJgY0u&p^o@x01@t(dhrt%jkiVB;$FoMh`wWb7UBa`)jluK61Ls`}A}H3)Cofah%B zzq3A@jIE5!W;RllMcy`om2lGXlK4qjS)+{1!bhT7I9UrHRfdx~E5zQQTJ}%g%9w(8 zK&JntqTV`e559ZZ_H9QB9pBhK9Z{w@Q(4# z@KJl#;c!v=GRjBe9pR#8YcmtB-ciq@aO0!3-`eWUn4S!L)S9E&PsnQeGBDEYCsaP# za_?C;@sHFS)jv))^+&4)seNqI!?wTH$=L3Dv1j2?O&yZeeIJePHJne6#`Ljar1r7> z>1S)c)_sNndF|A$3+fl0LScSK;iXiPwzn%GoU>Mf)_)oR7;twjyJ< zk^=Zx1Rqzhhh~*ZeI$I`JeZs?ihS*1@o^uy`Wc&#&%s8O#Yc;g`*`1eSo$Jtd?vZ$AVWJHe z>(82KXWeotj1XSU!CpVxj2e02AY%18B%PfloKe5La7z_gC?$k?{B0ne!Y z7>kYY5x=N)M`dFXxmvTe&hz9_bIgX1nSGRvobyP&HZwis>VzJ6A89-ZfLa<$n{Xy1nR+2p_dKWAd@xYiYvA zzgpRP3LKma8~+tPI*fFBH2*FiO%2lKV<3EV=6p;IQuzoQt@C^ylxRC+J9`b2@Q=yx zF%>?h>zogK%pzasz{VVUG}@<854jvhuIg{`aV31*G>D8a0zOWFk7yq}{AYaJ3m^Bv z#}{0D>@F{Rb~lXFUiL@c>>Y%UUxp2Xg@gWtkIeqS#^Z4DMBos5G(*VPL&?~%F=QAs zKSMaLVwjwcWuAwAK^c3VOERaz$H~+mr@+U_MkR1jRSFx+@QfGXq3RM$ybKeSi&v6$ zoniP`&U|4tednr;!7$OE&#J{my{=qtana)ABK#vfM7L}iHWmiKN0bX6H^9Eflcny_ zM9#cf0uOntY}`QJUQbzZmGjtMi&>i$3|#{|SEE(1auuvpj&5E8 zAD1#e9#4;1zn0hFWc{j8>W}olv+2`h*^JC)E;36QX>$@kS)0v%Z&enY%*0Q^$U0O@ z{;pM4W~iscJ2Dfmv*)@$@^<=E*vK5@5*V4FwMZDbRC_keG%6$Ukri;V94}dJR<7aY z4QiCvVdf3y`>R&4hpEVevvJucA2rlsqs_>&2=X#2i5MssA_vGhbl%oE7fPudN}747QO@{m5nd3?lWv;&+R1Yj><;lzT!NgQwdQNB zJ8HHL>kJ>Y?x?vMHRU7cDbkOz{G+ws+6z9;(`?dA zJoZ@!4dG0HKj-6T3XR9^?r4I8M&vTgo^Wq9k)Vp9fEy zkDl<+lh4RhIKY=PlJt< z5a(4aoeUePN22PboTm;WD^Ue1Cxe$Sg^fnz& zhKqQ{r{JP$=Q#K{4nD%mw`W>>d>B5igO6*5z(v?-^{hD)0XFKaqt+essXONO!^e=R zoouaqbn1>e>lhCo;|v?|MRs3C_gepfk9fxa7$4O;+WyhGXTrbYADtN=SH7l4A2nl}I;6u#w~TFO#e3o( zVWi2}_Ng*=xBHQ4QQSWcef=o56OF1!p?m9-dXgrvy_o4W+~yM zdP>dRb?PTG@sf@*V5FOB)9F{IleyJP=D|*T|KsgcW+0a^CmstUjp^rYiG zq{1a-q{YV@u<{08@;W`88!7Oyh#CF7$?_|_yhQ!w5;f{e5kur6Dvh9?X#C?Kxqyc} zkIvaT8$LkJMsQXSocuYgpPZ$ia{)FgAAiI@ehD8>`jC+qAh>u!+34FtKEqQUL7&3M z!!YqM>mg+Ek+U9sx)=|6guc#+Q24mW;^Y3w@DU!m_{jBhD%kie+NCmVYzG_L$CtLqT7PPkdGTwMcYbM<8 z%`}&^ZlJZ_FOW)O6QEc zkn6lNdsbZc)40y_vFni9!!~n1+Q&wwj}0faPouLwu^n4*rg#g(NHgnW`ZSH_RhU^H z_^2K-7iq>ebx6~zX)Vj)<68Lm*l=cHZU1;LA9usc=XmXTviI{gBQ<01pG3xnk1xW< zm!|Z9jXikWUEZC;9zwYH1v&XMIC#hpMlKu#BL`6fLjHrPLk@wFL+I7O#{i3uC*k9% zV7z0iT^4wiCd@kGRWQ;Ffs#Hrc;}AiR_)m zxol}#m&8Zr!p>Fffut^Ro8LP(V?E_&3~Y>>BGqw|(Ilxtm8imqbJ)q?H{#)-9Lz+3>NDbL4V8<=1%j%abq4LWfEjoGc6Ho@Posz{hA9nm80b4&}^n_F(zHC%MqXwCF!%@H=*^WbK`jEj%P$=Xtaz^EH2j~SnVZRHWe zNA?GLIQ~)h7~&oAkIKj0@bNi^kLn+J-#*y5A0EEo#>f2=nXjGASv_#?RIts*g@fVa zVEAb1h`+_g&lU}B%13y3DtIJ(90ecYWY9>?#vdoYXntnCxeT2nGbT!#au8}n>>HAh~UQ91LjJzETAE`wy4?&^K_JkQ#vsM>{ zqcHfWYz#*coMRJ-bd7+I%1L_G_`mw?889*rM&?Mv)-*V&UJ^d8fsbx#SOXv3^!w@r zQ8nD7yQ`OqqlQ(maV1=I2|u|K4z7TaMeMCv#q9V7eB?tga#OPWzJi)%7IWhn@KI$L zshm_sDl1V2*XiVLRG&@{2h|yoyA2;w}lHq#Gk`tU?e{4Rz7N72N6n%;gqeJK* zjQqq~dx-GSi?bfl$MebFn#Y5B@pIZkUZL;27Z&b=iJGlle4N-`p1~VFjdtM~pTaNh zv}L>_UeTS8`zLplt)tqSY`wybjmz+j>K)ZL=E6s(CzF9^G;D;AN$MS8<5CwNndyOx z(KZ_+?VfcQ`(#34V-r3y&$Ec0u0Pq+syiwl>C3=Ho$1lKqqC>bI*XzyAI*If@Q?1j zYwJE-FtG_A@s5AOM`fhpq+zMOm&RtJGSbz@xTxnry7#foeGT!DdfwT+ zd<=n&&Mc(W$F}$wgLhn_9zA;&hb$`7CL-{ky?X%c$oS} zi;pj8z8=kt&uG{PBX^Ir__*8fv8(LCJ1QUdPE_AoN`aB7w#nDfCq1}h)oWY8%2I((e`m_VIT`It8k zFFBq45>w?I^E&78jOStFdAN81mB7W)zh4t$)8=E28#@X^Z>eEcYtRn`i>yr#PAuC+W~o6@M_WVySBI-{+I)i4&_g{gPdS1!j- zvi`m`UH-wJ`@4G49Oiy9$k`ciGLzMKNoA!i{AFD_eeQJXlj(R#REKI|WK9}p`l`~Y zQ|7?X73?#o4sn~mSBsB$$hfIey#z+0swLcyq6r_Bk%(I5jU^sr>xpuWp3Zglc~&up zP?3XwjN?3!P|o%wV_Z}|q7uC11^Rlb^XMEpqY51?zp&px^%MFrm~)fqeV>mXMjx9V z9^UfQ0?rrp;`~O~cpQD^O|QkPhaB;Ojpz_M=-nMQc9)Omb%TxF}~$I4LdlXNVg z7g?u=yiDKud04myMk*V1eGWa#bIL}|)5bf(#wYQNsweP`kHg2u&@=eQH>R;4cTxx0 zGNP@l9z>?bGpcV?HWtCf0>ef!bw4t-&ho&-G?)lHjL!I*WCLRURwKU8taf+gLE>s!$`B| zPAY^_7aDkI@zd}sBLEtrR-kByH^=}OMlUN(HpR1b-Ad$pE47+HYSLoS1lEAWup zhIEhvsXbIP58)j&%w{u8yV_sTq4D=bMg|)A*G0)WXU* z7vgN{O!!D0G6^;&!N#OnMi-K1!^b)BajsEW@;o@{g@^Rwo}u3G5hZ!c)ihtZu@VN- zL#bLHEtSj{R=~vycv!hy*%)b5#ag{Aiu+P6cIg&eRNXF$mOF(pa;GSUb8VvKcD_EQ zCj%qvHp9h-^Vl!FOzu8jBzGSvU|tbDTxd(Lt;fIfTvHYBxIq4~J)fFlqyDii5ANk! z+L{XobBzA6HJdd{e&3iOzi-Kqf9&A3?L5bS$K4$I+!@S6W-vFNsZvg=r$p&0I0+x? z)A5mMFft7eqFVlbYSP#{se+ZYTC>Do*A@lJ?IidZgMW;MkFnDXE35I7Rb=i;7+Dd^ z{d`og(yUzHpjLSuR$hyRlL_Q-`fTOw&$${q0XA~~AnMI!aIzGYz{(5!PCbXtGRJTx z7&f9`VC2v2H&Fe^xhFpaQHP9zpWL_i?2_T~J{T`P98;1^ZM(2kG*{T=Hbj352Pmw4~vwIsIWgh8STfwM$?ZW zSEo^DOvNjvz(td*wO>uH)_vAX$kfV4;~iNYHfpwZ^{kbR$m}JAkGfYzXL{Vvp)hAW z+Wyg+d9?DZ*-r?kbQav?YF6c!N_nPd@t8Atj2DD^PPTTdJ8JE5qRqu7eB?Q^7u(E2 zHh*6ls}5LZ^M@Mo@{)inH5(?q7dZlH#EH(n~yOaT3B^R;~_0Z zHktK-j~VJAQ4WmEgOLU5AKg6Uror6b+VBw{IIbJ>;a!Y&+v~Hgj13=cPVT`!?uC#0 z96qw{_2|Lg)jrg~;Uk_vGnZtpH+u-9vD!sP!yIybQIhXV?eB8>{Y;gn|H=|9C zVBjYBi2kuDTkdXzkL&S_8{i{sR!@4jh}p<&_H1WzpN32rse+UBj?(dyhLL3MG!>jo zqlW`0Yf~*oDkp2zQ)+K#8GFi^`@EgV8Aj3ETVk=YkrhT(qbe9#iI1#64j0SG;Hn!i z@;bb{7Bdk(lEXQFy_`9Ot1+Ah4^WlJ>@VuXapZ&;>XIvIq;G7 zeb)E%8lQQHGwzT2_mYq4@4Vy*A1A;^Wh6X&4n2#W#uut@)GWPIeWQBD(Uu%GKFZ^# z$KfCO9((v6n}(6kl#QrR*@)CT=Jma&AA@gHHl{EGo&*~cU}HRe>NskSvFxjkW?%JU zR;n3H*|>aS?Oi>KhlrM$OhHQ{x@2^KTvB2#e^+=q$KvuBRD3x}SmT z_(o-=-e<;r=Fwu~|2-ddKlXo>kH$yB$6)02X(HgG)*!83cB6+}svgprh185~^D&cE zJ!Fo0NZ4o?iGM6WYX`A!Y7Bb>C-C#}U*zNdNj=Hl)NiKsrZ1>x;|_y&BVge$elIuW z<6+on@o~8AA1yu}gNrAE#==MxIF^~8vGPs0hn#_nW%&!><6QVS8$K!%EjFG@n#=V( z_~->6z2T!b-q8omhmZ5&qiTVX^6@GxC}*CqdTSDAwZ_3mYLP`z@G%-b#=u8Q)m-0n zDVBcq68IPgA5mc(o-rOiBE8Osm3eWT>9AC43Ydpn!Cd5;G-j*QndO0(#hL6C#9OMk zZYa(m8>3Y)O|?>2eT)~>b!ECszpo&N8>O?7$Bj~0$=%Dz-OG~XcO&vP{|$GusYzxk zA1yUxGCz)&tap^ozQlBRsf3hMqZ1-N5<>Dak=kLy2D5Al>r|eHOI%F zm5+fc_{hxI59l;Avp>_%IU55Xqv2x^eDsEov*F`B&Z?i+3-8$Lk9>rMhK;Q6&!&%v z-a+rNoTx@zVu3Y`!$48wNcR#N}Gq#hn zUA=6cGj&M3qf>`;Jfy=&twTEg(U}+5I%F*VQR|Q0tB2H_4Igvi zqp3r}#$0;YtLV`@Kbm_Ij%Q8>K0fF8MrXDC<8Hj8%4BT(;~v{T?w{NfAK8n?nooMk z`(C==dMF-p1bY{T^LttOsNPXEoSZ#^oUQ)RosXmNkYlKmkK?T8@i20nVdPh#9`Xx0 zx-4%2vp)0W3_1D?e({`3^WdWweDsEoKJd|EV_EV7_^4d;b?HiqA32+hO?Ix@oJ__} zl**N{@NqG@8ZIs)cjFIL)$s5pk1Z{Mk8p8WJbXm3@pi#dJY#~?6x!13Jd_j9-sPpt z4zl;Kkj!0(rz}AENzC3POMQW*2Cf_Ol8o-=!a1&8$|WN^%7J^1vgz9xvBxl5SxBG8 zQ6_zw4CW#;*khy0wA2768#0(3Pj>_>4I}Z9X(||*3LjBzD!rH#IGLiH#5+>2tfN0w zTSzY|(FZGE-Te zHbbsPb0!_NloEbEN~k-l&Qp&$XX`BM8D_qIHiD1Tv44V-KcLfkO}+9=G<;kX18c)zYFL`5k#f;tV-9@G zgpV2UF-?6VN=AwB(V6Gbezmeuy<=1-yd$fgUuN~J-LthDAKkp8_N|?sOmloR_m+V- zGvT9?tDRM|b#r{wb0~D4NBc5PZ^qp}PO>w$t3PA%wPtMR`#HUu#th#$D{jyFz)7b^ zjn4Ww`)QPo4j;7+Y4#h^!;b8reH#7_;iKu*C?oNYOW~sNkjltz zEtwa$GPc$sv*2S6^+)3&;bS&4Kg;`5S02TAx3KYLq^x`vJ)yohXS!$HK z(er4JM|Uzdbw|A8zRA7l`}HKB^k#ql0QM^kHT{;)VBtp#hRP>?!>B>3;N!v(%u=Yg zgrAE>(#KIYjz(ke;o~@FB0c2CrOZF(%x6}d8YDfJGl}$S$b0ATjmpOJ)D|zm#S%QD zsuV7krTEgL@q>{I;iJl*IwVT;mFv0mshPp4+K?hu#V~UD63&8*<@}x{Ffz`l8V=rc z)2(Go;bQ`PL@@C-KJgCRtAT$m!N6KLSDTk?R0jj=xOP;Z3mbEpC(mOhNR54L8WG0NvfRP#WvK?jWHLT2pl}5};X28gFTWR>oH1;BpTKz?i|JuU!NzFLRfm<;tW|i*%4p7xW37nB zLq<=P8|XUM*Wu+gSozyx7`cQT&K{i`)R3<%=Da2Ty-NbPpAdBw)p=N{I*ZOwm-)rT z$6@jlGhjcW)98D8dq2_lKC^fvb;uF&Z2FA9fz3Zh3_J5Pt|O_j7-xr(v5i@);QUH0x75-U%NyQ@iSo z%EM8OdW37$F79pjI^RR@|G6GM7AY60H|h+y`oHhE;R5ndyN= zGm&!9sX01z$7%GL&CH|AJJNT7kCWh|Gtc9!T6M&R9n$DkRW_|ec zO`nG6ot*9NAHDv-N2><;&-iF&A^H1JK1L}YsY7a?M)?>A7d2;_IwX8dRYu|;U3|1N zb{>4p(wXtTZI}_~T=20LANP)ig`?mjGJG7cR9 z)&Odd%E!^LZ=`%Q-{Ip37a!F_9`PRqAN4(B3>)3~crpkN88DuV?IGWjcn8%K!otFoM&+mC9n*~JxUPePj_PyiW#`h@ z&P#`nj;I;tAzr(i2nF%K|;ADn!(&nYZOy#6{N*LLY z4kI0O%1eM0%nGsVNlNP098Ffy8R)}y%( zh2i5Ysf>b+DmYnAjq(QiBOl4(?9sW-oY3Vc&J*F^y~JO+Xlv0ZIgifLuR9Yk946u) zjr1DtsB9#Yd`F+}C+d`EBH?4i2>E&ud$Hi-;TiZwhmW&*%O~*hWBB+XY_z!8leMS3 zKf~tZ42zNP^ZG$AW_!rkAHYXFD}UGM4tPe`2p4z3xt**}z{kho-xF}rIaYUmY z;d%%C>Zf?m>wJ&r__}rQQTs7we@q``BQ-AAn5DTIE*kG>voX=m)j9{RXY@GUQGKJ~ zBQ;0mV=!yby?n$sI@#KtkFHs8?aRPL*Zm3cjE!fQHRYqJJF0(l+Vf-WB(duL4v$=N8tgz~k zR>oeUd{hsK)I%mwgEZ$>7!TPBM&cPYW2=X>`B(rSA05j1w=hsWW`cG=G?U;)`$egO4iw z;V)gpWz^(NVJ8f`fNdMalTbRFuNw6zYwzu>c+xrdu*>%z!BwWNK=U z?#kmaYRIPsiSFiS+2We#@8&w9{+Nq$R4_B!T{btf;ASSg%v4q~|Cpg#iriUgdCP`0 z_9z;`$~5+Br^3io&ILkssuVbxtb&K|u`UHprXp&VwfUU6k;lwuoUh!9phpt{BNuZI zip4MzKUsw;@RWv+WbblxgBs;^`Z&tSYk0}uqBwt(I%Ng>7q2sibvcqVMff+r!0*TN z{Cud+!A8{?`1s2rnCPY-sb&9w96tW2`8#41b;yzOHTw;Y&9(VBo7o9;Ncl+K{umy9 zh(4GJ7j3<#d_?a|N37~6KcQZ!_f2}AEWVfXp`TJdDjU&LaPCR;1in!D`1q*y@)&v) zJ}MI(DI0f;Xk+;Jclh`$?=Oar1@KYxbhcq5HLl)P-7yV5rozNzc$kQ+o{ZZpI9yx| z4;}9qZhA6}zA?ynN7z8WdXdT1ct^aVFIs>!TQ|wooY6Cf8E}<#Z$igIHtk!x_hrmn zkMVw1-SMAgYma99qr*qDmxk}-?8DL3osSM9UH9(NjIDy>hLOzp=xmaY&icSf>)bQT zLz+E@%E&ekaPHXy?5E)jb>y0dY|rl(`ZVext(@HwAK6mkyR>YQv(-bUcW*^68_x(I zv*DxGAv0O?`*5EOW_bO_k@wXU}SF?*&8nQ zCS&(u9-=pU^ZRn2BhH=(7|s5e(bOMD$U#TGBRLab6r3ClBgc@l$FQ$!EQ}mSuVy@q zoPd|~fR7%``%J`xPU0*ePv(5);vfAv2XZ0)(FZ=#&o*qtQzkBekG}BH4=sd|{xH&? z9!&t}oduGy1L318NUrkPzp_+08H$I5hxC4LZiJDmQt*!n+zUGqJ|@G*6!_>U6+WiI zLt6#uT&Ee;z{VOL*A!$LSzOG7jjAm8_(wJHTthzn=lmR7T<5_`^m{JKp(pJqo4!mI zJsOwj(PXLU(PW|wX2Ol=)3_LE`^t1YWg4^PsmzocF)Nu0BUA8`DV&c6C+m|V;G!c~ znZy|vN$MpLHOtyO&fCag?lW#7e56McK97v;CDlwB^hatj zsvpQ2s_(h}jylbc)GL1pA5G34C0{X1_8EJ&4ly@znAuy^L1xT8#!r4U9Z!hfNAFGV zY4k4ZJJUGlaVlbcZ$?k~So1jN2D}GLpNEe-InPQNxl`H5`nXEDIMULiti~@6Zzm7C z1RsavA9?LnzQ@zNfAv5=9O?I=D(TkZo&W=gp3~R$i_Qotldj3QlGkLKnn)y6a zbA*Wz>Ki-qc}KxyMTd)~XN^ZvHu|^GezkQzkFrtcz*WjemCiisz7*#SGi#=&X|{Iu zNLzfocc!Ol-LbLuXyt0n)(#&vV>?`QR^_7+T(s`p1s}O~{G-E1*S%?MKAL_u|J`2v z_p2;MQj2V%jMQGu{f&DL;iED#s0kzKX&FAkNcLmvooz#bU+P=&~ z^k!dHA9;J;Ab3YVn(TaN!ASXJzDhYcihj0gv>fE~afr{yVc2*C9fgmd1$e;6i8dc6 z!N^H4ata=jSx4seF0lXOEG#@jJ?w0v#m2ML6wf8%Et3|qFV~-Q#TOZsB?ZdGq#*bh z#H_dqHl~D9gAA6di6MAMde^n%TaZmZ2Eji^^;|0t8{nZ)p0(c1&xMb+cM=^ytaw9mI0wYuKlPT=uhL!b6oMV~9 zS-;6DIGG3|6Y-5nh#X#*3m@r;-(JFbZxP<`5k^LGAD>9>MG?XMDe#mPQJno@M13)G zHiDCpuo3+hIa7X%n2wLcTQZA!ErGpF{Jy*3KOR0RBQ2eQkA{t`Kk@tXM?VYlldX#et9z%wY%Ee*rxPOzi>h%t^a|Gw= z!pB{F&8h)yOs39+iONNXjcJCBWILFc01xAlvT+GqjO9Gn#mLFj#y7&n5cn9xXWijq zfU?o>@jmf~i7wyh#zn(N&DBV~nCVx;6=xn?x#ZLvo!X$T_s%>zzR{^S>gvoqI<-fS zzcj5uIy2%9BXxE5COUf#-94oHxfP}c2_qdoD&L#uBYm1y_W9z*Lpt-~j)x>?x1+Dc z-=EXV)^pEds6#r8G`$)!b~1cSg^y|KA?eeYnQ?q%7XC3CKCbA`OxG~(DFYi-ny+_` z)QoNMQ9YzPADfs@&e z;AJ+-LYXSKX#^`XU}Of~(nwk9@RIDEM)p>vvfn0!JvA;y;wMv-lbkD*%y}0{oKu;^ zK5}KGDp47UZ%jheD(iBYea~j@a|!3YMR5O}aQfJh+A>YMI>bdz(jDU?J5kB$>WuwDI)<@8e;q5Ko2oLY&v}}B% zVI!U~1Es^pRFuRSTZ!r&9X7JY!pCUNn^Etm{TMy>*2PET9q;9%J?rT35jM_uCi zmkGVz2cnhvlu?Ahm7sml6fEXkj#w3$0Yce z(zO+gY|Xz>Yb$3{i`1;0)w_-4_az@tgM0}NzT)t41biIXje2!=>eM}qcYGS}s4^ZB zMyiM04HKXDfR7U`|F{QMzB+9H`~TTPLw-JnM?5%xlzif&Y=n#I9r+9#hA@Pp^lc+&X#yg^bDe!R$_okUHKP;iv$i9yY%$=O0ws;0E{*vGe9~Z($ zfA|PHsV!cBjU}+L6gHNT6)%z*FB>Tv!^zkYun{GM%Wuh1awCsSy*39QxlF2y^Vuhy zj?%afb~^V~Ab%IZ&%!MDm<=Cu;39%|sv1~WQ;_FUZ9zVKL~ySj)#X{LS0?h3GQ|f|u#kD^sacrozco zW{6T8Mk*(5Kbg$F@g&atN#vZ$L>QR}BaQHriQIEcmCAEDar9}JiC@Cmz!BV&Cmc5F z3M*Ar5!|N&PgzdxE)R!|F!DMzO4T*=Tf{8+H5?DQm<-Nb!L@kyHHC2glJ5jLw_v=S z^Bpf|(J#K^7(g=p&hnse6sCfUq0}0KUG+xI)YdGxe_Jx9!$#IW%=5s-d8X!Q%@!Kp zsC>>0U1K-BMN9vH?Fp~A)f-x{s#q)mSnTebLA3cnYESgBho=l%+G8r2-!pF}8Jh|u6 zH2H?l+b`4=OR_`okb&@Vq5QH`eWX8pwAgq)F%Sp(6;2BBFGZ&rDIbDdr|OIjDtmDBTP5?@bYzwjiZ)A+{L+lj$p;Td#RW%#IEoPlolG!y?g z6F%M!A8&_`GpWb;bqOB&G>!d-s_6lmHVZzYDeOI*qMT$u&22Lf`)8acD4T%Ho;BCBC!27Kh4iqcfrXc>7NP9B4kM?D=WWp+{t9+G;_3G%~7>(b<4 zAv2dU+VL?1K4y$Uu+h_Jyxzt2PT~#KcJega$kFV|9!?FLuhB32Y1&|F*VF@}`^Y=7 zedTTRRxEssfsg1lPp?M7M|vwZ(TBD%>K0iK8`q&tu=4FV_(qn4f<4wfWct<$+Kzngc$ph$dyyai{J04@Ef%b*y-Zf>S`o;Zz%TvSX5r=(G5636|r+n;n6(3g{ zKK6x=eW_*l=Zquz!nwacr562O`bhS=!pJnoN4%r*5%1vVV+0;D((;k@quglt7(<_U ztS9x58TiLya*>7bF%LfGP{+=Lk9l~<0#pbei{N7sd@O;FrSP##zD0-N;dgNH`*D@< zvC0Y_9BHhUW8Z$x)Vm;0VAiu$0^KvoWi`GX=ny~oB0F?P=sdCbnJV~L%zWWuWg~Mm%eXFukLVNuRvK&>F zB+HSKB>0Grq@HsEzkjp_KJxqAZ})uwdjvAKGJl{kdUXXeVp zH!2&|JJ!QT{amVdG`&2;(iNRuz1rg=p2yZ?0&|b_wP-yCE;?!MF_4cspGP_Je}s=- zFZj=U!hhL6x<1HXimzQR($3D+{n&PPu6oD+%s;xhXZ}6eULBiW@xVHb@sJ&DEnE3m zsEmY<#r!NwHO@xHL&C=@_*l#HNuN<#&u)Z|O~lya$U%-*M#99&y{uZep3|>0`DJE0 zj-<~4KCV*ls2WauJ))--Ut57z!q8PA#3P}%!pPpl*uBN@F&sV`^sCqQjBb)X1b4B z%l?VQ%z`YUPJ@r69{nZj{>DO7#O$kL7+EX_s5N{87Y`CEs=lQb@g4cL@0+WQ4wHX7 z(p)P?;KEUKd|VxjyiLw5m$%1Ll?qE*{O zVsgVu7&(Dj_;`ATjOZsC2P<3flrZx0IOaq)!^tK%*`$ngJ`yk4$n45`_L0|9lW8XJ zNPXx0MD_&n{AjIUW^gfFRF&o+&gv=Q?4Ayj3>hA2-m8whpa_lNxWoMLhlv z($~w`C-Kl=&elSYdaJ&E$j8P`%ya1^O9!#S#H$1!ALYHjkiUG0uTQ52s(#T)*=TAq z0c`Z`uhw23_^A2DQuU6;H^N6g&jozG^O1j#bs!tzgz^z4s;|0gMvvwmO+Sy#J?dT= zw_nCG$z3Ufu zc}N>$+dP1avwgijTF*wQ)Uf@%J{}`G{Fyy9R(gh)FBf?ujO6F29#R=;`h7Ic);y## z()dXFeejTt@Ugi&9uglp{$}-%!~igI9P90Ui6aJcz6>$;bMWvfxTw5bj;CA>FO5c6 zKCXa|D@PHJgxm@vd!s%uvM;roe)RbCW5q*8_GbpbFwRLLe#RfX%RT=#_y4;pe8PL_ z>MKX%A;V#01anj(U}Pjckx`sE7Xu?>VPqU0atwPF$KWSpIe#HhcGpsinNY%+*yYq| zie+zI9*iu2k@(66*x1O|l#z{Pa)9{xAhF`Nn92_qZvk`2uDtta1zhdi(G_hkAyCpOF3x(aD6 zSN}*28~s?q8R8|J*8?k0;U`ZjBZ<3@7pKET$H+81WSSg-mxp2H5o+JZ>$Bx>C41!g zJ${iEZj~M(`_jWqo4VB&Kv(ymTsp3A_naYe37`Yv7CH~lwLaa^BW=~!y{g9*N z<3#rNNB5UEBk_$uO+NLOjr5;wq&Ig1S|8p^*3!GXj^163w>2JDy%N!r zx=a_t!bgH&B>DJey)tmp?6bzJxw^H^Vzg}3ejcyBY`6#;S%1z(yGKU7VIT{YjbZ;I zKH7dC?fLQfNOAz02Qd4xS%1bya*vjeoLzgZpN~1pNBrZ@_y{9QP$}_sndygAK58xd zI>X31?S~BD<2YBV@%X4Q_taZ&lqG|hZH8x55BW5Ve0(U3G<<}S!}R$|3^KA8d#>Ol zd|U}1SGD8g>hS)Clh3fOj~_zsEqyzgctrFz*Q$4sVI!Z7_c9|4A1x!J;A1qsL9y^L z&hYW0T=;f36x^upqoiz_W z&XP0a4OM5kwrrdW8|Pi63$XCwbU64k-3=q}hKsC7*EV<=s4G+N6r(9H@-~%n5=};v z@RbwMB)p~5#5>?4j2utSay&lLNI6N*Pz$}4d5Gm;q}Hmd;bYZReB?9CXV&K(4Ii0ZrhKH&(X!F@ zfoH)+!$+8?oX|bWy3fS+I$GZtn0GX@!O1r|kLLWN^3nG51oH9f89jdQ_;WsLO~%K^ z-@!=N_v6l|QNODH1}7gMVfPs1=2qzUVi?Kluhl3c|HO=O7)gD`#M#>K6VNYiYc)2` zE+*D?jMRR}3RKmFS`EFBwWc4k1B|pWw#L~lJ+3D&ay|7mUGb8=Zs2S~YIcLY7#lu5 z=J=?L^!T`Z1bl>%D@NXmhwP1q>~ocWTs>O(*dHG`fO!?coJm6sJ1d-8&1l2Mx48e` z;j{2A9^zf)V+MRwMrKChA)`5mA;!nYf9A%+NcD~h)M=9Bz|{`|681D_;3nE?=Rq8!AzS9AN#19HX-F+eX+(P2xLZO4ax9@i0E=h+*S6ykiS& zWQ7;U;l;@blc`Pec$uQDs64w(|uu?gxnn12{Jd7N#jP!iu zI5;_u-pXbe*$g9%;A1oKb`y+jz(b;o4RBCZ#|(`+W@^;qBl$U8n8eH>bgs5eP8StQ zYY}`b;_RK`LSk&r>M4SeMVxJhP84R#@xm;lV@2c`i!$U$5o|<?hgv;)f(RjzvvWt7e@G%)SqU}lW5pCr@+MEO*iN*JjkJ&~H z@W`Yep-M|&lZj~b7&x8Vi)F&+=@ zDi03S_!#dP1S|28mW^^@ z{dSt~s;0*=kd5W|#!`GuF>>Bf&sMQ)q+SgVv%Q?7a?yH6<%7o60em#R(e0D5d{M@@ z`8>WexA2h~*V=wZKO0S4O-&|nhMD7Ipl8%;$3^vy#y_$eUV8r0j7Pxoaz59#LTIxnfu1mC_x;%(z2@sf6S1s>A)NXA` z4!-d%yusUi7T)D^@h;xsz4S=(lTk*0%Z!GRF)%VtKFE$I&K`r0On{MN<&)eb&hAX) z49_IlUXm$$Vd8;_HS*1b8pFoDH6`*zeT969_SeHlbbwmJHx1P=vPKRz*2bERg+-l zL{=lmM%D=`7^xahJ*Ndmw!p|1_&5$9+05ERPh}H~Y=V(S_{b(0*$5x&VPl;N7S_VX z8rTRUFO7qr)W%01`Vm(C2rGXmgpmcDYgUjaCkk@pctN%t zLq}od(L&~I7Q#eyxByP_yEFD2oSjW+5DWj#zpb{_%++mXA*uKJp&#FCXsb z<4X9bTBUqMtHYFy11%%N2jU^wdrhwKL-LF7r{f{H{|z7cEWC?*;iZ6Y-#0V6@09M zkFb$^+BXfga*(+3Tk>p&93LB-s9nQGBlrjtk2OtzkrQDg;`(F*{o+mZ`QXc1sjr-! zg_oRrA7`E_Bhg$m8_l|xSvU7Gzw93B)=OBIP?tf|mr$QxOyBnsY2(_bY4;LS--CE> zDqr_>h4so5)gof-h4RyFi{z)ttVRoX?P>CS`DqdyRVh1tyu?qArv}~vGsnTqad=AQ zrOL2VnaTd0M)o)w;S*uz#b)+Fw(vgno{JNv$_2dTxiaRX7nZ ze2kX8aMH&|IJpx}?o1vHAH!r@QkZNV8)CGDb@N!Q*WfX^m;O!c{a#d%yw3CZP42fh zVC3tt@>O!+8_9oLHnNf%Uk@ACg}_Jj3bn+S;p8hY@>RU#+wk#K-QPgI{ZaBu_Ydge zW8?#PNsXsf%Efzp>Lg1%KAM&N6-$xwaXEZkKtFK{dwR9MQ9YyWb;LW;|7~)P_(k3C zrXEJwsGdgatVOWV_(sD;Wh3?K0PmQ=bvo~*(-&=gBV2H7R6d&7JgkYBmGu^$BL?8T+h>qdy>qeh<%R z8R_TayM~X^c*t1J;f!P6R6KkfWBHh^d`zT|5;nrcPjl1oktwp3&*0~^CB)eEasch8 z_G0*0OJ1^0`B(!VYvE%Zs)vsahL7JGJ~qksjpJZri%&-zm5-C)<7D`F8+@D$A18CR zGyAg}=!a~cCa1@feFWojZH5!?&sb`7h4spGzkZr_pZqlS-T>VrKTT0Bft7I7Xdzy60h(_G zGutMT)108(q#iy2UQU3QD*pYKo9Q`%n?@}&nOVU#Im}Dcc`mg~lk>IA-6*9eys%ta z3z^+h#5p`goXKMZCku<=V-aj*7CVeQk*|!*gO7MbWhAUT!g@GA3qIl_OZgi0@9*%H z2Qrx5nW%h(jY%43!$(-TCn-vHCq>GxB>0#J9}`E*_C&|W&;UM?lZ1~uxtBhHm+yqb z#}LcM*LW_gHo?n{Vg2xpuo10;k81<@2qRw}1t00Zcoi?Hd|c1Eidy8u0erk4|G1Q% zx1|H%qvstRAD8rlk7zMk)R*hNem*`9OYdS&n(oP{!z3k%3B!yAG7d|S>z$J;bYGA*HGWOhM%j8v9BeEaV>Q)_3qcw?{l5? zknphvKH50DBhNON2qQHQsd07_YUz0c=XY^G3}O!MFy>Fd$R}Xsqv(kt#MZFUh_5Xh z0VCn#3cRCgWq^NN&GUTq=pgtQM88k4yc9D`-oZEii~Qo>iKpMjJHClec*o}-qw$cj z@G*{AQ}OU|417$0k7KESC!%C>kg4P#(_kcg%t_^3&vfE!dLZk_F;ZteFusxax{7m~ zs%1a=x~>*JS~h+|taz}Y5k58K;p1ck8yly<$Ek9X`1BO| zp>ZmVB-XB{Zqr1c4>9dI;@|Ulyz?{eVRp|0oJ9Z^m5D}ha@HgEny+1+p$vqF%Eg)9 z^^AvjPofl%PW&$q-r8@`UK+g z@u=lamk0W&EIQ4zIkbQ(_nSO_Ck z_{kp%iakDZPHw(sWi=9CEp@PsjOTU+}-3IA5i~@ z)JHDu4<9w(=;CV6KN>c|#f2(zQj6f@efYg+0?RC#zVqL^^pFa$bdK-?^uB}52^L+S~ywPwIk29>+$`> z)u^Qh&pSA&@%EHn%x3D>O;!xn82eVk#YefeeDoNpeDrxp_&Bm3KC(Y~$o?h=slIVF z_wMS^!Ssux@WIR@WkwJ2^9SkCoR<{IyuENZ83`j{V_FP?kLhtJ9lI`MUe;p67qEZJE`&m(o{gA>Qm7v6w(tc8y?s16U=03%^zeKUN7 zjSbCc95Z~z!^a7nRX@?_NaG~St(QG1gtpGI1NpQk?c7npZ6o{kBu|rG-^d> z8t8>=q>kMTE8)<&2@9ABwul@g@%5B@smUxw_mO|(8lGK-YgYEUjn{q=Yx8H?Cc(Rj zXo3?SaXkD}wW#2r5gcs6FB-wYad^dMtF|V1*oaqbAihSI8`#6hzx8q*Yb|Rn`@ZYg z<5)kPnl-AuO)gZ@%Tr3PV-e>>6x1O0To=*zSXhNPr>uZ8%L-tm5obKY$dk&*{31D# zS18Bx3Q)crLq~I&A(u-$otuk?%w?}(G4&btGG#KaGcjKFCdA6#v2k#bxpim{jQk8n z?iw2f8zW^$LWFEj2shf6Fj}^vEeS9(L35FKNA8(zN$f+79U*UWk8KJWNQ`ayxCvIO zHsC2Y@Vs6d0v~yHzXBK6C>wd6uNes+dA7eoeeqSi<(tIg%F9QCx|zJ={V?%_p|7k(;0*67wtR*-P5MIE?YOX-cfsbm|6I< zoFg?@_-Nv4ykZv0R5l{5*SbDOQ?JG|YA(*ys^LZ;ALG4xhvTE}=kwKMsKL1S+T|RT ziGD8HJ=QLFsH}6fm%#X1^NuQwvrT+$_^7eCjmNG3^yeV8)}#NAKt9@9wqvB9kB;fO z7gFmq8gJ|O=i{R?QuD9B#mDR5qv`qibv~BB#xkUNNEc_<1n{w083`ZNN7{Vkjr9I& z{}<$*CPrdkVa(vWjST8&AwKf&6jT(uE(Pea{0newZSJ59?2k(5s1Ju z?CYeS^K~k7-xHLNaqw{rY>YSB11opI$DQzT$Cyaj9uFUl;2^8=aq}3&xy~bZ_4-hLOt0#b^8Y)wXcmOVb=8GSVw;=&wiGp2_JHfDJ7^l$Oe%`7u~^y(Sf->7U1;rH^hwt1TnVzM25f>vEB{o^786uHPp~ z^RI@FTFbW2591-dejnTOqaKnNTRkN5dq|D3uQMuRHE}j;wTZJkvbTn39Bgbt&C17{ z;UsFh`9^wuh$#kfegb@4IYeXZUgRKerJk*9>}|9RHZC6q8;AF!mJJ`dFISEn$axF{ zEg!jepMj04r{LpXBZhG<68mJ}-#u`^&Ke9X&|EyQtK@hMyJD|@P{iLoc53G_aW!#_62*XTf96O0^Z z82K%A+e7seuY&_O5jre*xHS8HiC!1yxW5Y)y_}E0hc+(uCGkCSLjr92_ z8&&mO!?N?W?4hZhi#J2OzR3HR>gWfr^`zIlcbTtUu0hp)wN=AEpWt9MKF}vvSdA)S zVFfjpa_ZFRav60OPi>`Km%zpnm{>y1x`di_5nL?hys%>CmlspFE~4+Tkh351IS(SA zGsOx~k=3~(&K*-e!pbxGFfyNWc$ATO%v^_&r(oo%JkESXC-X|>L@u*5bBp8{I+|N3 zM{@E}9x*oWm6TJ*E|G(o%;ro=^7sfNm5;D;584eccO}Hg&V*?A7zG=ZkyeI}W5VU% z@ybZ8+rUxy_(?oHwBf_ZJ>na=-(K@LxzXd}dic1On8s*CKY0a4u0bzzKl}OE8$Qx6 zNgVzx&;6zSsa^MnkNt?N(S6EAPxrvdCB`?x$3F0pn0jIF8;us2mEK5vrt)!N?@n?X zdoOgJznjUb^-=95vGr>0zxTYE!dTJ|dk>lWF+K=U%-dvb{Vu=avi` zG|p5RKC)_Dt@%3b9kguJReNW=nzh!djd!$hwKCG?1MRs9j*IQ*ml^-)`NY7QjJv*y zkIG2H$*cRw9cy*99@3wObgXnOh@P=!tWm`U$!bN3dIWqNZ;%v=D8b)@z!Nl3hNL5ph8>wk`lKK6aPcekO zF+=f*u<;ji8wo%Tx1IUL8;^*(_v($e2i!O zgt+?C+-y8#u55;lTlhTgz^m-5rcTZNx^K||;^?oc8|14Ra+A~?zNsBA-_}i(Lv@qT zWcjY{Hu=783g^|Urpl4}X)tm+{&6P#kGC70Y`BB^3~HQZ^aFA0X?WP`)Ifh^1D?^- zd3>MKg$6t%uZ{49mw0`-UWJcrP;t%I&3koR*YO@|t0hkM3I7OVeX4<-s%p4d1ve{| zm8e3c%tYmIvkY#Q(c5E0UAk07%^Fr-D#1IJC?`2%v9JX;;vbDTOQ)a-(btpDc{}-> zLzZ7Bt$CbPmIotqnFW{2x#78-XO;^m(aD^0IiACuxSSHBqdCQLIJ-~|D_dCeo-t$OvoY+cN4v(vq8Ql`A0yl2Vq|MvG>SCZ5=X5%mKZxe zTs}*Q#Y0BPN8Cs6a9_PP5xg?^ zg`vvGX9nMl|0AC6+Z8VQrF>k17WL_DxMz)&HrVI=*zR}~1o6lqS55gtgAEWZT=Ogu5p+3^z4{3XSd|r}zO}6pnFcLPZ zk2HL|5k9KmWa&*EU}Oj5BlUS!-G$#_S3D$qZ0LTY;bJpvR6aKMB*yN;^K?*8Sq%r3 zk&gxUBId?N4u*|z^9i(UsCr2FIBWnuav<{}5gu|C_v@1(!OR;)hL6LTsXIiTix?rV zB~r&G$M_)}d^b7H@bPWdcT>l}#{}v$V_B2fcax0QOp$-2r^*KzY2+X?sAFf*Bi@dW zuyG5Y$E|25^@A_)iw9e7n+-U}Vh%_-NU92sVD_aZ%ZLxNaJJoX-5M z88C7t=aJq4A7@d&hKokCS!YwDVNW(JYz@#E7QVFBEeQL?Q9Dk#f@V@hprylg}Asd6to_x%7zV!pI!XFU#Sa z#~c`$!)#$Vc_N$naM@)DMxrBGMRFJ&$t$MMr(BLv+xa$w{qbY)j$=4`QkB3QrZJX} zyOode%Evg_iFU-t%Jx|J7#oEmWee+O)_=z^N1j-FH@!jI64+xEF;du=cjlJapVeB_>810UDpD>tDHaB>x~(h?YWANRa!X&?2E zU5$TStbFW^FT^)4f{P2`;e3_m>Cv5NKJk|0o{KK`=<<*HbzcrrIr*D>)SP4>BmF*B|9ydcR7U<59}OenqdynvVr{Qp zGIw9 zndBYulCbeW^#nOsJ4wE!9&rdZe&=!VaNTtHI0HV;gpXFo>Sw{n+3-=hI7dzq3#)#B zi>F~>E8frP3`{&{q+Fy%kygFR@h(-pB;UlbEKLS4Tj9%;5sA~WpU*dj!$>ZZjkB@73{ltKq zWibr2Y_xp52SzSIi&V--JfeC=<)V|HkHpvNA7ShaYMc$kXL>fh#+j?C24)AvRq84huiYN|E>Rjc+H#Q?G%IDPwt^NR1|$8cqr^INmWW4ZoRA?K?~U zNgnH?tZex>D_1_v%9G7m1+s;BZYwd|Hu7NGvWsOq{^c`1oBM0=i_OZ&SY(Y zl5eUe$-(N$a;R4MIF0yvI+_U|XTrzZ;UlWM1OGUic?xsn1UhNhI1fI~qrZo_KE%ka z#K@{M_&=w!@bDZQJn!j(GO=-yRl{QVXm!c(k)CkYwmRz5wbZ4ZYTzc)8YY{DDIW*J#=)`?POcvwBGMA0PiWF*g4u^}8+y>Aojj^?Nnq8KLutH211})LM;@mZcOu5V ziJat3>>=$ei~BR90xmwueYFfWJ`#k2)jz^T?m1;+ARkw7pRVG5eUf|k$x%a?Sx@dU zWEf||4Tq1ziMfZ%3y~q5y~%tY@{1pmXM7JfzL_|NcpE;ZXl$Kg`Iy?CkJ<83W)6JJ zlTR}9<=e=B<7sk)t#$L^qq1><6>K~U z56|HX&#M~f^IUm2x4=ivZG@4hVdRfFoa>nFXXGgudD3I#v8+lt>e#5hvao^uhRguTq<4QzhI|>r zIpuMjrxwTAym2Y=c^rIb8vicNrx%pEa&jPv*y>*M36QFuo@<<2qje2xCF z(V_DCh@tS2p0N=_;M@?|IDD|I9~LBQhX%=-p@Z;@@R9q{ct>U95EXpnnf}+oYA;?M9!Bd0I+II#P;}q0`W*c%tLITRT0Yty$6w>47LYEWHtBK%HY0+ zj}O7e#|HPK-^a2skdMoikHkKfk3-?(&;UM;WM1S5;_Q*KHk$r$nD`O(mk;Ruc#G?I z635EB)H(l_;`o>*|42*s`^OCUn2{?VXXc@Hd{j2(mRseNF(0s8KF7y=MQ`6BYR})d z%w^v-oP>wp)=ZZ})zjoV*2A^%vDWc%Hhi1|ALq((YRxCe`<+Cm;G*gWJmYEdgr|v( zTZxy?z(6B-cosi+4(6SQgQ^Q$Uv#Qx@1fB>)UoM*tfTkQ)0LWg;GN2dnR0<4f-sFI@@m2yn| zB()vY;Y{Yrjpe+wIL=Uu<@{aNFJR=p*i`vE7Cy$p#~An+lO(&M6J>iee2m6FM#D!V z_!y0UjE>rY~H)8C!ZhuMma3hy%{d&s4;bs$#;2tB>$y*gO!ij^yp<7`T3}y>r^AWBXtL5 z=k;~`CbiJnMusj92|qgSVQwQN_* z*V>i-%+z=5&(JZ_?;*8s{2JTy<2|bi$Uzp~*nwWu4)}bVhtztF#@W^Iu?9ZYcD(^c z-UuT*88$Y<$8q?`rXJiIeVLaFA6LP|$6@0`++&XhbItv?Z0G=^EWIAzp28_(W zXA)nh=g3FturVVaJ{HKQnMK6d#dydPVr%t}6|y6*Qg+gdvWxn`XVek)P<#EVTp2lw znLYD3yAV!NbNLR>_u-3LB5X#^Z4D1htWq=oFq&^#i`~N7(oy zTx>OLTnrx<``HNl&U?DZ>KA;3hpJ1p^oiHrM-1($23C5yqHDF)6&QJys^}T7#A{Zl zh{@rkk>Mj=vP`9%BsZyyM3+nHD=J||Z!wH4QhAIl2Q(#gaw={mVX<3j2xqI90z(w%SVrm?4i^BF~7J+#*3?6 zZqCJ_$`Y+{INxYIV>>qb{bOMNwymr9dcpsT@pWL_{abugR{9y~=XGE%GBCz=xk$sv z08YBxtE=JL89y$@R!%xb{uxjHXS_MjBG0eqz(|d;?fz_yvz3v=*r)_fmfqBnzVVLa zAv=pr>1Aj+oLn(< z5OwTedVL0yha3zehmeOHN{wbXIY@jXeEdt;DArN1GE`oQphrA`85HCgKf))zpP0;f zn@KPdKBlC}-%~PBmi!|%lb*>O{#>s7D=i;J7Qo0t_*g9e&MbwIWwMnV*miPZJK*9@ za$uk3R?BYKxQD)!&-3c!%VK(bs_~1>cga!qqa2}U`+J!9T_udH!avr)M|x?F!o_1X zcfrTI;p5%#5jIjwKE?V2wUg6zu#vo>>J0wS>1-|Yec<1D6%4$fJY-c}f`vZS+(*wN z`>ku8{H(mf*RE7Mv5&CoUYO_vFDu!1tx`so!^kq`SClccqD(y`akmlq$x>?GrSuM! zFo(Ao4_Sl?;bb9aJrr^VL;)T$A4cZmBlBTo-V`~P%ejn3oL`&6dA8XTq&1s!d9vYS zRz7U@s2yA@Q;yWWm{x|Y>gZvThQi+c!YxmMSw?Oe%3eh7*JlUz zm8G}dEQ@YYK6b}9c9X@obmetdc!zf+zcgRfv$NcNb7xpc{|=f*Ts4Z7@RRR-B`JAarU}MqseE#?><_EG7ChGb2fn3aB4{MHXc%I z*#Uek?R-7`{MR$X_y+iRGHSaO!$}$AG7h9x$;kB`B(@ai{N94;p3L9a`;$*hlG#RR4pHCWjDPkdsNh3 zKhLd~FX;FCrh>W*HRz+w3z0 zM`hy@qcbq^Of8H==eRy!$7~-JJiNeq5e}*@so>$I+WWa?KXwf>D!6W|W#4sxuJGr6 zs`FvHVo3f{~@f+NjMZSXn|(Wifm#LWL@2q{qj67@5a8 zVtH^f4|A`rE;_nZ`*tb7?l;NZCj~*Y_!^d@okAq>P<>Q)Q zJY*1j3>xTZfIL44KB8Cfm79i8}>UXQ$drJ>l)YI{?yJ6)*c)0*Z8aBemyJ6y8 z#8H8KoQ;Q=gXY7^CH$GW?5k)YwyyB}Vkw`s68*fv#zK#cW+tKWjpQ8L@lkVRhL0vT zwDY^P_u15Beu0mUjdpIL_6k~-xIUiW;-l;Tj$p5g&cTSBX7V*-bg>BWu%F*Jw7&d?;=gzy2^}RJzyf| z%-|JQ5w|=HA0G`O#^!n%_uO*WXayh1ov$1YA7P{6<0$;2#@He75%2h1SO^M3qvbhb zrj67um5u*O%YuWM#MLx$bE|$}%6&|)4HYy+Q5#t^4iOR+EaPU0ryMQjjLX|S{5*#$DdC+4d zY~(snSE?U`iT5LB_^2ua1urXLq^cZ7mcdBFM;KXxpG0jX} z-N(n-a}y$`P>6Hp0jsGbYFn>CD1Rhmq;c zax$G5I|D9e^BOLmDrBBVX0v=hma~3h3*=x7e2n1?@>u52!OAc3l3&EY#~An+4IiTe z_!yNUJ0p|fW0Gu(NRq7)iLxca@sXM~tlUj3zBz*aui;_x#t_R#^^nTQjmA3$@G&@8 z)}WVzg5>2vgAjZ~FT%yY4zzsSG?+b!+^^3MAcx+kCwW7d2p{k5MUBQ>cbA2{UVtZ< z-?NKlBi`{&_;@GlJfyyHRy#i4p|KZnSs9--Wnu|Z->7UfF*V-N#MFFFm5o}DQC(e+ z(YmYpo&fI%BeiDj_7J-IL?9oPjWH@>YQqxe9X;MCcbsg_QCVpB0S0o)@G*dEzs5g( z-^udu55MX!-JerN{%8AYl#_vsR1fKsa#FuPeGb4z%_Zm_bCu(yGScQFm63lkO6F&r z!p}S{fRUDy*ZA^~hLNx_|N0Kp&&WfPi!A1M>1X5(pF?BuOQT<~xe5`|& z<8M|E$=q<5_!RfodiG7wyYwmM_Ss?Z@*R zD56)KKI$Xn7cD0r;Ed)6*;BZb-kwErf*AV*{WB-15uciJNBiTEi!#?tC z&ScD9dvawx9Q@bQ~i z_FAK_;NyN+`DHX`l}B?{c{KCrqB3N6R65=M=hGi;*{mj*{1vk3&Y{|3<*Z;j&@yFjT2WZtIuXNJcLQUe4}1_d~|Gdd~?1~ zSNApdUdSJQA0OS{9T;Z^^4amx{k!#h@bOWv^?NhV0skBe=ObN=Z5he_qCa~+k{qP< zkk`P-Yw(d)8LV04AhYq1IUVtk9j~JgwFA#GKO92aC?1j;QdFw4j_;W3=m&OSms;>YRv@GysS+cOX`c4Dr4kem-6^WkHm{3{hcrozXx zQu#E!97a~i7HX*5s1BoBpnv zc)MWr5kLbrtuCs0<7YP^fm_HDYpCkr9mZog1lJDY5+&4p9mj64NG8!jrhu4#NhuP zJx2aEA{_5HQeGbn9|yxnv~e(fw1bDs`e6JcS`)Vnv`+Q{B*u5)U>|!(rM$RGUGz$-*tens5 z1+0^Z!HW5emEc2EF6XHIjp`foQ66kmK4!s3ox`QxQR8a2N5;$ohmFd|WG`N{XAEd8 z>1U#kkMKfgZW~|4dR0A!8gQfvt~frrxH^zYCg12W&#^FYbqoxA?lQpVhDO(TlND;9;sKWn_Ck=6HNm4_SbREC}?F9v>_5kT%Zl zB(>D9t%vM_kL)51+#k){H?z5~9v{?S{z9Gb@t}d6(=h-KIgnhW^^hyL|5gr$jYEeZ z_&5wcQgd8A0zRT=Muf;;Mv{9BvHtOS@=AXVjg;p@qhw8ZoV+t8T|TA;^J#h^Ow5({ z6SCxQWAT)Rj|ErrF%>?h!N+vvW0jwe)C_iI)-#8{L3S%2i3LB0i(gQa{W1^bPLTaM zS^k5(A&b>zySoJ_iStjlal8!$HT#hvDNRh_#aUV4}+M@nQG~CoAA&IVyvdWpJ`A zkdIuKQr{_2QQvWVEQXIo?9VA&1RL3}>&fS~)z1GsR;$TRc|z$Q+8;V)-V9{npX& z5jO7k@i9mCMrOmuY}p-=C7*?7$gc2o*$Eqce8fL)4ogJj8)4;Vt7Y&5+pzmtzzzxe-`kALv-F$B)4oW~4gs*jC){lD!W)kDI_Kt38q8gK1q zY<>M20#}&#(Vx5&k zhT$KF!AIij_Iw-xA4kE*kO;%Y7s8_DdGyziC|OUh$KMi}KLH;rz%V4FEVoD@Q z;8B*3K_g{D5PXD<>l_~k!pMQ}(RfE?W01Une|)Y#y*|9R32(UpMn2iMkKA{Q@)7UI z{d}+9)9}&6*7(Qy-0ydB-zyt^eB||9UeE5zd`EaV5C1S9K5E@&Ch=D7jquUQ3?nyxn)CMp{(AG?x|>@KtLkPi*y94?;4tB7SD z890cZAN(Y*mj@4)70O3)LdwWhlA|Iuc$|ou1@@Z;?{5!2u zwxn0d*7RyTWUXw^sAmR$BaCckpY;9U5XPTEY6L$q#$!s&$MqZ^SIG@ z)(dq{&=bDQs%{zi$0z7}Tt;vB3bdSSRHNdxS(lTCTtR=&GEd9NMJ}UW{WyBUTOTv) zm5Rq;r^ini+Ez{u6Q9{uh6jb6Z6(yki|HdOrq@!LsZw4Ru&1YheUAkT=<8v>cpft~ zRB-d05wkW}&!RKD-wH=tVdak*)8$mk1UWv2bHd}Q<(s*6UXCjXlXX!bNlsS_~@}-b`JF+~eJbk6mG7SDAs+Ig3OwVFQ?bN`9DmgS>*NXJLJY98`h z%Sh!T%IWY6eB}4)<0Co9iq4%luN*$IIzHC%?6i#RhM(-l*=#*zULVfvfQhT&;p61O zA5)PZUxt*AtH=qh42F;7h@OOxPbnXVhZ19l!N<|?F~aciugb@eXn83#R$dB=gOPT9 zjoj0RFmZEw8T>0VTr_+f3m=o`Of3 zemvs=xcE&j`wrpax72V|hqBpQlQV-e0@#mDU(E3$YBbb6eki|Jek9M>ibp(C`zW(< zAE!5b8T+nRpp|mIQMF1gG(O3`>!+BDyV~edyy zmHO3Ib*#0k<)@mbJUz*3b)|YG?1Y~lOWRo6U}zgGZG)X{<&VNj{3^clGR!o>YhEg* zrd~|X5$wE(&%A)oJYTRFR)AXYrM1vY2t1!OY84&Xq`-C?^xf$?@#=HtL&^2&ffJ`RzW`oYKk_(#~N ze0-rF=P(Q$EU%+gedu}Yd5bLWLGAkHo`#RgNyEn;@X^H9>L0rqJ{mT5C9h=SYRktN zU6haXN8%fll?}vS8dn#3d@L~DQTa&Tza1ZKk0ZWOV?M)1>IbGK6UayXY^(fdY}tOt ztNEz)ikLrApYhb5kAC0y+k8|{_q&)Fz)j6Ln!KaqBdg=AW2$={xH|vnR=PU*cq7jBWk2{%rn8-Rh5~o^5}AmXC?o{0GmS{~*q`9x{-R8IF;x+1C+cckE#5 zH2Io?)EHYmB)?x1V|Tg{4+$S(V->3AKB(n+srBmyo}o?LGs?$CG=-RCX@7di@QhEw z#K#8(!^pw%L;xRGIX(^@2_xa-F!)HH#xo-f& ziI+N&$2=c;W_~2scbfXh8R{ozD<77##LVaMhZpdN7wT5BS7wz@m+GFxFFxhzN%j^# zWyO1K@UN|Awb2!>uhc%te#2F;4^^Q`Czx1?zpR9d6?n{wC(z?YZLDqOs1z=i5~r8o zDT`raF>EaMxL61m3*ce_J?jPR?a5~kWFB11W#4%A-Q*sbWtl-dojP4kCsLD1pk^J% ze!=KEIgXCSS{;q8hmRUx*U0zq@=!E+dtUwaV^Yzv{xUPc#AA@eCz=m z(V`wb;9WPF->n;YM`dF-;~nR~!8u(uuC}_P3-L6c3yr()f{#-=-y{{+cQkQXA+cG3 z`bOg&m5tXDTdQ}}n40|?CYpwp8HL;<7&WRUYEymTWZ4aQ0tCff5 zd{+2q=9YOZY401=Gdi{Rj*e5m#z)6C$2_~*oTKBT^O5Qy1OFcP-?m@f|5MlhjF0-g zI93o~;yze6m& z95z0tj3mdi9RIii|LFMm6nz=1hlZd~6edp(8_jI;2zhP<@iqDP7e;AZZGGb!>XmCp zCvZOTSXmdIByU7#$OmJYT}EwsD>ayplFQ@+!^l$kI0^5VT*X<|}39>h95{#TIUuIc0egzx9rv7k%-j;9Zarsu+NUrUBn0VNT zesOwXj>5#_M$D`r<~)(lo@`>!AMjj1<}cv)RFRrHSg#D1H6_GzQbPI+ACl2gnjMn;!&sl&jvOF7i3jkwO{I+Gk@COJl* zIO`#UTw^+O&C|&>rjcVzqaKsSnGmVetW&1TndE8Gnmk2LC*3ALj-8C?cN_y7jmF8z zxMn#K*CfYd8)0OF7(T|-$>A7gP(;_rp{OePHVQsQRlvt`IS^SYUqzP4{s{OO&dlQQ zLfBX!pO4O$Jz;tBSy&EygoB}3vONSohNR2Z5PBjba%2xN_?A(r@{ggh@^%pCTn0zL z#|ZcsP7ZRkyf!FIHVq6VRt}N%14hZZ0V84K2sB*Q^n;K6l#Ny|^d*+=OP>#V4Q_5A z=6)K7`a?j6&i-wO~y2u@!iLLoe zXpDU~e4NWVfzL}ZpRF8NSjcKUBW%3ZveDLK{A^4Q;A1MWpN*;g^#m7NyZteakLreP(E%lh*Pz&bA)X&&LFhkBNW&Gd>bVl7loJ((v(G@*LN~ z$m^Kb-obiEhDb<8b&mJWBpLg4)bT_~^yemXBlMViy=jgJ$_KPF$z$8GeT>_}^dkK<%ldW-B%58xxc zDqm1%*iRkyEBaZ!rfz$H{+4g>hzDWgA!Pg`wTZ*jc#q_==MW|yH=-Xhmz-oSb1Tpf zT>t3lG_PB^K9kGbGjukGcolXzozGb)7d%~Ly_7?ZS(UA9(^Uoklyh00xW1fCj}HFs za+YPE^6#>zOBvLponYYQ6!yrVi>dU1qYJ6@@1)TGojg;{rOc3XN%VjxO+!=VY$AO; z@bF9mJv<2$VIq5F;{9wq8Q&r&43u(JNf8}N+kJCu($o>tG8hg@C8`bP3yd^XdJyx1C_lZ4FPLCrfNjj7xF zMrEXWB*%k5K000~KU|Na%Q3n*)v-}mmveMnQf~bk!`%C3rH{uk(Z$wob?=9oI?eCP zMY{ig;M$&#`tNmI3|x(m{6#)$-?$fN^K-R6@=yFst$%cUOoETfNK?~>jfRh`nJ`jg z>}>d$10QqS@v(s4bulq^X*)g|56S&fuYBYg+r)jPQbtZ8R$1JKGr6cC{zc>IK||#+ z>WIt83#|+q0UzlN5Acsq49rirk4j+o=Kz^d@SB^EZ#8z?>J@>oScYvoM71)2Or~pg^y8ze5|s3j8HyS z$o}v$_{c2x@DltZd<+ZVV<>zKA;$6T0Z)HqvN7mm5+L@ ze6+H;$iTnXT?hXCdL76|y>9>S^?y%(f9&{Zo)gAH+Ip4CJ-9ri-$yDV|4fYiXL^2M zql({?_C%^Q#!g2XXJ=j4!6>^!N6ty(cZ+{4z&{$@a07AnjpQObF?*yFKJq4J*>yG^ zvZgcrJzctSZl&^3{iE^`@!XwpGc!iX?K}-1|AJp!2_v7NmbiQnwHbQVEFU$-CjST< zpBWksBO~Q6@bOvWA7kakk??U8d<;n-_o&`6$#};N_{R_L0!b>5e8n|zTmRldxeMw~qz59!6% zNE6&N8uk0AM5as%?$F=y!wE_NdjprYqhm9}8$c=DuQ@>&IQtx0{ z*0Z17+fCVsSnuh^bG=(nS%lO-&hOd-??~QJ*@)(Fug`{&v(O#rc8`y<$UQEEkGeLH zmny((sw>YI?M#RSCE)<62=Y2}PPXVspyYPhKHc}#Nrb8CBk>1)F>;~V|?#y}?eeWT-} zKkjb-_qPB0&ENey_-K3Dtv7ZavOOPN9@5loOpN_UQ>(c;7x^ECk?r}I%I`;I_tvO~ z>|m629sUsynWv0|kE+4|KB|W-gO3#fe5~zEeWr7F@{m37kvB^V&)`N~xyR<++E*T@ zKKLAa8=l28uAt}Q3HZ2*KD8&=_plld`80jL%EzaNgv(!sM#{6p@Q=gkdmI5DN5IFC z@NpD;426&McdYlgxB)h9q7P(KSem>EBmXg`)Ua?Txy79s&9XJ6K{hAX!OeQvl3Xv_ zQi!ip`C96D*_Ap$b|b^b^vSX>-OtDUnbT!|<_u!&nQ|ZtK4#6Lc8zz;p2OJybAJaP z7qFLvd1ra-r$MdMJkEGJn@j%D(|OhldE_AB;RU^B{Z&3@!$l{0#F9~0r@SooL#A5~+f;UA~M#@pmn{ABnD zBV#AXiJ0+nJf=mCMZw1?_!y;pY=DpT#MkgK5LE+vV>x`RB(A8&KPn$< z;bT4blJapJd{qC~1Ruw9J-;{gY?%1GvJl_60yeIoN9`&;4#7VvAOBzW-ZQ$&YHiz| zzrV5fwktJ2LP1X;o=GANQZ!r%(k5B z81NBBp6%rQBm1I7vLKgrq?r{R;g`frO>m+Gd^1(4L+vg9RoflCEz1$oR)x(RIgD)GU45AZe2mUJI{)bT*oOC}Q)2%pHir4=YL2n~QJLB^()%gr9b?Zc z`+NMO*yu9zjriyp>Dk#Z!JcgIA^j?bdOsUk@wnlP9j=}FtgV0V)gIFKYGV1=9Dg2D zhvfgD6-;c6e8yHC()&lvMA}{rjO-*v!bjC1d&uF`a|ZJnJcio$)9K7aQg{5Q4zu9wb+CM7eHRb;UL9t`>ri`y zj~~Lvk22`bFa!K?y{6`qdd={V%=TopG+$)3HglNqn8!@qSM)aL=QuttV(-Nw=0X-W z>|ho%C$g$Z53)6kgpIq4M_I49qs?&hebI2sN8R4lW`xbI*rh<6&m~j&zvBb(-;y9RfZw?{XTQ>B!kcYF`ZCOXOKo7JD}9ui$?&c5pA_{Zk> z$7cA)rk;@I`SfV=2AE@c{qc_d%;DU=Wa~b7$KH6yUUC?}`7#|oro+edC?7vhruf_Onc6cb?Crw0 zBbhqL);a%ldt<~#UsnusFp;11kLh&{`TA@1vppmIpXvW@TK(TYe)W9R>KSQ2FZg-+ zTBLlW^N`|Xz{)sA+I|iH5Au+fk@Aq1k+;K1^=s~cko*e63@dM|yKJ@~|(Vq_s65+Av{2tKxX z!0c^17Dhg3_M-#ssXxL;>mA|a(c($w81sL}i>I0s9j3ua&KgH&I!x!frFcjB$kGLR z$`|OFTtYum6TD1q@G@Myf_|c>BK?eh#sB>Z3%!2xTMb! zoZ7=u7-`jxJ`aqvY6~OV!pF8;Pqr<5Y$GHb!8I+bH!(}9H8zW@dOqgE$2`Z!H29bXAJek& ziYPV9e4dI|gpYI5GR+cv620d@6}-E$>*CY+cs#F~v+T zn{1|)fsI!1k>B@;XhN{gz#BY_hVcIAAzyJjwMW#I_mkA+HfD?yu(2(VwWT-E1}+xa zx}#?D$a}X)%%Si;R?ph@t(6ah_qgrFz{BwTw|LV=EK8$3)+tyb1Q*#_;_R@dZhd6d zBOMLnXNeo7tf20%;Q|7PjU(UNKNoEER?RG zpUA?}&*)eDpJ$_1@$q-dNb!+b?M|qp(|>c@DPSXf{I3oOKE?<>{#QFBMv9MZ#YnAi zGQvp5$3KeTV>V} zZH?A2vd}S7e5}qj+NyIc%j#Sgy&8P13Ln!G@v)(qmzsk=Y+&Z3X2ZrT^Kq4W+~)e~ zc*@1_@r%kC=9LQ7;bAI#3>eAnr<34gS@>Ai^O3p`K5_<{UdHipS{dq(FmW=!?-S6( z(%i=rJOUf#Bm3Q15+2gC_I$iee5CdW2gOJE#;|vkZ*0qZvJLM|^{iX7hWY5&sCjVm zbsQhV^WVzVe+M69I2dp;{FvP<80kkxYl`tK4Bz*@G0ews*7o1uGtsa9alcwl+TPOD z?Dt+d#y^UW|ALJXM*5t66F$<{A>kvRMJ@DsBtBCA6(3cLwEY_R*aqL&Hc&fqL3`V$ zxhtBn)vH0yL&8TG*@MqX)gW!320r%VccnkSI|KQA9mHqt{p6A%)VGJh#Sw5(jMO@s zJR?TF#_aCgx|~5lrhboowC}*jcbH>)zZQI~gMVa?#B4m|$C>2oO!9S@kM-eW7XH!m zk=Z!q>P5^JFJ>lW30z#7-_0yXE8yb_W{_9s_cR-uaXtlpaUbkEK+k1A9&v9wd}Ukt z$1zs>@sa!6;vd_MH;0&&KHPqiInqAF$71{=It3q3!^bo5@ho#S=g@_Y@R9!UCG;b` zlFP7Ax`I3#e};{}bi_N7lf8b!CrZDgKj7mZF!2xgD2bE*9g$Sq{JZk+lf|*$hTD9fx-uOST>Z8y`TN3l1aC7mPIL(Afg` zSPG&j}7sUIj}LOKRkqw+4x5od9Z={**r%MKS&1ORi87B>u?Tot)hr5A7SI_ z>eL{w!N-MF$=7Ipy7!L(AFIH}D)6z2_*mb}$5SpmB)hACD%%#~Ebq$^7mQ<2}*y4$h(o_-I%7*cm2DF}eCy zay61~^lWtVj_{H9s@o%@nj_ho_p;=(b#za4kf&{~c6B$^-dxS`YKC~v74~DEJ@IQI zM%npqd|#M-H@fZF7=B&&v4+ap_|b;+!u5CXf3DW}zmx7q{_fZG$MOB_fR7(OEFZaR7!IqKqXyhBoEhG7S9)(6y<9Pr^K2n7<#cNO_qSiPE zeE=KZX2$p3n$#fK7x7UY_*fS{W;8ROWRR~dAIaDC$k%wtdG)D3Dqk~4JikE)vw(TI z1zgny-eQQ^Rit^I3G5@BVh*E&^k5FK zr+6Pea$g(jkZq_zwxRyWjNlPw1&^}FJNx`=L9)$KpV`-9e8b`xqXw zeOUO(_Nbjip9fC<(H6B~4|N-^DO&^|3m-GTw`MlIP?}+WYt7jc=+{={>z32Z&n>1} z{nTO#zHt(Hnsa%YO@NEic*NO`O*p5gG3SEA$n%Xx!$z(xgU%F;FsEVUDLmxK+@a<~ z?htdV;b7P}&>U_68ymP2G zY@KYTmL^}LDg2I4zF7mI@vuk_(ab~Wo+M%@m&0?Y>ekom`nDyxMlfu zZ7zD=h1W0-uYX%PUEe#(!|>n9-}bEZe6*}g=p|$MSb%?QB*Di<{2YBP((+M1SAOPV zqhH-zq!@WCqE}-Xc{?-Xj*s3y7Q@62{9kvxy##wiOEB-FGn&Lleh0)y)I*H49+Eyy zDSkgn;UP;^Fa!A=x{u$d!PY}oavn0^<0xu9V&vGAbb8uc2b(=%bMcDOY_j!x@bO*d zem|_u{W|cmE_|#T@G%oUW`_8f1s}5lJ~C6hfZ5_j%o58(E@d{v@v*yE#eR*|dA+RG z@_Go(=eTHsIrh;wQK+)stMmkF$Ne=%rk~ijU877B^g!VBYUua8YcuDrQZj_IOJe z`3HRT@~r#=KK>EIM=>(QN6W^5k*#24EBM$FKDG$)u{nHf1|ORSd~7lS-#8wLj}OAf zvG8#WGd&OB8yzFX$5Zg}WFBnH8Dfs-h>iHi1_RBJhJ)~t+|Ruq!9~`?JhwNC>!xLN zHCt*|wkLeFjI7z#tgFGbeXAGY9b1#FnGJ`J%c{08OX1^^cs`~TnE9#s=Ihiv z^JQv7Gq*|(89LkYaUPspinm+>H$SPw+--%L=J}+m=GmllGYb#tePlvDmJu6KX~)ND zrD0^L@@5jh=aXRLWOBA@k`JR{ca<^SZljMG;-lEu87_7T_*l&QO+6X)W7^(=cf5r@ z0PjsnY>e=c_iYOl>l*_u;twq!tp{>^^lXgQ;M^>a_ltJLd+8bmo-bO(7|)+Xt9{!c z@)n1GM%`M)mqd{l0Lk>aB~WH&PQJ@8SC>{W_B4Sc+p-Nxn zM`nt}$7R+(_JEH)LwxLG*5&sx8`$%s zoC+H!TOGqk9_PN}BQ;1EdA2=_WCmM0-~Msf80F)oI6hv%J30^fjAf(v_-iN5&h=~z z*6Z@IJ>wUxSb7@G(8kKYBh^fsd6PALqbFv2hVxT#mn-%l+3Y)G{yN9mU64N!8#Z zw}YI0O+J9_-kkbP;jt#tHm)qnUqy8}wAC;-4zskpmXAJl#AJhoh zx})WQ*qZX-oANZ(zjl6$skAL)hl!xpr4|%8akX-{t%18DnQI_j!BOoxrr%}KaS3Xw9BRF|xHXHhaIx*}vi+e}Rv`G>4DP z@sG{P*XSqjADiGG8#_K;Z1Rw~*a$`zj58PWA2b*8;bXwY)462phVU^L{}|B-yd>8a z&v!bW%QY+Tl>6)7Yj)S^ZnoF#Y_`OQv}W{Xnv$=ZxO^S(@hkW^PkgM*J{mma;?!JTPwwXSd&wE*#d0+)6JID-9Zpt< zjn&L^)=QGFlgQU(>zI5U_K&5K%@jWSC!q;2Qoiv~o4Khc-HBJgJ9d@eqtqqNJ9fZB zwig@mjZ&D8-Z#3sBQ>y)ceEK>nOae0>r?Gsr8C!Ko{@>ylDgW3Z z@Q|JHkS=FC59xAtS?Z8w>C+^!=dhfuL-yyhbpXFV1F72#rhYR7KH5G_P=}O%9Fttt zYBYR&FuA&Uq6+(9$<|*}Z=6q_{-kyj^AVh!&H70l@->W%@G%2EX2Qq%^sn)d^RwV1 z`_dL>ldnA=bKoO;dza;QH!Io8wwhe+_;|17;|9)^*$5jq7jUKpdp))laJ~<7d%M^( zw~zgF2ia$LwEYa`9-m;(%uM#qJZVnScR585<`h}_WV=Vv408&d<#p%qkLQ>*jO8QO zrJA@MeBIGzYu?MvP*WHviI3hl`Z*q#A)`GR-^UGSYM-mE=L+#B5rd+yiDqig zFwaB3CVJdI7G4v*KK#6HM_v=0gO=#;=6$7}^IY_+{=F`1NBOAzhxvhbOvFdc{WOX3 zj$!}Eo^Yycl~;3Koh5kBG}*XQ>oU-vVc*dHu5N?Vy_mcE0NI~xz-+M)Eh*;jXvndzhK zQ$9wHKEZzGQ*iP$Ir$88HfJSzEa&J&pXagj#ZMuwZf~uHkF440FY*!pm$5M`u6H8KiED0N_M?S`9{{&b$=#J9nZhT`5A7P^NkB*J)x!?XOJ~HnJA6o^C z6dM!r@t^RK>mkJOG4PFHHu}EI-@`|p)fn}Ao@Jh4eogeae=NM}_1C+v=VHF6&Phwa z@hH1p?bNd|ygDBl&&a5kRG%g~59w~(Ssz&G@^vupLl3(JHAr`Eh3jK`KDJ?=RXuFS zM=?@;8s>fUISC)T+yx`=@-;}!`p84VN9rzjLq20 zosBJD6)sk{{!yG9Q=x{LK@I&K&K#Iuw<$2>ANdxAHzKX|j)$bMmY$M4ub{5{%X zMdmJ`Hp%|Ey`1fJfPKh^*<*5?GagRCKJoD!^~3X>pGULodV&7)MRM~+^7F;wXXs&b zjl)2f@qu-m?gX7E0{XftSD8eC^g>@shu`rgq9!ngFXN>n`esw((&D=Pq zd2WT*Fzc>$+rK{1^Zq%%UiBKW8To!q*h|L${r!FY+oIRdc07#st3rHKFIx&YsXmRD zGPcjzZq6s#$5t(}5V={OJIL90a<-3Sr0S5am+cu@idtmAN6m{m_R_&9+4aUXmf1RL+iLk>lL)@L*`6=RsK7#n!Uamh7dWlb|axt4jnGUxoTZ|v*3 zt;{!>MP%+)=5xH{Ct_qBF*D#}27F|X?)-Z2v3|hEtSBFs;UAadA6IY=g7uK>Ut7!m zjdjc^uV+8UhP(l06En$xvkl6$gK4leBn8GC_Y~3#C5Vezr_BTm)T$V3TIQi=G29?%j=wT z_Bv;rac!DFzj6P!u5UVZd6V-gxCVn=IcwamddxlkU!6I7yp!~XQ%Ba0uUq}WYSn?Y zn6t`@UqxK&rug6F@|T_3agKT0m(Ytam1~9-&0_u$E*Cz>xfIkxVd^i1c-hwYTR8et zONq14TX4=sbM{Qa(MxdjBK*9F&peN}JexO`+9Nf_oMGlz)?jlOE*{M2XZF|WYxdP; zk4)WOmXW(_i<8~S*PLezAGgEDZTLsa#~SdlI(#HsTRv8!{#Xq@R)vr0g=S@1YqB!+ z$5iT%snj1m8&eyb`Ec;7$^~TWJo8OjBeN!*bAHmAm@g{km^aIDo?f|H=G8#|j^U&8 zj?a`yH&3CNWzyhds(BneijSND8y_K8D_c*6h4PJJQri<)!xwMOR` zV|`Mj1{bg*?5jK*y)TRMFw9Jssl(jzx5MjIJPY|ly)M!7?(3s{?eO>Wx8uLgdRYD~ z{_pDl?w*O^HNr>z+ik9nGBSG3kA8kP2Xfxgv(c|^Zrsg_J4Ob58raxcjATZu2>;jy zHd;oKvD?8%c}PF+V?8AM1Z)qR9?d=Qu{(V1p;`>;!{_Y1@UcI990(upgO7vNr(th` zlAIeSuaZ5YWpKkONsQ>Ud_1S6%d@r|FuM=|n?x<&MI z0zPJPJ_U@l{;@uM(#U|~x#ehXOGl6^f97II!?bIxXK z#u=7UQ_lKrJdGOU6zY%oM3{Jv`s3MLYK#p=m=oDU&2hMRtUhy&nd~2|doOHce{~)9 zQL{>W>hv_0kF~m+?`s9#u@-YZo{!bxW3`TEL$zY~*xr0wwH<71YgVVXfsODnwa_e2 zZ3!D=`6xDi4I3A*E~gf`8a6J&Q_iiFYu+iZnj_ctK(CgoZ8P@2@saA$yddwWzDya; zHS>Hd9q_Rfd@KbY@r{p=tHXSJl>5rylS{Jq;m#z}9VT`O@v)0?HupPGdz5c1mSCgj zW1E}tAC`^m%?S8teIwk9^^MfQ{&}6(a}Hr@0?K z4y8vp96pYOkD~)VjxAr^JVdr04~VOcVupE%GY6Ed7txPdDz8YcmVcDy z1&o}Z+1~N79{IW+e5@bjYxb+%n2($hiHG!j{7!sq1RpuGYZv>9cd>VFH~U2PqJ3yT z`$i5n;rfQ`B{|Hj^bz*mNynHCJke~tImJBnY4+xwX~Fer;O05zt}ifOc#&SnrIz@w zR`@Xb$CsJ4xk5krN+D-h1p0~fXX=JtzmSU~QZDv_Wxt}|BBJ+#$CG{~H><|@OS7=3 zHDcT!wp>$;y`-O*TIkOhU{$=8rcQ@~AE5jWg$SndQl07Cd{D zIh#$NI(wKol{Lhitj~;hJ?0xT*#m=)WU{{+9jx2e>=z^J!pGXZ%@1gI?VfnY9%iTK zV@NQ_M_YG^`c^D=>2{Ru>qwXwkdf!&c z`b9hQ7-Z`%w+4I+a<%x_-g-ysRrtqi@v#Mb^s|o5VW8M(`N(ZQ|84ikCE#NuL*9Uo zVJ3#T;h`Ph}YhOU~6#XnjP zsXC<1*yZt%6-+-e$N(5Q5JoCz52hD5gu2c!7&(G`JqkWPz>LKhYC;c|hmXwePQ*LP zKTd*=k{CIQeG%_-F2RDjZOn3f;y3k*@se%L+&V>wbIvm0Bj>#=%yfKQ1Rs}VQGd+p zZkC7q<0|~)8lSJ_9~%xZ8`0)m^=5*MEj|{IuhDMiop%>-eg&S<^Kl<+JkVqeY(&gS z9}y$19^@L&T;q^A!IS7TdrnT%13rV!Hl4)v2gsw%rf@9+d>At{m#pw*^hhoTy25H} zfb>p&QvXCu3k$yeVx@jFd!|GBr3u&2vf`YH#_XYncVYbm1FsaYr#hcK)lwe&VRE@P zYcBf+VW4!WA$w!cg&bzT8^FT`>>I=*p3NF=&emt|VEv)yRDIZ3?|yS4ld~rRHXhBu zJ7x?phce(J+4_L;HJlV1_tffTcGv0&8+(`?HSv!%@sHwT^}EfM>Rn-DXS`#`KURg0 z>G;QV{9_va5%0J%m3)ns;vtt*fsa*O-ElGNDm>*{viI^TP0hTD{GPzZH_CGj4=>9{ zYLKwe^05qjECV0$j@CbxCSRkO_{S&kj*pd!^6}wPDP{^>oF+Dsw;x9jm7s2PJHPX{ zQiH#hb5U)!rv8X;?0gH}k+ow?t`-}qSKUl5!#@_{A6uhVH<7PzqQ2$5qZmo{6BnDp zK`+fc+C9WP=CgH#iIMj_J~H5=?^SzdXuTF2El+~IF>aq<)GvBg#jl=S@sEe^$G;|? zhw=BrU#r{x>)qKv!T!UbXXCl(SN$9OzxD6tqxF#Ru?1XgNq?<%pd0bg_i4JScZa&+ zBYnp1sf<3o6E5yeiA|7(IIl$h!LybHi zoqs%ve>~0}lM`_9l-S7Z;Awgn(i!-8mYJFJ=mNSZM#9TWtUos6nuijzH9x|)%gota zK|e{{k1Fte*8k~oaWJZ%xNU_W{Hb6vnrP*iC@!Kr$HmJbHePDTymv$PRKvuJ_(bVK z1NOvZ!^SMJafCSoAJ4$YGg&Y)%Q5nJy+P)f^^bVSjQgT|tP3COxcXy+k2T?AP4SW1 zBidf0o7q;ao7q~ei`iVw@o{6-j%IyT&h1HWZ`Q`~aRrQATBVg)Qkfi4nffCvTt@$T zrDr3z=T_w0&n5Z!p9lp>ql%~2HyxHm8+lT_jW3r9CQb@ zq+3hTi*Yqa@zM5W{sbQj;iK5-`PkC)(XtUf2EI{jwEYkXI^=)C$1oek6weUX z`*4}s=W5TUcwU9?dv=8%i@zQJns^?@-@n$^dp_!U{e3+X!|UJ8$8ayZIsLQd@Ui)S z!pGbB{Ja4l`@qM3e}#|CsEvn@69YC*OQ~z7rev5Y%=SKvkDOVVvwqlj`vqqhEa9A& z6|itAo^herh`#2r1O&#&FRy@@hUt znCRK4HNrkNC$d7+IhFF|23cVzzmi*|tw=wKj|4;W8Nc4eMfgN3=k^qz1X99`lbdav6MFUZ4I<7BfEC z%t3M9VH0P}Y{?~GbLPzUJkA)GhvY27ot)XVi+ypCj7`qo*N8qg zd_2hh<3sTAF#C~@G=Yy~>*MUjJArRJiB5U%$SUu6&hl|8jO2Q-Fi}0=OX>p$t8V{D zUcQX3;1Q)rt> zW34`BPtD$DSA>t<&384p)@1d2@Q&TgmTKf{`NyiA%!YLMm>$c=Rpe`V$7NMoBV}mL zsvu{trDwASEyYWIo{~o|hU>hQ<64-3-cEv(N%+Skt_7DwkA@kaf0rR&qZi57v&h%a zk*}XA&FrJi*6A=Xny=*@rQfx%`+~yd0H#J9PYxQY7 z8>2lL*hsEcwr+zgA8&$>%GR0%SGJaT&o&nym9LSX>1k})7|X|)Y|ZoeffD8Gs8@{g z!#(Eu)Z&o$jxihx@zS#@yvDya{<-Vj*K_{s6Rq)I>tCbC{k%`uKgQpV`pJKhyQBRp z->dO_^mF5W*2kS)5$$P5&p-2gqzKJgDk;*!xE8s@s9Y%&hSxl zK3(DC-SDv+eC&>Th8Wq`ddL*&kklagy&J^u+WpMp4uy}y;p0f^9fKaEuQ(1) zS`S&FHoj5WI>S5y7axU@(qk2~%oCLwnCGhGnzyPoH(%CnXO?GnF{`LIF5`^;MVXz= zf($ZtCOsM$xeP`wmw$wjtMHJkvjRTiAsrvd*f4T)L*{&72{ziJQk}sHd-#S|D`~p=Yns%3>Pow(R&H>BaHkp7dBdr zHy5ctUd+KiHef$YgRyW?Y*g)$b0=Wqnfmy~dhCg*$KJtu?4iatp2);IW^gu724_u( zjdiI#qJ!u_U1lE1*8A$*OK*mmaQL_zKJJ8%J8JYW-@`^_>#fzrMy@RbA2(I)Y&NFH z@^KCMdUaY`SV+BDY^==rJ#cXyHOYlJ2ZQd`RW!@`S-@Kc|*=1s5 zShlQvub11A21_bQL6_GsV3tbV2^%0$&2y<8pc+D!C4>#H+$m`UN=o=tuY zKNr63pAWD8c|CTm+u_&y+y1p${bT-n`2E@XH^y_(-@g$b^Y}SR@qF|i(yyM6K4Ys- zV|z6T_*i6n*opbrSv?x@G4PNve597$w}d>T=cDtGwgy=y6%Uz)hlG#J>5gH2kaZl4 z9FK>b2p^q?%rMj8;|$pNc*XiC%Q8~yvz2qro9x4#%~`7R>vlBDVdQFhGLmw&Jf!uJ zoS(I#9_RQZ;Nu2rkQ*!?@sOM|vyJl;zT=D;&&M5NWZ)sM;v@U#4zb_vFmut4k9f$d z_~>epXXGP2AIZVzEhov_u<{~4@DltJA1xyj@{zh^3?tQlj_N1R$9(vhPhAr>{upAT z7#ZPXLl~I@A9EZZ&j)NgXW1C#<5}?$MfjLG3^p?7m@zcU$2#I8-VrulmygsRV|6dRu@nQErqMPKoD<}z;M%&Obi3n50{fRDuy zHZlid`!Z2J$~!7ow~%0?BsR)3y1FAw6dwaNx|trohd9WIF}^X%$9Oh+W@vRxQ4R0< zeDo}e=TrFcFvH?+hnW`s8vl6w>*N0%|Ga;Fc-3<^@{l*?qdeuG52`^ zGnI18bCvVVTb%1MuTFco*v)*K-P5ckPp`l;E`y89(MqX4bK+v8GIma1dNlHo0~{YY zr*KOSb3UBIwOt+(M()TRhU6j1*qpPl2mOG5+{>Qg{RLd>5I!D+kCu__O+Jc`JjPz- zpGp(K+~N*_aI*t?-ZJYVq+jI#r)+E&rG?Ji^DL z8H4eTgUsPNWNUPwj=W=ka&0Mjz*v0a31O9P6 z`C7HdHEHe5>Qv_)wW?pUxf*-3S(UHnRpi{e@;T-sxH!9<)*SOeIrx~wb&R}!OvK01 z@DcC$0&IL9@Axd<@##|PT|56M?>GZ4K2C3DCbyr~{k!NR-d4eMzlC#eVWZ@|W4DNR zWTr=bYwsUnV>}-%BWY>&)~|Z*MrWP5=iPZ|{_7I0(LYE3mRJwz|K0wx zAX10q=cSzOv$mh{@j2W6Y^iZ5U)zk$?IsfUo5Dt~X3VR$puZO8V{6OEJIUC0as40| zNlm&PYLB!p+huIkA;ritR^3>;-^qR&~ZV`8&A(sjGPQ3r&XX12_t8y{+LqVJSj%P#;4gMAwJ4SzEC;eyvDwX z4>`}^E6x*KMW)`E&G|gk8rNs{F>7Gsih4a@rOVlCc+S=!8^A}jiE|1i>mlLe_J(-K zhVT*Xgps?%NMsqwxi$OPW4xa;7!KsaNF+ucVNdeWK*v~5pi|5fo?@>0H2d<-NX*%s zWzXI@`Y6(Qbir~`^Vjri@PwX|Kf=q1c-*p3tG!KMhb--N8P6#FD8a@{aM5WZDnGT3P2I67*R@9S zkL%N5V`?$|7IHOOo5oo_^lP?Km)t~6at(FJ#nc+-r8L4f=9-V;qvZJLyyJUGS?1lc z;$7r_3Ki-6QM1}CN75Td5zwnQN zZ}k0`h=0U4HVM3=&(vD|Ot^A&G*9dH_4(+TVOKlH^Z!t9bTfsXKT+nmJR5)Czs|4z zd4E5C_0Pwz@vn=$ADtTyKOX)b@sG#++Y+!cAs_YgvwfS`j9mZ^3j#j+I%GT_o5IKD z;v;f>nmedN-oeaIP=mCLED>R3gpaC2-cB7dVC3EK@gB`U1bplbBjq6-AMudPNT?1u zm^!58BcJ0VsFhm}Y3q>8`oPDB*y}K!ePNSf*UW#ATa^k!zlH;}E@Ws|YtLW;-Xg` zwXQd_0@=05!+a_{M;Z@bN?jXYq)Ssyim&;{o}{ zngJhcarSM9k2^dctJ1fwdJpWQFB9-_V;X%Kv@xAINFLjcw&5wo$hB44nI#olnfb|0 z&0N^{S-AqZ_$T>T`uco)4iEV>zjHJ3iBG`CC*h%LkuTHNR^}cL8wbM1UbnzS_}JUl z9dFD>yN{539rlm%j;*b3%tu>y{9issSQ_SSn5%mHZ}pGz=;4fwmkj&IX5?(;Yxzf) zu{Gxt^^dj=$s9u)a<$Lc-amGPk78ulKUzNCNe%KY)gWCRvJct1FMYs%mXFNYYSsrn z4k6DB=XcZhvBP|P2>&>tJTv0V`%ZQfQ=MJCkUls2Zt8Y}lfBJGW*;}JCnHvR!NtwlJchPpQHSJQuI<^> zAp=HQ56L+UyE*G{Peb^K_M!cpS91Ulc`#3Wq))@l%u#fVJ$jCh)FRoha+3M%2p?hP zS<6UqlB{igBt09rcmei#UGyCEE3dmG>Atv_8xsEUl4T-X^lQ#F_$Uua&OV<_?GgWY zR^E}iqu6*_3izmOZP{3N1pS!duyH8fk?SMWcK-1o{_#NV`^^4Y16{U;jX%^r)=%Cg>@^u)GXvS`q^9H1nowK}LGnFw*z0?S4+~tNti9dNpUhU$c-c zH4BMa^MBr&{7}Svm#ab2r@>3A2HAnk;rZD4_R?I_lKnJDHArRb9uY=XFn#WVkEow! zC8$B#Ss!YU_j6v#FwRc#8Qb-;UB=ctM&cBkEe49PGAEmc8^EiWbdEI-=dd{)l(ttB@=~t^~y{&;f zBQri|TLZC?K8@ugv*LJ2>mzgM)rgS|xgIRq%k6#eaz8%u0Q>U}Sr18{hPi9UNT0Jq zjD(Y?(V2)GDZ|aU> zBelnXkK5qm)^zcZJv7zWYe?q)o|@!$uyYf2$W@iwTF>}(ax>V-e!=7>HdoIr-`Fzp zDn2IBn@MuLnfJ<4e=JiEK4!p2_RvswRPFIKYLBl_dvv`Su02By@)_~5B>5VNjW5%$ znFSjs-AUi@HfrXuu{SlxK1h7*rJ0^vnCXe(qxv!~TZ@g}JGQ$CKElJc$kiPKKK_gM z)IX{5+ib0w9`$9MV)8XCbTvocv*x|bW3hEdcRx|S_H5AguA++0JH|8TdiOn#{>pm2 z?-zdV&wS7D>vcQ)HR0=dMgGk}9a8tBeVS;0CfcKk^3l)x*ztwMDYFO7 zs3A9pk1axcY!%N(ykwM*^s#NmzM7Bs+)<8RP2eBzqK_>;-UT0-nYgb6pVO9))FI*H zFzP-rvp(w6urJ&5aT0vAIXle93iN7{v&_>$4RRKIe6eD_`FEuP^D0~v8zbTzgSXhP z`#yWpKC8-EKs7p=Z))QwGgX_EZ-kZ99lxjUX!|h@N06(BQ-2&5;p6w5Yq+BUjD(ZB z(ViU6KFfiTIrzwi@{#nit%r1cv~@^ok+u$rpFD|=jCe`UNBStvL$XJk{CyS%o(u8u z0(_Lti<9tBY;=lc<3&89WHWUGe4{dT0zRJ4<~&<;R^Cx;tTz^oVTR`c`qbj1dNQNP z(<5PGEFX`+$HVZ^vQd1j2_I{~#~S_34>jTm6}DtMHjsi8^CSOY?OFv5_-)(3dt_H#T$N5|Mo!p2#psxcc$zec|CPClzG8#xOf-*_)I$3Cc+&DLDAGvK58GF@+$ z;3Mk5dqe$dsl8>Rrf$ z$jTa;6c6pn?OiZ& z7pvH~CkG#iB7DR{9wciYLWg1H5p)zC!&e@Mnxg%(Nw$WM`yzaVk=6UcNXfBsXU#tJXf*5NB!0?IZox->TZR2k6^qQ` zWX?jyGcHJOj#_ZLx%o;SQhbzmEEmnzpOmA2jcmTQd}Ia^@AzIB=EE%?gM4j!*Yb|8 zcl{EKoK>oZc@{Q43mad6lP^(+ddUmoJG#D1h>y&FH-lfEi+0t_BPy_hlVYXb&%Dlx+ll%z;-u$; zU2R|HU-V_9C>z6bJyFg?nW)DSaVz{-`0K*Auk{)|9{#@9`kL_9``iAt{_FjH_q;rD z)FX%g{hpEG$8NHIRZ|O;&=9eGMX88Ia{+nV&r7@(oSVh?ZfP`eFPt=I^+}h$0s=_`srjC znF1p@!^JVO!2G+S%h_+>8{gtg1F`Wv7%30=A#9wT*2;X!`Kxm{XHcA+&l%QBYIQZM z>h?4n>h-s^N1LVd=)*7rZUyJ|!@K>=^r&~OY`vfJ9jt$(9(f?pLHy()bVTAcN7>_i zjI$t)qZ91uJISog$y~%fzf;U5o`IET=rv1cz2M#1K<9GtmoV@=HO2EV@G3PB3!Tov z#B*e5`9$&1E5by$c&2{f87&jxVkVh7gPsgo`a~p8tKK-2dLzEE7HlL>`%LX~wb&@_ z)k@A*E%E@~QrgGs_tLxBLtk57a%(zujnq!`q?z-s)YdFdDKbk_TAOcDTA4*Kav^LK zBbBe^9pxkEly3wd3nJc8e4LFwN@{36Ovp!YXftQfvyR@Tmtkjm+%*E@ z+2il~HI_l~nfA}|(|@l-tN;Fq*7(A@tI_1eduY=f{`z#P=`dy+OJh^V%|jW;3LJy4>;f8BlswN%*^qpte;Vv z{2W%!<6PGH)r-wHoc+I=b6wYG^fjC74K&-cxb8v&`q=o&AJm(HjR)|82g%Kc;M-w5 z;Su`OM?*Ts?c?YKx%mWhHz&!>r&v$n3nQXGbJ}KV&Wa>EpGD{Mr&*ojbzas-(vP_y zHN;0+;UlRx#wg5Bd}ItWZMIfV#`(uHmXje?W{!rD;^Zi5kAb*-tS(u*4t2;n!>K_I zXD*y;5u(Ge^APMj1UnDbf{AFqm;m0@Eg_Jfk8 zmsRAvGRsEC$Hf)kV+Hs~zWz$JN1L%--SKn!GM~|x`7|ll&h~ik_#w5&514y=AMf}c z-tnEFH>3LF8>QeQ`Zs)hp=1s7JbIb=9&zyv*5~2ml)F;R(A${fxiu-uN4VJ6dPim+ zHQU2^6skRXHY!{DxyKH0vKT(PzKrvYj*XmShG!HTm8)G(#(BqPFtIsm8t~CG^3U+m zu@O%g?-zsn-cRYgM8^zYcXabJ{#w(XJMlbX7$dgO5X*v#@+*4sA3U+wzg~1jfP0sE4GN4IgbU8%91xujX+) zS2`m8|^+e6$|23Ldgb3-bZz9ee~E9UmPVzeq1KbJ93d zlJ!eG<$TT}TvU~_)Hp+7CFi-Wsoeu!_Ay&I_wakpLEM!+!tAxR#|P=paD5tBd4#&+ zF|zV8`pm}zonSrLXezTk)97JyO;`yAI!)y|f77TzA|5-J|FG5hg6S|aq`ZfzLrzDm zxn7*Tn;WNw0Y7tKXrS|~=iuf!czF(wDV@#c+6YcGg_T$>O+S}xWcNS5wPzon<14IhQj2^G%_3t@RK1b;?}6m%0hW(RHeZX4sy+5b z;-mHwb`SBf3w-Q^Ix1VEV%`hRJI3BrzGJa zIfr06=U6>z8A+dpTI5rlRbV}2a-NxmUPNN#D|pD)>Cae3QhR)d+T;5$@=j#V?TMBkMf&Yl4 zd(LXu$$4LUI74xoBQB1K=p?ReCa2 zdztUjsVk;+GaFOkVio4T;o`S2aZN?`#Z+X^AX=eZEk4?8U1%07TL<28K73SvCXs*C zT+b)?$B)Z08(x;ZGf551M`hq6eVKUw_y+z_xms-eH+qYl{hsxdwaqgnVB;N}L25HK z*RF<-Vx&A|U)3I&dsMczGmm)3dnEX1eIs1#Y}rU|5*ux{c6^M<)nx3#AX~e-qp~%8 z#4|eYh#v{p9?8_=Vtz+K%-ao~xv3&Hr@to1>AM4^$Q$ud9@5Q3mb8pi9WoIg zyQxoudQyw*W%(GKTcKVyeeC;6C}Z<^4kL%cN7W%mB6&zLax6J}9A{IFhmjLu@m`$waH!re za}a4g%$%Y6#7BAj1pECgE8*K|yx(c+if5=Ro*^eY!8fvUMARBj%Ll?cc|qp~x!$Vv zgnX~eG5A4cXn8?Ymp-+XpW#t2Mj1ND&dfRw8q;^FpG z<{GPT9#0i!8u5!8$_4*00rqw86FJ_fn^T6~0!h5vN5$NzJDRPOv=KE`~8@R{R# zG`0pwZjSm!e>=8EBSzYDA=S$kAK4%3domjK@4r5Ql2r<&;Y|lq#eaP7pVdNwjIR!>egOStG49@*~j57eA;EdEr&Q8v; zjGP4@UrMG=gO7X_PC7=ahuu72WOEqVBAT-~Z*UHLoSW9pe2Kh&T*&zdmXFLYe}k4u z@Nzl4T&aCLt%~9%vN7QfO_Q4tw=abP}IY2&^_QS!w^q}`vyBCkh8IJs2c2P&%iAUT4 z6TeSmei5IzMHw0{ZmP_F!OER&mfipt#l|Qf**^^@SHnrm$CSUw$E0iUu}qYY?~$+H zC11a-xkqxfobWoym!$TzAtDqyCt(-QY)l+@j~Pnsd*o2kjQ6j z^=LX#f9y;~=}J~nzLtNq=lTTm;x=PP>X6L(XwQOWWZ)rv9g<$Qt3xVdGwVano)F_9 zIUka&{Ya3rABT}o;vt`+4*3jxd=CHkyv^BoNabwie&i$HsMOTFg@=5{`p9PFY-WA% zk)NQ?$l71vBj<2-%sliZXAsIqx{OVK8}GOj1};Y{&`SKHJmebmElga8)+5JAoo^W4 zFLJlrFT$RY?dZFz-OTsQ0PaA$0_|oW-Y&San_lmJ_MvDV`xsvGD0^3QTYFceqZ0Qc z!sj{eiG7325&WKXIIJ3+wNstz#K6CU=m7b6e>I6~YQe&N;-N%d-UAEwq;p*@v{Ous zhm9{Lw33{?96tJNy~Ove)t4#X!hBtx zY+b&o`LcWyGY{`Lm${zLljzMP1-%(+kIL2`h1jTUEjFt5_;#tf<{k8Ikf+~)kD7g) zaToQPJJ|Pcc~}8PCc{RqJuFtjM`dd_+e5ClJsGi)+N1i`3kD)$D3TwT5R;v zOn6&ldo%Q93hBv&do#`1Gt-=W-7Kyr;~A-Qa2r{XugTf**;={UD?H2NxZry+p&kVp zJIasPzDk%uKDUNf|8?%MXzeikb$U&ruZjKI*xVid8vnZZHT*r}|GfCu#@_dg41NYz z)g4_O($yoy$eXP6GmW0-<9gTXUyGUgf6y#}pY^d>TYVaNNX>~yGWP9uR$TMqZcj~Y z9kMMwJjX}%vbCp%-=QF9yIG%rk({B|9ra*l+|?nIgFQ8F9`Zgh5)FovLrQS2k31xM z8%C*@jmDC*$HB<)@&nH3pUt`bA9D`tr83Np93!s zTHzI8|jc;5dHmWa^($1_PUt2aN)3dJ7%BW|(2sSP(&)j1<@^!hU=BskB zv7Fe*TzHcB=-Ei^QN0=Qk-p4_)Ez%4T_2Cg+2QoA-x3$m$9Tz4(fjyD&GU@Evx*sY zdqwuea7|Wv)kAJgv3wi^8-3lepU>9J_4GpWjq1tVb2Ddzqq|WT*x1RkF{nGrJ6cA% zdGI#OIqHla&&6=x+SMKdKJuQ^8D_d}f|t(1b$krw9reBqDUa8?_q5*Iu^f!_ZK+$j zTAX`c{D|jG_`c^$qQ|cFwf<}T8va^;+dmh-`scOAKNr6LpS-R?#6$ike2nI5$Hq85 z!bD$(^fTize5BSaHir4=W+7dl#?Fdc|M(~Q2qRU8>`k_g>^Zc1YRK7fd>k%5vbRBc zfSJg#%=3<8He)=VU?OasjHbfJhdD3$5pwpU@X>n6a#`jn&UJYPJzK%mBGs#T89rJM zNzQ(Qa|GXllkdRD_wkV*khebyG4iv@FcQs$kMraq;o}0%-dafJUYyF=K(KOYs&Y1r zgqbVFNcgxG?-=%xHfM(!2`6pd4))kNMv9Z&;beEqN$V%!qs|LEBo>mXkC2}=Pvdoj z+nP&Eq{Dbi&&0!cNpaChY*dz3j)sfyaUXo#2OsyrM`dcy$KCL8cRGATJ1rlBdLxY7 z=DlN;AYaQjqV;%3&G6X1jAdhxtMQF1ReO|oOr~#5zxo^4n2?W2@G(hjydEDN8#U7- zeT0Yn3|@X-I?K$4jjxlfXOr_hT*w{rb;yLvvVFOy_v9uxBMX0r8FeB|@r z_hkbAXwL}eJyIk#BF9C)y1tCvQ}~Z~K6*~_{tNgRnFoiB*4qS(6dxTU|9(D(*_7z^ z^>`J2&fiY-J@lA=UhB19^JgCqe=m3YAAJ9RT17r15_m}O9~<&>mE0Vp``PC6GY)5M zI|B(DwbxTz^o+FoX_T?qXJ|bn|L4ug*e!ybt&Ht+w$IoRM#9Ms$oogPCtLI4@{nZg z7!RpE*?!NV>X1HXld4VdQ)G$Pdx%O3lqDm0FljE44JA zS88qM1dN<(8OgrHfRl@0<>G*mo|9taD)!5*Mr+Vov<_|H+=Y#t%iv}GB+T4OzSbT) zFP-6_y~x|yTOvm49K{2ivv>$L9-?P*$o5OrGhtp^qK4=skLYe|7V!{%QFGjOmK(3A z-ilB(%W zq}n6iky##Jca(S3JdgE`>RYQXqn@?ABYa%KJh=AF*xn5OaX$X>EBxb^@Nq6|`~vUz z1+_<;t;;g^NZ)!kJsI_^KZ1oH;Tu1Mi?h+^+@H&HpTNhLOV&0Ilcz`H8O6g9tRrr# zXoicAct_=G)g9Hh)?ANrwe4H8YR|Qu=^iv<81;;?UNXXl8|3T1!ld#o|bIsKu zy^qwqcnf|Hd=1hwvWPll8!PQObalw$Fe4-TvQ>*@KMnQBdpH}V`|a#GM7{4|&mlfi zdk*`-#{u|9>mk|iHH5R9#mEtskzB_MPKuFZ*cUbqMvjM(6VW8H_7v+OsYAlZM>!w$ z@uYg@N$VlS$ZYc*jGTp!e1WX}QU!80dbL8nc|Ez2d6P2`-cD&^-o;D4k3OtO*5Ycp41zA*m|SQ z)YKa{;~h6rbKIaAN7Wpat8L$!TwSpPGd;zyG3pz|M%S|z8_CwNQQ3Nd*ht;+>vHt1 zZMJS?=CEJpb1VAR%=CN;A60i$zxsW#5q(C+{))W)HM5YP@%WpiGR@N^YMRM+q|=9~ zY(~OFanZ3c#SDXuLu~yq!AuWq)L9h0s5$oFYzocuMCy*@YMZU?ykjU+^L_}kQT{PJ z6W)Rvq^&!`N6q!P+9U5P-hcLtaF{6H81{~yjeZpy!|z|8t;K+Ng_-Gk7B^-}JY&N5 z!`zC$?O*2~_xJs($HTY%>;CMT=xgdETW`294_Ke|1Ke&3<%(}P*W>u2Vxj@_G0;3qHOG8(&7Rpw}wkAz|cO_{g^_HVznxkBl&qeKj!h z^UC;0`ZjansJe1TA*7-JDsO4?vw)QG(?)qTuVeHpq9tb{akIDh{onwSI4E&R@8UD_4ran`t87Ny#7KRz=AMBIrG^0NA?2PjO`eyec3nUBXw>& z4;jNpJY>Mfp7_T|9g;Ii`@zQk=sx&37(Oaz4@XGpALpKa2d1UUd;N;hq zk(^b?x(HT&L*`zJr(CAUo;E-mBRgyy5|T<34=iK60|8`Ro|g;y(NO>{*O_%|7_J&+<{d7pJ{8Ps=NMKKeck zXGlKmcGoIln!Qfh>y$Q z<5Kwe4cXfIM!VOV{W6}9k-khL+q2ew>(7}7SGHEJmcBq=;v*OEnD{sw&-iM|O!MTO z&NGg?JvG8c@lidQFdyX|U9NWXj@oPObG7)`Q+*lh9l2g{gp15Oa$9{FHxKR@>CeB7 z=cDh+sQgnHUfGzkIZeOvKOsY5%BsA2;*E|Dkd= z-qG@r*@R}c2C0ng8L2ZXqO(5N^pEV#>O?O)>K~P{IUCZ}Ac#mJ{%#XDc+o zM^cNlIXjn}olDNnGq01iy^nl{jQw5=Bb%F#ZPun9sk}{pdoGOp()!3Ed}NVX$bRC5 z>m7q^ZF|<#9OWG~&!d{7W_rGWgLBZlh;q#w82Krl@f|$ltdjgc-$^a{_B1nwJpBL~ z0~e(S@Q@>!bsSD_M*h)zN7u8~yrZAzQLa|qG2r9PWNYe<>Q{HYDcZBvOwWz@7~W6V z;ve*7V4};_L0`sl(Vy3IV?O%a_kRN)ul9P0=Z541J^SLnCi-~ze2S>2jQ5ZcZyl;b zs{ZKmcC*M=0>ebks9rch+#YeJ(X2tEiIK8@7%zD`#4f#Uz zkhV|5oKIWM#%qV#Q-ib_J2dMPbM~37Lvl9cZOr<}L$dF%5B|~dkv%nmhZH02tWP9o zhwG5xoXxzCtwSnjdqzfUku%BKPjimJGx$hbi{#p%FL0fwm*Arq`3l!HQPzGFANe*u z@?GkY@6osUAO#@$%rCM z)LD#3UNNG8jrhjhWNF)*W)&A*e>%!Vm#ba9aXWR#t?I=nQ&-l0YS?J^$iPPU?fWr~ zjqI_eAG11zo{ZR-%sfxB`qhDVgpEs>>G69B-Mpjbc^XqkY>X#t1PfiZR=%ExzJ`+v z*gG>H$v?hZsvc)eh>O+DgxjlHHjcZ4YsK7Ag_>g(*a#=(9no;|wPfp#x6qS8%GR0% z_ujG3Ev_eHXL|6C-6K62?U%WlkL}6Wt}heR9)o=C+306_S_ZyRHAgSkn_-_dob)xv zn3*2!D-8A)#xOBbgY>P>b(B3mr^c^|n3U)>;nzjE<-Y&5U+?F^#k9nH zyx#YUK9`t}{(0Y{`Llcs*CMaQM={c$=bn&{ns0@V&B)iyG((u5=OQWCxc#1 zbQaQG!z*$&r0>%tDN5SSp%v?PGsh1 zGCp!@c;=@J`?Hz%c!D11O!D^AcuB`d_SSet!pWD(a@I#O1N0`>IuRq^v5ag2BdJGn z-qy#QyXCX?XYf&soC7Px$S+~zS7-tI<`%%qMR-cj$)%iEvy9BW99FKVjITng@s-jV zv=-?cL}{I6CETR9p*?zAnKRtQIXHV^qqGMGTG3~*oWv{s;3anIahRwx7_|@3N}e&$ zZuq!MTqH}|{V>)yij6_N(a$$Bzq5@zEp3L6n*u&=WS`82O3d-7=4kn-eKLNJHUBQy z==j(cKEg&k<1)Btvvt77XusOCv61DY7&#wSE@UoTnva*9TQ=W(!d^o8#TVh?lhhce z(SLd9wlp&qJxHd0DB$CR@{sURY>f6~n0vg1c^>x4+=m9h$9{INjPs42k3GoN_uw7X zulDnf;-l|bd;b_S4<4#Nii=)4t0$h1P3d<^_8f}8jgM~L(R0A_(f4M=DbI}fHJ)Mq zzFy~V`>zk*58n=d&+y~%x1--P%*Sj0-LCb0!;eS5XY}vupZBwn{^t?1MrMAZJ?zAM zyn0`aKeO2Ht8p1y|F7f&iHvRe7*~Uok1W*ZD4ewCR;X7K%#6qMvdP)@Tp#smw5LYr zR?w?aAG;Sb<1S;%Lo(|_&bGZ8J2S3cHs=Wh9&#l0$WhFWkLKDTV>st@EPPZy+vaQ- zIYo@*T>XdHbNdK0!ZTpxV=(f`vh~bU@{wfiXPNtXt{jZy8YVBGmpM;R9@1s)0`r!7 zHt3z?#^!zc+aGWi;YTo1K2llxQ~5~r1)4+V79;1u#jiM%Mp_^*N#2&0pr!c9W%x-k z(s9zUay6`6BVGoQxBOQA5+C+09#Z{~ov>~%wZ5{z-czd}2iYF<2-LCekiu zcXq1IX!i;_&*<`WFxyD2FNgE7-o6!jvLjh4*0mv&ho%?SiaVCQQna`a69W5 z@Np?z{3c-IV$FiH$9e(%>IL+w=aZ`!gtU;y7INO>S9r(Is5QP*D%-qRf?5eVdJ?^t z31}jDdJ^7IngA>1AJwl`t{#m>hWI$tvQhIqu4gUp*zXq3p};pfHoCrytvh<}NUnC- zn%WSx#|~1YH{-4?6Mq(kXQTCxHe0J_9qn7&c@XujZN`rJM?dcv-zh_5B7` zoeS>HzV)6m=+)X87w6ABFK)CZ;+f}9qObL@4?pK0)0*gU|NXA@y72Sium3Bzqu)Ea zmqwo*?&lQzyaGP@o_3-cpJ>jG_ON}%j`XtqoR4}n`rJd!=+iV;9Wqc0`AAsV+DeS% zT*yGyLn>z@m$TK&=JVJxvXq_m@r>*aBYU7;)FS_1_TKzyyQ8=g{C@9fumK^l8^=tH zJxz~I+itMI7zB7Qo7r~+LLfE?iA6|&b_p$LUyy_rkc1W_#J)Cm8`IMr(H%1rjc5L$ zIVVq^%B*_s^SGOlTPUZ6hITCk9Uj(`YSa~V1@{7R9D}j?&11G-(x)%N+*TFyJdfWkX zBe3#jU}az=M0dqMXBC%+Dyd;oV6J_M|M7&>?8+t9fm1APm3 zEPNaE9bn~mftB9}{g5~b`Z4IIz{`I}oW$KVKZ8y8??8V~-xm;lV15o6lf*O1zW|2* zBg*ky-haWllwZ;xk+=x@Ctx7)k`#AzQy%P;>HkC=d>(L+6nLnRcQJBrQTvOh01Ih@ zkuFX9^#9)MFy3d3v(^8j(xHl9ko8Wc8b>eX?M z5a(nXHu@~#8*}ebvZM8C`Gd!K8SFh7AL;YRy+_-u?bBnw$8NJe2pbQ_#~BwbBT;q~ zPUuW?VaAMG9d~*e$DPk-$JcNzyXO1(ARaEm(ERp=z3f)Jw=?^S`?n;|7d4DL7$0|K z$kMav??XF{_aXT|LU`}ohin)b_z1Z%Y&F0}%8|6`g}sI{DwuaA7j zDMR9ZNYHz!YZD`ZkEa4BKX?K#5@%-lUo{^AeH8lk$9dN?WXVt9o*!Z)<;YKm90_|i z?ms;bcUgTNcmADEITCa+@bMDhPj5_u*Dz{0?;P z??U(f9(-B85BeeKN7T9DAN>>1Pk|l(E(m%z@Z|4FftU252F5_n&Ri`ZxUIp`mLAN>z{9m3Zpy$0c{K?tF1|9kj7{(GF8`57?rr*Wnb zK9A6=zX?71>(6)*&b_?g*v*g^uQ~CLg^N!GE23Zz_TzClun{uiUnUv<4hw}X zvmR@_SusU>fWpz9H{;B_PdMilruF)YYmaa@eLvo^toynZZt+^nxy+1@^;;71C&;C{M@jbxD_tKtC84~mX<73#f(D}Dod_amT3 z6C=L`-267~UHA^@yP)rbeh@hMnqxo0onAi%{RFQ>v47& zc5LX_#Kr#`evH3_tZ01vC1k^i0uzag@5h}NloLByW~8iGBwXYG=@Em zapyUGU+8kXVcD&`KRZI;W`3^{w7q^JNal}Vqr1Wd~`d|+dYa;B~SR?cq zAOCZR_-nZj8N{>Mi#;2<^*DDJG9>Ld zC~)$B09FRQ2_bAr(6RqFVC8>+Ec^@f`R5oz_=Eo*@bEeKPeS0~x3SOoXz0%`!98Tq zp`Z4`W4E64XUA>`dGYzc#XmlF#R-Lt#K+4|kZxUi_5TdL`VWU*O>7Kbp0VeMGlbZ4 z{5bV$$c&U7;~XJm#?yxENZlH~;GlN{AH$y~^=j@r+9o5p(SAMHQ}_Km*jKV%O>8WD zob_t!*0JaKFYrBq;{Mw`vZKFAqW=Us$?z;frNNhAYPGV#+Sou}rVm>l`KB zWn9nC44u~7aNK#l{8rrMcEh9NBXRLXpiO)P4zA}7L&x5Ok1vM|`3maT*0X_$Jey59 zlKYUF^kY)Um6R!olh~^S{fzg=q8xQ^p1UDN{@2`7 z)c>b0@?*-A|CRFNBs)@$L|qWEaqKq+HWDLoR~h#m<4iStdBUH^_$VDae0rc`8yo*4 z_8m#Y#9sgt|1tGyVj|C0{|MvdS?X^;>*cUNOHRB8a^hE>_5#R?e~P`uKRtHcQ?b7Y zy85ZlM+n&w_;@9Jy{~}$czMW<&l~%Wk{yAK*mwLK_8renxsf&**{k8tL)kI(>XaP= z8|BYKY#cTj#Hm}q2lOuB<2#^V6BkX!$JlpldygwV{tdo?Y2T6iPvfi%{lP_#7a#ZG z;hO$ieC(KebbKT>?!`yQ{(nVU{_dSV|_hMi2 zKG6NZ%Lkx)KM39XVaSr-07eE*!Upk8?6Ext`WEEMZ$tn74(#9Gf&Lv>2@LrG=!Ya= zCh14e!+#9=Nt`p`8D$aw1N9%F*ZwD*=ld^lFD?8L;e!+B{dndth|luJiG4)i9DQ?W zf2OTP_7>TpV_y++A^mk|lP2+Avi}GS6ydB7fdiB2wd(4Hf9lpX2k z_>r{9guNOzYwbCv&3X?$YR^$NYwFg8kGkh^#mCv_5xUfG2p?sGtv$3A7ybO-IzF!Q z->%G8@~iXKI{n#Y94b$HubhjaPlvr^FDAU-_$`uYvA^FUr?Rz{v+` z-v&Jl-TNERy&nNaJ{mar%43fKBfkZVBn4JN&io$e`y|Miq#r=W{9(vnl)?C)r;^2p zp~TF;oF|eUrQ1^e9{Yu)xOWVDgg*nt zS(o2~KR5K_AA^1f9Q*-s@L7M2Gk&kcITm2yGcm@ezx3FHPyef9_doqFaX0OYa7Tn> z#M`i+cuQd7p9C%v8*hTlNV)L_(Dit}4p@2ZiIg4xc*u?e8^abOTlM+acck1H*a&>2 zpCkRidCpqCJeD1Cw`1%%%GZ%L8QpvP?17IwCsQ_S`aAM0A!SFOBjlcA`t*eCsJp>w zn|U4d>-DU4`18;%18m%jkI<`MPW?J;Gf#+f*7oP|o+Cr+)p4F9>@vc{{+*BSJAHln zvoK-Shi5!7cBqVTWer`&>3&{A=QBK>JeKWs9XF5ld0)EAIdr)ScQJCzSK4US`+TTl zOV8%}NZlG~{XJ2ZG(LteB<(bf`2P#>9}N7xgpNT!pSZgM;one>1PLRdV^hx#oID9Q znf^Wq-wglpw*~b*@Ui*djLNVefxaawYeX85$F=or66MDmGJ$!8gxzQ+VuT-!LjS%|8oQO zC2s=V46M8rIC&c}5_05MaG%VbIP-Ql=pN8lamM3bP~ar>ZP0`8bAISKz)8>}phux= zeiJzP7-UP*w?N;fOqujug#7OnVr9sbzsIx5DO+03j5PlLsnY3Z&HHZ#h5rnFXmsD~ zk8tmUiFZJVUWxD(LEneG_dV#pyie>qK_^27#Q7D_W6ye7>=ix&S@4l(!bkfVe|79( z(1TBZ3GNm9OW0Lj3`~5{v3sBPqGMl$j7T~0?x+3vu{%NBSG)ss8+B>yFW!3Mp8+HP z4EXqGfsfZ?zcH{8y7e`{#;c%HhhB}nM(;P$RxP=azC3AQQ_ zkv41p_m=I}z{If2Xy38#JxlH4f2p2CJ*%v$q|D?MDx z9Q5pZYZ<0HZItdp*?nM$GeZLQFH6cSjS^JQ*)qDWhNR0eYV5DTo zj{+w@4t@Jf>_t+~4mt8f$dS1J?=v9k+2`_}RLGFjvx$)xf-X*sq#XH0+`)eZ=qlXL z|0NJ{k{EeiVB`yr-2{B39C-`Q{oV$mu6;*fBxFg1cO_1SESdWD*Kzja0bt~ViILw3 zoP0&#q_FZ8(7UOBi-ec2#6BhDGtl>F<6Y@F(97cvFx~@({~?Gw9e4&MiFilCGw%ue zF0pUIKi#WH3=A9u20r!-oOOoHgm#lh0}Ee*`?p080S6xh4n6?-`qPPrFFtl3=w9IB z*Pi|tLH7U;?*5(nABWr+ zzTmRUj5{7fc7)Bk`SX(TdBI25+ZUSOR{p-cp6>X*J1fTT&xDhZ*PHxkKk<%@ zjN4xGQea@nj|jW`82`V}@iAmb+*<*hGzlYV%eMR|U&w)xz(!-F@sT<2(Y6@+e^aNXt@=~I#raJoDA_0XjBi$vya3I(EOa zqW!L=y+(RA->-aq7zS1XABT>OH4<_p{C32do1Z&Nc&b`9C2=guqXI!5X*>wg^(Y=g?&PkFp;>3wt$U~00%pT9*zCP zhd>WNm;O5T6}h)4xskZ|V(8PdyW9<(y5vU4jKIU&phr`mz9n>O?ll4%fr+$LUkh8z zHEE9tof^J8mxC@#AD)Y!0-YLk0nQD6;VFD1{14!M!Gm@}YP^WHM* z)gOT!Mn2$mhS0v?)T^mehp!{{8+m^janabQbA<8(A7`w&FBCpK+IQ@FwPZ)^FEyLY zI`$lei#{*2Prr_RN607i38#G1_Z_>9rl(6jB38-Y&=}#+Si#U~414-k+-29i zed)cNe2V7w)_Q(+==yq|eJ7pgaIJHAx^(P*Z^e)wH!)Ije<|beEYyh+G^mJ7II{sJxn?BeIZ9u z*T!7~)U$EN--r31oxsNOixfsuhWu2@k>?O2Pn53xIpE|MPQrfVNzk=H7lAGTR$dwy z30)gFNjZ`@`6b>-jk9jTNXU{6CvO2(-ujHf$iPX+la?ioliHhv4TCtD^Z?|w2Z5Il zB|RLn<;lRxlW`|3uq%lEf=R$o;^sH;{MaGHGO8yWBo>+;Mf?%sBJ}ESkSHr={9%N| zMcP}4jrTvT;bQDF5*J~EF)p42nGv?>JD^M74tep*u*Ybx5w@6=8?OUCUK{(2wpXVQ z4{-5|z{SfTH^$k)#K!Xxeu3wz?c>P(Mq(p~IyLPv^5YRUo{@JthMyzO$7s({=c|p4 z?;CrL`oFDikD=ViyB&4+ZQ>&^QF5d4QT~qh<*{DPdnh_Sj{6-gJ5F+=?J~ql$sx7> z&wa-_D|5X5j>d;IB#!hn@lp5Y{wDE}y7mq} z0xNlUh3>DQ47rPsv}x-eG@d=AuDy$owAF+?n>KCQY7!^8AK7i%r|`aU=-Q_O8;Os$ z*L;X_WY}wPpKi#JID^Rj$W_;dJb4anHYrDbJ}?q@t0JTL0UQlNobu%(C_{Z%)Z@C!rAEN$@y~c>s?gDxMvZ7>0>@xxjxzG4jkoFm+N8gG4M*1<{aS~-l>@xxviH)*X z%LXGGHO~o_eOh)H;9~02m%%Q52`J9S_`Zpd8|nYevoW$$2Q~s9!;c4{@R9Zy-v`eB zA%tEHeB|8|_T}-OBV|XPuhxGi)EVoyLXM=|sQ+tCKX9BQd_(HglpTE!1$FBcAN8ND zz{uhAm^PUM@R5609Ur~t_*;AwMhZ87-S|kn7Dih3{!Pe_!y|8#aiwdIrbuX&kyMR9V4HNbK3aN&JV+;EsTV{ z2Kx3HC*XWd*R`LD{YX%pu>nS&XI(om5_^)+w=X6}Vqfx7(B+AdSK>~stDYu(`x@xn z!bs}dFMz&{J6b_EV}J4%VC1d9&D%h?BYp?(SV+D5E`)c3?n$f^UcO}D<^90SuLCb1 z;Mo%3BI!ZULnNdHA^tEh^5MX}l=}iZ5l5Mo9_IexM6f>-7eNo^o+9@ZAD}IIU?Swj zrx6!(e-U!xSK+TipPjpaiNeK_7Xuehw9E)xgid_}uoQ%#8@|=wB=fS=Y&sh)ok!P)+44)pICG7afeMjC$5H`vUe5Ad)&JxynLdlFJ zKlcA&_F3zr$d8Bl@>qtmT;^xXZT-2IIo`PW^|14H`pVbohlOjs&U-6wD@|?8GUQS4 zvD<2PZ8WK4^Y;#WkvdbaF!msgkF?!{t%kY=WJvBodLJ@mNAE?}{XXIELyYWtw(T|0 zw}p|CCEt$!OY&Z%&el8|GGxO@;Nxka)1hmB7(S98fz9Tl+>Z>5%>78nl4m~^HXG2V zp>Ll9Ir3cS+vkB|KQb}$LSW=YuyJ1kB1T>o82S8TR{$faZ(kkyHe|`vxvz&Tc>`?S zH^Po{6DVX!$dg|N1x`Yi40#gao$!@5PIjyexe~Z}-?O044uWhMcuCAGdJypk6XS?; z4*~xa3isCdgY?H4M8BN0wRAiTdo(c7cInt#^!}o3(?ebiJz93@FQ?y*_Zhrljvo2)c;E3A{{r8_f{V1rc;Ats zzccSahTJ&m)`!`xy)Q|-L+Pc)jh;qa=+7?G)3@-c*XidIkLQeH=iB)?-t!NNyZjou z&YHgeS#}!h*oBXn?;RUW*|GOwq~4$WBRf9weNS>^*lFnNllU0FtHR0n4=-XQ*4nGb zxx>8Q$GUdfX?#!QTLK@2k=m0KJ`TS~+!<*-TQ=?7i-Zg*j7+02^%+M$;&89Lhq)&eI?|`kR=huz9jW+oV~do z72jt4HKu^6BHs3oTTiyk_8}{$Jp@&KM$p(!h-E!uXMJJTk8 zJN&)r^ZjMet<gSam1{leEcywlv zdyTZkNN)Tr^yk`d)Lpl85{9w?o^95x7oyG4~ef=S_c|n?W}L8*hXjUH*);Ps=vVbAt3~yb^Q;eRt9Z zV>^s}czCxhZPdg@{(sE5(5XNBB>FeX788Cvw#PuHre6JV?l%G#d1u*&LE3X{emu~r z-=Em{-rv#P6U0W|2X0)ny?XdMjx#dUt7VU&>=?e_z{dIh3CfM6`TwkSwnNd|2r6ouAVVtIPa- zWu3l{?~LCy#$IoZOOBlVM{8ckoQF)g{G2#PoL@^ zi=Zojl~=--?<&yMpf5q5yaseFF!MU<-hq?QyAj?5x+Mr_NpQE}m!A&Z8$_A%cJ5VD zt_0l)%)A@n-3aeWV*DQH<-F^LXPHTi2T}gpL$;~#T#L`P@O+Et&zr5K_7rJv>Hdqd zxyV;1{B;5w^L!xv8AE0SE+UlQPTOY;+cbT5u+In_yd>#jgcpG>2wc=X6TWNWv-aTu zK6<}#+fHqrnsQ@dqxKwipJUuv2Ahn}4)!~5ZI9u7jzN?ghfd8igv3VdIX1abG9%V9 zfA`~@4DZvY&Lr~Pw>&QsdyWXZPAyE-*%*IQ!o(-Sm&Y{AjkY6fhm?a#PV4yNbcQ|M zap$kkYr6Bd!nLfQ_l4xaJoD=Do_0`r&+G9QrC*c6xeb=vCgLIITXViO$JDubHrsxX zmK`1P{rO!g^jSo{dlCPy=49_fHhheG#(|CD6G@E3db8g+L!Lk6S=O)*0w3w`L*kh( z`ixVCB)t{#8t&lOl40&?k zB{1`jAlP=0{*|OVA?MvS2zHVYr`$(hn@;l8?mDvcWS#rt*+1J@!Y_yR=h#!!{SmhT z17lwiq4yPU#+Y<2koS<~x#{N1=zAruJ^^P0fs4GKOny7^-61w!3_QFLM8C%PPlT|; z=dgawG1yl@AYn9H~#!$1!#4@NcA#Bk@uHuQhaP$c?g9>+B$X9Q&PR_UGaK z6XE9=Yc1{7iI1-bMj9J=uVcqY`G8|RryXYOH)74lf6CZi-S!@hkN$>im$B>--`T*% zC+?glT)$b%HB1kD;CU2K|Nc7;IoV$skR_>W%dSnFgnwkx z*&$2fE*SoY2{7`rfs@j=WxEkZUPzn-W?qc{hq?r^NrWP47?;}0v|hG-aatX*a_ViX~xd4#F-Uf=?LX_!}HHR1I=^LGts_6 zpPcl|q2D4X^yl1DjJqVle^K&cw@1sD(LOuWrFnMxe*re)K3kCWY1?2ZFA^Ki2T7ln z?+)+aiMwr~Q`-&`_kZ(02lJjXVI%){(Dyjzx$69HR^C@eU!LyA6X&XdkM9H)Qm2+) ztvem%>xkdrhL3*>e3Tzg$&SQF?mOBh)6d8d8;y^{hvNwNSUB0fGkl-6SsVWx@;i0B zheyRn;>L;#9ZQ_o(;Ro6!!DyajbU%Yb&n_Pyw`Qlk4|~~t=_)h(i}(5M@%3&W z??vvHAth6KFEa2ESn2!4$9lmUDxb)dBeC9Im2xEi8}`+py%Ugg3jXI7NAc8Cy9~5$!6b%&iw`8 z;`#6gx&Rb730aajc`5!Iy?eK3W&l z|EKK3fsP4`_i~QA%=+x~wch&ddJbLB&kUV*SlH{Vao63K?))D1vis6i<^W%xHt*K2 zjf)O{9r*b2SVxp0OOAXMF%rZ*$oT*4z)0F_v=2G$MRFZCe5B7$$H#X7AH!x7y0-99 zGNj~4V&rKcV&sRgCpj<@=WRZYJ;^gcfsaFugf9tn?oRf9HGEQ!5IV5D#owg|+DkyipsNMnC;>`_9V19D%n;iB&#qfOc} zqwka;E|O?_iT{WRnUVX9w!vtx@x11{<9jB2o|^v~!}}X`o|@R0wiy1t@!VkO)b#(> zJ-5RL9CjG{IKCTpn0J8!8=Flg_8fta^Z#t||70XP5*r6Ta(x05iHi<5@ex=^UmjEJ zI|ept@6qyN4~K5u&xVf8|F5xK`_!=6NRFi4h8TG|aT0ryA0=iqS90I{?0m?B;1dL0ndklD z%pd)6l8A}CtF{yGV7)SVbV_z}!=`FFs1P z+{Les1wG#J!g1%X&rWCPJcjFY&vX7-rt>-|zVh<3_-)^}vGQ}BHSFcK^JK@~-N(?r zD?h$Vz2Tl(AChviIZQVTnV}cbZuZJ!oV!zr3pGYFp)&uq`b#FW<|t0#(||l z#y+N5CX}vBeK~Yyq+gHrNW?{BVd&4mMaqem6)h(c7q7_uMeQ-J@*;jGAS>Gb;(f-j zP2=7j-MvG7T6>M3gzbfQ@bJ9gCxDMyxcH_gU>&6&Pxv{ez4~=wlbL-T=RHT+tZldUzGK*{o9sxv zdf+2u!!9!_F570{Bg)EV&AmtY^YrsF+xoTa2EL1;fBS2kSm3lCXPR(AxU=T9whg)^kF6~Y1H|N!R7vArkpS1^xa$(EH`$E{U z(Z6}S@0@!q&?UO9hFFO->KfdO)E*@FYlxBBhqO&QbnV1R%8(&P0w>Gwhx$+5^D|>4 zWl7n!-@)%9G4h>|FWwC*zaQGQu_p@Y^*}$Po+y0_^cjE3H?lp$r4(-#JOWseGXJO8w+}QPLycgcX)BjT| z?s1&{bI`uukQvjzk@q-KZZt0TvoUX`%-H0{j*Z-Rq&^mPw_v7QXzhlRM6?23EGk&>zFKaw;=rXRqJ|9%K=N(k9=eeDIb$eO$ zaT_0dxr5`zN6zVthutrd@5Q+2kaq3k$4B22+3^t=nKC5zv#nucmb&E-PXM?gYHeNEWD&_S-2_8 zd;_ zW_|AIjx*d>&SehEpUXX7eC%?tWOM&6t>JhFL(ksziRAm;k{@*!iOw6wd736amJCTb zl76(_i>&>~_`QbzxOMHCp-O}+b^*q;O*K&Jehu@Z9R=Pgr)?(Ka_ z`UYvAvhY$^Da_=)CG=QQoITMQ6rM#H1YElcczRWY!cgMqOe{~lYxPE4zBtA}|Hm}3 zFz^teY%RP$0)3^u1@d9|bps219Blo;BlK$GB6RBY-U;8!BW%ojCupy3 z_{cpVo~_pTYOL7<@R4g=_G;T?>?1sXFUCj7jK)Xna|egQM%iR$j3~@8wm5XTH9Rc; zS1G@bC)3T(afeKIJ%=vq(CKUF{KLXJS2MT8dgdt}Wvh`->aMtF1*qfxyCj299+eY{ye4F6|WQ>H~_c2h|Z-|Xa zXCa(rN!oCzd&A~HoP>Yhxgg@?=Yc7tAyZQS2G(4N@S>!P5ne((g1i>weM`!1z&GBj zy;8`UA>UEX(>;nj$5)iTh@%Y4bt<`#eu}&+!ag~)v&d&Lb!W(o_FXLBZtKu>_9bl6 z(3>Ycnz)FxkQX5vxi4sQ+#2)$=!AShV7X%Q19bk9WLq*?r}l?r<&d^d7p* z8ul_uD~>u&4L5^@a%JpA;(Y=iO&t$=-0Oj%_ald2 zq;(SPNydI;oIim4h%>C-kE9+GI!)SbjF0k-rrv34PnLBxD@hZem}Odu7}=gROyn<+5|renX!i?5hP% z!Y7F5hT9V92ox1yfhuskC&@!VjaqIsQh>tIW+-M(1pOZ00#($Hf zzQyk(z8{pgO@`mx^sVLd_P4knAN%*e#^-OpF zmSg$Dc=a-!|F07tjg1UDHm>+68PaEKEK5R$gzh3gTj|+jKa%(evaQCtw(yZ>5$Ttq z|A_V7k(4E=X9pqgEg)hf?b^d`Lp>~gBz+dqXKf@;rc4?4WYJzqpAzWYJa+^780h2p z&d&fo4m&sS@GKDJ$w{WfzS}wRUn$TtvHxbQ&M8ucIfNvJx1!&m_yj4<8BGe?T1sJ9{Y?TGuB??xWAEmjlaXYZSfBA zPD7vG*>9xZH{`{Rjfs!M#s2>>ajqKJ=<_jMZnR#_wP}2`y}Iu^c6=m88YlHF%=-0j z@lm+=-#$KChD`lAReHr{nXoocHE7%j@f2alpF8)DaBJc2y zzH?s@vZ0ASjKW38&)i=ODoiZ>UY@ke1U5GL zvE!rUhAn)w?8s0yndw{GD?eIx+}5x6$x0oIdff7o!=u#i^43=Qo^QTeX}up?eAcur zUM}Oj^|`m}Jcq91u%|n&kaJz~eV6HX;)#*of3%)m_&BeHAwSaRCu!)}sbAM#r0q4f z*+}1xy-2QI?nkC9xnd-BZQ5<#@Vn5T(m#?o$#Y}GN6L_ak&rXqPFW*tHuR4p!M;sd z693!qUXb@Cjgub;KOmmDAx`oemhDFN8_SaT<{?j>NqG`Pz1ze+N@C=vl7y9#DJQH1 z?obCeRx%8{92ix2c|LH=L_8xI-ze`@yfCkqi8`q(+dq-|az76p@@@3T`-+kieLmWF zNK72^BF1fdw9mfSU&r>B*k^>SsQ=EY|E2yQe~a2aW5>mTjd)+WhX=R_Y_tug&Qt5I ziMJRZ@!QG0M&HY0JGK8GVV@t5<;JdC6Bh?I(ng&WdNp{&~*;WH_xr|PIDRa>ghesd_TMFR_HPg zdl{zn=iT`JyDR$p={A~?%3LEk1>t~>|WN#cK&hHREHTHs~a!HH4y zmjPzd*3)Rnc!{IuBV1`MQ!=6TW%=TiKhE3_{^yHvQU2V#kI}x1&F%tx%6(k!qb?e24 zC-z4?5#{$EQv6tS|fvD;;i2Oo7; zx9`o_|4kbMdf31Dt@Jf*ewJ@w=dl%cox}26&S5X_G=@FB$Ja7`?q$}v%Q)PZzozrq zdy!jr`%L&qT>!s}#>o{U`M(*yv&rkChr~#(r<3XPL&BPpKZNj+dbV`!ZH)BZkTFvD zNPk}5LnWIweSiKI7)hLryU{2|f-FaJFEVs(%8^Z$r0pi`HvAr&KY7TJ@GT)m%BNhi zWXY4cH%Yk?`gZsPQSSyelFkHP%8o;vgna@yND^kQvL$Taz(`Zbm+3DQIytbCenZ^D zG=<#ofGzR?6@d<%#$Xa+IqFl#?a5vB>9nRS7&6l?w+77B{{*eW0x7_?>Nhc{MPpA zaynyeY}~~wfAooh_xU9p^C^X$OQ#7f9&pGxA{64GZt zw0#(}D9d%SpW*R@y*}kb>dPkU%lwbPv6l$hkpH8~J9P#@Hl!WeIyCPd^ZjGIV~6Kn zOxk1Qof5K1(=JUs?3gIIk@wkBX3YPl#=bG{m+(HLb!y)E{Wj>))TJpe##uqUck0r{ zMC;SF-zZ!4rkxscB+m@?bA!Vc)AVV|jQUMCHcD=sWyjK=xbFEq*w4|vIu*8WYA-(4 zeq;ZR_r=$5yFah-&ck^iKJJ`3|^&Iy4YusfVI-k#uGjx7WcUmvk z0#7`v+ zotrqxyIJu+%fN%syT=|SF#>ySw08qnNM`_Z&I}ziL&#lc;T$80ILZCHm3-F3c)5ne z&m$2q(B(cI=bkAWk|Ybd9o{YWN%Ykecu3tDL@cC?C^_->!wxN5G=2|gbBVo0+OW9y z@Eq8sb@U3#ci@uU^=PqQ)kS7toA9O0dcgm5HCAZ{B z>fSmdN11Ziy;JuN{Tnz$xze(wbX8%I;~}?g;HGg@xK?tf<3k>i?^}O|ez$?02jZjrVEr4qhFn);ZyUHM z-$=@lSdXD^GyX)Jt&tq5-}lnBwO=GT;BSbL)U{LJmMkeha@w`WnM7k`>`7ujAG+I{ z10!wUroIjN1ZiRCCPqSz^T)t%H9Yn8R~*q%%5JB5t3U(8D`!QRW;ZpKIY8_BK&&CZ|y^cAorhjDKNk z?(I!7BLB~THkQOh;Jjo+$;R^O*6#rQbAkdFeeNaCz5ok90HR&m|0O7S(ff?N$CkfI zxyKl11Sv1-tYF+}OI;fBV)%R`?)!J>w-b8x6CgW+w(kDkIu}FP(Q;$#=Y;HtJ#g>$ zf{i#-&r+kEdkERpyw!ry+ZEd?Y3cs}BBd3pp!N-2?uYsBNq8DCGq5txfe1T@gA>L1BAA=sDy)jr#qOzjwc{k@~d#8fk;!UL$=PiHkZ%T{7bv zjEzr_%&7kxEZ@d{o?5zfKToawZmuud2giQ+p8p=~K90o1tu_95@X?rAvg2>@(HOOc z#xke-c`Mvk#_0~%x^ues7A!|f-}djG-`y%d?!!m>{`B8gq-0d6IjS-m9dnC2R@36gX=C7l$7MUXiH7lFk5* z2Bj<~nU0tS{7k!X#d}(oL4EEOk_NBf$u@+4J=FiE0t=&W>|g!oi}n>04>9ie-@y1y zD4Ppq#o@;YObodZc=(=}zmgZ_hl;&l$d1NC{RaYdY5FwMcSrX&N@kROdiZ=(W()#0 z0v~ms34bHEe0RKNcJcA$$AOQvhJQ2oD4!C`SpWUwT1xaDW&Z^fC`>-MgbBdu%CI7xgoRz?V2Tlb+!uU=)yj*q)>VkGWEOA3tSeh>8=Qrc^3KhiiU z8FH2-rE}Z1Ejdzqk-Gb|>D%-HNL-t$dj_&l)fEjHezp#@(%QF;3Fx{a|0tO zQ?7F5sj=_Iy-LcIMY8FnP72(#4z9CybyjEKW!OG+CNFFufoWat>~ZVu!dA(qyBHWU zA@I^|LS2!wy@S|@H3agxL9Q+P zPehnD8Sgjty&z)a?iwzf40#gkxBK%*zOdfRu-I8hoMqOuwZ8eRq3azrUGjb5px+-uztc6`?;Ba` zXKQUSE%v;zPKlHBkF;Ied*ciTM&|lH$hJ+Ln|qVSNcjL!|C((#ya&i+c`{_mv<28c zpgl=pC4GWy!|8S$%94^Nxj(5r%91G|TZQhOA#juaf5aJ5+*bo^lHas+ai2@3jA>t) z-B7+nwjGDQPMtkywkfkN&#sV+f%HkTZABPen63Rp_Dy}H{kfBMXv>PBLjwn8kJkM< z-S(pWMcG}t&yH-=*xLX;%Kicwk+$j7r)6Jj`gFWQy-U7N`81}?$g@^yqjng!82XEO z-4GkG&bWWGiH%rm{GBE)T2^$pu3zid^!qlg*vRjse?Pl%VQ1;oGw%4C^*7wVd8fHd z4-d+7xwVX+d+4%9346UBcio=W5U8je=3}v}qug6)gKkwt=bo2GI!+q(>FD&fu zbj3wKulU%{B6=OI>uWq?ef<^I<;#GPN5@CnY-G17ecRth>fB+wkzHH1ZR|^i9|-m& zv6p3RjQi43-zGlt9@UUx;+v&h!|#`SV%(#Y%)|3HaRvvnWcVOWJiw#7gVo+`F_c&a`3s7;S-OW2nDthpyx2H9Sgw@55Su-?RBT zbU8mC7P|Zz&h=`Zn7)?fv&;89r)`D3&YItOC{8_Fy7p1M4Q;Hi zY3%_cDM#{mo9mO*irVL+mgxpiJ?(O}_IF|#Aj5~u65>KdunuI;V zOk&X>;}z0`qda$#1Z*>=F%0_%!k$*~xva|@pBb*WXFN0py06AU>dvx5Q+GBA8+Fzt z?a`Pc-|M}eeR)gRUSxmaZ<2_3h~KW}?=9a(*{93rn>Y!-@3hO=ccC)DxEkBm; zH}R0Vb*;0|sezB7Q*%8Yux4Xjr`#w^G&TzF{LLJWkCa2CQ+uDw-(r7WzgIrH+`iCt z_T@AEpfbuUj6R4@&ofVl&f~M=4%aeF?`b{mIxf?n4~uW{S=0Qy6}nC4&21SY`QGPu z&o$uR!V#wLPv3{Mt%hsL@d+E-I`mn@j*|l~`MaOw{Uc!|F)|6*XpHo?VjCuLQhWFc z=?_vq#rzKk>T&u$9d^I+IDeBkX?sG1=@&G7gHompU-Q^|Gk)-V2>qe0gF7tD?6}0Z zaf@NcGuw$DPdIp|jXAK8wq{de`1`0gC!K=OXQOpK8kk7COAs-!&b)Lz+SvG3=*^_J zKsMxEWTx4dvEEC6KhmZ7?u3i{e?h-n$%|=&X+GZ_7YiGKiOu($xX3lO>eTzzsIhUy zMV}q?w;+t%{bo9L+8)!t$^I=mef}o(jjnlqX1JE$N^_ZBugACg(eu~1`Sp-x`m^J% z>*s^Q<0)%CYn}C(x43-);I*XwBMwgEdW=GVzgnN2bu3hFnR%U+dX($Zv^y822TIA5iXR*>{fn{^3^_ zSgCz4W29}|I;Y6}GU?v(N0I(byrgV7*>eVd2uCPyy%+yWd&(fmVwA@$pE-O#%35|? zv2%SMcn3af-l^cTl6V(?wrRPrhXW5W4%wh7CyL^1^b>)LAmZUW@%u61B4k9}BO#j$ z@2(AOjQxyek4|}!_t+8>sYjD|&$r{27vmi!HcD5}d*;0oIu}D5jC{Tw^8d8<{ijyQ zi&$IUXFN!5Bxd@ai5G*XNPdpO$NhL{Tx2K=wcN;Wb=xnyf5-d3-J{vL>w7M2=s3{x z9e104-U`<;es*}2I$LF&b`T$zS;Mu?`poi`_IUBJY})-D*L(IJbYbXK{?^W8aGvg)C6=Pox*!Z4C1A~a2jVNmxtMuOjvVj;sduSYG*wYnv zy$Z#<_*)*Nt+|u15Pim&Lq3Fm{X0xZvoE(~>hfKbZ?}AOe8(BYEi_i&e+o)g^L$q@L|F+PnLa2jinKQtQ^g?_GXe z_tyChSXKyK8{ZG@HXS1^Yj|&xa>#3`bBAwn*+l7Eu6r(UmK$-&lU?slpCHIe)DLCL z(H1RFpBJ{(bH~rE{57rfHa60pvXXpq5*vw! zAdW4@hp~;lhL9C8e%f1-d?#c0>d@X|YWP^T7ws|fw@SFEdnKq(Z`ohu-vya5@0Z|S zN*QU-Oy2@$owkUCQ^{T3+yXaQIzV!b;n# z{f++rNq+R0XFMzUnR8(~mCGI$c3xZY!|F4?W2T=wFZ1YWjw_FHGqql;SeKD z(z*E^uUJXl+cIV7-@wO`DI0b)90_@gwwy+xr{Z}E1FO8ZH_LP#Lmk(Dv(%Ypr|%1` zBRibhj=pi9pi$ub?wBYi1`SNqS-?0G2t16l(!|Bwv)Hx0l6z(!N-Gv+=_{Eqs(AZ16cqg+etexvnj%ZXlt0~-Su%MRoH#%`-FoNQ}9 zZP~`s7cXb4{f({RzVC5O_w(_Dy)D-B^UQ-dRe6WS=eo0e=sfc1ar5lI5C5F-kz=Vb zaBRdvW8^L_dJXh-Quye-NXm}Zv-vw+=lq@SwdrsdA7_k=v$Oanq*KZNH{{8E|0RoW zOWz!QCGqX0?#6F&+;b6U6!GoiyDp+US+XSY(LUzkXAXR%9aeU4?NMrW(PlRP_8 z@scxzH}KeWX6Gm+EeuX zw3HD;hDNCWna17(_7h3|j|2JY@ISKf8^bd%2#csoTYi_!81iDi7yp)Ze57wz+(|b4 zcYI!7?|$ePfsM3Pr+$sK#@|=l0sZ^ykn4?W(Cg06Av?yp*Pf&AoiIjnjrTS0xW9)v ztZ&NS)>gQMBQDp!%bw;sJ-??p?m7(jm;KG)V{hAW_iKM&3RhjW*LD1OL-XqGb{@{} zX+7TSsjT-R3mXq!3sugx8r|_z_}JIuK74#B)~5Arh9N^j4jBF!DKFUXm-;rbQaZO~ z3(1m}Km5HpBwqRqx8+FhPdY5!dsmhW|DeQ2V>f>y3*6k5 zKey!3o~HQBN3yJRX2yrEyu{_dop?X|a^#yc{a0X<6D=qKYfkfb*vmO>E7bQ{II>lyr@4Gj>+!YS_1R@tK7Q`yoyIynee2n2YdN>)d_Q;I zPIGurp7_kVyz4n!>-*WEcOYKt{D`%UIeS{)RJ(IfT7G4@Ry>~f$ zEd!^@HogzPj-GB_vZJUSonH|KwtZCV%fR@M5r=#zojK0^1s+$$AM zp4a2fci8h7cRIs0ukvSn+*hab=w*6*ZiD)S-@Wj0-?pHOxa_&(YABmTNk@>w!=a$~*dk|jtJHSg&*uBGs z1Kkl}QDVi|v+USO`#1M3<^M;2mrflk?L%a|^j_cWQ&i`BoNnA(pLtfLNd8GI>w9u~ zKf)IW{y6J@rgph7^ks}gdk)&KH9qPdZ|TwW)8TK6?_?Zd?rV7N2Oi?x@cqO);(JP; z#`*V7K0ET;DINM`+o+*ulnn-J2J4l-vFp0B&Qc-vf3S{LY~=d3KJ7KV4;#Ht?=`P) zr)&`Zmi&GBnW57hDy`}|o#9sbIeowHkJ~gqKd<3o`TP3ddObAnj*m`r*vm8S^fm0| z);vBte=Bb*-{l?ldQ9`P^Bp>U4*7dnx;EF#x>o$$^BnKE=yxMt@fOit#b*RoqWZvM;y8 zA#0~SI(&3&b3qvM+GIw{@evMeq@B(CBl@kgPnT`dJNSq-z~4#k!A$rVzpFDo_BF-0 z)?mlR+G{s9a$O&Uk6QPtr*iyGB&Y1d1%GQ>A-_Abr${vHbt$U}9i-dgr}p53Q| z>bT4rx{lKidv-a7F1s&uS?BwCtFH50)}hn4LYHCK^LzRl@8uXbM$&F$?Ca}e^#@wl zR;)R!OYTYf?s4Pfx^}xAhk5eJ=>8e zWavFg>EBO=Oa!ci97(cFX}Quk5#c0bZpoI`QPUm{%nG~=Iny>D$#On(a&V}9&z&-< zBMT3+tvGXz_R;3FCjfjOSV#=?Gw|*WplN(~4p}u5hlu5#mQhv9ndYj|Gs^EY5@T)&zA z?C=(2rJ{ev_D;bv&Kn>{;r9YJpUUug_Mh=H%gZjUZgDo_(*>t`%`k? z(iC#oBx@3@l2Ui&eGQf`9lFer?_8&aF1r=7ez(OF8`r-0+53pLv)H~ejWOgz&BvG% z%uk$mAueLRJa@)J&nfSbupeW|i?T)Qw@k8Q{Ps=wNL&;~T4pS{(d*{$aI7_~i_)ui z*RI#{x`r#=b*x{_-`4i`Gner<=dyfuyuP{o_I`_x0}J=gQJX){t;1etjl0Z&^FJ_9 z?_(d2$B&PaA$9IhdQR87kA{!br(n0)ksCWcIxc*azO8RB^li#5;WMJJzTdK+`Wt7S zbwr*8j`P6O8zDoz23Rrtgoqo!M%#4CS4e(C1A_);@_vS0d^8>gt|6ay5XC)2F1rzu z&qT&sguYkZG9$6unBBwZFXYGa$Dy4?M11u9aSXXv`|70dUnD**xVT~?Wk&n!#N3BI zT{7d5@iF}xepP(rdYk3P?ceo-<;RYX+uuz8hWrg4ly>0v`Ogp^JywtX!0|2k<2qYB zoVOLad=IPL+N16HziNDK-+ZiVdvDsmsaxUt`>VYjolh_>_RzoYtK8`4*|wegPt>&< zt$KI&1(H8dmnCWAmYsXw-ekv4%0_{Yl#>QVYM-)vp8Z_-LYxWN4A`Xqgkb2qg=Rh6 zILff&7oVjE15<%}BBi-bFW=+N51!~tmj`>?c*v0Yvd6^G=hdp&2KB*SH7pO z^_<6a#~Jo=PIsE09XfptozIYYe(v#}=Jeu2-MQAwVfg4Z=yHXX(z*BhOIqLVp}vim zq5UAp1p031540s)O6Rs6$KNHxuID*k`giS9TAnlx^kM+&uYuJp?+(<#`^kO*C3w@AEk4zb{np5t^1CPjw{dqrBos9nZieY zTSJx{=PUSK!e0bB8qe+)KF&B9ekKR#-yIi-ms@0<4E+(Q25x_GO@9L5BhGXyXiaWc|EPCZ+%k-eSd5Dwd~rC zpVxBc<9vrM=jRz0?Q^srTU_6v`Rse%N?+@+4AZvCu4%68(D`e4Q2v_dXNKhC(D5~Y zE8Q4rySA~BVP8{>@5>uFiFGXdw*4;@Zpj8tD}7t?B%kAZ0)yzt?ryHSA>_U(2k| zM=9qrTVdz7mCrPm*_XGK-g)+TFT3(|Ik)HM9+vH97aQ00=ym6i`NB!o#aac<#XdT4 zY+Cb3FS)YI43;bV{eF@+xQ}mHWQ4{`V&$UeX^*nL>5?(aM@TY~{8OY;mL6_d%GkMu zFHEzoC-yV(Y`ij7^)T$`z^7%e+UxzY{L8f7|0xdqdsR}G5q)>}kPRu9r)?RjU2xjz~CgZQ36{Cx`_Z>$4i;}#B98sEFtMC@aSd?+2d_8HgpD4gtT&-k~! zPIq-_e;;1|2Y(lbL)~kk^~m+t*PY|*x?Iai|IzPxx7`RY zk0x7onWJ=X%9h-(#5YJeg%tR>e78vNat`Cx4@*8O8B_m5pFWkj?d5Hd(GeJ3j396UIwM?!OD&SIT=6 zeV#_#=c7A5=A6g8H+fNej7P`EX&rzkG1C8o@LPN=nXP}D2Y=hpWtEkCU?W?*FOTgt~W?7ADz#;2o%N5#OE*TBBS#;v~SebYY@@)BMi%g~Z1Gn`vB}?bFhsy{3A2*!pw+ zmW{f9-#y;H;rfne{j!(e7hkc# z%dPFM&#u3w`*|zBr!gMql(0|X^hjIgMKWxaF@J}>uH(uxwsW3mn~a{NH}~~gcEjB@ z-Pe4?^V^u@2c-4qt?$a;UJr$r+V8SWXULQMrj3;h+cz$()V>;JCGW8@?3i-Y_>eg_ zu(NQ?`{fnHWBmUe zeB}ErJ=<%w{3W|iZOl9zA8EHCbv#_-`|xp1*Irkh>(=+0-|`{&Xn9GvIb-FDA%0#% zV-)4Fh{qkjh;N3l4FNxQ^PIkwSG?o{Kl|M5_J_D=IhnX$_I#GDJqP|?=y`XN~td#}hvuK5JP%S6h-Hb)J6SkM!F0I_}R~>v&(9WyuvA z{k&q~)^nF786Wz0#QBZOw#x5&eE0nJSDLV*%bFci3PUY>8Gq_7jgCjZxwzZk4tM)+ z3_LmXW$Dc89J~x?qfaJbu8fENy>YnC_trbW!|V{E7Hz7K_qhpjEy<8V_ApW#)Q%H^H;j>0_ANQ~P?Kk`vvhwN5-oyDrz?NA-7ZJJ(0{g?Z-d z_;~i1+I*`_*T1X2`mFxDT<2-NHJ&QVa<0R2F6;CNbF8Bsk0H}lzv{Z3!K0OPTC@}C z98=YGe!cUJyzKMZ?x;J)q`Km-c3el{G7mYfbq-wL{Qa!ZYasbgW9n(_3!kgaz0ZS3 zmLL5pe(uW{M=RsJ(Z4Yt;^%bth0o%XYn0E?2laWh(b7j+w(Iw0J{p_nU;S3Q^Z3oD z`qJ~=k4hWuuw7I3-)(P&qu$n7Tblbp9_}0KI^At0` zqE^Qvt1dE~WuSox1KWBufs$nnM;Mx66ibIQ2p zS>rJurK{{(evG&EC;H82x92rE+MN4i{&T&2m#vQ58s*tWo7e5Wx!>xKczDjM4f7Fi z&v(^vzUo)IYkAF|_>Vec3~H~}@ftDT{w~*ej4$Rg``zBJ>T9gUtIDZOkGqX8-%Y)D zzx#RY?#o&()>3;1)sJucvLyH9c9P+nfq)W zE~977i{Hh_8~ss!qs^@l2(zDl zcAE~J?mq0KbG+Ffm#z2H-+QeEmh)ViU(HdC!)1am+Ax2ItUJmuKg)=h+iPW_y!dRD zQ5wq^ui`nkueOVK=T~#p=6va!`yOrOILO0u6LHjWn#ZjCWekJ2%A0r8*~y#RnA>mT zZgb@}%~xU0)98ElHTqn075rOTuN!%s>m=p5f8xJyUR~Gu3abz9v)`YeqaNpEr%&~+ z=6(p9;ytk5GG6zi^B-x^hR0LiyxVrU9@co=mc|tAXWMMc{cyZL7mwEW(eM6EichcG z`6*rRp{KLIYGa*mx2HNPS8c?*7;{)W2Jd_)9;?$m9zXk?y4+4XIX|9f)|<=D@4EP* zuS@?_H^-3g)8jXPKD%$duWNcQ`@nS1!w93i z-s@UkywuO_Hjvlm)%ByD!MFPFvMwk7%6A=>8Es|U<8iv4>)ovUoX_&EyS80rw6@p$ z&QtxY_E^_xosZJ=9^Ka}=Xsppvw5+cN&Rl~(DHWqd5jJ*DfH*U{!9(^8j zuJ*;pW2$#){(at@R$-QB`@y&7&Ci}cjjQuVJp1B)x@-^EdM+Dbt6$@&`FEM#4$F0( z@jUh2V^IHCcWTpfyDz=J%T{Kcvsf3=uHLKq9{I$36`&YYJ0 z=KCX!@%#NKU42yF9B0`X-3RBpuj{kYJzq86XqWTS=3`E)ww)ehX!GWDhjZI*Q*E%!n(t?ZeSY+; z@=kZz-e2dr{SkUh9AA>_vrduQsB-G3#=g^!d`~W8-aF4MHCiHF-^InPCn z*L|7tqHWcSchTl%^dZMP`q=v9F}SRGSNhgESl3sLtN7Ho+%LbkgT~SO7=4NH_&c22 z6~DP{_up-JUY*{b+1Fmqc^v%dp z^WW`Dy^ql^@*izz4o4pQgFN$zF=XG_-d1|?n%~t{S@Br=lyj5)ih9| zaeG^B1fMbHdjFoos$1hXAD7X*)EG7AHGl4l(rd27r}s}|aQdh>`j=(#>^_V#xn6qR zsqZb{b)4^KhvdO{gr4u5NAvGx1|ODgT zZMA+Z@6UXyt=?D9S=Cp2?El=3`P7`Mzr7z-rp*)kJ@gAy8_a}HSb4DK3_PmCo-Kl)_soKeR?|x?69=CY6`JcvG zZF`K>7q9PyKkAQhL|g8Y#&14)Cv&^K&%GU&bz1Lx@SEm9JpGcZ{L)$hh+d52R0Jvn`cVf5+Hb`|Rh+%Y2;YF}tl^zQ>*K@>_Yu zyViost#j=8+DV`0pwC&4d!4wQdN-q=V~(<3pXZi0=7DKBcUygS-aLNsjxi+9(f$}m z^=)st(VtvLqaWs9-$|b@^~H06vV%{Jd3`7DpU3U6(rZr5FY-p8++GiBjJ>RR2A`;( z{bE1c^X{0)PdpXYcvP?2b{l?YZl7U{oo%&uG3T%Cu#VDHU+ubo4xOj6#b4=d{?>N$ zIrHf@h zs?C+RpE*Y!L!Yn1_(eO}7uO4(t$*UdInDWtwitJtd**ASPwZnKo8#4X&1a>#ErnB^ z-cQEc^O&1_&mKqAALXh&_idWTET_8F4?nX#*9*QeCzaOwV7@Nz(DlSq^SsR$eU0`y z|C-NHC;Q~K)o!gXmg{Zyc+^?iP`~OOkMfOAujlek({s)9Xus7Dp6!`+qkg_SJ=a*B zUvpYx^1N0V&6l6umdnL+wC6Qmyn0_<-}4#uv(LM{iigW<9*~YY0^~W5${V2b?CS9(^k^Hls z(>agThyE@r9{Ev^?bQ0Ieije&+sdo7?RTxQ*F1PGG?r{T$GcTF+HUjW`tB2-T`&4F z=Ayl0&j-VdSJ~=A@QV5#OPhnWkLH#9+z;~KofEZN>5Xr;H_b=#Wcl$<9dGT`7?$_S zIT?J_mfx|*IQq-7S$>40eXR?Zb^ra$a7xQIo$tIFTb3vP(Lc?9?_Vz;@2m4=UH5q_ zbpFJDyAJyo?UGN{tG4UAi1u2(+jm($o7dpi`sOs1S6_OX>aX8OtwGhRcTsiSZjHlj zxQymmbZ_t0&}JjD3SgZ=c_@*8c>oAok( z%4=y%-<`vnkC>;?hT5+_sBZ8WWoka0zB{%)hT`FJ>Z{5qK96DskXAN%Pe8vZ)sdAp6qC*~h*u5HD5mUNGiZLECtTx-D3e!tbPdgspTZTI+QooL%@d49L9>$VxH zuhlR2y@xK-L&i^GshKW+St}Mdj7;Wd7Cf$Tyc-VpB{Lj-~a}V=q3{|4}E)>)raj2ybc~ z)i@`fQFp8VYRB#NcRku!+f7~`(;5z5DCa!!a$7kz&TGt-)2lq|RsY+2%JQBQm+|;_ z_~pBZK27~u`SZEjH-Gg*WqZEU-Orxqu}0rUfAyZG{vwa{i$}i89J|Z*Q2naDx?P7J zzseQAb$-axe8*U_uf0!>J5)WjAN9xl`W@!GZF3oIx3Rh}?z8*qevE!4?<(&$a^8~X zsP8tSUd^}iJnOps%RsaroVNJUji2HfpX0kC-FB|Kyqd>3wiN+zvzMJB)p)d-LA)r=a>_X z&wcVdn^*8?<=8LhRlIoi{(B5_x$1|LQ2Vaqc`&cy;Wf7Ohi#%yz1&=v?Wj!W?X;?gel$KxcONw;=F7UG zd778{rMa!PHBU8u zkE6Xu&j;IX?VGRaY7Qs9t`}jA$^Gc{=Q*u+r?TqHXgkJP{M`4=vS@osZ_jJ{ET^)X zLqD%+uIK!%c~+g8L-lc&?-uXQf8yQd-gDuyS|^$lwdMCXzi-d8%lCf9cw%nrJqQ1s zZ|6rC@3isGzPUf4iyVA5)ovwb&@4;g-4?Z*QKJ>7sJMPeYT;6R~xU8?78`iHf^S9)@sf{cjX=7f* z!{r>ZFXUbPHLf{Lb5v`#zKhNJ?02*~m-Dz)XKhz)uwT`e>{rf%>$xADpYrtHTyEx5 z@^gGW-Mkn&ZeA`oha79IqqUCbP<3if=Q_p1^?T^LyJ4TJKKC;} zw`HCjPo%~88P_{jUn@`L{QfIcKh$2IN6*uEx19Ge$Jtk=dA>%z+N^$NnXK#b&R^S% z{ws)50r@Tlj{?(uCcN>%XF}Gjuy869u{AyQo=6)*7?=I)O*LPogUAH-< zVH|u80w3p*f1ex2N4e3a=ehA|b2E5nTJULe)A`oeG_S7P=WiN!_SUC&uTOKoa3lEtl~sTlv(+X=j3bNQ~y}6^G`nNQ_ZpK&OEDK^HiTTA58Oe)LYt8 z8|&Q7W9#j8Ucr0m_uPl}E##O6uQo>UY;BIb?AI8B=A!r6X zCu2=y8~Kjh7l*-fjLUry@9L}Gujj(;cOK4jonFRs;_^KlV;y}k7WF>3ea}&SM_xyr zr`j(3nDVA}8lRXS@ps?7_WIbIH~O9RdKu?cyBd@0GTiDn%e&6hcJ^8IvkcOrY=*8o zhZ>*yqw?loq59@$w-J40Kci3eE+ReJthsYth9Z?WkI2t4^fJ9)YG;}MY=1Ye=5LxO z_tkUbXY*-&Fi*cLzmMv3jd|{K%}IsuIF(Czn;hVsF!QWX$beVPrfU!owDPd zXndM0%+u7~+y;4wG@mtB^}gM<+wzjwuT-W3F zxN3|Z(>e#$*BE2I2aQj2*~jj5w>$dL-rw4`%BUUJi~i=j89drM^!PikeQ7FF<8yoN zxB2%r&DZ^jkp0;lzvn2&5M`XUt|9k>>s#@`o6kG^>wRc$Yo4P1PFwXIcK#Yq^4h6W zeRR2+6ZNUjgUgtIgpKD^*JI3aDKEe6HeQdr=bOLsFmCV&TIxAn{i=C)pX0rvjzjZU zpWU|WO<^0K`=$2u4$aGHE+d}xUfH(GjP^LL&3SU!dgrbq9+^IP_Ghgx_p9?4k7|=; z%+LLfdc9vUe^tkG=ukX5pRKs+yN%utr@6m=uJIN>kHu}qbIif~?q?pFOV@SiG7dc+ z=0{r2!N~V}ihTB|6ULYC!lCOioa5D3r;oOCEF+z5vLB6i@4xy${+gr8LmR9&^;!KG zWs~RVpWB$~)EGT4D&N{$`NVi@jP8TyE1uamQkG@j8uz$+ImTVqd>xK)u>aYo&eQcG zOg@ggjkR9!R{#7Q;po4|p>U_n(ii9Vd1OEM>^z2jJkE2SwVcZD_ECJ1p5q_KP`e?Jw!xpcp&DO5lbLe(PU&kD5&5hTk-nIME+wXJbzDFBvT)m9@u`ld( z-JZgHZ=8oV7rl(e)ZT9^>-N+az4uWb<<$3T!~LkReG`pu%thAsoQjvfHS_jd=K3Lz zd{3@deXKP$^*7#?`RaX5{dRsEPxLR}#WYu$R{UH4THjpX^WZ+R&m-RWdro`#m51}( zclBX+%J%FZndj^6pwja?!WURM4!yh>DB+4-{?zwx4|=?dw)9by=#GOv+h#g&z*<+ z$LP>wQ~7!B-A?6oUKKYFmY?}n8T06U-ijYouFqe@b8a+ty^Apqxt83w zDwFSg%xONi@~TsP_j9zF>!IdmUdO$x=R#v*IrVX!C)RO2<(X&o&2>Bul}~=GpL6dv zD}Q|_o+r22czA5l&#I?>S6_M?)!*V1^A!E5F}vTML-TYx`NTYo_k#J)F?nuONAD%d z=D6Jl^Ds}hHOl6=R(>&_*1p?W>la_m&HP;JCHT3mF`oX8Y7AW)G;gLyJlk}+k)C7F9IIXP z=w&p2^Ei5)&R6wVHs@z!4xA?*wWeJ+_>FmTzp|Xio?-8=>NkGDLw)fWg7?y=&ZGKP z?|1aeZI5|VnZdi|2hZu*WosU*Exl9mQUBLI^*qmy$Lp~3o8$F9%x8?Ly{F*2GdI=m zzV3=Y@;OdW@AJgJ<+}_+^Ke=B&7soOe(ziFhtrEk&9Bp3CffEp$3dFv>Q5o&&dGKJM>9q3XI%Z7$omMj51yIN!JDAp7EH&w=_Op1mI9H6D#O z`Z)NvcBX#RJM27M_n>iWZq%;YZtX_@-KV9E=+ivbXpiGxXpFn1yIqHF+o9`des+1f zoZFhqw>7%Vljl3;Dd*Mm(|MS$+fhF~|GWKhe$-38eiwt6+sk>azKEZAWZ$QJ>XA4^~QJbGRHKa7-HmMkj{L+3y1 z#+J7w$f$GsBNqYKdYLL}xZCsc|M8Q4VY?^uai(>@7^Az-M%&(_b8DQ%@{Ja8^7h`< zeCmtbdS>tacx+z#6^Co_z&V;$e`DWTG#|YU>ga1cJYT*_FF4|_Jy_^qFFogeu;|sj z^do0qe?wy2)|w#HBm) zC>wIQ^1d+t?R)i<#?f?ns!nG0>FZqZ(yQ;YW^u|3ndNtJ z&VJXfJGwZZePZo*+%@k9Hu_UnXWzY4(fCdmie2nIqU%q+q-ib{MzqXb0%5a-^0guX7N)?9-*;nlhr@}-24Kk&t{K*X5KjGF86#}_q>C`esJ*N^YQf53d?@K_w#?{(bM`5 z9(kbaUdf%m(eD-B7n3}_`c1+^b{EFxq3qG9TK+E3@_Go(ujj(;v%AMy#MeHiSKOn! z`gsd63;MMd_RMy;z@yhb2JhmMHtDoSdRfU7?84-mnp!!hzW3t;Z``Rq^hZB;jZF@t zyU)7Ty&|mp3r^f_+xBZWcdh)`gDJXx-LMMqhP{zj}wewT!pE1KWO6Bj0ccS3SQR_qlY} z+06%L_H#y$?$lS@S&NoDC!@*)EHJum&bMxIp&pH3g5h)f;H-NKH?UXdo@rjcxOl=N ztMH`Lc@_t}x^o>`@0ySL%CT|8omvx{bIuxn{P5j(oUu-((s%sKd3nFi&iU1U^+_A` zzq!pE7TbIE(9fz|Tlex5zw@z9X5d-VSF3tLduiY|c$ePM=*(_SSMBLfEb&Q)dBv^$ zeRu1$=jJ#%y!sALtkfjdt4Xz))8ujG^Xv1TO=+iQv`v1=jUL{@eTN3&pzD{%T&f{M zoxk-zIFnszLG$XkW*_sLx&PFs$HvtR8*h7#ufa`i%Q?AKjWo?X2aj{=H#_d9fBh8K zcuTzZ8$8uY_v$N*#`i3`e$J{cJ%OQB^YHhBf!}Av7d}=?){Qs#s@6PyKk2pZUGw!# zpFGii^;!asP`W6aE6=hVF`+Unf>`Wxbm6|b#p z>d}%o=;w}={@zbM;!JLR-{-%7qsdX<)@bdi$@g&acXsxh`|z|jy#xAwR%Spgd7O29 z*4f4;DPR z!j*mK);wQ5%B5?D=Tl2?*FE*{zyZHBX$I7@rrs}2ixIx*ZNBE$JGrrZwixK{S-sxJ z$45=`{F#S&)_3Fk9lZS3J@4-FmTyzoZ!YrBoqQzbor7}!(vUr1zIFHCkuvJO@u_N9ICY+P{T-QdPYo*=+{4o|n5@8m*Ti^pF>d^i0B>dsUV0Ud=FUA>eU-TQ}Mj#x>Fr^)aBaT%yCxha4z73MNNB*KGjX%bB?C3UU0bc>U^kqS98W}4mamj zuWzmFbJh3r_dfdTj+_dI+Dl`cckMHG`spQ$#y-7`yFD@IJrghe%{_NI^F3U6zBoqb z=NWh(oYWh8-fnAm?xo8am9O_M|2FOW%TMCGdA)je|Krd6Rb$N2dAv6F^zHX%V7={~ zj0P)pUwMDvCij(NV8QRzbFDLe?KiX-&+n5=;Jy7DSLc(*lf(8#9%zHp{lZWV_uta? zEdKC^hvk|Y^cN49jk8)fpSgCO-lggfN7YV$<8AM)Z@GFF&H}#0D{aAZ_vtNJYwqRu zzSBLrHlxwl+9Qj)w;sRC!o=fZw2#T9znKkvUKe+I;04Q^*6X|BKyzvN_)(8nYB(ns zxP33qy)ZZ)2R^l|A3T-QaQ*U1AG%nVfBTHPcY)h|QOm6NeD5ADb3Xc0$6G6I<|WOXT|AMQ?v+P*6XtI|z5|~gR(i+p;pm>? z;zw4qSC;gFbJp(F{>$T=pEGd}e#PN)YX8e8{k@jnqn+N&Lg(YTYpC_QIpBY=QXAjK zCWpka5AXA&k{Q~`fP3)rd~+H7!jQhk?(@lMv@TE28=qR?U`>5_CXdzgtDiI1 z>wj+Q-tW@Hul3wo3jsqa zkFH!V?5*MNhdC>=!V~UfIvlCLIa|AGxN8ktAM+Yc-%sABHg&??IS&r^_*|~_VJ!Nk zKYaY~ygjNluX8moIiXqps%JH|W@ESCzIX47Cx5!{`qeu4v*)h+2h-oY4fV*sJfMv; zy4&Nbk9T1njYFLfrHX7;u!rlJSBzAol?$2*{lQV0+IFt$gjc3#Xg zv41&B&uR-TI`iF)Z5;GaU%FQR54JVoEBpJq^G{F0gJ1a4B~I6pt+mWNMhEqUwfxQZ ziw7T?dYx?ZdvVBa^h>At#i_RpHobfI;P3gTey~P6KBg9ad7gPqjd@RRpE<+6i!*7s z^Wm)4%!0RcaXy~1UK*u=b1+$rWiGs>4{6f-`tHd)W0_YOf!*hmm+<1vJf5uM;GQ1% z`}@k$b4bkg8eGgoTAV%S;L9_7=Jq{zXB{2nx;{g1o>5m=#>))#clmW^F7c{H`Qf!{ z^8D(#IFm^j5MCLH=}O^nR@>kb{!PE?t?P9ig~7dX_rb6$KJW0spbuZ*DPQ%V>%Nml>T;ET-(PpFJu;fTGYRjdzwhhJGpe)xmH+Uw-*ryS z$12bMJCQ%Q?p6HcaL@AdF1YQ<{pOZ-bdvFP|Kt76CVRkPbzVm^8O_RF*X|h_l?yXu zMOXFMSIiiW$(wp>G(H;9MXj*$7`g)!{_HW1GOfEh>tFTOH@aKrFLrCvJU+&PC9(+gdco;3KfB3a0tC?AIsUOd)`N3%oT`z5ke`$#v=>Z%4RS!>p zcaGs>?y1W@>W%sPPE>#EG!{ImLAewrntxYjdvXr_>Oq6w5gL9l$E)s-hRQ4O(3xj1 zM%BD^i^tvaq^Do+#RDD~?9q^3ID0jLllT2y{#wgqJYE;G`F)q%cx3IY1}pjK>AK=0 zgYc#^y@}#xpW3#6Fsi11!Kr$mx2CFldeCex&4Imf-Aj+O&5VOP?^Wa6=wT(_?XYv3})g`vh zr=~UhdQNQP_zfwyoXed>^A&I4@7d^qL)u@>^FH7H*wdd{@LHJgQHw{!EGh_lfKk1!^W$*%7D7kY0#-Ro?6w^nlj1C8);uKk@O88{c` z$gJT^ocwN#qvbxcM)67`JbQL!Q$70K+{%*N;6Z!ui~lbT%^^LDk=af5iPt&@PnvFj zaCJ{(`5v6Fwa&YRvKU*0G1TbEup)tI1*Z z)S)-|q$%o~GvBA*V)Mp*?fJpM3K#obQ&W8h-qyr?I1>+9j@Rx*19x}+)!(|W)&6wP zyS#hJ2`}2;z3BT|;bkt#^;J(6*(cxS!S90azx1ewJnY~6HZKWB+4Z_;m{XlQ@g-`~yv9(fWj?}Yr&bk(e9W9k0vheQ3k2Xoh_ACA9$I5%)_ z?dV{A^BogfH+z}WtV7oO&w+Pvc%Zh1~!f4{Zu-Hfx( z?-t!)YjsY(|32fs`0&x|WW0F&9wLMC+h@i_GyPx-!?PC``_muURqt=#&7qp#v*!QM zv>w`{d?t@|%b)ZKzrBpU{+@Yc4gJc4jM9g-f?<#6t~F2oga2w?j>iM%^5b{G`K}+i z)SdcR?YZ@ZZ|k;~oIm%%{LK-r>wfS#ljqVxh7Zo;0nXG~Sm5P)zp=Z99_r11=ZQY* zSka-q=UIDx#yn@`d%S?DReaq;Hmp4>Wz&4!KUnKoZ?5jaMN?`d3pmm8tMy<0N9*WI zP0KYJcON>%=~<&QHLSksOP)82*e6c$`bXwxjr!KsIzQg^oP&V|_eW1-P9}rzI&s$i z{R#V?D?H_&`qjW$X#0yN^J|}1@6Ac=a(>`{X-Qr8_ssU-w4YhQSFQZ{%sq?sp`-4c z5i>TAycjEWXIAj~zIyH%QUfNntgU5orMB-{xA3yIYu3{}-|{4Wc>!ZcXxXuGX%{qRi0UeyT&-O8Q5xw9e{0moJu7wSlP2X~cP~fxjfOulN?+)N11#^YDY4ei z@M}MBB)xY=%K5j)+T}z0)UZ8`Q}^z zE^v$|w9kre=~E3nt?Q~22Od&4J)QOX^V}A{@uZ1NxVyDPmaC!o$4C1Y{^|(q)L7r! zSK9bp*|}zGFRt)j=Y`R@)*v41MwfiKr~3H0#`s_S&gibARvgxn+LG(#`@7D0xZh{y zoinn(GSMBJiPPWRgXYZS{%)?xTYABDow0?N_?eCRPfg(sX5s6HmcgKAR(!Z#{Or*H z_FX^kVmWJXUcMJ2-UyoI!=Bl1?_h(G{CSq=)$2R_NGrJFL9er+mpbVzPpVB^*MgJ0 zgV}kUZ*re}gsU2H-T2LOdYa?O;7h}eC%*KMJ$&~X*kmHCn>(?rw>0Cy8F0p1gbxgO zwBFfP4fW_qoW#(*bMu`r>1#cY&*r$!GjTcxXK8 zhNt^Ku)w|iOb>W3SDk~$o1z9BdQ%H$n$z$5pchSzeYAkh`qtHcd+IxUE@$U)&y>Eb zNk3qw2Wddl{SK;5KhEbJKOP!)&V*-O?g#7KQ9HiSgFZBI&I&er`<=J-la=(k&bcZh z?|(TpPtKWLV~uXj#ePbce#{Jh*R1!RpX%&OIWK4V;kQ}MS?`70dCXqEZXMu*>-?n8 z=i?b{xM$72^?vTiQr>442cxyu%6H)m_TA&GyJz|CJn#u#&thujVYoSacOQlZ zJvFRbJ9vNX$yR-jpQpEK;HIx|_5I8@&&hanqp|11-EeVs>CKw{)*Ps5U7PW3-^axI-6(igqv^ISx{## z-d$#KYlHLEW&PIBS+ovu_I_u6bG4_K8GfxF4_eXDZxasI;AoG#pTDD1$2pqJGk1f< zy?JzxUa!JtPdz^1>vj0wd{j#=o)ef=@89I`ky&!mOJ4X9&TzC>XL9#@{;Qq*YMtNm zl%Bcov-6#I=6~MFv^_|@Nomq7T zn!kDZ+fiQX`^rvro-=)uKXaHhJuYVDHX6`hv*Ui}7#N(X=AJbeH>Uj2C%tHuFYdtf zd-A(j%*n6zc;EH$vpsX}9(in@_NE;Ap4#L&XJoQ9(|4Ws*-uZFncv*koqXJR zRW^MWIO}UPc7Cg8aC1N3t9|%|?OC9YdBF3#zw=U`bP7}V;K7^wty>T8tjWV~EP3v% zG@qNtdV0>8^JFayYwiBbZF8cA*+?6FXsJEEN-Mn9jV9^sn(h%kc%3&hi+qeP9O`>r z-OlU1r><5w_Pg}XPkN1mPVVWkSKg3&sCj$XyVtzx(Y`s?`>$U#3Fr6zYqqZS-w1kG zjcXlmAA5S3f1S(2;J>r|V@Amd#*OWa#O?W^#TcPs@{=a}>32C=(3`lQn1wZXbx&We z*ZtH}TXkQxI!k}%;SOyV#^^8K{vBP*d*jqOb>N^E9%?xM%~ZMjT$tOxTE6q4Z+SA4 z)mLwMe9V37l?T0decR{PU1kUW&ZM$>IQFi+NXzn6?eydsxEIz{r#!e%P0GT5zruyr z=hPWP+M7FlobS|QJZoPp`ljdZ^9)`N>cD<8(YfAA>ur4DZBOSrHKl`^Ie+)>TnZN* zd@EOFO+72QUF)ZB<$7aE=W5@+n9sb8<=YzL36t55{_ri&ItRyV;G7<3J{sz*GnuzG zxMcKd|LHINWI9;2r>@t=ymP-erytFG7uxEMdo<;Kdq&T-4}RgGc|44-*1NuzyTjTywrVvpS5bV=S?{W`nv`#Ft>d2zvPZa)!RY(JkKDK;*TVBJ=jLx|u{M0J zpYi;Qqn_;F?`JmZwU@Q|Q=w^0MddIhg23 zY_#P1`)%Fbi|^K8+`?b|%_kq6CBJG%|GpRg2M9;`*pG3f=i&=3ci&$e(!Dx1zwnBO z(bqXv-PG2KCve1V4EFS_w&(>1Eb{ODa8+MoxCS4o#r(qd9-P$?**AXcx-nB1yksHY zerwumj`n5k-4}VHhx1n#=kV=*bk@ExdiDF+x{J$iVLeU0i&Oi+*16u}osW65{zrdf z`8_)m-Zkss!CgAWQ+t_xe_x)dbH?j!>c~fU;z1|1)aYE8$)D$%ap9!)$>@`lI<2pV zo5wiRagPS^zgV78>Qe8WQQo)jnbFOc87SMXJ^rY(o_Gs$Z(MVyZm<%Ax3QXQ=B-Ux zx9)5I@K$~CPfe|8<@{$qHPTTTPOfzhPGI8U^;fv|B%IW{S_1RJ8V+&tUP3>8z5dQV z`SFM+_N;jP(yJbM>HFbzkKbqZ8(Xugy|C;BjI1RWu<+0R%}9IYviL_MIIQ%4>F`

gDan-|OVE_p#4h>l=;mWlw!~O>nc<+%y-yr7v_$zc8&IPPlSD##d(SYlUa=o-=B} zB`=?o)nC4q?Jxc>cWa(`NSm@sZhTt1Yx=I{GP7xojpx6+%thYm$H)9#bPm#_0Vf>zqhULJkI&}sB4P*5W>S!S(uo`@61q$c%6B-gWB8p!vHdHSt!xE-$rbZGZ6AI(MzPznuj> zyxy6t{>8DU&1kjL>zb?oqi!)ucid+V`j!v*{ng*S>vJ*#b37aW<>K#Be@Cn7(qnI{ z=iGO0@I?Kq6MZ@#echk9_jl=NErZ`&(}PCNF5LF}?WJ{$&egQ_?nzvF>I~jIt8d+T zeczz(kH^R>c`oeH1W&H1D#5 zZNB@B(odcDr|wTo-=X)XHhYH`&1fku`t$5Pr%&g+Wv#E?*T-V5hTlHnPcET*dFRYp z@ArE3^H#Pe-+q3Juk_OIRcCl({q|P1`Z0suPrkSAU!UDK`M^bP$!VOAcR&4IGv2{! zj5^C2a+(z$bBxaRFnrzb`Bg1H>D3(=@S$VZz}ec+^L6%OSugqLJkjyj8Z)R|HiPp$ z+CDWzUEP-ktq(?cxv=Z}!~2WHo?h1FLi4PgJCk2MV7dnFT8pD<%%xm)PLB3Wz47cV zai~jN&a6qi^j(;nS?KEw?;hR<80?elJ^R%ppMB1phD%zd!TQKh-o@qIz)w8%8PD17 z+t|5UPxql|GD&$9&SI`kU9i_Sa|QMLp8bIlAFt-=3zg?$k>ro+mhDmHqU=OD(HC zISXp(b&a{D)f(8-14et;yp>6E(?>mf);oik<9=)9f4FsTj;!}x;wekt3A^@S^NnxSx=-BJ)b-VWVMP5or-m$qnYyC?@&?Z2 z)pz;wWmovBj z);^f)Bl2g)VBv%Fubw(Hu6d2&d93&FwP&LP-|6Eo-sF&0y(N8r`%$ z*Zj~RKJdJL`B-hE75}9LTrx1ewQSAkmk(>od$3nWXoq9h#&h<{M!0BeJu?UKe(2g6 zXm0p5hJA9@ngdt5bMC>@b?nbte8I_gp8tIRc-4%_dodS=U_M zFa5nAU3`-Z{iRD7xBt#@c=sOc%Y*u)joF%Cy?(!|11#2qDJ{ys_duDY$AZ*++J z_wTs-KX4W|FcX`5^b7w>4_=w&z48X|4c>a`Y-W~^PBgHhuQ0a1=KJw8-=n8$lZW2X zp&3XIeDaP@Wy~EbeX6x4>+rkHn(ZGQ?By{z2lLVXX3_mqlibVs^w&9gRB!V3dFLV> z!nm`CU;bT}eAIaLJHGgs#m6db?rYuDm8aIpdUVVlPV|xQ>TA#V)=IDa;+c8OEQTL# zmnO7r%||xP&3gj-u0tof*H8DRUTH*wG##wUCNvo5KBvZf=uxJ9KUh1n%~*3G2e`c& z>#m_s8Eo#Mx%Dsa_#N+PDn01$@6m-9t=}5x+uGtv{>kpTZ+`I3+I-A$avcrUqdK%W zhZjfvS9XK{cdv8V4AD4V3a|R#A38XPmpxgKF>Busc720i_g^)6zu0I@U3gvH&Ib(m z*t4$p#&9Nmzj!Bu`rf_&ZWaeUQd+wF(xE!zWgodo&*N{h z?CjT@ap=vpb)4GOQ@*G7uA7;1H$B!NEofalu<4szRfo3wy@0X&jo~a`&Z^@~-}2KM zo?hP{JhV+eeB_rN`Yt@6KY24ZdQ~TXjk{VkYxHa{9GAA=oWAhU-&oV1b>h0;D`&3z zw=VhhEWSD6n7Y=&+4uWGN8?QfN&)>7T_!oaX1upot zGVeW`zCZVc^9Q!Dq(8OX=k^Cqa|I^7z1I2p)i*Oo8+EnkK38zBv%wOkwYWx^2vfMN zbM*OKb=9|6jqQGFTSw%kbI+4HX<)wAw*5OV-)$zPZ+@+5YU$k>tVa0Nr+aa`2Q5)M zSvOaC;#b^r*P4bW>&)Sdx^^(Q7tUl4{$ML>zXf|mYiOdU*Et`Z;GlWex}RTav!-8N zb%#$pFiZNl@7mDCy?sb$bCcodN6(F|EZpxLzUs{{AIW13`;k7+pBnOG56)eWHn_m? zx%KF*_v0JP;`riWPMNKHiZf;vGwmAg_FUTJ%YDf$Z<^1ob9xV^YRZAl zJ#~FISxDF9&}U>hdZzBe8x7JCdca)0+?{oL!1>9lJw4g};M`fle_=I_-$C&)FR#uO zJ)Vy>?A@hJ_v9uG%CB{F24wibGy3j6H0pgwr?X2P^!<8Q#y=h-cV&S#bM;ux?GEEj<5dZiu(8L#x`DS8xNUj)k}xxkUm^1ti2lz>ern7ZO`bVuh+=O{QkR1 zJ@kQHYksR%bNZ{+9KT+{f|J@>^SiM5-97S(PkM6S?;-NaeQQ2>{ImW?i~Od>)Q>)R zHkZxa@1kp(Km5%;y$IiL{&!DaXDyz|>uWWxYRQ$g?)mA=Z=E`xu?h4=8axn zL-%uD{l-dtqiy^yPt5Gf|2bE^vIn2cxFavLb5BNlKN|i#4^MAT>R!F0Rl0cRqZO`$ z3D&Lm@pRSsPQ5qgYWZi6a_4=Zp;o?Ak9lV9cpD#h79JR9T@9Q)ymL=R$qDAIsk~YP z^{lBK&GcJKX}Et|6aKrt^qn8RQWF^T-WsH{>!)9O^(P)uAeEIF7MI77#z7*r)If*QI}_` zWtQ@rGppKH13uFS`uFUQtWu|Y4oB-VfAh}StKrq7Uh7037+IfKUs{BvoU?YZCP(Vz z7yUE0XQud654D;hXQ^emBEuUaXA54unI|`T(OP>r_|DAk@4_9e+aon>8X4K8|EQ@b=POYXs1j@Ji%&Pt6my!!9IQEF?|x89ie z(BLy_+D~)hb7t|O18jVOvFFhP?|ml^okjVcpZ)pWWnb4_*w)(m$&mHbN}D*q*O{}x zJGIhmje9@1!in5hzcc&Qntb-${-(db#~+;1QoVQy-Z~3S=?kp72SfM5$$P$4C*P`t z%PSeOW}Udim*4GWbf8y#nX!4neD&1%_BWn;oDZ1J46g3)e5*$DNUp^mp4Q#UHzf45?+kIh7UtU9o@nv^we>mIEgJRbH6&3t23gvaCJ9xk6FO^r4zi>GaBL5xv_nY zhInV&>wMt;?Q<5cF_v^ycKlBLb8d52F;)r!Y?cmJ1<=Dsx-e&@gSWKwv; zdHs#(+`QAjZ)Na@tNr!&H`Dp;^OCe zdo%}UegnE2f2+rM+}D~M%I@G?Is2W;zk1Lstg4Bbw14W{4?exxpSr*DS{<4VT66u) z#(BV#_~`*0V>l1))a&!r+_O~1?w=XNUGlA-y}xG!r#Rl+$WwXQll{_Pcks5h$XDm1 zv(E>wHJ$V6?Unm;2i|h*nLTrdPy4VJ_;m+vcnD5#R?~9c?*Sh8#WC5IA3U{3XI|MX zM`1s8Kl|wS%tuS~{-=&pEAHTrv*INmR(qmX+1=;l>HgFrTydsvauAp2Nex;X>+!jF zqj~wp&+cb-WLkZ7$C`D`J3Na&{nW44t;2ijFR%W+e8Nyxy1T!xv*Kw_(%d?({mdiv zOb_1B&YqQ=#dq`%2KT)#mvyLqH23{?rtm6@yPmAMgPVQ!!bcA1L%-LYLFDx@Z}5$E z_lh&m{JnRR7g*AM*HK#c>zco+`C$+6B^un8U z`Ay$cE znqCfR#Lun8wdW1}WP+a4GoDyi|M*Y6V6Lv}t$YT5GmE`?tc@C0u(VeloO$i^XJMNxO`V0ynWU;bIqnToL+p3Q-0gqzNOp8r6p>l{pRZ051pL5=Xo!U z3$J{nPBe7hQ)?`Hc+YCj+zO-jc{YA@2fs2EzqMTbg^_r(uQPtB)%n69T=Y;&udtPo zJl#4rn@j)g6|BS-R%*O^vQ`@2EZhq|D_(kkbg5q+ZoT&Y>QT@ArdrdJcXJI#XZz-U z?PupF7rdGW!WJ@CDH%mYTPepg_$&L<nq{LxqEfBlv}c~`HpT>lR) zy=Y_q#U%{Cg%`7X2H)SzlsBPw13tWe)z|rIdUDh`?<9R%BiXZVPwUid5+6_0vDbT$ z2YsUpU!Jox%V+hc*TT&`xZ6|rYauinKyXJEq3{#PK&Zp|kqOtN4faIy?10UhNwl@KB4+ zJs+)Pl61S0vT8u|e z=Mj4^H>RT#NtsKqDM)->r#$V`hEnW0uxhXK>Na3jb&xO}rQMp)Iw3)u4sD zt>4Uw$J{S&>%4MuJzDUxT;*-EJlMn4_j69I^n};pTAe))<)thq=a~~YyH3CPr3H<> zjt00>AH3osmwR61Rh&1TX5IJ8A&k~DXRS5A!C9}cQ8icH_}#Phb?4uGeTQGq9-Us{kp9gg zxXFu5dR@JVEi7_fovpjH%>812y@T8TFZYMn#@D%gnFpWJ^2KNU=mn$J&NB4w{Kh}` z*6AMn_Il03IiX9LJsEY6G@}VV^)cVc3{A_GIXG8ol}bP^xEVh4mZcPVwbg0gr z8Y8v!w`bB?s&~%unA+e1i<;YqeLL5i2M_D3czK`Aul;K3H+I*cvoNSjJaI(Nyi<74 zfQNe(rm%nUn=jraywo?x_~6dGZx))_Zyg!jZ~Er`cTLwuw$k^T$#PfilfQDBcQjbk zv!=Jqk@H@+S6IfKd}BV1J36usY@KBvIeh8Qx;x8XU7AhdqrJ4GPwj7>)Rley&cFZE z@cRw7eUFyOFER5Qon%vUihGZKIy5IdwYtRef{4asB6s41?!EFcCLV5V=^EV8&l$RkufHGN@abN&cdvQCkxt$StGO4ibqr_C zV|ayap5Gk6tTp*Lf4C0rzc}}9{G(qwG;3=*e4&$b*WyE*V71P`ulg^Xs!LDcgF_bD z-@d*utxMT-&E)R8^yqJDb1mL`Z@t{5espt3ug=Lpm|45^HM_~Jdi%W2Hb3`fo{8_w z{>nh-%qTUAQ#0T1)?qBoY&1nac}^zy$~C|7u=)p&8fmz>&}|ND`|={}s?l$Kk!$(<-r{?Xz)d1BwV!~gR=`l-F~COf<~#+^g;;o<%!lc}Fx z=b&?V@m^SorwnvPtyehiEQI0zJz3w_xxeyzV=t4BX)1rFGa*Z%Fpeg1nf z?>UPc_=e}g-T5hlJKs4AEb~eWoX$fYFOJckHE5#0>z`bmgZ#Yx^j<4mN3%GTZ`P!? z=J@F8`qEQ4vu@w+!|P8iccZ;C{PuzOYn}Q!BlGp}2mk8po~N&R&QEw=3p3B!>(r%p zxZz->U)ahz@3`lT6+GXQ7rIk#;I=mH=>oOQ=<&*v<2=$h5&9^L>Px!$!W zw-0$yjWQ`bG=urgLGJRuHRY}5#aiF<1DBOLdGq_p^ZL&E{O0cMPY=5L(%`e^TaD5V zX7fc>!Y)nvrO&P{obe8Zb;=9po7v-${#{2KI+y!7=U#mOk3ZK4^Y`tcHL>%X`&v`) zm$$A7&FLfg7k_hE|Js-B~B`R)D9U3+Kz7eD8@`uoo0 z)ePrq#>39b`l%`G&A;m&j`Ftt$X7M3EAGIQuA8elqW01n=Z$gpx`!|K!98=ezH?Vt z+pl?Ke&~>IzaRE}U%0Eud8A)?oc__Vy`8D<(g(R1TmCq=w)Ei)I-9|kUb0{{-sKpPMv{;&fZTA`sCT1jaeG5I%aa~RT@ck{O2@wa*>x7LC7@gZD!Aph)pH8~r6%SYC=26$LU6Z%-;!e5;W%f4FooO4e< zD>dwMy|Hulo=4C0nMGst8FMVpr>8vOYu5G=wbi?s^f@`r{Ptd$`*y!hvx%sd0Lv0Jb4z(Vis!Ed6pS&uk=wF;No z+mF4`ci+#fe=?K?bkd8K#aLg|kCw(u?aEpGs!1&7^PX|8d=k%D{FPz%zH?YzzgXa~ zDo?aBZ|9}^*iVKp@9T-|#B=wXQ|IJG4|Dij$7}WU{mcfP%JAm(#T|;iSSL)L1bru?_X&=vd=34!DWd^AO9P`){eez4jM>~AuSA3e0YF)$r<&iGu zfF_;K8@YJEw;$`99H~E^BZJwUb}DfQ>T73 zYfUVDI~Vr5_I&7{j3%4JzP{^zva(-uSFP@a_txNlJw(RTR=+rBmZ9^;heLJbb+61u zy1+IL`KYe%LsRbQl}>SkLtU+xkJ;McC< zj^C@#`JkonFOAdBxwO*f8F$Zx{W}l)K$C00mEM?5dl64-oc(VO$^h+|Rcia~lNS3M z|C57tjfVAT?WGIds@L0S4d+hxzx~O{cg~@;F1Gl<7oRXWTa429<}^54Q@YmUc&@Xl zGya{Ad(iWGS3Q}hHoSE%lVjoCn2}xUgNOObGd=Ft{jEQ-^}V^Q|LhZ2V*bo^GQ*2> z3`TibTyt+ti0B4=glmC3nqUHJpv_rx&iq z4sYQ1dFq&Nu+g76NZ;*)Z1xVW#9p7$3P)==cZ)%9pXuGGmR#%~KIu~yct(4#r6aW1 zkIw(4A#u8Hu&fC`%GGx z8nZUAxB1AgJ)>1Utpm+d zhbDM)&2PBxGwI^2@e4Qfz{y$eh3V{bHib#9no)VsPv@D#U<9u;rGI@}tKQDbnVMEB zyuFHxd7)`*Q^R~G2j8{2H*>Vk&LFta-sj14YINsbVJ8P~z<)E~v!acCV&bn?G@;?F z+uPrxgZt439^SRLMtITAJ?HF~YjmKAccD7`hPKRUG)s#!K^q)iZyfSSP3ShporCTR z=f=Wco`doJ-Biu(ue9rzwOL0!Jnueh!SV{<{YKq0+@)*g{oWN8oW4_i?em95dfX=r z@6n|-&$pMiI4hpa;a<*!gI;IbnCq|3HAA$+zc|fl&EQr&-_)YF?^f&mMqGoo&|bQR z4?V0ehqwb9orMuI1dmmC=0>aV?mXbkJFr(*^J?~6KN^^mJ*%$w(Z?R1VMARyfTtj`H#0f+P^du zJ~M01#&yC zs5|#d5Bucn`pCcbiJ|?$uA0aMe9rE@GD0_aoonN3_CBAtJNW2y|KvD2o2zTZ1Glse z*6_6M&EkFs)T2YZHFS>ROJ&p0HfAGS$^^Tswk)Et)hLe9|jOXf^pZh$!^mO@} zEbzcg*i&2U{@NE>#Bp=pxpv=pBLAEvXP;cbi#As3#jPCDC*RzwK74F`lihGpkH+mA z560CyP`y0UOV8hT)U#SY{@_nca6RkOKl7+M?u{{Tpli@8&a8F)+)aJes7~*YI&&He zyzcpf@AodU|KWsNE1px2bi5kweRHml$z%51ku`fbv<`ptIP2fP&&D`jSi6?}>L5?) z(Tq9E8E}8j$Y-$708g(6A1uz-+w?QTT-8&(&W`V1gR^;O4`;1a$4~pe@b0<(_;|3B z-<~{^>=(cByLU37*KgMt);njNmGA$`2YmH=Zv9qw*668xjM;iZ8`|OGp7rKp&NrTV zL&s_m_l*&6s&z2GgSqqedqBs&!_l6e?r-;UE|2DwUh$>>;@Z2_c6+5ptF_~ib#*^D z*2LSL_d2s*{@#PH9G81?Vh?9xH~(O&4y^PoTr%jM(Q9n^r{?8AZ?1`x^{UZ)teJi0 z@%`Pn;~iY-bUy5F4S3gj-zg9Jeto(}clo~1e%419UfXBg^(>}0zvs=NiMr)lTzPD~ z=-C{m?$Xgb^S(|G9M+a+@}Rrw$-CLZQFn{2Z?G@^tuyx4&0X!AYw+?OoqN_b%AwD4 zf4&NDD~uBT74@>(@-&pS8OgqP6+R$}PPwaP_&t!KSgjoz47 z`So5n#-u**Lci*qS>iNz>7IIYX%6s^OY#_xUe?SFjmuL$KlsojjO2Z}ts!xEFUhCx z>L1R2Yj{=8`0bjx2ZL3b?rb?jZ}WFQ+F8+m^U{Y#@ZhvA;ncl*#!sD1p01Z)aNF0Z z)BVY=>iPA#@~pG2WnI4LjWe{M+xn`W8Qm+j+_PsztMRUg`4{g%!On>&nDeTc2JjV4MI`G*w!{0d!=4!b1 zcnIM%kvH+vkQ`1=$ZhuQZn$@Ek`dPuresgIy>=zr&!zJ&*iI)%U z>l4j^0T0^9lznPVPU-S{L1%jkp2kOeWySZ@h^KHox8?*Rd{JvIznSW{*5BEuF1Wyf zPy2VC+H-f~_---E})foVDxm=C!#-Cw-+uc*eIjdWEf8>Xk?0Bro4+ zg(orKd28{N*g7kX;@{rNdvfUdn8V8r9vJt2a3?!@sS$_xn>%u>T5EW-Qcm4dTC1-) z25WJ?@;5H{tmeG=bZ?#Vs*K2)np*h=?>!?cpWi+7WlrreW>PiippL%Aoebcp)pg`$ z-mTj#r@nK&d&LX?WEFkPW3xfagC$L;f9}C;EpfKmr=LB3zV?l=vyjg`leXawTw%!* zdG^{hc)oL^4t(~%`oMkkl-CPib>y;Z&v5SMo6MSPFsws!^BuZ5_nXchf8T!Vyu8_; zwMhT%OWNR?yYl+u!)KS)_G3cYwgj* zw^s3VU)1Ctte*Mh|Hi)W;lrEuj);)NgtKVYRpB`{kpBVBi9_H@)fAz!N zJ~sEscXZIdyy01#&a`pnp1#%Hc+O0{@<}av$PUiL;H4-US`7GJApG5mM6{KK7C zDv`_(u;dv8o>p8bU*tjK{%4o;j~8`+qLJ9^<~_I2N9fhQgFKF;}K{OFI~?Vq!${nOjl z%Zv3`dwU%I+pjdC(|7jYzPk5!F8I-^cl+}9KKe5^c|vz&P@c=z^ttEM)cLtruQ{z# zXVid!j>cMS;q~2Mst?@J)OU4eP3A|>Xlu>c=Zq7(bu8}GueY0DT<~b6Uzol_*X4V> zd0sb0XE$2V$jTl2@74UeANfN!|zKsI9*e@O?LFun%eVxzegW? z^Y{%32Y+}tE1bidT=L*I3PzrDrq%OK9MAC8Gw)?GLbtK*?3N47osB)w-`v!!ufdu< z9J!LcaFk8Xr*VHct#S2@pW62?I4{1&s!U!C&!_L!gKDX_U-f(Me)#BFP0j7MmG|xQ zaB{|;IpV4A`|c0@S+81jvU>h-ft@<*do?82=5phqDKYuxPTI&x{cuw&UUAnMztz?m z*@OFicJmF-WGg&0OwV=ae8EW#bp{6OY8$=zrsc*gU>y9?>uU+GqRq)$C+dG zCnh-HI)mw(nKv%IpWd9c`R~k&>&pk{xn4T2JYF8&n7Qzmp1!a%`!COe!l1J zz*nm{c;kMD-MjZyhhK52cfQ9Hc)Ypf>9g?u!+W@{`q--$ty9-nzxleBOz>v>@&Xq= zrClD;zjd1@SX0;e_`5Nyc7EGGUUvUz7x!OY;Pe|y&FF@^IP}xZ@WOqsqg%c3dTpJf zkv!?=4jk62F7V-?Pjz@It?A3>SKs7UUgYi6RmPmpT3C6u*i#Gl)&)lEdvLZtaa)74 zeQO%KYvd*M$dl)jeiFx7y?M~fIWyz@>_;EG z&4Iqg91p2Gak^&ob>CpR#+bJb&s??S!AiFAj()t8f!9~VkG{!B8GmErmHFEXnw(kV zZ$`H#_ql$tCo|XheY`d7cP^bVT8@Y1x1a8*^ZC(R=Re-4m-&kO^&lPg-h77x9jd?Y;r;Zm-ZYb~317x02Q;3w>pY+43e3eL z*SI5x!blD z*3_d(`1D&Byyo=V?z7E@`NHYhgS}jlO`ToX$0z&JS{~6X9C+>--aXRaz0t3{(1+LI zn0&#xw2ls)iC0<@!+PLlP0ak}-nh4SYT;Tkof_ho+q4YA>CuX>vOI?R`Agxqi+x&%}Y3!3mDcv^g5DJe;1*;fb2gYVr}UHCGLF#&Ryco1Wp$KINbu)qnN-Od4v>&wB28JB!v9T7PtP zPUb*g>Y=CauFNt6z8~(X&urn)nYhWCJ2=2nJ zss4M$@TIQzd+{b8-Sh5wulOE(GGvYXzTVfZG5k&5_dWBR{4;xaYF)jq|J9EE-_wwKk z4DRnfY5qA2U2k92a)w`>{pJ6cLz<)h@PWY!cCT@--uE5Ruk*s7AH3E)zPPV5-FqI? zcg_zl+}+=I?&A(#?QdP&EoWjxu8rS&`*5#4-k#2R`HQ~g32fthV>4Sc2oKKZ?_l|E z?(Pk5%2_q5X?jaDK9cj-$E{bGK4YKwjeESO2fnFap4MS4b)G-f&)@n_#?0A0H~!;& z`m<(r^qq4iOYYIZp0&>Fn;$uBrsP~TWPjC9KX*~T7_DtG>Th$ty6|QlcXo|AT;Tt% znVWg#S$Oce*P619TyniKYrnr7nN`YSswKZWJMw!tdN%UfSmA|!d6~YtziM=DPUGVV9P-x6 z?6l&edf=l^zL`(e569@}x<^yutgov^b4x7v_6(lMn|o$U-Pc;Rbxsfa^y#}hv-HdN zdKfKKj|V%{s-_@*x!8gY!2fGkFDd;f8C9j)JtYy{$?rf zx@V@+*}fVR-J$o%ES&2P{$RJr52&V8K-@cVOjA!OR-l;CRcDe zXX{(Ni#OhK|IDT}qp#Mk6))P!8-Mavnhy7+#dGi8a|Z@{`EqXQU%2XVoq51WOguNv z;|*=Cv+tf9_lyj!3oUmqb=H_#(APbgW8@%Tr~k>V_Wc`8@PkiII=^*XwaI(1k_W6_ zM-#bmr#zoI4h}W7%E!zm?q59kh3opaj+~cc^5LBN-bYql|KTO;UT)_spH-{hJy&z; zJiVZ^Ylh!vdPl8cvf_>vY%uE_&C(mQ3;gZt`q7o&QQJPxUU+&l@c*?ge&B32*O{~0 z`=g_Ahf|(hckgfQm&We*TT$PwKeJuUWH>rF&z0}gQs2yB??*%5ft$J>kJU#n+JuS! zn}d4yX#U&#p=y9<9Qk%#POd`*Qa?8U5%{{mfwcuPjC%y}J(1@+J3`**j0? z2hWSCcgEkAJ+CL`T})0u_`>bd_~;o^>5az1so`|+kTdD*+E0|QJ}&RIDx|BX@F z=bIX^YtLEtRqgWmZz$`9CG0xy{>G>G!MyO$GTP2v&nb9&U+3LttV`$KpP5B3ez$h- zhHv(GcsV+Q7yIB$*$Wu&Q5v1AFEOKkMR^RyZf; zdv8DLF(-UlZw<{exYd{Y?L!;Ng^%^rH;>+^ zxaWI())}7rdo^2M-s5R~T=l{#4;NR|z~LIzQt$iG6*@PY)Li%cf+uw*rsk%+;S}z{ zIsL8c;AQ{bkCwbM_Pnp@O|5TzbF5a)NOK~$CzHnHPCC&J|E{ai?_JpAZFsjHx+ zhu7Iiv$DLiTHMjW+u00dW;uMTYwmL<_BC(m)Kq=?>-yq2 zKYE#C?tOO8Oa8;}qwBqIoZ*rV%~RjfCymTP+29jAt?6epJbAf3{oOoZy(?M4-D_(n z1N$Z`Y6~mpO}=n|-F>C`!hL5nZ+>civvNQ9&7ZRvj^eRK`X-yW>$>Jsy*TZged`Y% z_bAhLG37@HJYp(m$h<@JQ*`uwro^NL(ov9UFS5NlUcXJEtOV4|@ z_0day>5Xse<4sMTt=)4;jMTdxMyGHGBQ&6M>lgp!@GLVc`Knsiqa*7Uzqo4_%wV+q z<|9n%ZY<{etLfqi?8HZF)pq@Q_8woXFE0DmHT~B5>oM#7?f2s|dn)eE3Z4J(v;HdE zzxueFdpPk3hVs!o$=#XFTt>^k?!j67;vWq!H+!!qhkxo7*3B{ABPZ*d*`7OkST7!W zlY4s}&QoK2V01|%IwWp^>aTuIkTR41I05x>K3~==BGRPdiA2~XB`iF&i<^0p&#?j%*+eF zFkG9yOIz)~bh}TO=1qS0Is<3a_+&92s9PO)3t#v~SFeGCmfIsb5C7DvZuZMxnteu1 zuJ9X2_3&>0Xzsenv1;hUkUZocPG| zeJkm)bw&1}t3B<0ywv{uz(-4J{Q6d1&S7Twp@l5qknfL-BO`n^_iA+hec!s#;1!3NDC$GeW zUtHM>AL}oVw49#u5`GG^f6eFqw`TjVxvQ5ubZr(@J6xT?aHQYtS%+N_~uW=5idi*Z&!?{*w{{2SiVWk&+d;aj(xodb&$)Wr1 zKfQ&U*x-Ue4!s{PpBWb%VKGZ<$@~0Xo|u8~-J6=SzP{Pxr&j9W>6%MBy49cc!ZgO- z(GPy_nc)}CV4S*3NBR6Z1Gnzuw;qT8)?@$GLl)VubKRx4!tpQkhp)s@t^B^2)Pa}x zo~3=Y&dC7WS9_fcM{hVe`Wu~9S6IED%%_(g?h_BK@VMWZqV3`v-C(bmSHtSDemJFr znc&m=taI%@yoFzSy}o{KzRu>!npv5Cq${rmz&UlIJ zvY*=De3bij-}92k^>LkX$104*?mAGJPRH4vr4NpaaL>R&>5yK z&z8LD`SRR%p(ks^K?d?7zrz>$+xzTW7y8Z$e{yyG$6cO-S*tOv2V7~2tpCF8tUO!# z(3RYE)|_P1d+UIk)%w&Y&8q*!^}Oi+TC?xQ_l)ttS~z@bwT9a3e-bsup)c3g)S3O( zfvx)EXJ*g7xr%RcgLmsLT+b9-t$sT<-i_NjFW=7Bb5IV{_Bxu$ncCGn`qAEXtsDNz zk$lftWRMtm!P{G>T4Uy3+~a5Us@XuZtA%+y6TrZYJU7G5AfB0 zzYTaY1L|s(U%k)7;d}dvyM33QTT{V`q0EmZ{I(D&?YX;wfjbc?(Ioj@_;sY zvR2>HpFL=xr!i(O*I8tcSo)rEc^i!k>5V9DN6mdc)`O(Ol){=rylBNpQi#*U+lF8yB7U zPYv5&7=vT(gM)84BG+4&Ja#X&wRZo!q5k$9@PY>LIL9Yz*HxwujydGJanM=y+k>CU zr}TB5=Oymk&+LZt!rp$oPv4#o&vL-Ws(SL47QKP>I=%P)@l^iehsMmQzMa#}am}px z&}U!ZH}+=n@)~z%HnrW~-{tx41Dl#!HHW)yeO3Qp(Q{$K`S79Xs$DMLhB>!xaim?^ zJZo^BvGmIaUi=pD$BHkn^4H#;td?ss0He8|TF!1Co>Ai;Z(mu8N1EyP8eXb@c+n3o z7|u)F)PYBTt?ofr;*+J%=+PQ8?3t-f{D0xWnYG5TR%WkyG^gJ76M3Kw40={;`xO^w z!n41|++5^8aom^hQQyh?;?k$tN3NZl=DWG=e4Ul>$Z0%8FK;jL#c6Np1Fg$BIck4r zWK8R(51)-UddM*OzO;a$JLc^y(or zeZ%#hfhlkE_jvH_QCU%!>xET4t!wIQR&&PM^>yA_&`ICaPoMR0uX;FGUH6N(**scG z2iny?`-|JWu8o-t1{`1}p8G;ua9p{N)wu_g_hPTUqei?jx55byGzjBgp19NcsqM*4 zb95ixySIHf*VL&xy^~iT`>aR1@BV(1)}8N#xlMkRPh`Y5y3-fjd&it&mDYzN?i+vj ztZ%eTrubbx>d)G~*-yRdB8RDSw$Ga=JzaBhxv=~;Qv-g%Ll-k{O|2y~T-x9p{Zrex zr6p?LGdQTJy}#Wnz3e}HU74f~dbB3Lc*Ms!{M@C!x5l{y_LcWJXAYGEceCONoW`dn z>&cJ1?VlXZ9;}P6Fs3(s<=MsEwKL1xvz%s6dg{afL^3t$FumK^>UFvL>ISS1WyZ zb{)OR8~Vv(vby@}Ztgkn{nW~f@moXm=>DG5;+!0|zP<;OZ2E3$$Y}4nmbZQT-pT^KPoEJx6CCBTbv)N3n*ZEJT!?zscVfT$;jmgcxQWm^n^!Ypi$Xw7VXJ*%ZvBG`RcJ&VKi@G3QwB-J^RA$+OxKHt<>!uT4E)? zoJH01E3N*PXW`jv)^sfzPVajMADFw+GhS|v^fTX8*FDMr{ovL9{U-Ok>zcq}Pj9X5 z;V-`KwNG&*_nn{coZaFN&!w?ABY(chkoEgqvuf?(0sQ3E_ssUqg5J?VKe+u)Cj;JW z>nZJn#rgIG)|U?S(0Ai0>%@|#lPNk{vuBVTJNwdCI!5Q#1V-Nvma@+GUpj7%)Qi5H z(bhM|-AkRk;L&e8_3d|PgWJ60tvvDz-qrHl(Z4<1pSABMAHJo<+0$REJjFYFdS49n z4A1oA6};AUaMEw%ptJ6xckAnZ_;c<1w?6h@Gav9$&yUaIdVZ?6wm1LgX?=PZ@c!cP zCT@4`IV605%pXRx|&a^sACX;LlP(Fb4kfB_G+>{+u{-|}xheEb9Yv&ajE{%2G*@UO4O`YpE??(eOU~NwH4F~<-ncCZO4$tlnp1$RC zXS?U;zB#GW-vM(Mug|Xj!suROQ*TasT~l}V_4l_mm?wMt`(W*CCNuZl^U1oZk=Cf0 z9Pp?bb9et}r^Y_`dzVjiQn$UW7jCd?uOE1`1OKCKdgy1R=i)vZN*BD=s4T0e`x3KyIFEI;ES~DNb}$xmaJH|p^#9=1S~ZIk zoaoL~eykgO*MQ~R+V{~1k8>ED(N-A7i~7*CItP!Q#@@5&4c_l;ZoTp+9q1)5baO5( zt|bGsbl=5)YR_Ie=DqDcG>2cf@u}Whvug_b`yETG=SC0b@A~p2Zu=XJ=*lx;NymH7 z9rfCW_sQ$lHyJ;7V6!gfPn~jsyXxs-T^-dsKV{(gQloz6=vjcfn4@ELoy@N9=RPxs zOY4`0ndM-wjBD=wS&zrY-nD6w2hV}8B!OOaJ;Qf!Wa?7%0#bN0DXWiKHwge}#ZhxEw7+WtQ ztFpiLc|JXLHox8;eTCJ&W5&InQyWL#=&TH}7gR(|@=M(xG zk8`i?PcHh<*c|1jewAzeX1@0DamQKfSceK`u_ z!Ra>&Jc-9FF! z-p4tzKsPJ%toRVV_?o+LFC4!=_h9}tTO8dJKDM^H{U-MBoU;GrF~4$ePs1f&Xx1vM z*@vd~6X(Wh?Z27Q3wQSBK7G@RraJRurq-)=^w8fufB0%WGb@Z=ufp-SL?3l{#DCAP zCh}noz14%p*3;VU2cGUhYxmq-+@nvcaB>gcY8!rZY<;wLJ#>Qw&x_X{3bSTfCvS0Q z2oAh;et)SY`|iEJ->h5TWDt7bp`X<=C)?4UK6EcXxlhl91s>VZTdVfq&l{Guy`x7s zi#@nt|MvTPkoG$lba_=j_^#jjr8o7Nhndc(^%=A7@TwfnU3?GdXBC#`J!|gn&3F0X z9M9bYR{E*Ea}kH}b%$=xS&KZhj`b%@_n3nWxc0~;XXzL2rE#>c*K-yo8txhH&<)n=FVB$)_q}$VJf&&xCoAx!9o^0sZ~d(dk7oQ1 zg?aV$xqR50dTxBQkQ+T<-Syx|KKA3sI>q1T(}PB^eI|G1==tLFTjX5p4nFxDzVzIA zePgV*&D7b{U2`;6&Woe(2OA%ydogE@JMg$~FW3C=o!aH?$xS|;r8wif-u+h0Si^7x zw!Pxv+yCA7%fbC$Sx~QadrL=WF}1lvZ}oLvv8v{G;S4T0Z@p*JlYDaT_YjvdQ-9`% zro=A{e$0W_b-b0Y-h*rX!aMcx4j%o<*BYXa+2#x_o{d~%&f1(y*3t{um#^Y#KUy#C zQ%CoWW&ikWPmlJxqt2?D{QRqi-qzGwChPGpJ;wjiVaH|H(rGMzU+?`r z?>A|mr8|8@R@~n_o;OeGk|%O7x3n@tz1PW(ea&Vb;y3T!k5=wm?^8=2_c<$c-mAYO z)gSJ|(Oju}YOSsJ`j(1+F(PYpNt1hWo;&yQeY)RwlkdKzd%%>I<0X1jt6u8X-EV+b zJk9K4ojMw_CeOn4{_Zumw8EEoTdV9wi|{`5?!DhDIoLO5`#6||n|pi?7BijC-05A! z@#U>*HFy2s7~JkD?&$lRi~jr`{9fdszdO8uUn_gOHfQU}zsZ>&zUoQOI{((_qt|`I zdvKb!*1<#*GxkD{*Sh0Z^Wfu?+SVTq)xofS=B35oOLCzT?E5bB5^m?b8sG1u`iFnA ze{;c0{@NScec~Lh)1y9C_o4OnN|st*zMnH*Sn)W#^cR=+Xkk5fHGg5;`kAdYJ@W>= zp84eY%AUT&Gp4iY`^H0K=o=omUmmbir+du7{JSzQUFAvKwd$w5n4=%>tT`_&`kQip zcpDDQsLwN=OHSRR?fza?0~wxG8Hh7Az~hYEbK}f+GCAN6EY{W-Z$xJB=se#F`Wn+d zS8M5xY~ZMsELP)-F+JAfx4h>^OYzhX&W}A@w-E!g)X72I<2C%R=hpo@zxSa} zI;6X`HJ;w-SL^7UdG4i0+4yaoFZ$`@eE0h8I`8%{c~*|kPr7qvv^{fR@h0ZftZ@8( z>FMGmvs%fhG;J2M&-15d=kj{E_}WKl=M zjb3uR`PE0w>*N>n;J9bFC*xNm-1ySj9=P9iaLC;K>HqeNmg@b*aW5M1VC>Rke0xw0 z%$$RZJl&)B+WXYhImWv#r*)(8o!|4v_j38a@>9+|yLEHnv)1alxT|)4coxTa>pDK% zgT|g2OmOv{%xI;b)m(ZH^oW~pbl$4Jfw)CDHqcda)WY-tv+YV!Z96K&GL zJu`6Or!^H1I?u`s>)y2%@usfD7`^oGJoTQJr|RkZUX9sUXvzM-FgN);e>2njdQ3gn z-Dt2LWhfrr-@5Tz{f+bJrB-YHm^1F}8$9cngy_yyy`lQ9* z0+`gn&U5=t?z0D5oO#y%XJ++I@0{^ayv&H3jE%kD)@bSe!rAlh9-YDuteu&+2!7*9 z1GCh79bWLQSsFNNcHZvHymj&`Z~Yrxla?&f}I-a%}iVqK3eF}>g+m`M`v*qPOk8>f_wMXOk(>RcilBG;Ngsi zI;UQ7xwd`Hsr;!WCfu4o{EIsoRnAlMJns@c>rEKKlb&mC@+{u2pR;-k%l`L%`Z!B3 zn*5G^zgWh6bE6MDbfS@SYN5uu8rt*igPvO1FV^aFM)c9!=gsIlU$m!=#L4$6?(EC` z#o1ma|I#^HFWm9O9Xh^x#OwE@r)S#V8ePvH#SKW8!y=&DoJY>~+{Cy{8 z>uX$lczN>MrJuFA$FFr*r#z0<=@XvyzgV0-JKw zTe$Onr?C}UyV|DO3B^zFb07HigpdG`xDbJzVfzxkq@^~}{f?mchKy|UrE0JB%} zj(6dHH4QfN)T^(*fx3^ks69XR`0PIC`1byM&x@UYoDcn4Z(R7jf}y;mhuT>uLu(qm zs25h=cLr1Yz4KfA-p#x0taV7Q^`ytCb|AY5zi`ZEV7Yx3z0{S9&_zO4HlQwut%ac-Q>k?)svatn>} zpf{^|W;fsIRp0G(dpB#{qyKvy4U;9>Yvm^$=Azzf=&5siKDC^=`n%`;2Jq}vzS~b^ z1AcRqzU6+k{(eiEb*`(awcc-g@hpdC;dD>DCH~RY*w(ok3Uhc@N6qk?yWjV8Zsbee z=mCRSuVgwr@Ryd+4JPMZpB~k%g>$XH`%{B!c(Tv>oTGH`R(_kD>;34WE*|^D&&AOi z2D5cZU%zYNO^q4O#X;@X_pkb|7U5J~SuO7mzV5g0x}R?`YA^)kNArR~ zzIiUpJi|{f>vE0XI=5%m(WRW@t*Pf6GgI>n9wyUs&s&ji^Cs58M>Af~%(@sk2X}Mu zzBhk*7PftHmiEwDxT6Wp(&x8+^`Z}NtmsdU?gc;mB!+bB+mz1C=-%J=qjBDhyT-n1 z%IVf;fAIhMbWX<9oMz6xygmLnXD&T|y`g5eo;a6w{?netf@0$9|7hHq2xg_@4Q}5Z}BG2Oc zi(`F&Icv?L^9z@(ubxZG{cgsPmYhp%)N^H)TAzojYMy_x4=?El9M7UPJ?EZpWWKlg zW-_~1BOGY;c`#Nt+p-SgJ-?G28+ zOzmi6-mA3K8IHo%`SwaK*IoI2HTV4OvH9A+`V)&Bsiim7tfS7p*B(98S-W>QnNx51 z)9=;JePMWJI5*SG(>OnvAN{Ru>o2Z3lmFd=(V2!$`q0t($3J)F7mvU9m9xC5N4eiM zYc$T88BeXPHQgDB|EqQ~K;vj@3~C3b0si`bQ^y ztmy2y(bKt%m+AwPOu?qkO17NAQ9tjZx8$xdi+8x;K>LM>zS4Bf@O>!j)x4N~|J8Q+ zvPZNQ{^ATDn(iL^+WKHKzaCFLG4QN8X<(*m`@6h~k2~Q-?{IKm>zyeYysBsVuFS|& zYhwLqC$CxYneW%$#tZkEGxs^OoQ>V+Gb;aT(YO8=`}eD=D1kzLi$y!y5# zEzP+#y_07q-@!y*&Y%l?&1#N*wB2|1S9LsZMpdhP9&MXf+-cU@IWw#C&4J#$W9~=K z`UfN4v~-OA3v2YX2fQ?nGnGDc2WIdoGv3);t?}W8iy6+XFM4%HO#}p2ZlBbH3-Lm6~!r zz0;Te;Ye<2Fh=A2IqO^s!#Lq3X4l`TB{y?mux@{6<1BnnP5y*KmXpt9ws{OzW3)DF z{plI)!gbEc?>pger#f2jYm9z}$&4BJYt_&F;C;`DTX}h}8DaRYu#cX3gXW$bsKG%W zdbt0^b^iX&@E-4w+4o+#Bwp*8T+Bax&wJ5JR^XsPXZfuj&dlvPS%6c#?)N_X>Cx(p z>EV90EXQwe%_KMHT**HB%x#TTYYm%~zNM~lH)~=w{%E9^4A7ze$a6TZS!%(N8LYl@ zZ+>YcGyC#)m9^A?R%vt&T@NjuS3aEawm6f)t1a>uhc88!LS7`=O)P+v7b0COlrtn=;UMg6`z*{qQe$W?FZn!CA?R&f?hb zs^8$$dgkVp7G`fxFBV#vc~|;t&EDRRpY%z+YWk54`LSB_569px-|_?&J+`|>~zxtc>f_`X-+l`innsG4;5U1{QX>5cl}&@V3Cqm6H)u@(m& z=ftdi%-`C~phfq(Yu=xG^QQ)Mh)3_<^X2hi+_?E&+Bzx^hsdgara&@7JbZx6xQnti@8 z?e#}z%q5@qyth`ovC_Am_N{L%)pz&GQ{r4bm1k%J9}ML*nAKanGqZC&Ki+2#pYZNn zshPtX(dO*Mt@?03-g$%7!<&6*Y3+RD~Ecn)8yVSL>F#>@EQ zeelFAD;itx=%kj~sNrw(M+56N|o^|%> z=Y8A{PG^VzSTC)oPJi>v`R2Ue4t+Jp%(b?E&v1txR^iMWWY&?bdg9;Ix@-JL_tea# z`}-RVy@Lam=Sq+HwAcC8Jw1i!nUgLQ7_N#jJ^ecU)Jjmy{@ZQchB6D&)f52f%(4kXT3H4W=n7B_m95O7yhg%zu_;R&MdQG zK6!gT`f5+V^ay+BCZoHjX55$9HwGS4`_0GqWDIb#&o${Cywo=P#u;yD`I=Ep-yi$( z)bsOq$J~u$UG(l;Xdu7NZS-`1^a$S>iKouiVH{Rn$B-{)IuUw7&s-Q%4ZbLFghSTe2-~0PJ@f_dSy>@1YGd)tPS@^W~ENAdJOPBgo zlOOO?_nk3)toV?Ip6BgC?^{njUwiyqx%D?P@8A2QVQT2bi_T~}>-H%_?pZZQe|QU? z)QK*5y)uh7onL(Boh@%>eaVM@a8~!xml({{ea>jk+Q^ssdp3^n3yWH>AGy34T>bO+ zvbyJ+g}2w?s6AMV@xfnr%(140uu2oV8}g z!bof~1t;GUzB>zN%MAC)?^*Q4Ta9LPDAwV zY1Y}g^1M0yktMygb}wFPWuLRB*1bPIq{F_f%N)u>=jjhT@|P#)*qEcGd*JTb(mm93|Ozb(afE=rImf=;F^1Q7w1^MZ~dB6-FSgSUZ$S>gO(g-&~W z@>xB6e_CHX#kU-d>r9MI9`c!b+D~y^e3QrE;mND=5clvsy~cBIa$U2}dvk|QR=n$8 zxz-+B=Iq-(T${HX&tQX@eT_YR;x-<0aQ7PD0q5>3jJZQEe2Jr)zN;(0(E8W>%LCuf z8d~bE=Fnj5-`b0#xygRLIa@H9YwXL1zl-jjJNn-hJn?$A`lva-b00pz2cz%iK4q=C^}ip9Fa6fh zIN_Ib&EU=RtX(^`)&Abq(OK!`_6gB zINLXPU|75G`@HW{8t0Ahx_XQa)^dd3)>gAIuYTsun?BfQFFaX;Q|siN8iUup@f}QW zVgBb2to7&YS6kxsUilUG_6%2gY;Ia5*#e>1+)?qlXpE_|Em_$bXaGzajb2w=8DAcMd8xPV!C8(cL$tTX zpF6PcZ~oS;?`~@c!~AG>kF!inc+`JqKehc1<{SLc>iq6+!1LtMUJI|a&Ue`FuHK)% zzO!CsXzj4N6Xw*A_VJ)hYdCU!OW|@4vQEQ(!)4efXY&1~Melo2) z>h$aEZ{SzcnfcK0#Zy>`&-vxRU+apu@NDTptG)#=b`4Ei>s)UQ#?iZ=8x1v!zpFNH zq?&W@{=Ey0h0}H3+qzZPw+DZ6Zsx~R@6%h=23s?F59Yx(H$2XedGe;W>w(|*;X!@B zc=Wv*wqAPMgLBKf-aov`g*UphLr3fV)TfNV?Kl6x7Y@C=oj7moyt9X$A8+d^xag@n z{my*%`#q>LpKI@@A1t)7x<_wQ_}5+K-~8jP?x&}-nLB2DCynlTHTx|5x1Zcn4>fY& zjlEi{dRrHsesmXS`bjSB(f_5fvD^ReobRlSw-FXzMnh&CnbwSc@~rotw>Wp`Qk@K~ zhdO%teNGO>J-v}n`Mo{s{MPZ%o|qp!t0~UQKYp0Ep7GS$yx+cl{6~ z7Z$nkT`8Zsm1%#c z+dH*$?%v1ii%F*PFwF`=hZizzr_u?>ykqOndCv$$IzBSi0a~_21WxQ8+iYa(U)9 z*Qa-UkR4h4^PLLo%FlmOJ71b2o7B|$dw#S`pEcZh3-isZdcM5ewM);chcKR`>UV3>?gzS&CJ3(cguV3TGz$zOwp_yZr@v*H$e;7snIoO z-ddX9HDMf{(8DZum)`Uld$h5V4Y>FM8?CJL)A!beqwMJMjK4o>sU0j<-JJ|Vzx$od z^3;2t-kpmK|MF|R`CDi%f18Q5`-g-2>IjV2%l4pkdh^XSLx!)P`36^mz6txdb1@b; ze5>c&+}VF~7AAS(krln&(>a5iITqev1Q&0ychxf(Z>F4s21Nz-`(C)3s|dT`rB*p)eN3*-r*Vz!kOMv0fK~`@k>ls^bBjXu}_8t^7^o-=aLwXWr6AzjapM>N|UI;s2Va9}ZU6;rZ3l8YYMA ze|7X5KH9#t;E8;0%vXoc)t8*|Aiar^xUY6))jJskMHEX_tSfEsYV}b z>NCH;E$*wIe9))bod>wTtMe-!@DdCD;^dc{?|pMj7SicC>ki(*y*S&K-T@3aU%vMY z|Mp+HttGR_-qfKy{*^I4YW25Z4d%0VPyeoV64W!`m7NiaC&X7TOSzU z)6bcE>a|kCD`$Cmzhz~zJ)u`v&JK?5eYE=S!6UQozq5h!Po2z`rkUs6&1cN_eZZ9u zXJ5Q<>u$b_;Cp+(xcVn6?i#Z&<_AWu)r-#5Cx6d3_UM7TF~$RVGae~HUp zn!;au@j3mV{pG2;f7VC8?nWniCNuXakJeQ^p@ZDu(4BK-X757}K2tM#R1?nT@aQwP zbB2c*ujHT%s*ks=p475?e9qc4`?kWPS3FZ2osEm;_B}j}=Wi$TEWGrs;^;H~FpBnYpp;WBUUC?j=KOPcG(Jt=;`( zPfxC2dtul&Jufz1$;J0IYyNlMebYlmXYJlP&+nf7edn7;bJV`p#h<*Z=jN~`=2I^< zR^REn6P~}1x~GRdYw^-gO})nYI(Khp1$KT<;uf~v5FX}oZ6B3&=-mG1cru^dvLC#f zqkgTUb#Xg$b5^f%NG{(qw>_nIG`IfIoCD8?&+Ejdm{Zj!yXT zwm93*cgx#NMvc$iS%(j9X%CHqw|twCG}ha722*dJgUP!tW?==Mvy;Yq_SOxLeCFN# zRyT%yw3dheM@!{8`ouT$Gnalgk8_urJU^c1tuDOIif>CCnISxyF^+rAO!MNsdf2CD z>iS-KKJ@Y~@ClP%9^4o*9?5$d359i*+nYry94tlvq8(QVp{<4qRTC>h<-)|1e z&3Ve3W;17Ffx}v}^rH)IorPl#Ws7GtvVxWC?#Zq=dq4UsH}2m3WGX&qW{u-*@Rn=m zZVu*ZW&dgym-7Sj?E|CN@^moCZ1bI(?$mS5g^qiEdLtJw(IGBlzW4C__DQGtCd1XD zH|E~oh`I8;&;y_5?%uweH=>`l@h88Rt9tOYdb&o|;#sWdr*_Yuez>OBeb!7ZeeT@6 z3An8I&sj8Iwc-yA^z{5w7k_=jqpi958`QTAfAwtN^w%9V?ftgP*O;2Udz}Zp;K6la zj&|;PW;B7jz8}uQss5cUtihw6c0uU6?_0Lk_8=_rJ7ey_$$2=@3`fu4FEUO|-8;N*ojbUMZ++W8*>R6Xoynl)w14M> zuX}nfti>01;{UZ@?s$XDkjzqx_P-oEw>r{?`_T+GD;nXVuj`|)GT6T6xxa1hgeguu zvO34}-3*3n2Y+#E{*S+_=Z)GsSar7;w_fzI7Jlu`lbn;;!Mc0sm$t;RZ}r@B!gjy> zqgB1`!BgFH$E;>%e)ZGmReG#fIHCK=i8pHQ#x(~z&_WNI$a1xfF6QvV94qsw4ITI0 zWK(%;CgBCXvw}sR&U(+{O)c!<(*6B@%)dRqb!q$3&#Y#66TkOjg}3ZwzV*)AZ037* zM$%xF@Js@Etg0>u#rFWuBy`$tyRZ!EabbM;J)@-Xi-+W3~x!#s6snD4o=WOg!PCUuh+cdU(981uVl z{GRGppLJXNdv82uLT~77Uz6#N#;tp{^}Y3TZoaN(Z|S>#=t3`kb=J4RetQR(tibI1 z;l66=Z}xd#oM7qgA|t$jQRn8LtWOhW5iXy1>Y6T(e&1VeiyZuV?iRb-uOutSo${Z)cb-t>ZKOv+ud?t&zRrC6hA*-{b2M##<9Y!ZP-M!ME zbDs5G-T$q(-pjx2H5P9=*$p1OyB@8(4^A|*>Ybyv=4KWxg@b?Xb>^Pcb9HYVbTkHf zmqXlpcj`HtdujDI)3}3!u79t}&U);-c|zNl9(roUvuk`yUi+^7xVCwtJMPhiht<%0 zlgns?ck$4^y>Oz{UN^@}gWhX#8|RO_nA;wGv(kOfpzp?&mp31DRb4-MFs{#?)#%8a z3WNUc2`n@iKQb9FU-RJHoPLkSC6nc!`*Sw$om1jklkx+Tdi8>nd+zVMlT-7u)~vFl zKQXTT%yoZwsUGzurt>qtJ?2c^!_9s*K5z7TQNQ)`M#i^4YQ2X3FYfArOZV1J9WKw4 z!_CS3dKzx@aNoFbM{a1LkGaJQt$RmpeJbO=KefzF_+-c%`c3djU+Y3A>*0f&`}R}y z=8H^bX76Wq{nmZYSi@#Bb^FjeDVtwkm*(VYoY7Q#p?~*NPn~E)&-b0a6*OIV!`qpD z@dhW@#mWA{I-2)xaOtzoc-QGK4EIe2Q)5m&AH2(X$!0C-AcEGm}qZZh;Q(TfIr!JRl@Ndr2c@4EFnXW`=A{A8we ze3X{ZV;<*@&eYCKYud0((8~nQ;u3T%Md_E6mcqolu_vFS}c-fmi=*gA)UN4UMo`y1jG4c2>^*g`m!I1w+Ab{z+Z=c9HwGR~|7ui? zv-An0xzJtxvdm+!$`*ZjOu&gp*oA53PeU%$w7v{aA$d!^U8 zq}ItUxN^RI{^+!yy!Sr8Q{!{bdTAZ~`>xFij`_&I81AXrs;lSJ+Y>cq=AJoMUU1JI zUBVjubr-*Uv#vLnG5fx7`F+mHSMtGOeEi9mG}#mV@;X{q3w?jgZl5`XGhR#kr91JM zxmW2^4*6Diyld8*Ji^d7N)FuD*;wYLmin39yW^$zpKoHXp8LQjkIn9$Lmw-7pr5sL zz(Z}<(T8rY{$8%xpLaUCrzRcu8J@;q_N?1G9(De$GtZh{&{}uw!BLG&ecw2t9 z(Rbeo1D<{R@X{Vb3-fU9?0DwB>ga9^^bHnwcmMeoo<8nt{o>l%%yEXFIh~~mpIJi> z^Ea>FUp;(7dWRpqp}+6q3}0fSFIVs}t=Xl-+c&eVX$#tFUPeU#p* z^?dI$8-GX1ix1C`Yxa}nXeqAMt$ocWE*`$>zT%y&N;;Naew9es~Z&cgQna;;A1m>yrQKCceGW#zJZHVfZ_gPxm1y69o8o_jBz ztk*rfc=S2nrm)6;=?@QR>Ds9`C+p@j^B-sF(Hz|1bGPgAN*n&tN6m6Z3wYqyx_7gu z<{mgQH|=|Nyd<_~-6t&vYqZPDoU8WK!KgYK(Wct1M|abEG%X&uu{L(&R)6%?zWv0% zb#q2X_vg&u)ZEn*b+o3g) zS--_#ufL`Az+Nlg({PZ}U@iXWXl{7v9nS2P4*wlzci0lyfXu4u3vL|{~zA8PL z{TUBW!c@KHnbZExm^;nP`!|QaY53RM-1Qla<8gbU4*uRvFZI&QueoZL`Lohj^U`Qv zs^zz+_g^k>LLV4fo#V~~&)fU*y=O4d&wJ2U_stW&widkI)93Uyxr8U{%f9e5z0J{_ zeqU+Q8>5rHeTUIxJ@X!+K{(1CFJ7rjlipbwgpL=mRPjq+h;AW1CyL#kF+Q#4BeR)(3p3ZnQ^?tp`)1_l^lXLq1 z^kcr{B+KL{pVYB_$!#=LFL-F=%)B`GW_Y8T(~r4b+k@V#F*cX?-cA@t&9H1Xx=m5HD{^ojbrZ0R{plP-`JVK|ASlH^KG=pnah36 ze4P_hx#)XQ|M&jo2e<3{T}+ncZ?x@P>8<+S>3gqpVdan7yDsNo;lrykZjQ#37qAzv z=38HW%hE=#F`Wmv@7lUT)9M@zVCCG!Gg|f=SS;z>EVpi7i&=MbzqKcWs>93v?)}Oo zxDLMN^>+ALzo8Ev_r$kxbcp|8H|Cvj%{1oX{ktEG)e-n_t^KYKeJ{zCd923CZSyT% zqpjD*lNazc>ppaJ9?Oq^`GcFxz(QZnrsulXk9Toi7jO4D>*aa%PhZ{B!zy2c!5sO- zDt*?0x1B$;?8W1=>YUFyd4Yj0Jm)=kKNzWP{59U_0DIRTPG>A^=LpW5b@sh?oZ)YV|YyFp3aqIhL-x%SmI18ilyEDYA*5zh4`oWMEzggpgKiRuBxP#ODr$;*Vw=Z1R z=t&-Guf89i!fx&Sedz7TT$s;$j-KY&S?M81_`$J$Wtw$*=|MAEsjt6>6Rhw4+gD@9 zJeY;yy>f<^8P4XjXU#e%V`Y!_;$lBsttq~#b8gpd;c;if%lH-_Z#ehc|6=O?^|_j2PCfRSGrxDI@62w!_jfjAtenV^ z)w;-~u;|Tq?fU8*zx{3AeAhcvRxyJXbD$kgoyGs|ZyvB%Qy-kHb*G;(Qs??Ct(~Fu zfX|BdIx`0rXWi-VC;P#8*X&uHo7=5jT&lsty0fj#9$HuXB5%LTt7XsA-{;)dn?CRQ z`mXzzlbSRto5l$&aBne)i~bkF#*CxRp=UnqxAhM|E+km%V1YZ}c{IC7E4UWt%=g`RT-=9S{MM#7m^>O|aL%0W-d=wr$&GgD`j5OrD;QoiD;zW^zh6)K zF3^b=JSHZyU5kurrthkD)qMsBjP1Mnts6W%F!!F_SF`$o{r2X$H4pcC-t)XA-_WTu zTdTDwJKn8U^;rkltTmhaot?Vw!O_Z0^ESuiJz8GQ>_>OcR{wZJ>-JI~%q@-CG|$n*WQ(b$D1)tM<;V zu_uGx7jI-j?Z%M4%m=+UJ{j0=_Mz|QnBLLxei!}byfYb{wd-?6gI49wJ(`>I;9TqA zSmQ^g%xv%UY-VI@@8l`JRiAHSR`~85so;vI??<0%KU_GYJ>d`qdE?se- z-oU%(@Fw5N;MTFaM^Dbn8yKUl{SIEu?D_P8(KYvrH?x<9zdQbX$wY`iLq$>w?w=XLkq z-$QfOT;|mIkfm|NH5p}p>(cwL<`0b0q2K+jq;ELVZ|iToc&EVk4DX5d)TBH0-h23^ zT^hmcyN5gT)LS_t{9QbsT9tWn;u-E=tmK(@xUxU@!zJ9wd3tzbYy0qedf{g^mhh_% zPwyMw+TgkU4A;?@^StdBPV#DR4zTwv=8g6|p24TTc&g^Q_NqBkG~$!~w~lV%f_-P$ zd5k{#)0=C4Kk&HI+3(f$$r5j@J4@D+1z331s!VrwF@Lj0gK_+Qb*(+lT<;?X&V?U+ z*7ASUKjx(A*3oYjo_{%bCws(`zun4O`o-bis&nV{zW;M({omNFIs7p%?R=x=Mek~v zS^70Ej_oNw#Xr7Udz|6y`>M|!^Q?&t7Arkkt(*H?+jC@WK4-c8M++HMjoISioVD8b zUHDMn_#ZsaN49-8{%d|Ya`x79VTV3udmSukvqyBM7P4TDo;)v3;f`iwkp1E5JMq=M zem)oGVvSeuxNF{-Rn0TTR6b~628`m!efLEs^mpHnpI5iAJacoy^>q(EceQ5!m!G;% zy_&J6#autuV?1katj(P)g|}~CSe=8oh4Y)?YMZzFKHuD6z1rHxyfZz&`P>>d$JOd@ zuP|~RzRa)ZH#e}!R`X=SJlYbU{ma+*lQnnmJow7nn)h8d6TIoo61(}w2ldaD9@fCV z`p-R{r1!~WvaK2JnSZss_wFNa*4umIz|(rvm-E6t_3)FL;MR8u536$In}x5}!kY}Z zPh4x5Zv>sJqqpC%YJ1K-I`ppKvs#b(RCjNCel*H&^+?z4`_X!4@xh8$=3T$>@FhOw zh(2a`lkDBQqc3OKlQ~$-`fSaqapxQNIZO+}bU;I~x zw2$U_x4*T6H{Zl)LUXQUA`j%Pxyx5^Hcn{ZOrF!z_~%akjM;AyTHqG0`coVA^o~yY z8ngM6?|GBa2Vc*GK6Ji$nqzV-fBf(TfGm)H^==wB?j5x ztGLKOd(BeQYW?Vj*IGRXcKb#c92ex_@*9=4zdqFw2v3wZHg2NB4z28dXDsa!fq5!i67JFv*~2 zSD(L)d)|6){Hcd$^Ni1Pmma_Pz|?Gd^S9AGjfF=3?eUf8t4(ajgCRHWGh1>iZ~dp$~t*{mSmQE}rIXt?%3Y>d35mKXZ-! zXpz?AFMCF}vX4Yb@PAqfdlv56B&+AaIHn0 zeLlJTeiL|Ljcg{9(f}TBvbqX$`-1CB&-RXvI2XQnlqEiIY~Rs)={b0n`$#=>7t=k0#+(~B;jAAP}3FDo;>t}bh&UMs$>&0fK)HGdcW_yWg$ z_A4I#jd|bZ_N94hH-TiM&I~a4fTHWYrNI(OmZI1ui6)%cs@8fcV|FO#?Snp z3|1rGrFxkyEcWngRR-+KgEVV>_x58vVKc`Y#eL^1T{X||TaV}7d$>E7^;`X^HTkDr zz3tz9oO^ce%r{zdrZC0_`g`pjX;6l@KQQTS?fGrhzOV-$T`!luEqKDm%)?C<>Yu;2 zr)TwlcmfCh%!k^}A6)pTF)w~HLwBu{4}KFP^dv4bsRf?qt-14~M!)p_a!Q;3PQXY` z%_?W=tlTxva5u)}%o~cw{L*(Y!>4tdYjGdE<%kT0NzRF(w?_lBcwlbt!-spon>U-c z%Gt&pKeunswx94qU+2K=VxPIt()+%P?w+(Pk`K(TjjykJvh+INea?)R?&-R}`{tkC)iOQ2p?UL7oPFJ=UbMK*+kR#L zSI*M-FD&8vJy!qGW6jBl4&URkc$k-$$ua8oGrg1Rtt0hR-#JGgx~Sc}p6$Mz>o*~1 zWdko5=x!e~+x+c8Iye_Ud(Cm5*yQCb;Jo!ec{KKK?(2Q@w9efRMxUSA@gnYDE%LAI zmZN57?#kuhzc|ci4i`?%EY?SEfhnw`ar>1g*n1CV^eyMPBb&xKJv9d=ecdy6_TWC> z|Gp#rU`n5LD)3w&L-cNn^@W}@{eE*SQ`(RFMX@f)hZfnY50zZ|#5s*{&{#AUr7x(3fZlV!Y(vP?c{an|N` zjeNYO|J7PNrG50@^XS#O^Jj)^-7gK)?I&kT%RS3{YIwD@*3N0NVb9u_&Y}*9dEavS#g#rYL%&b+x3;{;U-cb~;0ISL zd8u!GpMLh~U%nrn!G8NLpOeMSIXE%@a)Rl4d~@U*YkTE<;bvZBV~_rR?;3u^f956^ z)hAo{&YJ$-p4K+=;NkD);k*0wDtx`?n~C}Ck9UW!diXW>lac%7jXalk=5qhDUSTrJN}pzKzpZWa$hUv>;YGa6-Pn3_ zeP6Sm@2Rx#Lq~c;E9)1o`la#45|=gITwpSzvwavBkN3*FHCY3k{7uQ5y)Wl{qkG=W z-HQ(Rx;N(X{>9OZu{djne7y1o;Nb1+%pKnHY~Pvry(c5q{QG2&Uafcj@S%-f>8ZEi zyY=@^ukN@%xREC~_v*J*9sJkRZ8wc#l0{q%{UD&UNJ}`a@Z<%`F!v}ZF!?C!bRkbIt zx<5a3-?+|*+3HijW{Q{Jay~h{v-C@|xzk(o3=aB!`iC3M@X*(I?G29GYvO8#+?`Ql zZ$8w8Q#1S99_M3z<%rInIsJVf7`y?P^xqo%Ce^1IVO1ZwfkBVfy4SDoNAs(LUh3#r ztkND_Xh3IUpZl8Uu50ks-Q4Gj{+I8HAeVB*>h|7*Y5#a!t*{o;3i=t-Z2o%L(3G4z)7rS{aHm}I1y-WD(PB_}w(E6$^P zJX8PD@T(U;@@;H?TQ811F>`0O{eS3@m(e>tXm9M!aro=L&(lBOj&+Xrc~`Va1AkYc zbFh0p_R5Sb#7(9*mvaFlxi0;K&pm76b$@(Q*L->nti%C}ch#LUYY${|Fu1?GO})8; zv#>p{Y&`F~pW4Oayxiw^fkUfw)2Ef*^kmG^herBq&2J_-xVw7CGk4X`_jt`-zVtn= z?!egE>1RIQr+MgKOuo^Wp=Z{@LL(TrcfAR@P7@s-58PC1FH)g)SGTHm^gNDZX$OaD0-Z}N` zV7)mor@Ar`hIN5SU2oxDFuwZu`&kXIj(P9Z#ru1&l1V-^ND^mEqTw-0g6zYned*?(jTKI@O} zdBe;EE#mY0a;7&kq2^U{oZ5Y}i=Ulvb>pD1KE=GM1^UE6V z^5t2)$8X_%YSZ0cn(+L!s;2LuHLte!UBr#{AFR=Zz8813J(=8i%0^l6KAG2Kuo|Dc zQ(q6075L=4_k)2C^!0sv(cchtaNafX*w@OQJo=1x*67>*(RH0$4{xM*`N{~7@^trS zZ9S|{=eT#H4gcujEMNXc>R!LBq4mB)=Y?6BjGkQCYv$lpUvmx5%;8V{Hy<-O*FNAI zyi3pc={%NG8oL(vm+$CR9lcud0|wg2gnRV${SW5+`#$ybm3oaG8m^f?G~q3J(XsDv zdc;fC_Zc5(@I3wgPSC#@H2>|f^H@&)HVf;!UAc z&R#RR%h|;aALLMXaQ@C5&(Dl{oP~8-U)IpXdU1?L`q8r5Hka`m{WXKO!tC>`eg5zT zuHKKFl=rI)C+K7Vx|)v+kYmq%)oU(L^7*{=(s2dgPHk z9J{XWo3pWlbLStw)}-&D=FpXQ%%iPV_4@67N0whbz61YV(U3YCd;GAcujlv9IWKPA zk;Pf9oxQW$zIi+K%46Z(nmnI%ct2-Xr#b0^yUt*+f}ftLb!X94XTl0DtEMeRGr6;_=^EJQv##5c` z&0ew(zx4L{@Fger+20t&#a!n%-{9=I!&lQbJE!&=-$b9Y#~Sd_-+16>Hm@e$B75*ajUMXDGw;*-i*K~nT+gJ2 z-Ird!$Gw*?c!cxjW$)ti%<{L6U!FT>-ebPw(ia--{on`Qtyey!*SeIC^B|wsm;E`9 z&8{<)cQ|t%eXR6=d21#kXL)Ba^?8@PGd^0J2Y2Fhes|s2%Ef2iOTMap=a4w>p59*P z-K4|#>BIf=PV=VMn|IAVn78h4eQ1CKOzH7V-Rmc>!ga0Zo^K5e_GY}z1l^S%`)6Go z>Z9e=nDdQ)_4^xV4$q4}Z%7>s;p%O;%bD8u`QlSHUl{Q3-IHzCLyI|;k>>pl>w9LH z@42IibM-O1wdTf~{yyxNetRiQ{ib)$jo1F4Z#3}ffjcv7ZKZE8Hq$d-{TJ_G8mI2X z+n#qOd`*oRR`I|KPhhp4!O#7N2J2*gvbglXAz!x+^v>Pn@%e6>6Zya?FVaFyxLbQ> zmAQ1$bLTjBG52-9S%zQy^*Zz3I}5$<^tXzw#F|lcv+0Z)E>-R zr!e1I2BV0d^gTy zdt+5!Wkp`jPuO=>)T+NRFCW(5_v1%1cYn_RV2)0{)8@IfOY4Pu?!jS2L#_Iam+TFV z@aS97jIr)nzNfr@bM@UXfA+q8I(tUF)>HTVHplf;ednHc$KR~*-W>Bbf$=xK|IQK% zJkLo(pV4sezu#dr55KU|qxSao$2WS-e`AtYV};*6ht|z-`+mJEgZpi$t@neO_|^~_ zi+6rIKU$b&UEJ`i%*e&rk)?7sA6TsJla8vRv-yIHx-dsK_xPyu=ucnp?A^?zj=Vz$ zT=f0-SsCQ~av#q2aP%2Z`>eCae_}D0nBBK;cHRR2@b!u=-pYM=GN0b-Pp-*M8ie=i z$yxf6N1mj~yvnEj4~J&-o!|SJ4X??Qd$creXP=t!>RiM#Zxz|4&UfF~+1os~KWX9} zyrRpRhZ}FT&K@uHf~h?50Ji_`s;@BM0>@sN(c1kx!@Ia=`BsL*kfyKedP4;&_)|0@aXBc2v79s{>%(6Yu-2B z%qF%t%AY(jLl5hI2cxU&@U`}OBjca}d~kFY7q#X@+pPX}=Iuux^LbBAD>?h`AU#Q= zvU)w;ec`A5+1uSW-$v`6{b+?tTJt?q+xVOL&h6|wo5`a0g&DZ7*X$ARuYTq=d+W)0 z-H+e)eq%A8{&JrBT^s$4r<|_7@{Di1vQ9m7MB~i?uCt<#+2T|!_yQli{x+VvX9MHM zk9{`QVoaXr3{Gk@ufNUgqxb3~pIPlu-rB?730FA0XXLdyxvSMUXkoPu`8Bt)skf|N z)x|>%FFDg(;pdlUFisD+d@tP_eAX8J*2|5PnwXQm`yF3B_KZ7m{yiTZc#(%Yo9!D7eJ&5-BeidR?v>^3GyBQvcYWWKjHK7T zMoa7S4EL{&hz#^jqE@G@6D)b74} zo}OCKpxMY1zQ*J|rR$ojOrrl!!>Kt7 z{Y|}`mygnvnD2S;8Z-KCe}QrFtNz3H|57{$+dz-(7(mmSg2Se-RyYEyy{J#I5z;U1YsqZ@4 z^IUs8mR|ilPpxNq-tPfU`@C>!-df2lS28H>t)Cfq65E@i+~VY2l!fQ` zR=m=m@74R&r|$tBTJ81bRWG&9sNObwqt|?Bl;)o4{u_(A)w`I#e;fD(i*@Vk%|5zk z>ZQ$m(pUFAfBBhj{@f)8{=wMU(M<2P!o9w%4IFtVulu_Ki{9kStXtc7VCKI6@^t5s zIlzNwolhQcuugv4*M2A4ul>~I$KQf7n70^AIJvveZG`_f(E>O6C!t?RKzC-u&EvfbKZ*{kQ2p}EP$?@e!G57xV*MFgr*Y84Dn0V} zuiAZgc*b+p^M|%Kt2#52oYYy9=f<@+VJkoL-8yns`JVgI9B;KfQKu#jaZ0aqc2DGb zFxmro3{Ul<(R0GWN7s9PJj^U}Xkis5+MLT*-5ApGY6Mdr|I+GN@Ze&uJ+#;I=C??` zu9vs=dUTIZW`$W?!T_f+dd50>W@_wNrD<{*4*QJy-X*8*FO2bX)n>Li$9L`3BRuY? zbH<-?P*!-P7aW~Kb7%pNo|@@e=0a_>(fiJ(7VgsTVi#WHA5F8apW$jR&6im|nSe2P z(xv>^=bC%)i@)lhcT?A0e3RFV>x=n;hd-^iZ*pUvoH$z_S==ibrcQXk0P`0M?_fUP zUw9S1-%cEQlMA1jvvz&Xwf9Wst~_`PYqlnI?+V9XZ!}!=CnkIO@xK#zcr{A*o0GH& z!*}**PsWvhczJg;ZoRcncH_^ua5>A&t+}4O!RPMFKRvmUgLGN@-E;KJJ4>VVp{aZK zJ~OM_=Wl24?d|5^JDB3DFv)^*tyk@t!8?8Q zR$V^sdEfgjZmxWnn&tf4Z~W8KIZU1xw=m#ECo34OVKDAHVWOk^8sB-kW{un5n9d;U z-*dvqzSM{h)lP4`$Iet{Q>W%R-(?SY-8Y)iSF7&lJuXgtr$0SAgP(jGXIJ_zZG9e| zz_2dy;j1;4p3y8k&s*24gJMamYvZR)3vaW2~ys8h&+CoZ z)};HzU7g}-jZ;I{%isQ*PnoQrt>ML5;Oq6^gN>Jqqwb%czMmTV){3`WPaiz2;Z7K8osH3+qQ__YzC3{$cW8gG;D)o#sR_RJb7qx|R{HX8 z_s#Rc-`U;%H`l_S-^<(Q#{*id-MKC1@PXSaIJ4UG@JGGx8sj%p@#-Be{PAvFGX3aX zF5T4(-Y@*>YaRX$Z{N~~j+gt*D*NCe8)+CFp|9=}7oDEF-w!X@hi3R$;Y^NOv;5QF zYi5$)&D1ZfpEvn^3vxg=T&=&exBtcNy55(5-5G!Vm#)e1&EY-s)^IzEdKdqa6YN}T zu6tI$-{^N%8KYO4RC{}uU(Qk*U^~syBfu4Pz{VwDkO~w7<>TLh?P)Bdhbx-LCEyY1^@=>q( z?7#Lsn;PzYYC^}&p>Mb_(SUx|?w|YCa_QCE(EGKjHawvhzScN-FfZ@&!XDjd)tWte zBQR>+U*KsI{j94&m9=54d21% zUK*2g_S3U{jp^^;$5Uu#W_v!d^39bm{miG&s_7>W*;{)&yMAhqPkO-ZJXhOfGd|T@ ze*f_NRd1}{Y|;1f|N4Z>d7#z4{8qlBzcNbA&I}EiAs)$zjCCecas*c^+?^qrjsF|h zbLPpcrJ0$|WZy)-n(Nfmll`~v?wfaUFFmD$d#Xe$hs=6^?4g zOuq+zxWHaLPn~;l7lw7BC)dL5-@d8);rLVQylZog4)x-XHQ${#cV<0bSm6b3X&oQI z2T#tbH*$UYxA)X}Z)&_byx?o~cR^of2JgM5XYZ5G*kArMLyxdetuy+_?(w=htNzZA zbJUfGaJ7dE9m-&_&TRU19`x(&?U&4@=dE+@b@cHDRU?O5uio+Z7eBtpgEf65Cij}V zGk{}fM~i2kO!l7oWO(YHQC`BFJ@;?Mg*VxtK{~G^dW% zS~!D+=UVB9>%wk7{2f2NSFZP43-hg!6L@zX=#XyB{&*NpdeK}fz3p}TUCV#^j z-yyv8_x#-3qi{Jh19qLi_FXGIi#L5y>$~^dc$J%epZI6y=5#+^S(77Ygq!btXU$yB zfLUwaR}VG%f6vm)Jz3{jIMUJhlWq6>cviMMf8{KFtzqWSgYV^vx%8wyzu&Egyni+P z;#vznUhjA)jhgqneCc?5?9=n>H*@Q~-wsc^MlbWM(s5=_PxlX2-LEgc1A6BDdS?1- zuNh@1+^?Jmci+c3qGh?KN7#I4?!P_UTx6L&#z*Tt!+mNO&fV9T?br3rYH~^a%&UfW zys*BRpl`B#xK`h(*PgRA2yZ#(ZQefK9F5$wCSKL(*S$IVuD#1&zL)poF|;I3V~?NI z^I~(?Z!me&bFF`5BR#wW9{dhqwD;CJ8PEQHThHUO=IH^WG0{`&?DxL0!D5vraPbX3 z>rXv->dhu2xX{*`<{mw}&di=i-^&R%Z(*+a4!{pQ>rf7To<8BlZ1AF2`YR*-T4VR6 z*C)fk$3xAL#jQcJ>mBWdab{Xa==$~UZ>jH?Sq*4AJ{w0m(jPppuB)eY@g4tSkdHk& z*ZU5P@jW_IL;GkxdqYdD+*9N1)wwk;nXnE<_3J0h_CFbc-RqMZGty!`)XA~Vi9=oQ zAnv>u-sBQGYK~cPs7Lj${;6Gac(kU(g!@;|_-j3dd*;ucJ~Z_C(G2Fr6Fs_5Z}DzN zI~=*fcVULl?)~8y&!gM3WOBG-rthaWzaMk|9~lmw-^*`;Z>`D{PF8v}pBV|K-+_!u zEBcpLGy7gq=l$&GudMB}a~(c3eQ~~h_gOq>68~_QhknQT#)1os<*mE+^R2J@2ammG z2fOZiez=F%JbV|z&o`-_K7Y<=&NzB2&a9rF{?U4AERVzS*6Y0b+lP6Ssm|TEIP#1J zR{G&8T=qGyT6%x_Mn}%x*z{|yKDc&2+l9> zJp8M7=Z1rfsKbZe_4a6|&s;~tkDp(?%n8?Tz?pk+-?i?)daU2yC9~~izv1{!Pwnen z#lfB5U3f45{r62?sSzEmadYHb|9-pf9nI`B-_;o3>@TOZiGQ;0cMtB+vpki{{K(Gd zn5~{?-v0IW=+tUG;3>Aq| z?wO;RthQG6bJgiV zFFeLordju$=lgzm(3Y6JA3n|F!*9kMT%4`Z?+G6q*`xh@kIgyX!}Hzzl?zzb;cuH- zt#BvKeg9@}O*y|fp|8AmJ>G~J`fJs1{7wF?XXk#kcdl_y&iWpbm%N=Hy{m6@qII(v z{5|96@_6S#c8M)bw};z*YKuH7i~2RM_rmjxImOZb&>mXd=XZA&`3-~PnlxA&b6|4+ zmp0v-cl#&P>l+x&svRwn0dJK2wSRx9V|!nm;l=}Rf>zg+Jve9;=jfZfzk0x7U0q z&*%FO#-~>CfR9JvD%-zmJyV#KNBlf{>Un?mQT4-Z&{!#w?)d-tFFYaJcKSu@PD z!qImz3(n0M*^hR#sbBbL>)FQq!%Om|#+{KLJYM>9_UzSDJbEK$@Ui-;_rd@2o^#HM ze8EUAan~HPUpe^h&a&qs12ln$2F)way&KN-%w1+CJ)@bK$%6h|(V$G_tL`}`9=*DE z2H>feS!>9-cQ$#_KbY$Gn>1Es*x%;;?SNgF_x$~CnzhcC1MJnkZ>IN5{M8egE%#{5 zertsP&JoVPXTtmFBDb2=@8i4MJM%WjdXtVH@9As&Y+g0nH86kkK^vLitJd_IXL{ku zzP|h6~;|o)@YhT(sZ!n8n+RZ(<-8c8cLC=ro>3zAR-#Yi5HY5A2*}fl* zzdEI5HH;59Ums}P{>Ulscn4(~dP>LW%+>w(Jzj+qcjM=;xmOE)%{dzIAZ*^6Rk`)t zPrtq`&r8?E(YY8y9Da9nFvGocD=*%P-s^7gTf#udhoo4Uv zhZ?=?23&bxeR@;lTH|VK9hx_v&v)OB8~<@ z!9iv2jNpJ}C<4+UbdlzWs8{d3tG(A+dw-wbIZ4J_oImz!x3xa&vp#D-`#j%YJC5n` zEw7AOTv^ZfVdMB7C-)*IoblDUj=k4$&5cvWb-v)4f8=6zdu~P)Nys({Y{UEYvatt`8Z!Rh?XKnbYd) z+}u8Jf|GOOj7q=3wREgJSc3y|?K?+uS=UxB;Fz6pnDgDmMeqJRRc`3N9e0Z(8uT1p z4=~`6T1&1rj#~Eh?t>p|^twL#6T9MeU$vzvM*7FNaIr%pkJI_#+t)fKaow(P&=o&$ z=GbDN=cv_0c>22YBVPHElgIP@u#Gc8Jd2+($Pb>owS*6`z_xs}e%hiQiVZ&Y#Kp#Y zkBiN`=QUJ6Vmn50wY`kVdeyG>YmZp)bIj0KV{OEnd@LS#+K10ZZ!yB2+_3L^tP#g; z3)eXox4w@rJs3I9x`=;_@mCIxU7DGH)Dw=>nEC3Hu~dVM#~GTjJ!Y-Jq4Oq=^K@Ir zy{}laR&L{K6E~|x)LMAXaSB8IXAE*F8*ru1o{ z;Muq+{!)|94_xbmXK}9cz4E{h9>myLw_IJ1zJJ2J+0|JaUw6^DM0^PtTG4#7^9%ZPRPE-_on{AeQ!9xv*|r zTU_Ssn{R3{>y|dH9{8_Z&9>Ri^WB;o&KCFJqW-13=MC4@x7#vKewKUqM?AyTI4y7Z zx_|BU^__9!%AUuKd?QBkwVa$wp2Jv!ldl)w%tN^^&3w$Cb2{4)x7)F%Sj5UT;ft-s z3jP^4@^wEyD~{9Rrj4ux9`?ipyRT=ACC9{1ta>i+G5)a+HfN=5>I^1kY7o!8#_l+| zPt3{_&9v{D6&GLk{jd@2&X4@P_q~ogozLcr-<(JBU>`1B1LAiZ#>6X|;tQ{gIq}ih z)pp`7IrWoT<7qIoAi}So%OU;o(tD?PR#0~RxL*NDLak5+t8`35}&=ytF*ul?93zhF~_dBIoH{*)g}1DwddJ=Y~1p&I5PLR zbuJvIpNrTFTeqJ%73X<9<2PS)vp)HRpUpiszT^Wh;@7&LkHV{53?pLW4_C(t-#jC| zUWJPWeoV6|avIH`a;g7_;{H5#MbJuk+a*SIsL%})o>Vi|obHC}}_>Z?dGXC?$XO2I)^I78^cRPE$^X_Ml zzqs2u)$S_ewcSP5q`ixFXBlg|)6(uJb7}8h+a|;Y-*ocwKLFj4IR+W@=u?3Mmi?rw4;`FhEhkdwL0Nr z^Lee#fb-S4^Km=;Z9VwG@oSlbZr3S^pd?HuF+C%S-*?oFU;<1l5-A2cTg}!a>{*tTiCD*z?+&A`j zcm}Snhp+c7*NB-sGlu%s86;PDcg||ZI^(V0@rtY2wD^VLe2L+H&Kdo{FCXXX`<34g zZ;h8ZI+ygZbyJ7c_E?!gb= z``q#A`<^#Gf9Z|J-#qX}<8L2yzO^qu@Pd);0W#KhX>0eFv9!OV-A~5a?z^=6$Xwc2 zzHe#YD|6btWlX!5;C{~qfLv z&)u%hVERoQ)-zaVO|jGm9Om?$yV)6^IBy%iU2kf#u2sAl$6|(#*wE`9`{34IJx^(8 z_Vc+h|F&NKmH(7)=hE}Gaqv+M`rZb<#&KT4XTi*Q!&vi!CwL zwf8x9eC4w9t36o8OZ)o=T`;oAUHSLgg@ftZ=TzT4UW}c&!e4ZKU-kiSrPl1*O)bMX8he;+O9dEX0jaVMLKi73eoIkvs)4b-j z(=~A5)bZKF7n`jfep`F2O*UGGMI)cfdhD5>XLKwmb_v)dEXY%EsPwT;2;Je5!PH5<5^ZmyHt)R}{m`rl6Ok*h8|b^OkEpE3UG z((}ewE| zVnJvUw zeHur2fJwi(9)4=WS?czlSM9+G8~nWIJo3!xJf02H$Je_rx`BgUU-S>?ArHQZRxLm zj#sgIJRdLT*y`Kz501pcA0G6!A7_KO-G_1K<746zvp73WpV#vU-d1mVZPvEO5=~mJ zierA!>-bi3XT0d!4vuT@d+zu$cjDUjcSs$#&)E6dT0dw1zy0}|_eJ`6Z`5~3y%%X; zx%&m^jCJx!PU!=`mWTQH8A)Dh-*c34&wtC#?3eiPfWP;ZBR?{du6K;gwck;$V~+!l$1DxWW9~~QV)}mZN$iXdru+81@$FdfU=Q7$ zr{~gbeC#@+^=(c$VZ8X;4~>t?-T0L&;0(r%)e%;@-HnIK=Mu@TwepOxGBW<=^TYXVmsujWvd@ z!Ba8HU-x`J<1hQgr_RXiUmS?-n8fXVyRqPd?-Wn-(3&*<#Gd@Z#(k^y=DXG=uoOpm z-c~+S|I9b;AJ^Wm-HqIlTleI@lKas8@t~~1$KMSg}Hq|lpjx%FA z#eR(KEQP)6=$hMlU|^$t)@+Zxv@!hUxz;#KBPQp9T267oX9ru?$y0iK!SbH<(x7zl z=Mq21*BomdTjOmp$cbm7G;ti_HH_d1Zs*s>nX}kqYip6eacE<+fm6iTwQ)Wk$8psU z{IpjcE$(XX8oN)`4_;FrH89K=6N`AvJyvNn;RFwCbdP4()4u1#`s_ok@Q+%VKlNj8 zH#e<4e5-eR&PDNF@jSPcSLf&W71wNA9heh?IlNYXG{%m(_P03cgz?y~I(5AN`_3JI zCwHN?e1Bxjdn5h7_WM!ZAO9)Z8@}_*algYS=NVUx{7g|d?fty4H|ZO7>3gQL;P_hA z8(jQ-PCV?ZuR8g81FzS8#wgBPw(!Cq-%Z=)ImK7GJAcosusk+c*pq|#rMBcaYukN0 zH(z(3iXYEg!_-*D$G8W!)**7~oT%v(C;Z^ydyeVYQOm$1mf;ek^>D4Yk%Mubb2qHE zj&AT{4!5;0u6|a*D{gbW@J9#NDD(?W%f`ufO<=@pliAyRkR!#@_!cx*s>+ z9oxOg{rFFJzi_sdI7CW_|?(lB6tlFPuHz$>%2Wza!ekYo8otz7#n`< zZDGL2_vU(mPyRZ8);Av*U%c!_^WCWTq}+=;?~?zk-H&oN>izg<7oBaNvrBK+ziVmQ zwYu~=xSn3GTo-N4KYa4c+WLI%*y9|~Q?HDzSkYE)%&YepI`>9SwGO_<>oIdIu{vJQ zZ5oTeVqu$nSqlx^#_ixlY+};Gjh=P-(qSWZ@?mez56s@fonH4WR&dwxyywrh+tvMI zn5Nqt)BQW2cDHQsUAbB8RuA^!q`kM`8Md{5bpEMpbI%L%=Nu+o;cLF`k4!L-aVgYr*R@yaaL^b``BZ^x$Fzu z{fJo@o-=c?kC3{d-ZyNC*Vn+-HOAJrJi2}1yS|-| zb87q>#xADvpv|$3%j(;7gwM*Ex$id~5y$ySEX59de3++A^I?x%i+9D)HGFGd&(%h( zv?c#t9LMrn6>i`)ZXT=j^W5t^7ccnDvCxWMb2UvupYM|X=fCCP_|yZ>8-Mpuc~{iN zy}0!2*CW65pc{?1$nRah?As5IC*5TKc&z*^`Bn0J*^fN`lyTMhr;bNS|0wBoJhdCi zJldnAf7Fe{E_?B1?>yO)cGY>ZX1$KXSJ%{z^>a@hKO#S?^NgDu9KZE#r;qo_@5>zR ze*9;-E4deY|E}AdJ05iUzM;CTwM9eky$16*e4_qZ*Q)cpM_sKJX%}bL>fiCp7r!ms zeik~e@u2RVTbu!SI;NjBa-T6JAN7gG9$aReIENP3`MXv+p3gb+9nPl1>dV}5RxV({ zX$zA)XWP!nwcpGqIQ2d7dhgE}xq4l@rgQAB)f^i;^<~^+>l(4J-MANicEz5ZFflz1z5c)HwZ? z9CKZKb=>vHdEnmh)Dy=OZ@hoJ`IcvozrEW9{xgsL-7(%5`@P8cvzMGdo_CW&<5u!@ z$gZK~68dUv=QGzH8@Rb$=|PURZx|i}d-S5OI?r0_K6>~#aI*e&MkjeF}qzKn+6MJTPyyKsWHg4>)QEG>tXLWk(@8ay>2e#$axx~1ydmf^vaW6e%H-A@-7+e%XhwD{QkF}IW9iM|CWWurcr13t#K{4$i-`{ zx%zYf^HutMeu2XJK0fnc z`P!r2kF@n(Z1XqY^{jFEIr^EpFo@4upHF#*E}jeioJFr&)?vfe@KZZ#yqwX<865pO z;xoSH;P{+;Zsra=YJb-Y#}~x*2{+n5ZmqwYoq2k^K8KI?nWypN?0If*A@6=(`dY4Q z4u;ckEk@wAan@CRVjV8@@FSLE!?9v0mfLLgbDiKi#Sh-5i*Oa(QUQK zJS<=0DCf?x*3~~_hOQmk_F11WU7L&-`MFML6kH<)TzgEnFP+)zw#9uLS2?)-jI-9O zpBpfVGtY}R*x2=6$3CZrAAQ%z*YGDE`oYyOO>ecQ&3y0$tNTzp_tp5j7-qjw6KvVH z+=Gk9ay%a&H{N`=v&I*$ke}<}Zahl=H}ZAI7s>A)>i2hN{%9wCJ441H=3Y0?gV?q| z2cxdYg^nsPqR~CKM39++$3y(OR!#XAp*6E1_M%sm@7B}Mw zrx+j8Uu(43;-kIAlYPd_Ex!4o%~niu_dReYj5s5;=CLZC>#O^jbMx`_@QFOSosK8p zi8HyEKO8+izM(_Jg&VfSz=!p;OZ~`&K5|Ol5vSQZcG+87j8 zE1$!kaFf&gJVi|S6Tf08kI>X&b$z{FmGeATEPSi)Ir@J2lXKxXhUcvJ+)KXxaNUn` z2mbR>n%<8u75h8M_jx)_=cQwsa-=?~^-_=Y4c%R*(#Q9A^Jbk`>W6RTPu`9P7kscY z-{j>!V0oOXQIG5Sc|EHh6^s4ECr7JeadRHsuQV*KwGW5nKj9Vb#9j5#9F0R^?NuZ4 z>G4xPup%zF#7jHdk2BD18xP|5e!@{(TEr!9_vyLpkvsm<<3kU&&RrWYJg(&u{(VeM z9S0w{@Z8nez!&bstz2hc_TAob=GtNJvBANHc!m=-CujE7o}7rCn415h{d@0o&iL|m zxEuA3{PTOBJsx>s{GM_8@N_JJ?}arX{T5%mabQg(QfT`F`p{m&;F;Q z+=>0Z)ca9?4)SjD|46{Y`s=|3EsQIi=~ExhX6PjA)VAwWSdqKoxGt_o>87@D_OWXN z-qi2GNA-3d@bg&a3;vc(?2!YS!Leg@9`I$KIX3Pe&rZgG8@2bmiLJhdV?42)d(PF4 zkNJAMl?xg;esSvSjQ7e1UyCpN%D%?aTG*fid*Hy4zVZsZ(7^U>+%=Q&guhYyrnz${ zp2S2$->);L>+tNnd+zAOexGN&i{X$lwk_BdS&)_dQ5utlTUE^5|t?s|}``tEm*bQ&s`r^op;Zs^995Edgiv~x<)geF=q@f=ehD= zURrnz*VcVYXTvldHaM-iQy*R5@X1^@{Lp2}tJ%TP_Q8(*oqTmY_xz4Q8|UR3OtDl$ zaGSm!*K<#dwvRrA)pQLG#ieTuX4z{V;CNj2dM|zp?(9=_+Qn|`b#_Kt3kDbq4Kd+bNxREC{&>p`v|FUtt*~jO}7aSP>aHk8$|9O`iAG3W$ z?0)l`&KUPNa8kvKa{?at^sKLa*Gg^Ci+*QK^GAbLui3t8YU|Bj=iN5(n+^EgPI)`m zI**l0a1spG9C!8s&pA*l$72sa$C+)W_!%qChUF#kRFlmd)y^9+w(?{z`9vHr6{Bo= zJkM44teIbolT*d7*uj5_Q(WQUn$2f-(xc^EKE)MY;J9ya4zA@Vyk!lW^vOILj~(9K zFLHw$wu+rtr6IbpN56BX(zl&u!{+=2W~_Ccz#>>HbfV`|%(3e!R2XkH=_V zx#NZ7Ki*XCM|pp=93pn-Mozs)e_bP29|vFK)bdT-mXG+Z+JLdEXVt!Zd~N3K_;7Nb ztd)J|Z+Qhj;(Nc#pV)oh{56-R#me7ong*_Kt7G$ryT-!K$E88fi@4ZY?3R!3SMJ6o zxMnPylLK*Oo}5by^GR-Q3npCPp6g+sbF@l)__-$V+RYP=&d2ZqqhsqhYoPl_iQ~Fe z9zNf#4H)#;Wn77Y_Vi`D%X`g@T#~os(DNvszCOnlJr*6*K5fuDF*U!)G4`&{{iyGc zkC4yT@S8ZpgFa%e{E{2G1&`FOamCg(<19vg;cxl2n4TZ!2`!HsH{^c2dwjn3_G-sG`rL9J%2*{9od9ODr&bUk&LwD7Yz*|vSdGmM!(SoDrxS`tt9&Bo$; zEcOgLYRR~4ms$pYob?myq-FuH8W6RC$I)}pXSdIgy8K?UxFONIh!W&#T z;EP}Okz?f`cu@!KY2YQlqr~sF78ktK);YtC*v!4()ylAxZ!~hPIa<({t>v-!c`mAB z+1Xh0-m#^|#XT{bJ$~Bn=wNFd8=i%^a_ZdPe}DOW{c!nweI44Ld=FoLoOPV}Rqn*8 z_{AynM5k7JuU*-Kqdt|tawr=(*jmGK&5pl8_oKc)f(uUPO)PB4)8<+~ZLL0;2RTQd zd4xSax^6y}Pp>h!mA}XC^QsYX6R*W5cHf&~w%BHC^NLfs%i0cquh)#-d;=Q}o_F9h zEY``xVs7lOcHs8-{R|n7Y7so#zn|aYn)*gu!wx_6>ewE$&Zzs>`6YI(msae-$NQO! z*`Pt=Q91WKz~ZlYG8DM*GSo^XF^yC0^y_IrlR_jnX#s@wwkw;HfP+;>RBL7OUme=lI)NVu88# z=m-bV(QrKnkJmI--b-BL$eQj)J?Yt3Ki0Be);w>I-E#*69dypP1w-SReZ*sZ z?UPsJKn(3Ww&O)U4HNrmKVrMTKeO!j_}!PBh-rHgr{>#Z$EBviPq_uZ+*{_!%Xqp@ zSzTlB-`5Zrf z>iT^BQNKU)jq>%!Q}pYP5>Gj)cGAy$B0pPicE+9jdu>=NypG#*o8yGNa%ipRXZD>( za4wwUsu*3f88h-|SYXU{h2gqX{^U_Huyqc_8*R{~V|1;{u5K-EpzjmIC*|xJNJ3bYvlS97o9xbsuAa_*1@clnMyHK`yy&aO|MlI{ zZWq0dH`-TjedF;TzWR)D@oCG?KTh0s>$uhcJ=T0opLXtC2hSS~46E66?aV)PU_E0s zeH^#+b{@`qZ@)Nekt?{#k+`O>+7@qYYz@2UyEb5I&)9wa+48l<8?315ZXV#c4_JF) zTioDpW5o}xvtQOYk86+pp7}MMx(#ErvN`!lY}Uz@Il0+9II~x}@%&UR-LG`Qmi#q- z=dc&Q?gtkze9yJay~v-vdA*)*_-Rj!&cXS)F07mOszK;L-}k`-vv_!H$E|ax`-v;# z>wQ1U&xa>QtK-ar9CzzfIh4&s^8bQea^!?@morZocRlk&>+f=g^wRFEy{<7Ao4cGP z>(XnpJ@e5uU)OzI*Zn)4CGGSR$5X#Se!l0nHy-~ipRNB{zJG1Kj@Nd{jmO_zeBt=5 zo1HQ4|1~F$JBq)>(wN%Lj%H)QmKYZc_uCyjVO%7Cv%~A`de^wuVm-5UMpD;a^U&C8 z&N;BP@*|FF>*MM<58j7Q;B>!!CMF&d3yeBTnhloe6InTIJ%Ow}J|E`mdv%B!I-@b1=@1Fa|FWm3I zc=`PgjF(A!>HYRc({XFE_mca|-lejpb~=}Fwf!=d_5fLX!2WUdrKgP-3fAvE%&)NAL=h>ynPd|523b>qc6Vu7Xo+Q4BQ&KXzZg&(nW&i=gSdd|7| zTGy%jdoFW6hB@Uaxn<5i-sTh^q;jgKISv?#E*Ep`8W>ybm)$Jvfin)p8R-SdC>*PlFo^Wg`_2cCV#_{ejm{d~0NNq>~~;pd+* zK74g+FOadc552Ip7s>d=r+a(p>Ek0WKVy9C714f4`riIGnYVWBFH3yc|KKm4K0fd= zX)lka^VZ(~?~e>^@B76gOnL@%lPOvynaOW-*&B9Q<6lKeoj4IT*y?Txnl*2G4w39I(1A zJSQK^zj*Z6*yUQ}#hjSi&&V#v)sDI1z!Tmcqw2;!oQS=ycfY;|E^EY`*4Mg)&Td;= zl()5}UExu;s#odde#G31tL2znsy4>G)gb-bnqfD7hShj7ci*T{i^V=VVW;!X+iMs8 zs#D|OK2=lpItF9y-zV>ne=F~f*QM$AXSg5X20nAegrALdF3n>`9>VwXuRD4C&Q*u( zPW;ph&m5cWMY2wNv5cdA@+D^uYcG|a_6suB_Odg_Cunjfe&QFU{rfY<$K}4e_E%0H zAN%EKI;Q=qjA{Sj^l|O4N&D4yXUcu~G1{-lING)1v(?`JiX-D~FFZWn_%nybi!M8D zT=7kMPgYGhC)#^+UAkVXnKjXh+GD?JzNPQ%)AeWUe6Ry^;;nYD<>{o3a8$R@g zX|{1zWo)_Gxma=PS@(P+|0PyoyS;NDr-*}w$vLoC4<4&;#dUi$syyLb`SyIUujc?> zRqt-^xv&Rz=zvz1|86|P32ne6F7xC=-l<2#V4YYppK8|jORMrl7th0M>l%74eVwuI z@14(VhkpIssIO~QwyeRS?A0b)=w&&!b#x+kwYU562jqUd4(+Y?mhWHZ`{S(Ps?iin zIjHub|DDe`VZ7?0hsGza-s4{6zT|GyzTJ3xDrQ-LP*Y|$(_ea-U zb?_Fkf@gA#Jj>>|aSQpH)dcot=CvIsawX=wV3yF!MVa0Eay-@`1W;d3uC?$eBIa7w#RiGKTm}-$Fuc`x9?Xx zG?N(34z4{unsiJ!dGA>GS|6C;z#oh)KlU`9jZ<^aAMV7NFeh8LS39$5`OUa>=b?ee zXqp5U=Sw|ezu`J(-}kt1);?;Z_O!;0{WU*uG7s~ij%yD$j|bn5tvEAg=o7fu_FT|- z_M7v3-vj0I^>ui6R2zMN)ccW~oM-3~{NPCs2l(Co;PK<>cRX!;E!Y(8U4Z=bR4e$;nJZFNuPyCe4`?~v_o{FlBTxhLQFv_s>OH$QpYa$o(M zf;OdD)s{8Ro@*YyS$lsLurZ%@R&}1Wva$Q;T7MR(W2{j>$B1WV!kEvKKL^f-vGLmA zkeGqj=Q`#rI}SM%cE>gQhJ$adcmMfWDw|ms;_AMRz2Ei)!}`>&+3u``Zn<7_V)b~I ztJuza&KEn*k@H5U(h-h^5pmtOYKV>NSH55q%k1EzSTQDc$0_cM9>KxS;i_-V$=R{N zXq+wfvYyygQ{$oM%IfJ_PS1e)G%U5V`|*+T`T9Dvw|;MZzV5NmqHAM%TC85fwdokx-+lq`=h=`u6JaPryq~4YN^EK~}+Vc*ny?oA| zzV^sxYVGywms{tQx0cjltv~CW!>w~R z@AZ#x9uE5Q^gbe#8%&2W6yi^Sh@Lp z?|W&sFWtZ+?~c=bijQ+fd+fC@8_mUA<`w(+5m)Cl*66XNXWe?y=LX-8%7vynht|5b z7Z$m-t|4Z*9sqp7B`IxQdwQD>K%k*vcise!F2l1vpaCFV%bPWm%pROCcUDJxQ@-koJHtUH$ z*u?=m$MkjhvA2=GGPdj7p`|)aduhbTwzpa0fyi;;d^1T|l7xjBJ_Whdv zHAvne<=s)gpKagM=Cii;?X$LhZ+m@*#Qc+h_asMkuh zUCw~%8Jc%((Y@Ex$DH4KHh9L^@4kuI;@UaNb6w|?I+}mjr+>5eIG&3=3z}o%b8doP z%OCvoZ+ly7ou|dI7`xA?J%_4 zH-B)XU)Rx%9((Mxhr`Urv2^YF-jDwM>#f{sEn`LvoR9A-*Nf#H@|PZXV0`qsd%Qz( zKel&Cy(5qIKKV(xGk3mc!#yc?=k)c+z1|_YC%GTB{};R;xfiql_0z}I^7B6zpWgqU z#Hfv)A=9t=tf!rY_3Tuw^GwItNxvPus+s%Lzs1u$&mLUDF7TbF#1CFMCtj?>L$UjL zv~jcP=LIZZo9|WD)TZp_vBiQ1aT`zbl{tLMzU~HiR~(PwG5fe`P`17XSJ%~R*Zq5p z)yD05Z6c2H&fK>#!J6$_t-uIPEPvJl+k9iqc(SiOM}nb9vu`W(5hlrO^d_v@|p6u z@xAAtG+uwz;qmdGk9S4A6Z?IrWA4dyuiusOeVk9y;X?r{H)J)`TAqLH|Bk)?~QUN_V#D;bCN%LJNcW#JKD`>kD8$^y8FDI6V|o2*3WOO zaTfZy@ijjqYi)^9Hk_x%QR8F|9vhtEj-Q_k$E!1++!xM0XSeZZgYj0cYrU-;Y;WNV zpR%2Kl8?s={0Rel>l9*aiFQP#`8G|8CZw`E_tS6t6!)&Spi&*CPp9=pcG&>l`5 zr?``=Ymr(de(8q4`g+6HwE)v&s!fkA+$Ju?6}$9b&VA;R>+b7*9tW*%=>16E| zYaf&TV{%_wlXuIHwRWw1CcjqhOmFgimR~qyeDr0l$@}F;waMpj+DGKx{D|C{+CD7f z4{I+!Yo6bu+4}y>dOt3Aqu!Grmaj#=;*tC19a7FlJ40G4(~dKsdoi{>8~YjQcHIv= z{HkW0zlcGsJTJaZZ8^ttPaoNsV z_VsyOnBZ!^HO_dVAsB9_^Et1+kB#Nie6hh7d|S^tIWD$fbsxpmx$f!sy$?QT{Ew?{ zbe-B; zDYJ>V{Tzb{R_Bae;>Ouu<6+0T_A{RHnDZhBw~gmY@$rrEI-j_xP1Dk21eWPY+}%3D z+4C(Q_^_{Y8fz;D$I$!)C*pSA_`!9Zed!*cvpXvAD^V;WY)^)9~ z$Nl-y=bSmNdHA7msr+q-nHO66`J&cUhvJ2{)U7o2{MZK{teZ;?w?BNsxb*8z98Z$J zQSsWJI5OIK4NYDMqoIdW!S3Ts=c;MIYe-1i7jl0I{HDC`O z%+W6S+qsJH()jfsIxyb%OGl=!Gv?PE+r7yBsQn+v&y7F$8|r@Vyp3Dr z0Z*%eo-tiN+FtM`FZ_Mp&Vt#k&z$Gf^ECe@9&4SGjaP0lPrHbTzxA3^H0|Ou+vHt%;(<*SfZp87v>bd5N9qX6fE)jM-A5iC5B%zrIKF42h}QMstlk7CfDI*{?kMJja&1*Pd9Wi*Qey z$YYL)24%-S`eh&b`u=R6Hq@fU&G?JI`?wz1IQP}Pb03@ zBe5IzvP0X7mA--J{-tM+=Xr&%+Dkmcwz$-~cujG!4PN9*k1ahKa>jJsY?G&ROb)q@ z2C?7P!2pMT(k(PJ9>KYD)N!?T=39RFV%Osu*20PS*!7$ZtJ?=Z#d+^#^7Y3@%hw;T zLwn18^y`mxKV~e;XYbne`0lfDHiXkHPCkA-RQ~4KA6|82eCD}wKg##Et!J$Bt=8_+ zkNuqAk@veXe_O1dSBcv+=6uwdEMBZl+?#K%$6Bw6-p!A_)xPmxd#@FjvvGw4WnnVovDF*(#HfVg@^}Zjk{Hpr?O!6X@aVWjX+xu8=IhUrT z(JkeUyi&fe{RVjtw7XI6ySyXyo;=!J8TaJJUwFj+-TSfKiQJ9azxS7qjB9@UVBQzh5ABM(#5E1QhS+&6 zdXCCl=ApOQg`Z)?y5pCf`E;FRoHl(d{&3oj9ec!!p0mk$q)-3G3GB2<49D&~v2~oK zKE~O#=sq(S&k-E6lX%lyHPN-?82aiudyJ(|-Zpj{Vj51ffmii$w!#-b_B~HxcwfAh zb;0O)Ch_)w*u~Ge)LDaD?}9dK|0S7Kg+x4b0Z`0l)3#xlj(p z8xEF(U=kY}IGJ66_?t2 zt*AlQ6kF#Xc9I|Y^nKQ@{LYidAN`zs#@^#j?CT$ruTTD$XCKP@O>1PBQD2|0b*yuT zt@g9#JI8b!^pPGdB8T#EE*b+4wb%SZ1MJksF&!Hp)1t*# zG1F(!bY7n|Am&^@=Vm+%tLCLw>51LS2V2_@-d#KFi4B*;Yq?HXp^xbix%$5A#yWAq z_1IMl;u7zA-;eV7y2s7jgtuWU|0xI8o_O^5fz^5CSa2RJpOOFI2jq@?y4;b^jwW}d z-j}qa-j#AkzCONZa|`>P4O-Nh=vpa1=T!CQEWy=nVn1^2d)Plz{{F;&dfLJ9k^gw) znC-*Aab&#ddHVk7{2U`RrS|MGm)M;vx`EL-<+$;sPWVlEMGW@9B)3(k$u44)jq}9U zxpe(S%f@TM5+2xN15dRhuj;EVx;DoQZ39zrdb7A)QyXiH9%uJl6raMY99H|PX>oR* zjkbEMkU2QF9@EE#M~p2jwA8({3vB9AIeU)ggT{?V=}hcdqlz!(j}pRfP;K4;p`hj$$`_GW82*}n1GJsaJ(a9uCu ztlzWw{;!wM+K-ga+Ru_ZQQO8nd9?RR{eJlC`^Zos?^YS=*KL^gwXw9`aZbik`1n;Zm>Jho!N z*Lvd7cP{WYywU+o{GCIbV|)Y;yT7>XtnsB|{hxmE|NZ^>1I`+c{F?dioOJ<_{imWPJ9SaYy!ha^t?VcT4%&rM+9q=kAX^^UU#jxg+&` z)HsHwvrchVESEY{&T)AbyT9fVb9%+SzVDB3mirMt=rzx`IrNx*#<#fp88JNJMx9Fk z$UW-PF6?`+7<=NFJ$&>T@Ud&;bF_1eb|+!0 z_=(eEM$ViKcv#kDE|lQ z(msCWIpZg9dg^i>Tg)kUU*EHyk$zT>?!Va5N7hPwM9-DbD_y&h5hrl3ba_Jm87QVY{r4?MNk2_@LOKnnjH1hLT zvFbb;&xS+3Ua!h?UWc3W0E1jR&)v21)xF{r+6(tur-shMaAQC9ZFAlC*7J1@c6sdD zbl&9DG2sQ4%{9KX)i?P?j@|c-_da8M_EG2V{-4mx-N;?}irXC;x0c_VrUrAY(yQ;o zAFet#zu@Zg{@giE$A^$9BAU*3B=* z5;wJ#bsuk>!B(d=Pv%>^!OlI6k=n>}7cs%`y;>(<{B_=K%|F)E#v3u1*YgdZj*&hK zH#EeybLhN?yV~h|!WR6(DE(P8|KOnGS6w2%)AxvTcHR}a52yZz&KrOFfHTKqZzAuI zN67;|ySdHW$fdBFhOGvjyJB80pON1vpS3^rGwqJ-pS$@wB|V?N+grkm5=eIuF0#oC$8qBc4p)F zSqE}$z2y&X_}ZF`JEp~NejU^8cut(_rf>2lPk5Hb-<(+=kGBrc4%RIQ;&){@eb~+!QFfp9O7o3WgkD!-(#4s;5x74##@BCtOwzvK~CMPfenZeLu!} zr#)2u|Lp&)pS9)t+S&AdvbXjb+`ewv?$A&Cto)wM!w!%8+(>_4d*)Rd1&7cJ9lO2i zj?Okt-Q#|Ix_rL=E%|(XjP_yq{B57F6Oa2uxG82duk$uv=hrk1Eb^g;KUg*Qm}Td= zS?mRiTpgp?2~Web-u2Tt&9w^tn$wbR<{;}6w#_T=&Ao^@V^$2uc0E`AXplB7o^ywf z`+FXO-Ev?IH}B`%XZ*%Zbuj)>gTOVOx(A=IA;;ul`wh?R%CGWO{AIoQI_KI?{N&>` zKrgV;PO;$_9J)=~1)ke_Jm1@`G5YI%Z^a=roAU5H%_e!Q+}k`jcdj~qxcoe$z7wwR zi92_r-j#AcYWt*o9)IPXp`xTziJhFrOi5*oWEbb9{KyXMx4Y`+|a+c#2IY5sLi@xxQfl$cRq%1KEW^eXWWcApB?t;D+jmJ z^@`+(L??$6g;et2B*weoj=;ym=ThMrz0*A?CKJT+Z??S_56ChpWnov3@(GS-bt zvw>&l$hh|tPUOx0UU}KR+0M^~VJU~;p?0h#7BRv`_kGXLc#qAqQ1KM6n&a2`*S+!= zyolA;*u}n|YtO31uQ|D{zP^qQ9(&>wI_eq?{@(j}G_6Ae#w!l7 zD<=FRze&SdD|^=%9)`c@%o^IjrN?HEzS}sq^QwJvk24pVP!D3_YxB@cF_;$~c}pL) zw!O#&ec^TYBPWel-}T7&67P`xK5XN>7u)^#rN_x#8SS$_eD3(n4@vuxbH-&YYV%tE#Pj|N8fyA%8FTnj^<- zACj+6zUc++=X>(p@$7)D^{%+oeyi_xTW3Rk$_C8JSNCea?hSP5G2M1Pi{MvJE^cT3 znP>RMc?EAetCKB!!7AR)kD62uCcF#VZO~{dKh`>St~Fk)^%$)2ERwgb({!!0CbzjS zTi4O~b1vuwbKz5dtHu$tX|A@#!?Ap=xPmw3Gvy+@J7$b+jd9p}-VsOlq@{Mj#p_m> z#D^zy_jS$S+-(xaa4Sx7Xq>=QpPQd}-1zBl**`um?}GLY+3rNX=BWL2Kgzo!_agll zAAjD^_JtoicYNUqt^K%+qkaA-&K;ls$!JfMKHBG=bnf`vlY2X7eC{dU{`#ln-qZV! z_R}(s_SvV(eW>kcWKHkKXrGmS=Y8@R_v9z#>yf|x;KSo?XPn?a`xAPVR-viYu+A=L zyX&mu8*)FYpT*-Gwe!Lracth~x?evR#eY6Kx^8w2!?FEY~-IAa*S;}uY>V6+g9tSWsh^$!zYbjy~E-B9?VhiMZFvQ{U~?hmsc+B`!So`jbGFzcjFg&lY8^Mc{6?Ge*9MX{X%_z ze6_qk9;1Co-Z9_w!ri~$W9N@JT6f0L6PI zew^iuH}iy}^Qd#kx^k~Q9k28DtVGOycEPD!W_$2FPI1=t(ycvztZP1zllC(X&t9_$ z-ZQ4}!x0WWHuiI@mP6x^ws4G?;JJ>?x7p!~)|HdzR{O4tVMc7URhx=cc2nHuQ?`Cy zdhCwH82gor@Aor@u7ztpXcc)UFI|_$yz|Jh`b^yCGjZAZ`^JBh->1pDF}@d*?~UAx z^nA8%ccb2uN4p=VJ94=n^`4yX$97NZ9T_d}NxdJrE9HK)yOR4+?@PTO`+KF_lSlph z9e3or9)ISzLcU+4|Hq=%OZB5(*{9ZiM(V7It?lXk7@x0?aX0GSS@$C~taI4U##GBZ z17*wkvOYM%r{@BWuSJeMCmDNO$98)^FXc1unKm86v|G;{xU;6lH_m6p3SKQwJHNq= zc-D8Dz**PHzw=L<#+&`!JwFe+4oCRt+}B+b^X)v7A9j^L@#enle7#~5r+5^fj$s^@ zxU9j~=8fkRE7r+%@(B$JFP?+8?tW4K)VDoTv9`rQ*DCIOhS=j=!@+8?=4&y6o907n zcA9fyH|&Y~a9IN?u~m9&2t>>zPkG6WG!#hBtX$8|H*%>)f66%@3_KhqRq}bgslM+Zi+W zmA7IBf7UavjlFK$eeof$vyIrjX2aQJyPO06(amQEov0XV>%sqLm`LA`VeYjU_ zzpGqljURV5v8?ZPig8=-oIB2xL*V%uwTxJnw~sjk)jPkA)yE#s@oHT8lIPkhhOW`~ z{mRF2RvZ1DJNNJKr7kj^tjX|ChWU`@1Bcv-6IucSn7P%=gEBKlVFP zzc#7&<9bK(d0YFVeCGbxPn|WMdx!nw4u|*|cxoz|WvyEsWGyvrV|{P3AeZJPOLH4gh@-;~5^Zil37Rmc# zzaRH}my~-lz8;x(q<&43dosQrY2Uk9@5cT)yWf+29G}1Seti0E_m7L^{Sp1qvF3h8 zs3Cf?uln2j<1^*!kH0Nne>_I}kbK5|(~Iiw<5DM{CyNv3kD8}VJSWbfoq@LQ=fTe} zxo{>DZ|98Fy+U5ZU=9c4hkx`l=l1OA{$g`9T=*I9^b2k>uYDa?juS?9#+IIV>%3#! zR{o~gW8|~;8}5Dj?t7!&lmDOGkNTP0-zATBKkC;ZkNN)C@5N<&?NiPkSIN&-`qv-h zjE0`BYiZuk*{rAhe2>0A-hlgYt&hi?&mFbWzH_Mc{w&PC;H6(Xi?!#^z%)QKZ%Eb?CE~mm|m_~ty9n9+VgW?$7LNn z)v)8t^Uyu=zz4jkc4`BE;|Qmg=Y->YyoQw@HSIj$N8HY%=ac)v1B~M79I>++?ZK5j zwWWb)^Omo3E<5b$eV=^Ebypu^7GL)%9Ird^+^(-VCiYVw+T+9C*iGf9&s${ryosSAU^@#?H^#@ij^PTBN);=J&Lh_s2cIr@h>R z{47xK_2-0M{lLTH&Zo<}qn#5!pIe%uQLjs_#r^m!d4GJ3ygweJeMsIf-}K`4^N;OZ zDdrr%?riqFcRM)rUj6%==K}8KU+0grF!_ciZeM2UJ*xq(mw0yYj7)^I#2G04o6>iojoqG z=zDx!BPL__4gAJA{bcPT`Mmv@uRCSD^3I3H+a7Y(_~=#gnO1%l-0sTdv-O_$qyD^4 ze8&FLv@e%@!}GxnbEkVpBP{mFlK_W1pW zo<1IWlYQgnqSbs3{LE}=ty)>@XGX^M{p;&{KZ3Q*RTa#q&!ChNk5GnQN%zMqAy zvk`eUTgNHej?39Xi#1loDcqjZoR>dO9lzt@2cI6(ctkC7Up3G?VtwK&>&~q|!=58? zW^UNec_{YG5j)Nf^UkH7ZI6Xbt%C~(=js^b0e_7T&N}XMu=<*hcXM#f<{VhV2Ofo2 z=Z-b)C;L_lImHhrpHu*i8zl!!5`8}G?O8df( z_}$9SlV|^9`m;f;Jwe9O{#x$NPs{Jud|H0L#+v+Y&8Ow}W@w+1->b1EzgP1qn*4sv zC*^bU)P73lG`S1)KGgOJS-V#3Uw8Qt`I{H};#uLG(pPQJhg$Tr()GGRf4)cV#}CQ7 z3ttA=H@iDxBh+hg=GXLRM2^L%zRm&(gy`gzuMFd2i}?R?C+D?GF? zU(QwVF1(6ivD&`c;Hy~K8ejOhZM#Pr_v8v*+uPy+rt{zBS3Vw3?eXbj^1&XR_Ua8I z^PjP2jH=HZcZ=(+iQ?>Fg&y;IXh6cfugKq;{H=Q&9{>G^&K#e3zT9OmkUQ?`)^y(2Wc-O2 zo;}|9up{GF?|Mku;ql6QO8Xv(b+3(fZ&_>Y*JS)_-`m>v$+)#w-bd!rUVe{*ug}Zg@pbMTz=sPy89&b9j$f=}U%4+a;T2puZpMtd z+Md}vhI8NL*<*DKxA(JCyuzP+TRxM0=a4pq)nmew7}~o&!F$QU>;vC$LJJ*xn>lW3 zyUGUP*_c_IKjK}SbpRPq= z25>m%mHGiM6bReeJ)N@VUCJkzj{5=;maZK9_y*VdfV~=j$ zQ@1(iZe#C{*YkeNyd(#YTl~n+b+3K+r7!0y`js#Cjw5-Hcf_o?#PA;c%F(s$_F%$w zE0+3~PvzJ3PEOqmA!j zFTLeTPOO*4#KN!o#x*cH7JlTyyyxKd9t+&Gj~ZCrGzVf>P2gGURbStmacT`a_C0QC zsd3=yefi?U`pQ}7s|~y}@4%n!!Y^ZUM(Uh(9f&{oRkJlm%gOXZ>&PkA?sVbt;{{JT zWxVab9USle??-R%`tyTk_vpLJ{b>Gvb}XO9Kl4kQSw}eT=pXe(%j&x(Rinv&BNn<7 z&%Qr%1MWw7c+OI<%(XN%8{^>h?A&}@x_j+rJLl@y887Z2=HQSI>zsv-K@5DTSJtL! zZ8(}!1|VZ7jp zazDOB?#8zry}e8BPrXMUefN{<--5_n@v0Sm#tOU2sccd|z}V(=hD7&shF~#XN5d`jdk-|wD7&zuJQ)6 z^finYr*!vof-h$SeA7AoN`Lmj^|@=9dyO;o@;JrY{Ie#07V$41@>us<&4lC3y|`Em z%V9$oiA|3EJlNRw3I{uScy7hDbEKSFo7R?`71NvZ=`o0dKek{`^Te%Ov7-l@9{z>z zylYVDRWFEQXU=TYZ|ea~Ze-L;Wg zh8A!pE^(^wd|VszQ9X@oeEm`HNAAU=^!*gOh@5Rl}8}X?tJ+;^y-*K_8-Z|mdar(H&jog=7 zWDd4ob*y|mX63xj;ZWx?kh z9!%=7>r>~0J>r^w)VpIjKm5qgbux^oJ!9t+IfO2`rgPTJuW}{+R*yzodwq>uIA_MG z=~wHnU-zBH!EMexYS}dEyb2p_;;fQy@F0%a>mK_NGv^Vfm|*<;T7Sv=xcUc{&x;g_GUk8wBZ-O2q( ze(-H7Txx&|C#o2Jao*Vw`cYN$}Z_#Gf zskFh~&&j;*YrFiN2b_Js*DAR*edhRuNzVAEuksIV>3y$!XUx*bb!q-lGjQOq{Z=b3 z5^M6E?USqK8Fsn0VC(v7V{2i@82_y~dyZ2&6yM{=o%QRFKOvv5<#Y49<@+y3Yw!9q z`TFCV{qr^2C>D5VLtO8-;?|nuxK1lp$HC5RTpP`+*6S>)pRWhE&|2@u*I&=~$ILA- zdQ2O)I%-VUn)p87%j^KC<)*`O>f=`b>z4O`1rMMr>HvRYDiLdtPnw*VaX@3`ae|+Ij z%Fl;ihx<|Q&UeYrhyTz$PYPVuzT&L)^15|CZc9Cb$CQV1uDap7l?Pb9S2^L2uiG6z z9`>CljW;~+y4{cOd+p)z#upv*XQc51bJnxf&Ghvg%r^AK&(2%gG&`vkJo8LO-1Qu- zTJ-(Qy~hn4I3)Lo$-4F3R>y6Q&dC#hvGKUtd+V6p&wcBhBzMCoJ#yXf>Kv`>6_+zr z7@a46nfsKNpJTA_!&ZIEe;)6Zr`fj{U}oR;h@)EfIAF8ZYvDMRbK)*sw=g}=_Utt- z#Kdpaq}EI4M}5E4`%&-G&dckeG24A;aa-P*QInJl@KIoYKD4Fm2J_Vm7@ZH|K%gN3Ub%n7&)~g#`!e!)N8}HB=wRGR+%4 z805&@?7^hhTxE=n#|qrdy;*;Y(PG1O#&aLm;9+x%9l7*zkKOR`-OX*`l|JO>8qZoC zKW;C7H|)um?;CIXqXS3%Y~An2Uw+o9<6d8XV!rQC2hE2u{OH+31J<=yA8$1_o~l9a z*O(kKR_Zp_vHR-(5&MkGP8sj}9rt1h8U?z1Mn<<{n4au&!PJzTHimHts9 z{5+QH+~Z=OcHxIju6Itxv&Y;WJHPh4H4RqIaPwSUM_nrpinA5N&mcJ@j`7<*lg_Jj zNFU8RI1-B<8=I#M{G8Xy!Q%u6#STuHd&JvZM_-HOdbl4PcVjA!@~4M;`o%sxtq=UN zUCw-q?>v`%#Wb#QZn3vDIED}0IuEn=+B(k#zwK9TDyHQccsWi!9>4f0cE#G!O76J( z-R#8iUtY6+==Wdxd*aSm_oMyFb50xI^L6q6Qb&&H2`4mX?wq`?#-nL7*Trkv@p=xd z`&!f>^Ivk67`NVk!g$eDr;c~OT0UDJ?S5=~Z~3Kz<7p2#W!5fZxTfUQxqH3Ze$=vT zz1CaYv7zRvSJcnv{j75)DxPYCR*ARx=e}{9&r8N!Y6D-xWG{M;>3I<|V?^xLM)!$j z^)xP3%fgA=h?#z&Lz_<=bv^loZJQS#KQGRu;upW!*LXE9*cIQxV9l|qOYt^e!Ls}_ z5AKh`=`ql%V;6qK0MqmATFiQO>}|~A(c}2I_B;;pD~93|1DiF@ipv~3^EaIoix{q> z<43$!bH~`No%(}I562yTQRmyAdBXU$=bbj*AwT0Y-HGi!5aos+&h!~xVj@71c z(YkP`2R3tGIdz1GRG2hWFHIC=OY(uXY z@8;$4$i=bUzt+%k#)1dDI-hy1^I68GSJ!mb4!*0l#jSA-EOLOKYVO>;7U~OL=WMYI zW47-$?i)3YTA1IWeb2veJ@MO}-#QTxA?_UC_iVEpnkP8|=w?Ma4V+}n9X)8azxy>&*z z^bI`YpSr-kbVTpc?6`61O-~wE%X{O0`<1vG|C8L0+P3aUU2FH`tA1+#xRZSEs^ZSi zFL9i&*RMD<+g4-tt6p(#(#HKPW}Z9NM7zj;OHX*DO{)WYu4&=*IB=^P&NWI~I0V0r z?PITr$D-bAp8dT0-W=C+g;VA0+$&~q3{HlTE1R2*{3zTxNEq(#FJ zTaU+@^YvIuj#e*Ovp(WmEb?&8be~2|<{TEg#DIh11^$FJ`#EOWQ6KWzORseuKRCj@ z1LNp+vrh0btf=977COFjaqYir-*Mvs`nz|p-0$y?$G9K$ZnXAR>81Vd zzu!Ne|0Ac2AHL_w<6#$_G#>oz*Qd$fpp@7T{izZq1M@RO-Ks8emfG1% z8(G6n^|#i}e6Ok3tn8=Sg-_zj;4$hp^}*M)ts$=lXje&yqucY8Q`Ph8J|wZiTD#oh6k zYwu0{vvu93I!f(guj19(78d-weYdOHIF9aN+xr}A{LU|U-?nS*Dt;yg1`Ahlx z7H^gB+r0i2`^Pme+&^9|P5W#wkhN&nNPo@MGLLr6^JN^Zk6C;5^JG8TZ%hB%KOgP6 z(zo{7=N=fZyZXTRV|`!z{lnhmZq)nn1Kf$d-{XG#ji25>zV~bS{=Dm}_2j&Go!i-s zJ@)CmD@gFNg+>!VVHmil9j-1qD(LiY5+fW>zEwNzkYR5k{z~8AKA~Ar(upz)7L@ z$Mmdqt=GD)`+lC!cUObd!NYx8>pI={`@KKk({H0oo*pjvHV3^e^__39Yo~tu=N+<^ zS9@r_!8T^_MnBrq6Z*kt4HiARV{2z$ee(|HPWvo;3yb^ZXL9mx?SVU9(y&mA{EdjwOx!ulC!);cr!CA%EY8vM#XXFXQFkyXt(M+;-^=iGJY zJMsQ_4NPH7{p=T}zTfcU_dS1|{6GAW-{#+s@jJ2qnwsB-jP-kQemBUKp7w^OOJ#`O;&gSmpzG~n1sX6z> zK5wSEs`tWM>^O6exYeWg4DR;LyF*Kl!_l=pcdz>VGfz#8V8CG=yuq{YuIHUH9++ri zgzs5z-Ol}cptaQg^r64=yu2^Y?9+=L_Xtn*57*#lKWFYu4a(DaoDnF0OmCr<6vnq0K@`_R7gAtU;@$Hb;) zdB#_AbbaX@{#>(He}??SzyDYM-unGmza!`Ox+m4AHtXQ5 zHI$dZORU;c2FCqa9ocrzt?lp!CR+3!#FP136PP(}cEOd}PG7!<)mfU#Uwrm{)_2Xk zE7vHKy}#ChC$x{Z;^=;IJoi&W&GFV;!^?j9(%u`>8s!80^*$U`_j~@K-}vK?{zt#{ z_0MAVuchnHj{Lcikv}`u`2Y8xAOGL}ew;r;zJ5nOf8G68|H$w7@vr?8zp4LT1KE%r z+4lW%C(n57&l{>9eY_jpp)h^duJe1~ZiG8OtBcEf5{CPq{e4gFF&}->mDq)Whtz!P z$Ub@L^WaP_=8G}0#S7Qub_)2VP$SluZ*TQv= zQy+Pt8!hS0Z%sH=lV8?)e%4S=Ch&Ow)~Ne!ywW*Z)lV%M+<6W6S$*Df2I4@E_tBO;)G{V_b3VFHZv6XB=*>IZJ#xEn>b$=rmuHW4 z)Tbu;Zf$rwwW3kE{?6a>8-Dy7|MYMA@n@fZo_+ke@&5ac{Eqy4?az<%`;k9G{`Eil zYd`+*zxrE${I2KUBUgrc6Wk41`Am0Bma6kx%YE)nz4LS2cQ$Ww?$Ox70TT_z@m;m9 z)Jxxyoz)I~PKiy!jPXwCMMy#AS|9vt+3jp?cDJHx`YKJgj9amv&95+6R!Ixw>b zPB_5dn#dt*sDn@I$zb$wrg1VGPmMqK1r~QfAD*@?5xQm?)12iy01RF?qT*DBl0GD_Vp&f;C=h<-}QAi z=dCU0!bv^64fr_gb!iO!%y%5!M^EMu=crk)XI_nz~JaJPW zxrLUjW!~eFjW9ST)8h4>e<=f=QC?(1EX;b^*W>0@jiQ3HlN_->15_t4hakimGJ zv%>es+i|UARhY98g$T;waNmW^go>8k2(I)sD0_Hd4KJ1-bQ0MQ}L>5xe>j619m;C79evJKHGaqVBd0fp@m!;>#5;fI#r)qm~#$i_4(|YPiFG+a37wvrk68DGCB1bpT3`+ug>PY ze#SNr;*^6))&-M+K0eeHqk(eD#3?gPwYEG?slyQ;D9s!q819xg5G&o%Ol zj(M~2bbZu59O#5kV``{5-^0J0!bYz(KbXZg*z~g3b)%=wR_|z&XZs`r*N&&aM{{$+ zJtMkQ<6O~``}8+gdhR*B_6EjstOw=Qc&pQI5Kqa6zt>*%U!GWJPit7u(uj}3JUCYq z_ewn;x!Y$A_h1N1c+9COKJf^L{TfewK3|PjP3I6gm#g;DXZM}F&DC1)r5^TI&w-`; zS^de;SURu&z47`z`Ct5dzxBtTdH!3Ozx=0v`;Wi={C6{di!WUl)nJCB?7WS})~ zLz%LtysDS1{br1>{Hv$$u5dSB*K;pmc70^8bLnKhn8S}Q_u|X?_Z`r4_{4|C#9^M= z<QUOX)JWB?u`T%FZm(Tg^?UNuks z;-F>stYhz?&-k4)_dB}mgL}!ki-(?PJhaU|c`t9&-8|`)IhgooWM7{7J>vI6KH^Uw znMKwsgVj0tH_y)V9Yy`-%pT*Z>(>0`@z@*Q-m7`&Ko|aM{HOl@zwgKI{hhz*#~=Kc zf6I^m^!fkK@F$-C{hvSc{CC)Y;gA37kN@Sr`yKD^Pd|J4{kPAW?@vAR`2N>F`8$3b z-=BEa^ZnIl-0#16=6rwr`R^N_--UnW`ELvV+<*4lf7E|#_+R~jU;XhP{N7*r@vr}` z-}K|3eSWY1&fhFwn|r*E-s^0YBiVEgkp;QbIqyO9=f1jM`#$%*QwP7tsk!>$63=}n z@1K+81lxP}`?!40&rsDTuRYCMo-DeqGe8IUT7R9VmR~yWvx|q`))r^wled1!>o3po>zoQlSgM1A5zW0W?a#Lyv+kO}sak6m{;hZMw(rt3IT@!g6W42M zlH<@g9O!Ir_LBdZZ(q+NlhM<8Wd_@yIcHAR34f1)k(`Y`-0drPdmU%Dk6csx!rT7T zd(IPw{?}N#+QZX38q>!YM*2Zt)!nr|i#O3+&wBDc#yM-8(lUCgMw;|)#5L#OMK3x$ z(yvi|)xTV$haPcGo}mRD)>N3P%QMbv1j~8YN1w0u(bs-e!`+~>F-lL?EXV2T)Fqv@ zckc@eOpTjS^Q1?=6Kk-aBZJY|9tQ_5G;qc!eWzADGgA9C;xF;P=8ZMEk#UV+;^V8g zYJ5&^$_0LKdffYZYTcUckWStYG2>Q-8!h#n0s&w`-|7T@7lPpk(zw7Ot z9CAdX_HJD_p3mW|{;w?h{4?jtrtYsZJ~6qo#h-gXC;MM@$$89MqjmOMIJ8Ma@549x z!1?mXp0wbHQMq$QZR&4NrDL_Iw`x-3v5tCUotd8d!iT@c1AFj#uX*RZ{J+kmPoBg{ zAGI}#Ls-KVg?T_Bt>+`A4 zIrYL(4&awA@?NcA%-Pni7IP&}V{Hw-F23hnc(rfO;K0RM`&ys8fy6Wp`sG(|6x=#9 z=E<8JXhTQ$Km6(!FL{z3wcxYXIQrHDSf`#Fzj-4|G^(z8-&wqSlEZhFI^AP$-b=0W z(Y@m(@4I@eY4Tmqmsa}Y{^`|QgiD&>5r=rF#|tC1oTryxn$ur>eCz4aTjw`s<9&MZ z`${bM<#F($Kk?yH|ARMm+BZI!TNjz4A8*t$vfsSzk$bxDFZ_2MYmM-Li&plVXYla| zH$Ay#{?$jlu%*-boeOz@_0@M`q$lTq2Kuf4shKQxtn8mXYT2hpYxgBKb84kuKL@K5 zY`-W6EhJNhGA zGJxN8$~-wZ(-<82uKJ$jp?f)-eel47pEc)XtbJ#JPIB2i9#8Zzp1tQ?<-18t>3R4< zFMBV}uDLT#t&?G3*`Mp!>oIEEN379w@89dhvp4y_&+fJAPiGiNdGGbM zs)o9pU+<0@as~HTgEP3CaVK|ApHENCRVU3m-}CYEtPi|6Prl-+IyiS-^^M`Tuyt_; z7X5Har+bBUYNpn`Q{TKNziPEdJz3u)8Qpb>QFG2y2Xpj;)%E3j@~Zu>IeU#g^>~NV zy}HZQ-`KOab7v@RdXr!@&uZd~(Y+^!>#5&&;p;cz6z9tY;)Ua93ks*IDgTt9h;S z%bc0(+*!_g@vK!G=1ETGi9`z`)kqxbe~?!MMwFm?u&MQEjuacc<1K#HJoltU zyvfbJ>X)bWr54pCX3eQjUglkU__?_%dt@veJN)^IYa=k&K+!`J>NBk6(Lm}m!= z@zCG;$mSU@eAd<5c*6-6W9z|NVD@=oULX4Re0srQtn-@lX+8HgT63@a(AeX=|DzVX z!71*kh3{)TvoHqt<$Q*7JPF(PmA%s5-(VS;FzqxxI8T(v(nSY&0t978AzL&PrGaouMPHu4q{(;rn24j7Wwqxx(0pEPi zF7;CP#e3g@YJAt#%U<$;mDubt{(9JCj#jv;pL|u58qQ3>_@z4IJ3BOoHbA5mafOsQ`2Wro1Ctn_q>|StNQzVvJQN7 z;W=~H*?B+I9V2+;5xP$=(wEv^xm{S)lE;zX)Mg&3-}`7%|z`Z-gr?zQ_@=kR~rOXEe}=rF$X z=ggYWKpwhV^`3X-9x@x9R|c);y7!wGtll4w<(C|ki`Pf}X5gH%Z)*#8F#Ejc&QTop zm>ABEb91%k(hz#t`@)bOaLSW1r$^^xD%?Cf=IiJ5(KXK*Z-zSnTcbUY2Yp>%{gZ9u zFn>m}Vl4ktKX}Qbd&eJl)i`JveV=`GHofjS zxq3e^((CGe&OdeZe&MB8-jVjI?>u*&$*nro!pk0Y>wols%UIf73zoI@IeO;qwud}3 zufqG_k`A(+Y^E+bTG!x`1Kx}ahx1Ag;2q;=2g{?qvUl|1eLYFL{P@!Q7tVat2q$&fn>C&J+`V9AJ=&GcY+79 z)P7=XPQC99otp{%ihDUC^V#RDMq!A%*V9MM>)zrVUwF^4`h*dBhYy|}J8LxhF0wyy z!Nhad?R~1BGiu@KF?2QV(@PzF8o7@eN7vMXv-^W79O0ccaOe*6j5}nHv9#ekb4DZg zR`pwlj?gKbhyS%FU+TB!!ap^RgzOH8tRF|L#Y2;4PN? zOUpgKvg!M?9(c@~XVt59jnv*=xbN5bM^DvcuF@RY4j*0^#XowkOwf}x=233cEO+>V zV{1Nit7dePe`w_#406kL>Qg=0#@$|+(rXXxt7=k1&7ZG18P|jIP95U*K3eIg_TXr| zd=LEm49*9y{7z=$OM9VraGP^5=tC!K-WMY}$%H!k?(n-yQqp z2FLDi24u(2RARh!iJRJA(ngIk&pb|yJg29|;U53hLmzY2x2Hbe-0XoYdc1HsE37xZ z^c+0VpWe_-EhG47qlbDpS>I!wFV<#Zt%;{P-J|-fKXKGES>xv!bHA|A#+c{dzI<2P z4}NNIF5Q3Oq(A!DD^6?welt4veM{%)FaGARztvu6gU=owdw z5}dt;{~7U~nNY)+dTWm!&Aql3bo)N3U983-AHN@A1m@0E>%-^v25jBkC} z>$`Jy&tCC|hSopp+%Jy1);RLB84PCkL?1dcUoit379S@JtW=%Q-mU`TV@Q ztj}6F80lAybe?&f`GN($JmIZI=GJrirbcze1y*7kH#AiyU2p8vf1iPYw_2NHey60~ zxnI|e#;XRsjE9EOxb^4U{NrhA=|^wlmXq%bfV*{7j5=AzdyiVulCrQ`rQ7>vAO7-e9&=w5qI9XGRR!q`|t`B zcK4g#bsswLa@|GagsvN3n9d0f_rWzMi7g#K3Nk00(M_obQp%e#K>B~Q-_bKU`GopWa=KAjKlYQU4Smfm?gbNA%(<(aef(|pP} z`KV(|t>B(#=beyE*NpbVC-;b7*5zULZhUwbr+do#JIfb;)Vdzc>c?ZBm*(!FhS7Yt zj$VIg?|WU1e&hI)R_&*TI_E6!3*J0m&6jTQ=y|QTo_7_#$IJFq?NzU{C!1?ux}EFR zO%7n585o~>Jj%bb*S_Cv)%UkLtf{p<`>SbcZVlqlJue=(&$#{U4dziB*w*a373Z6S z9NeS(IO+>~K62T<)+b!)l>eLy3m?)%KVy4I597Oe$G5o8e)^U#^uXISvrio(zEtac z^1SAGzGsbjo}u^dsr|EWxPG!vE#uouyt};{wCE1eKridWv@YpGfAt*m@tXJ5c&%SQ z4_*&e_neu63y!pq4Z7Xa^`&L7nj_Zdx%$~VYg1F=i3{!BTX`;r=U;j3-rnP>Vb23E zy~DG-bCBpPkXIGwE#H@sJ)hr^dOW!=p1br!=!B%Nujg$3tt6963ifHy~>uH zM)zjJT~`)l`s~&D)~NT^-rA;ydU1_!&KCE~Z2OzPKF+fL)D!OwuHsmHy^UjyhK~`?w?D0|d9zB+;YDld zq;KnkQ+I}E*V6a1-ac=CrDw82M~ySjI zf7bFoKQp^#fB0t~9Q1yT-kbLT|8iS5-mF2HfdOBQ)aG1$(t7V}eceIhq&LsW3oX^p z{pH-*Pi8M|VB+)A7a7C3T8k6B$xAgSM&}cEB2CfT7+SaXSd;D9^RA`t=lxGlYrtpR zcX&MWI(@9~pLpdQt-2fMi?*{)_d-wCfFId%j!)LY!c$~Ap7Kr5yE+b@=p9~hJULAr zYx#=&o_chE?ON55Mb?3{x{7DH$SudjlII(b{u&o|^r`k+E4sle{nX=y8oV%iUw6rR z$JR1>XI^LM>k+-rxP77ftpCd1c&c?ioyi9-zR*D*{5rQD`8_>mjq$9n_RyX@a4=@w zU4QrGnt6?l5&7y3Jp8#wUF6^SRMuT5oW+}Z^xb+{ADRb8d(I+jtkwB8)@Xh6NgrD6 z`<4#wpASBdXP$7@x#l042A*-vOYd>E??Ty%-@3XsYT#xB)1&#|F^09P-}gyQ zul@BKwYzs_;P>NN{P2ddM)Sn*9L+rjU-q}>$p+nZ{+<_ZX=0@2y{1>Sqo+COfAUR^ z(pKxP0Z(_Z+M{3is$&k`){j{(Xy4KpPTYa~0--k0up3XF~l18w`*Z6;F8K2qH zHBsOAA9dELd{d`2ISX-o+(q3->c6@7OkR?wwMPG$%XMdsV?C9-czFxb!Cs$_7T*!? z<>#7PQ|Bf8Q{!-u=hO+mw4FVj&iJ{Zq^_~?^2?k_kBZ{LPI;<>rvOm*fHwtMc((7=cm_!5sA zMzD@`W;D8w^VRyk_o^cU%^x3uhnLJ34fK%<`_3owTpqo{9+vOHMmu|% zsm`du@8FDA>6tgTTDeo*B{sfhnPmFb* z_p&%>c$h>bGvzc}@=6b1m3eTl2!`Z!%2G!s_oM2iLh~v8KK` z3xBfS_3WW#_dCzI@11|Vo9dshJq&*Cy|A}ldYlJ$U!y)}7`4^knp{r?8lNmj2Yzx) zzE@xK`khF-Jhs2o9y-9G#(ZxrRcrm4qqooY+&b7V+~j~KF>Bs6mBHrZJ^GDljjo4V zcMi|?M!s-SBmUy!(>u~yxNze;Ypp?=3tyk`jE~0m{VaZEIeEa5{p)AyvX;6U^DCTF zxBPw9cmB#357~Qq6>ipPF8}UxhGdGj^uw8SStB~(`Rb(yeYNImj(J;KH|Jn!-}gry zoQbu2^QN+w`Pax^>k0l_^Dmv3-og=MzXn+PREoa%M~&Hy1U&=XqnT(?1LJHP7hS{6{P68s+5~8%O!zL!1}(L)UDOibp^k2Cq z54btfOCFmadRn9J6FkNvE3{9KGn#kQ`{S?hsh`mrT(h}O@9KMcIJ1ZQjsEh_8U1+q z8qp*#%AxC;KYjVVNaOW$@u8QyZ2f~**ys|saXAzIq}n7baTPTiwlvPUA}hecl(Y_EiISVe6Zk$**}f|Ef`@ zCx$azjotsPb8CjP^_8FUwOrQf{X7r7!-bd3hTa~B1OCHraMMGb-r=LCdAMimJ9tOG zF{nqov!aHKcMV4HiCg(sowPf%Ja0YQn>y7`FC%#Oc;0osMfekY&aaGxsk+P)E@^N^ zXo8y&oc1>PG+z5e&yz>;&)i(alRm7uakn>XglU~RgS)Wrk6P{|wWI%Md*}!A;JNk1 zI=O_cyM{;S>8s}Y;B2mWTVM69>EV<=jrSgWVD%nY1vaY?xel+2GMl>~N@>3reU}i14Z*A5{ zhLQbhv}SbN**H7b8vEQs0~i{)AMV5N3mh_8f0F|^RR?y@C%f(6bLyUPYQRLxvA;a@ zp>cfmxjmxCBi`g`wN2lyLmxVo)_J zw2=FmxoXZHG~t2F(~E1!dc3bb^PmkqIchGyU~>M|M@?yCuKM@ex%=tCm;Ct7z}vp@ zB7F0KLw%3yTUjOtb>c&(@7U)L$K2ks8ozPHPp8*IgUFZtlM8^#a$tkAB~S zwKd@*_T<&P#e@FMp}ajk=+7F@g^y0{zxVpQ_(Ov+q=S6e2P^k8uiB@Ud9C@>ch!s^ za^Aks*8QVX`1%?0JlEt#&c2JxZh0nWVMXuob1xpp&**vIg|lvsr*3No6E4OV_U8Ct ztq$QRLvs{H`s#ILE)L<~*}CL+dv2|rjkw%9S$8dWdFr7S-1Q&2@Qik9s#jlNRtD8O zoHxEaPR(#EMtZvV>1#YVnqO~bd4gBC=As5aKR^FT)`3l4))g6yE;2Z4pStns9KF}I z!;{$3dU}-)_0o5bXWzVs%62p)NB2hVyAI#h>|BkZcVF1-HAeKa&t2TL>@!l|IGrnR z&Z9Z(PrlE4Y|PX)y3hc}F>bx?_Z!!|)rLGTRp- z`MclsPu*Y_H=6Hx>xyi3ZtOmP`pG}<P_%aR%_5z2SL!tv!1mj?r;@kk-%_d6P-@lJUud7wh>MF8yFqr?u~a zI?nA|zM6kMOFtQ&cQNl{d?n9~?QBBFybtl`TMEvu5l`w`9gohppVPK zmKd$$(uH68JFl+6*Sv!d4T&e5FMZEmd5wN)^ZTF|yq{{0%yegw@8Hvm54gnvr*y(g z&xxs8boV$utY6;XGKW2T&l#LN${C)-uHMv7&5n;A*AISZth&XR?7p;mPxal?z0QC= z^sI&>_eVo(BHvS!^h6HRTi9P3$&Ws* z@l0QH)m?4I)JtFOQ!5>ME9}vyI(y>$OAmWs-?i*_E^$|I)OdVxkJ6|-z{PX-jMpy> z>@m_;Yp^)eo_Jd4<~KPXJ-K&k2M0f={^6Yr%*jHUHF5g+Q@7)A9&@ZeHDg3_RQzH^n?z46h`&%fw_6D_qo^N zpFQ`?+2}#T_jr1L@r@SkC+;(EUX5^z!}?j{GuPR}ymKhd^40pynKkIl`r4z0vG*b) zbTCra<8prCobPA*Is>%24}3JGUe4fT?OJ)(zV3&9csZ*zeVY3|wq|_oeO);vc4M_C zH26(}r%}HL;J!z6Rc&i74d@7d^W8k)PyhHt1NdMrPuJ270nb*-Vy~PU;Fz z{6EX))T~;+4fHUgOSoBQ{nUchS|ZC+Pw+oA!gc=CGLl{A@pyZUjq&z+=QP1z>j$Sx|ed_k8-=%jnxPtKbNy`MbGbzscTVtE^X?R7k& zx5oWi<7BoyADZT@ahZd2tUhtEk^AXe`^l5u;AYR7b+_8rTzMt7=AA2=+XHXU zwfJ@B#_ayXyU$KN;Aym;^f>QkbifA(J*>g^I`8(uZC~fR5Qca%S1__CYsrAjv%cpK zm+Ikr#@!=R)tq(SJNMn+_+BQtz3>MZZZJew0-<*UBY!aK{o zo*y-;H^1+oaRwVbJ<{K2em~|N4O4gYj#v0r&tQR3Bl@@Y$O+xfMm^4Qu~z4KX8iL` zm#_QGvv@zz(dW@aJ^ooUihr_tFl)cL9}L%6bJkZK`qd{7-sfEX>nZxsm1E9RPxkNr zXilxn>t2nO^GE0ON$Yr>`m;yc#izbHKl;W`))@bNuZ=%<1dcF;o4q=>-u*e6{;tL6 zGrHHF$N?<4suq6c;Hk%%>HPFvz3iVO`}gSn&S3hNbM*AO&hUf3*+a8@NF#IUfLGbO ze*6^fVBb1etB3nmPA{FQ3+;=W9HA%bQuE7mc^$udHhZ@=>T18{!X@jkH&uJ{F583s zWv{Wo%{uQL`XZC&SWVIeX7>bldQ#2!Z$H5m`6fQ^6)nOe3uF0wG8lc{kJ`}3x!+CH zjYc@7B{D9K(Czu$!DvwS*6jOK?%=0yYFgiL)LdA4znrnxJ?-u5Tw1eMysq_`^lL4R za7n{kH?`L2n(mz}$neJ5n(~^Nj%VZg-LL*5A7x|=`BQCpDLtK4jH9ueDYkqlf`i1P1)Ha z{p1A>_rR#S!5nR1wwBV@e&z4L?fuDce4tSnr{7x(JgtQ+7z1y$kCt4c-(z~w+-LFL zil_BEcl@SK?^T^LAUnpbNBd%%uWRP~#GL%H_wkvSJD>ep^T|Wx{NQYT=+M33Ir`~)=*Q5^TulpoV`Z*U)-kt606_j+Dj+(*n^7dg!Nq4UZC9_}gq;Rl_|I~eyG4a*l?iQDJTnffaW zdCz|4H8ww9o-y@w_KP*%qlVhW8BObZ*2$Opq|y3roLr-YJ&oM8{JycB183D|UcDhQ za?QLKa%mr`Rj+u_boQm6Co}TuQTe6@v@kl;sM+-fpkT44qZ4Y`Bm2xv~8Atc^ZpY<_!x*Q!Ugo}=ZBfd}r9wYkY=y;Poa z*Nq!L1LcSMb8Zi47RGgdn;9Oh=QFG2R(@U6+O*CbeCAxZU;8ND)O4=VOpf&RIK243 zGkW_D&E79GZeQM=F9AH_4GhmNV`God|BhP9MA6(f(E#qCA z{hisBt1%zm@n@_vH?YL-x778UjrFVkOaF=6n#=cUyXNHIS={)OZS_~(jQBb*2PZS~ z-0#7A)`9mI{-KR~)Yy7{;k-4DZ{xZb9psoA>P+A5`{^f(hr2lRow&INPwD}i{`N9j zyKZpNlzNOOPR?AbH<5MdQLXQho*lzm?R|Y z4~{zDx+A;kefFr`y1^xn+?NhGoPYYqE1J6>-Ocy()q3V&dgRWg?(!*5XLjkKaL5JB zyXV%Z^T}kg{Omyserlcb?#)ck->uR)`o=#ztDF5EeSb%e7caf!aQn$MwaVZ4Rl~PB z$6Ir^H~-%cVagwv)PeIge%1^R^~U=-J~)i;Ui;y!#;Wh0$(eO=YVP+#A9`4Wv+LB~ zxaK)9uQTC@x3T6N+~ytZFAaBH`@&y(edg5GXwNl2{q8z=*)zW1FnHj1&GhoK0iSEk zS=h#Z&+}Yd>IKu9?C}c^EofjAPTT?c^<8*B`QCH;dHq~9&Y5%ToBj0^e0b8C?knec zzP_IR_B10J!Ou*L_2{M#-|;>guh*G_dUP-11RLDMWUn>1N8eM|h2B~V_noJ3V*k-~ zV9%Pp9BU5Ot%ICi9xmUFv7DhJG&eR}Q%fIbIl{>vwT!jTmwPqu-p$T>j5$9`Khc-C z@aLE~%^h4>hZgWO`n~vEdg#qJvR+1O^G$x>f#Z8j&-oU9z7IFvnrD4YrjvPUNbc;d z`KjIa)m)qXsZV|LCda2ZtRc0bCHZbI@ZEj%z)4-L6SwBB;jUCuJwCI>uf6;kMx(Hm zfjPl^IO-1O9?+3JX!YoNX&X&}Asx5Y(-&G8@sr$|lLO<8D{uH^#22_ZqK}%^fc|F$ z!=rL?258ZU=Bn2>Z*$h1H_zN>b2F!|x!o(BC&y|R+TM8`KDSOiXvcf< zyHA*^9lfKEK6HSW**DJQ-t~vKQ^&#aXkEN(4sV@PgWek>Yv255ZU@$AX0OH@n>}h) z!$)s%`#Z6!Z+mC1+NW;vYVCb?;?N5=8n-|2^35e)>IX--b3ftdmoSVIKSQOz`+e6{ zck0wxXE1)%qdMx@Ywe*awPqe?9~|c!whnW(j?uUnlcVbEzKjEZ>7za|&_u6mO4EaL z^bKzDw@06!II3$Nvbb>2NMEhH{_r9V?5DObUB(=p!wrY~m4!I%>8?{IlSAt=Zex|F z`C4Q1*~h_0?d4A#=bf>~xH=1Cv;W!e2m7JFd$#X62WPb0*((R(kSV-74#ru_yKuhJ zAkNOHbjx{eBU8IKO$J5Kl;G|wS8Nswy zaiWKFX|gZ&&8>{Zr8+d;T<)Eo@y>pZ#!v>r0$*C&cX%bg^$=%hv2L*P4x|fi^fXVs zy~gvqJ2BnMe)azhOFHPW$L5?|?q2jzv$}={-t5yJUQ;`qjC!Bw(x{x_1(%V$;Xsep zc+*%IeLmjyj;@T7pS;y;9M;KaEvH9nYh;eT^|5D}h54vIH7Ad;lY=?j*64SEhpb_K zG?-qj-}G4#wsVUG&3UYrd_WySndzp7aA= zj+!eYu;1sp7iaO#k~8inG0?L3eZS@)XUkMCePhL;SeZ7ej+-I0a3ANqU}pJ`E@?jn2a#XN_v z@Y8oU8o+D5sR8%B_kII#C?97{ZeXy^dd?Wz!)7=hYu%Z@@1A;Li<><#YlQRM(>s=K z`^p;T)O_W}862#|tGm#=bcplD&HdKDccmWJ8_#?4M_-SV;U{lr893J({nCWyQwQ9P zr+4c?lk3RmKEN8IJy-})MF^zb&|s8Jpm`FQ|S`$ykm>aB6lH>R-X4xOO81Uyl8QhrU=25ua`>DrwwLJ4aPwXe>=)bj@Z}OXaqOQll z%{5*!%hXG)IGj^vnDeuq_wn`q&Nq~tjaPo3&)z1>@d4+_ch|(v;$)IJ7Y1M9Bqnow zvo_zAMQc6zziP#!HwiX-8sD0zOYMm*4|*e-lUwK+ePG~6*zcba@EH>qos3{yEWI``~NjXFxsd zRW0uXPK|gb3*`mo*+;Mo}2SM$_WSlXLA;!d{i z*^m2izq0Y!^w&K^zI9%Fwbx&)U))hcy=%Y?-p10JT;a;~<~2TU&8mIy2ai#GrT^`X z9(d$gS!I2m)hY;dyna%H-)&=;uP?6c)q6Yh)6Z7zv5!vH#+>&wwK}(kt*>+ZjULXxE^nUC z-Lp47-1DJrYVhr>y$2<9=86CU7{-wY7A1*M31Ezi+e5N&A<{(pNBF(P9F}inn$!2lG7k$FJGC=oa zwVbnFZ&w{2!T!nyEu7VO&YjuvZnod~H6L1DwcmK+ExhqQ{di!kJa;~|wZz94&zW?qS9S9?E={Q?@zB2K;EzV$k9a1Vz?NpT$2)xbPmQxq+`(z? z;Y~eorZ03dnnT&K-Z6CS-jy@_dmcU9N&XDB#;Mu!#=QKuC+#gZbqB{;Bi~@nJNc+5 zE8b*rWG>P+{c{HP_CEV)yX(O{YS;IpujbDOrg7{i^`I~D`h0LWhu3%~NB55o*Q6fl z5}w`#-n{2rz|dLb-QJYX&AFbVrt_#gdyo5@JDI)h>-#Wv?x!9!y)o%^*3{y)HIE*h zjh4A{)j1#cD@*!&44-J_y!wodu_3De;)sSbXoEhv(6>xzxOCJ))BuVaadm zQeEzgvv~*8HIw(vz5M5Wz*A#-IM#E9zCLSSW1(gHhHo(oV?JuhF16QQ)%7?Y8snMM zm**1bP@ zALM~%`0uQRMQ-qD#1A7FXFfm4Xnb@p8b7^#yx-0E(J{S;=gjNM8Ljsy&AJoLj5+T% zc^B9I+;?hD95Om;3wM2-TwO;#%c=XQv%;pA+M7dldXMyUAN@UY$ExF;_h1a_hIj4^ z4de(wS>fiJ5aGvAi19LRt5na-r^&j)*_WqmGXYw>!N2m7A z8u`&4J%!60eYw}XqowLrN6g^@r*p470~;Lnz{#HG?;bQ-KlSvZWwYe2hLigB^x**v z*Pi|s`_QC!g;u{YG&@hulzZ(zHIqyFSgePK{X^4FytziWiBog<@TsizUb}a+^m%Y3 zu6ibyuJN51H-1*vgX`cru%^yj%C*+`Q2mLs7^6i#mASF(5sjSfINn)Z%@H z)@i;xKe1f{SDzPtaQqAtTzaU}zB7{k;u0V0?u*RvaNu(O=t+DycCXK+yKs2lV8NLj zc+}a`GhE#d?_xoM@={q>b3wwBEynAbX>OT>EN6I7 zwyxhym)Cms?ACaB#w$9d9UO7JYv#^6ud_zH^iRI4&v$w91;&BNzQ*iPR{5^=PFrj7 z9h}!aPbP`So#B;{%=S76YanmCs~>$5L=^WM~f{fvj6 z;1#ZPR1F^*IB#vwxwCjU8sGQ!;s_k#rUJuS-0S`?9jCAMFqz;7P3iZ& zcVnBs`_MS~xL-aJ+aBci?x&Zr&Tp-mJ9Ug%d-rOsw*jy849DDOVbOc*{o-NIx+1T+ z`_>ij0Nm>7e#Xf%wQdbLKegMx_1;6fd|WwiFYkBw51i7^x#s9e-jnCfHT#t3=5%nS zZqbyWqoQ-{KB|vz#-4uOZIQ?+{=2c^=626?pvC{&-}q&oJU`49GzKPHCoH> zJqPRL8SW!nCt?AUDeeT^FK79_}!T0Q0SItLT=?^WL0sXJBdK%AffWCWQYjcSA z%!S@OW8U1YkGCc6+^<^Jrx)v!4zGo;9J+V%u@-6eS!sUyBQIk(kLss}-ecVCxC3cA zJbY$5{DnUp+tc;lhfiLNPd#Jn96WrxH?xwb>eJ`k+VAk^9Gn{2XRrC=PQ5P=cfIZu zA7@S0GH1l!`fV-7sXBW)-=sK0`{<-)YcIdd2<%_V z1YKthZ%=o%XK;Cb;f%F=c@>+h?XkUI;(`p4r+`OB@q*mjc zFE)7Ze)6h5^rDSDG6b7_cg{psubSq(tN)6I%`dX^TKZ|bVcpzvJdk-b#rdN zV4%rk)u1hZ7TC|R-#FN%d37W{`+5WFmnN{t&zj|9b&MwJ7vtGyk6Ml9s`J*#SUMZe zHSn^(J>#j@-9xWN_8Hqp;MYFbHEJzAtm)0MaZ2y>qu<`Foj!PU2XWqa;x)WIzO?%8 zQ-gF^&vK>4*6LiO6+H2?*P53*GgAE*AA9It4TIB|tH)Y-llM7U3im_bV3DWq;Nu=6 zWAuT0j`oM1Ba_Zh`07(Oi?Nx7hRMBftTE?#_r`1f!n?FL4p_sd8fChDRWsb^)19Er zK78(;%)c>*GcoAPachTPXJ@X7z4OiP%;5IR8XerHM|(&u-Pc(*=ra!PU9=@B6*=z~MS{ z%PSnJn;g@B^D8H6;b7gmSDSREm()P7y*M9wz}xj=kG{x4*uF>B8lCNG4J@?OxaSx4 z;%z3OA^L=&J8Z0~Z!T-Aed^#wXN}C!gC=U}&pOS8+Zd}8Jn20#tOF&#m43so(FhdeoPA^n=Yv4d*?!PW)=59-dm$(|cEsG@xZL!awJWJNE_FYd`sV zE^Ks^mc)GfdNe%ziL0I`&kyb3=BT-G#OJrNd5pg8{qSwQ_xlfx+owJB!n^pBU3(sn zsxcO8dbf7Gqn-WK*L%e=*u|^N{I=cC`(*Szb>Czo9oF}C2g^JD)^F-K@a8VslXG3J z>Wgpp8w0)5cVSrji7QR>vryQhl{`2nFV4S4ddNO&$buTqdOf_HZGU?>^KYD}r^k5m zKsI0<{DI4P^{dA}hj4+V8owDh&%5_|Yg?`-_nDJrYKI#R>zO-Q&w2ydTX?HweDpec z(nHo-3%Q{`-wBy$uXEXVLf^chYd^JpY9N#9%lYD%8{Ql}r_NdEZqo;M%oukv{6{vc z;b+?H{VQ+$ps{MC$$gxi`_8$~x!)_FI&(i7@dO5=xxqa00h^ILW=(C4WW-!&@+6Px z&-Hmm7VOE(Q@ec9d!8qUamk=+>94WZlaaN~e)D|2b!CbtMzEykM`~=x9x)Kb)=G^Rq5>p|i*Gw*J(EUUJU0_(o4_u{Jb*jbPk*(ZrbA%>VX#=;(J~ zzj-EHd@1vDk8E6%8kn!XBd_Y^^L=KIwK!+?sH^`M~RuTz-B}%Zc9UU%c@K-_Q1aZm!Hw z=hB1b&vA9nojhxLbr}P&&&Z?vK`z&xLDv-Yy)JiGJ{ch+Pt_+ToR%2yeCG=J))Z!z&V zdT-6bAFQq=SLXy4+-QdjOzL{X=kVV=!hq}N`EA|cne*wXy@ThCgQo6VE$4d`N91|j z?ZZ)TuD;~UJO@|zaB7h6(F#uYs*YU1-!;C52kt#Dtf*mL=c{*kj-KeF*4f-|?98d_ z+p9ftAMoP?y|u0y>NJ*|QPa4~XI$D9;{w0rf2LF5XS>Chi?i{53tjm7%>^N^j zZ$(+`S>KKK@Tpq+0YABW@5s!)vR*x4*%Me~OdWn}&EBnDI)%A7C-<;|-W^$fd-6M~)-gjZ`V9=l1@VevNJ!@e< zddT$|rP2IaM@{+MI%knyS98_zO+Kyf*+Vz@^rZf*L357kk!JR#LwkD;ALD9~KDbkh z=JRt_9;S!!_90&7<}=p5FS0Yv8(ZAU==9@z!CQ@B(YN>coaOn6_3k@8p!wk(|MsQc zttX$(cj|i%23|(boEi7QqqqD#^Yt?8^nqXemJir&c8kQ9iu08YOb2*Szp|X?*rXvw65ycmwKpU4}S85k8{=g z=VsTf2|e?3u$hj(dMlkj{dk)CIfpCtDg)o$+vkH38WID}?V0?vFHNpb4*b*}_|{Gj z_~313TeC~FUR7anYGqAyY)La^^lEp zOs?cId1Mb7sDEYIy}C2>GorgNjH9{m$iesP9(z>3^{ft$y(-Ttu@#A z>V;#*^*TB9U92woN?hrX?|V+~i>tBq?$D~<%t#tS-~@7)(Mw;JM(~tdNO2R8AiV2iCk7+YacDwJTt&w@_?0l(yaH$ ze&=*y-+R=q{-+*|oTb<9Cp&7746odx7CdS7n^R`Ir}xhkeKqDBooMF_{5;Py&gBce zacAQzd&q!Zuse^*cwR#}H+AwW@4O408xw!*t9En`_t8I^ z=u1znFY_y{=pWti^#1sGd8FqVo99?N6ErNx)X}rJt66&L++S#HzTupn#J+Lm-Fm)j z-#>%mj=npGS%U{pt#i&=qwfrz?5jsQ?0a-QT;PCB4g2{H(axT+d5_`ixHtIge6$XC z@xWDhtb6P%)U&!~FMAp@@K$GMW^S+-EBG2?wM;(KpMA{X-}UgXht`=mZ|~?pZ|14F z^T--;7dE*+X_;g9EQPZ;<; zb4gtX#&v)1Gvm}*eyMrqp{Z-1b>2(gNAC$M&u(loC~VK=uhw9}Q{(DLU!jSf#+>@b zE{^E&`Sot5?(UI~(N;C%vH1cQkKVTrX^)@9$m#9TKQ~~azqMbUbB_!*!$U6_TF0%m z*3wF5?%7;IyZfEbYj5=S{`9tH@}7~s!2-K*&RX|^!$_Tbv-Yh8jme?j>^n0$^ONU&6PuOZ3;W;t zhNIpEcU1ESBlU0wMvqf}YfV0Rla8O&bv@j1CvcJHJ)-X(x2`cW!z=spIW^LG-|?)g z?#e@6-u0>F@Ebgdl{NI9`mLFBwEkQJdguN}d-iij(&GBmmS@b1liuaue9Tw%WUDc< ziYywh_4&P7r}n66-r+(6d(NbOhV@y4Gwi*{gW4SB_32q(gV(zG9g%vKU)66u+v_^G zw{Cq;&Eng`W?XqjePZo=e5p?Q<%{09gT<2{Fp_WQJJ!Yfxb@;cN9Oow|E))P^}6*dFP}>b>%;T*Q!}|o4%O$6JIX!H zr7O>!S#yTAw}vyH_8Rr9#er6hWS*Fr6+Kl~`|=W*O$J$~IW_hK7Z}vt`{IG?%*SUB z?xP8e!t`1_&Ye0&X`{DB&F!(U==VG|Y2LkCYg{lHZ_oAtH#sp%3;oH1PtNcTru14X zz0~K3$Htfp3x^ucYpwZs-0ab>bNZ-Xt&>r%(MiuYzWF%MdgkJ@=c?_q(V2D3yQX!e zUtvhwgHioxpA5uh-&%8TXpnB*$!O{Rr*1Ueep=U@q45~=EHq^em>$R5)muHP!N)Jv z%^CV5hnt(MlE3EE!P$GGiE~D3cdWYcyEWUJ+U5<;S?4@`jn#A2gTu)Aa&A7x-?PGp z<0BJ(4*5CqSo#JpF$OEO)Lb~uE;au2e6l{Vc$1S)c%zQ7IKU?J^}T1(v|fhuT?emz z7QW7t4_YnfufWS1=I{5UzAxPLu=+~( zdYMc|V{<%bg(V*6Z2s9p=VHlYVtCFQbnmC$(RQ3I{&zNgUsdyb(k%`=YzBis1ad%E{@%LPrlP@E@T8ED63r&s79%G#M-OfI`y8qcbbsHD0eLi*D z8(8Qsyjv%0W6fPpZT4hM&xb=b=i8Hxx%<$97kJw@Ib3-5Pxj*YdCz3CeDCa%zwz6r z@WGWf`;ix6(@&;klIz{O^6uWlO zYH)OyrMCap1ikpq~= z`szcYM|r4qdwJ@6{!?wrthug??>+P!BltZAR`JaTzcfk@d*}O6wyJaP;845wKb+up z-R_BBwboKK?0Mv^1?PjayptW8;in(Wa}?&SxiQEpIPmc1kS5OiPRX`$tiAL|!*I7( zdlH6qq1T*G?PyDHaGv<^!l_)1IqUJ59N<_h9>FSXe~I}sEjL!J`z!wSWS&!xGlI)J z_;ii5rQhdleb&C$tE2D2J*%yBZf|fMd&*+9;f?XAb%u%i>V0~2$8XN+JMU<+gzp)- zAJqy2ubhzsJZNCO9IM}17)xAu5ys7jp78#qmA&CJN8T+M)`DK^pZiVSg-vd;kH;Qs zziYnuaxdrTnZ3b4i}TQVXCC*H>#R*(_|piVM{29TzsujNuRYGaO%E8n4X}ED>yr~d z#=*<|7UXNRo~Y8%gr-*Z*l)>~Tg3@mv)@6jIS=Lf8t<5}bX9N8cKs+-!@-gxFDyVf_g=wd_@W7iH2 zHF#vbnLn61dpLVOx{iJ{kFKdpOt=}XTe!8~UwOE&;YT;M(i-}}sBv_Il|4P5bFjB= zwU3_Ga^k60?+Z|yJ|lQR2d-{9^z{lb$b`?6ookN4I&(!(g=1}^Xa+X8(x=d&cJGp;;AoryUusN{ZVu4 z5Er~BUiVLL_NBk7fycVzZqON853Jcwob=VTkA|OW8U8#cr`!|1-U#Q(qrJ?|wVQEe z(OOj3{U83o!smN@-(71RFUvRCzypr)g+niOIo>^e79P&?^Zt{Ex=*gkWwgG|=j^pV zUTeRw`y8CY8oVB7ty*ckdyJ!>t;QQ{FuXVTeSXee^L@wWQD4^kOmFATY&8!r=jh9~ zWi0<}Qg6=4t}?3po=?3xTkJZI&-iGa^T9w%bLPD?K0UfObiuvj@S!*Pndcev!jnGx z)1LOL_pSx+YwX&~!`6*o@OpptYAzl4Wj$H{fhhc(jjr1o ze2!-J-IsZNc~rji^%$Po>$5)2lPmb|8rG#He-@aNqw+F`?nAl@qx;Eg__lY>S?8F2 z%EOr4k@tB+j}H7cSM0yIcpvUberX?Ht6M$k%RT4)kjt%c^-U(#PYs;4P7d~K#QS~T zXLFu)i#@rtUNRaDiG?5ba{YxX{mzg+jc0z&WZuQxk^QP(nw8yL8Pt08Bo_0dXKGtR_gHuDq3gnv542r+s%PrqI>x~S16|bvCuiMb`n7 z6Na?Fk+|pl%okpd+@UnK4)S6=d{M_3{rK#@Gei6}FLjr1bmP-m7na_{fwOzkvVDhM z`zI^LH|kMTJy_d6Ji(9F6GwUW+4xy4PcJ&)L6fn>!#TalK`od>U`hPJfwS&8?Ta7jF5&dye$T3;lSJPU`Vx4q6cm+3e z>G`2SdYlD0h`;x%9?oloBhS-U?laFGwEJxCy}j8F=QRpH^7_!%xZ^YPR=;r-f+|jvj?8os(nT7aACAZ+M!su}AOjtB-ul zq5SDbo7TP?)#FcEYA@@U?^ya;3w@L4?w|eORlhJE|641J#jcvhcC9_Bk9Ff6wdsqy zyYYmJ7Di!?md2brnw+K2=k6l|_-Z|Qj9=GEORq<_-;#B4*Ywp0rtkUYrAGYpQZEcN zj=o1j-Xk^etJgfeKb}et_01Lc(Caw2cJm#*Q=5C>Czj5I!Q9y7F1_@<{Kws{pV`B2 z_f|HKuB|DJ<8d*ohHq-oO`r5Vxep$?z=DImid%b_)l9RM@-dLN5GXba13wLU?FP=SH-gCe8ZZ10W zeVw)BcjG6<^0gM-gad>UuC%I6DD`j>yQ(3&^otP^v!Tp59-ER0W<+c)~*%JZ`(FuI34 zJ)ZSnxu0*nIN{wpt9!ln&-Dk!^eo1B$~zFxnIX73<6XF>vdEgAXU=tg*UXyS>91_8 zXR>T8&2=7pfg^oYr*nL=hJ(7)bksE8=ooJG4DU-%YRh|`j7B5;@(}rrUd|aa2egt` zpB>uZE!}ZP!>v8t1Lww6k9jjc=gE1Ei!of@qc<>116q5OKJ^Gc?+TCTqpn82Pd!b>?;r+{JTa^?Lm5dH6cCm7W6wzvzPB?}2`Ds1XdG1#WP3?Y%xcMqlrH zylp3_a$+A1tl>!wx%c9V9KonD=dE+(6+2+}~jfeH5oT|1k-NRb<1TJ;TQ1$9Fj%wYHR^$6DahczE+us?%Gu*S6 zx(f#`>y!_$sDVq|{47bIdTTE;VC@<(c8t61ye4b7w=Q)~_CMGA@E!iqI=+Sz&CM0{ z$+>s9zJ!fF&NEZ+?iz4iOZG8_|IU51!Xpgjnsd%`%>Jy!w`+ahwU=MjR&Reb4?T?^ z_mX#i@NG@;I6u|T+n9X8S3hsb@5mhLLj$9E=^_n*3?UA4K-{P4CKg$b{;u!oL! zZpOU$;#~^M+Vc(DzdY)_&AdF0PuHcU;pC1h4|0h<@;G&6@)YTg)+rrgIDK8*9!um0@S-J46k z!B1>-2y;9g*`2s}gO|QqgWn$7tMI;bQ!6dkTfIF^Za2p_uHLa~HHQmbs~OxG&n)D7 z^?hnO{jHwKLcQSVXJ<7m-dkhiG)D9c=H1U4kL#iEham)L#+q+%nY&JX#qYDz8ydD|?|pjbKBzM`9tL~+lyBExyl7wqQ~8|U>+EM- z_HSQ>+4Z4Ad&Ysc$EPmw@h@z7SY3_H9e9++xrf2SQ|cFvwH_RiFM4jBXv>jWu;lgO zSpVoec~!@mvat_mC|r3v=h@>7;a&XE!9E!4ZSxXFomcHK&ffMM_dvb$oHh2``bj;l z`T8!Uy>X|OIhf*5U-{G8Z-cr!tJNAj)P9X%3!gXk=J7dNG=f>YiRFD`rbpGEJoJOb zns>G9_U6oe?)ysocORN+RL1DN-_C12cTxLf(!Ftyh1p(X1V6Q~cZ`jrT);Vcf``8J zT6^Tjx%a@GpNGM^J<@;UHs10F&+d`G-$r`SoIbR;7QODFMq_9Ga7l0B2+O+O{9x8- z{^2aF*$0y~-s#c)u^0hRqH-`*_!qg_Y@vC!_kY*1T$+LaM+_?@W z-ikNptKRhCvwG`=7ct;vtcA`q3e=(Sq!B&p@ul8!k9RM*nZZ^5#D_-A5ZQte z=ktt{M;X#DZgGP3o;2|}^~^1tJxw;_DYMm_7ys*Q(Ssi@s?JK9#nBo(Z@e|wFU|5y z4%fH&Hr_Ma&zlo`VJ8pgGTJ>e8o&FE<331xdxWF7d!D;iIi2^V+4F(PEa}6G-^s`G zrl0J4@kXBXJ!^WH=bI1MoX z;Ln`uyX)LR_ee{e_LZ~Ko0Vs4w8!!M&)d-nuW*&O>#=`$;*7oS`&etuCC~et0&}bQ RT#enDgE_qP7%%Ui&lfu}{LKIW diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml deleted file mode 100644 index f27305af..00000000 --- a/snap/snapcraft.yaml +++ /dev/null @@ -1,75 +0,0 @@ -name: zano -base: core18 -adopt-info: zano -summary: "Zano coin: official wallet. Secure. Scalable. Easy to Use." -description: | - Zano is a scalable and secure coin, designed for use in e-commerce. - The technology behind our blockchain provides reliability, security, - and flexibility a perfect option for P2P transactions. - More info: http://zano.org -grade: stable -confinement: strict - -architectures: - - build-on: amd64 - - build-on: i386 - -parts: - zano: - source: https://github.com/hyle-team/zano.git - plugin: cmake - override-pull: | - snapcraftctl pull - snapcraftctl set-version "$(git describe)" - configflags: - - -DBUILD_GUI=TRUE - override-build: | - snapcraftctl build - mkdir -p $SNAPCRAFT_PART_INSTALL/opt/Zano - cp $SNAPCRAFT_PART_BUILD/src/Zano $SNAPCRAFT_PART_INSTALL/opt/Zano/ - cp $SNAPCRAFT_PART_BUILD/src/simplewallet $SNAPCRAFT_PART_INSTALL/opt/Zano/ - cp $SNAPCRAFT_PART_BUILD/src/zanod $SNAPCRAFT_PART_INSTALL/opt/Zano/ - rsync -a $SNAPCRAFT_PART_SRC/src/gui/qt-daemon/html $SNAPCRAFT_PART_INSTALL/opt/Zano --exclude less --exclude package.json --exclude gulpfile.js - build-packages: - - make - - g++ - - libboost-all-dev - - qtwebengine5-dev - - rsync - build-attributes: [keep-execstack] - stage-packages: - - libboost-system1.65.1 - - libboost-filesystem1.65.1 - - libboost-thread1.65.1 - - libboost-date-time1.65.1 - - libboost-chrono1.65.1 - - libboost-regex1.65.1 - - libboost-serialization1.65.1 - - libboost-program-options1.65.1 - - libboost-locale1.65.1 - -apps: - zano: - command: opt/Zano/Zano --data-dir $SNAP_USER_COMMON - extensions: - - kde-neon - plugs: - - network - - home - - desktop - - opengl #for QML support - - browser-support #for Qt WebEngine support - - audio-playback - - unity7 #for tray icon support - simplewallet: - command: opt/Zano/simplewallet - plugs: - - network - - home - zanod: - command: opt/Zano/zanod --data-dir $SNAP_USER_COMMON - environment: - LC_ALL: C - plugs: - - network - - network-bind diff --git a/utils/.gitignore b/utils/.gitignore deleted file mode 100644 index 50872599..00000000 --- a/utils/.gitignore +++ /dev/null @@ -1 +0,0 @@ -configure_local_paths.cmd \ No newline at end of file diff --git a/utils/Directory.Build.props.in b/utils/Directory.Build.props.in deleted file mode 100644 index 5f263a21..00000000 --- a/utils/Directory.Build.props.in +++ /dev/null @@ -1,8 +0,0 @@ - - - - true - true - 11 - - diff --git a/utils/payment_request.json b/utils/JS/payment_request.json similarity index 100% rename from utils/payment_request.json rename to utils/JS/payment_request.json diff --git a/utils/premine_config.json b/utils/JS/premine_config.json similarity index 100% rename from utils/premine_config.json rename to utils/JS/premine_config.json diff --git a/utils/update_alert.json b/utils/JS/update_alert.json similarity index 100% rename from utils/update_alert.json rename to utils/JS/update_alert.json diff --git a/utils/Zano.desktop b/utils/Zano.desktop deleted file mode 100644 index 8a912f57..00000000 --- a/utils/Zano.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=Zano -GenericName=Zano -Comment=Privacy blockchain -Icon=Zano -Terminal=true -Type=Application -Categories=Qt;Utility; -Name[en_US]=Zano -MimeType=x-scheme-handler/zano; - diff --git a/utils/Zano.sh b/utils/Zano.sh deleted file mode 100755 index 696b3859..00000000 --- a/utils/Zano.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/bash -script_dir=$( dirname "$(readlink -f "$0")" ) - -export LD_LIBRARY_PATH=$script_dir/lib -export QT_PLUGIN_PATH=$script_dir/lib - -echo $LD_LIBRARY_PATH -echo $QT_PLUGIN_PATH - -out_file_name=~/.local/share/applications/Zano.desktop - -call_app() -{ - pushd $script_dir - ./Zano "$@" - popd - exit -} - - -create_desktop_icon() -{ - target_file_name=$1 - echo "Generating icon file: $target_file_name..." - rm -f $target_file_name - echo [Desktop Entry] | tee -a $target_file_name > /dev/null - echo Version=1.0 | tee -a $target_file_name > /dev/null - echo Name=Zano | tee -a $target_file_name > /dev/null - echo GenericName=Zano | tee -a $target_file_name > /dev/null - echo Comment=Privacy blockchain | tee -a $target_file_name > /dev/null - echo Icon=$script_dir/html/files/desktop_linux_icon.png | tee -a $target_file_name > /dev/null - echo Exec=$script_dir/Zano.sh --deeplink-params=\\\\\"%u\\\\\" | tee -a $target_file_name > /dev/null - echo Terminal=true | tee -a $target_file_name > /dev/null - echo Type=Application | tee -a $target_file_name > /dev/null - echo "Categories=Qt;Utility;" | tee -a $target_file_name > /dev/null - echo "MimeType=x-scheme-handler/zano;" | tee -a $target_file_name > /dev/null -} - - -create_desktop_icon $out_file_name - -xdg-mime default Zano.desktop x-scheme-handler/zano - -call_app "$@" \ No newline at end of file diff --git a/utils/Zano_appimage_wrapper.sh b/utils/Zano_appimage_wrapper.sh deleted file mode 100755 index 5d3db32c..00000000 --- a/utils/Zano_appimage_wrapper.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash -script_dir=$( dirname "$(readlink -f "$0")" ) - -out_dir=~/.local/share/applications -version="$(echo ${APPIMAGE} | rev | cut -d '-' -f1,2 | rev | sed 's/\.AppImage$//')" -out_file_name="${out_dir}/Zano-${version}.desktop" - -export QTWEBENGINE_DISABLE_SANDBOX=1 - -call_app() -{ - pushd $script_dir - usr/bin/Zano "$@" - if [ $? -ne 0 ]; then - echo $'\n\n\x1b[1mIf Zano fails to launch, it might need to install xinerama extension for the X C Binding with this command:\n\x1b[2m sudo apt-get install libxcb-xinerama0\n\n' - fi - - popd - exit -} - - -create_desktop_icon() -{ - target_file_name=$1 - echo "Generating icon file: $target_file_name..." - rm -f "${out_dir}/Zano.png" - rm -f $target_file_name - cp -Rv "${APPDIR}/usr/share/icons/hicolor/256x256/apps/Zano.png" "${out_dir}/Zano.png" - echo [Desktop Entry] | tee -a $target_file_name > /dev/null - echo Version=1.0 | tee -a $target_file_name > /dev/null - echo Name=Zano | tee -a $target_file_name > /dev/null - echo GenericName=Zano | tee -a $target_file_name > /dev/null - echo Comment=Privacy blockchain | tee -a $target_file_name > /dev/null - echo Icon=${out_dir}/Zano.png | tee -a $target_file_name > /dev/null - echo TryExec="${APPIMAGE}" | tee -a "${target_file_name}" >/dev/null - echo Exec=$APPIMAGE --deeplink-params=\\\\\\\"%u\\\\\\\" | tee -a $target_file_name > /dev/null - echo Terminal=false | tee -a $target_file_name > /dev/null - echo Type=Application | tee -a $target_file_name > /dev/null - echo "Categories=Qt;Utility;" | tee -a $target_file_name > /dev/null - echo "MimeType=x-scheme-handler/zano;" | tee -a $target_file_name > /dev/null - echo "StartupWMClass=Zano" | tee -a $target_file_name > /dev/null -} - - -create_desktop_icon $out_file_name - -xdg-mime default Zano.desktop x-scheme-handler/zano -xdg-desktop-menu install --novendor "${out_file_name}" - -call_app "$@" diff --git a/utils/api_response.txt b/utils/api_response.txt deleted file mode 100644 index 4cfdb52a..00000000 --- a/utils/api_response.txt +++ /dev/null @@ -1,7 +0,0 @@ -{ - "id": 1234, - "jsonrpc": "2.0", - "result": { - "status": "OK" - } -} \ No newline at end of file diff --git a/utils/contrib/create-dmg/LICENSE b/utils/contrib/create-dmg/LICENSE deleted file mode 100644 index 349b6d82..00000000 --- a/utils/contrib/create-dmg/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2008-2014 Andrey Tarantsov - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/utils/contrib/create-dmg/create-dmg b/utils/contrib/create-dmg/create-dmg deleted file mode 100755 index ea8ee7e9..00000000 --- a/utils/contrib/create-dmg/create-dmg +++ /dev/null @@ -1,230 +0,0 @@ -#! /bin/bash - -# Create a read-only disk image of the contents of a folder - -set -e; - -function pure_version() { - echo '1.0.0.2' -} - -function version() { - echo "create-dmg $(pure_version)" -} - -function usage() { - version - echo "Creates a fancy DMG file." - echo "Usage: $(basename $0) options... image.dmg source_folder" - echo "All contents of source_folder will be copied into the disk image." - echo "Options:" - echo " --volname name" - echo " set volume name (displayed in the Finder sidebar and window title)" - echo " --volicon icon.icns" - echo " set volume icon" - echo " --background pic.png" - echo " set folder background image (provide png, gif, jpg)" - echo " --window-pos x y" - echo " set position the folder window" - echo " --window-size width height" - echo " set size of the folder window" - echo " --text-size text_size" - echo " set window text size (10-16)" - echo " --icon-size icon_size" - echo " set window icons size (up to 128)" - echo " --icon file_name x y" - echo " set position of the file's icon" - echo " --hide-extension file_name" - echo " hide the extension of file" - echo " --custom-icon file_name custom_icon_or_sample_file x y" - echo " set position and custom icon" - echo " --app-drop-link x y" - echo " make a drop link to Applications, at location x,y" - echo " --eula eula_file" - echo " attach a license file to the dmg" - echo " --no-internet-enable" - echo " disable automatic mount©" - echo " --version show tool version number" - echo " -h, --help display this help" - exit 0 -} - -WINX=10 -WINY=60 -WINW=500 -WINH=350 -ICON_SIZE=128 -TEXT_SIZE=16 - -while test "${1:0:1}" = "-"; do - case $1 in - --volname) - VOLUME_NAME="$2" - shift; shift;; - --volicon) - VOLUME_ICON_FILE="$2" - shift; shift;; - --background) - BACKGROUND_FILE="$2" - BACKGROUND_FILE_NAME="$(basename $BACKGROUND_FILE)" - BACKGROUND_CLAUSE="set background picture of opts to file \".background:$BACKGROUND_FILE_NAME\"" - REPOSITION_HIDDEN_FILES_CLAUSE="set position of every item to {theBottomRightX + 500, 100}" - shift; shift;; - --icon-size) - ICON_SIZE="$2" - shift; shift;; - --text-size) - TEXT_SIZE="$2" - shift; shift;; - --window-pos) - WINX=$2; WINY=$3 - shift; shift; shift;; - --window-size) - WINW=$2; WINH=$3 - shift; shift; shift;; - --icon) - POSITION_CLAUSE="${POSITION_CLAUSE}set position of item \"$2\" to {$3, $4} -" - shift; shift; shift; shift;; - --hide-extension) - HIDING_CLAUSE="${HIDING_CLAUSE}set the extension hidden of item \"$2\" to true -" - shift; shift;; - --custom-icon) - shift; shift; shift; shift; shift;; - -h | --help) - usage;; - --version) - version; exit 0;; - --pure-version) - pure_version; exit 0;; - --app-drop-link) - APPLICATION_LINK=$2 - APPLICATION_CLAUSE="set position of item \"Applications\" to {$2, $3} -" - shift; shift; shift;; - --eula) - EULA_RSRC=$2 - shift; shift;; - --no-internet-enable) - NOINTERNET=1 - shift;; - -*) - echo "Unknown option $1. Run with --help for help." - exit 1;; - esac -done - -test -z "$2" && { - echo "Not enough arguments. Invoke with --help for help." - exit 1 -} - -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -DMG_PATH="$1" -DMG_DIRNAME="$(dirname "$DMG_PATH")" -DMG_DIR="$(cd "$DMG_DIRNAME" > /dev/null; pwd)" -DMG_NAME="$(basename "$DMG_PATH")" -DMG_TEMP_NAME="$DMG_DIR/rw.${DMG_NAME}" -SRC_FOLDER="$(cd "$2" > /dev/null; pwd)" -test -z "$VOLUME_NAME" && VOLUME_NAME="$(basename "$DMG_PATH" .dmg)" - -AUX_PATH="$SCRIPT_DIR/support" - -test -d "$AUX_PATH" || { - echo "Cannot find support directory: $AUX_PATH" - exit 1 -} - -if [ -f "$SRC_FOLDER/.DS_Store" ]; then - echo "Deleting any .DS_Store in source folder" - rm "$SRC_FOLDER/.DS_Store" -fi - -# Create the image -echo "Creating disk image..." -test -f "${DMG_TEMP_NAME}" && rm -f "${DMG_TEMP_NAME}" -ACTUAL_SIZE=`du -sm "$SRC_FOLDER" | sed -e 's/ .*//g'` -DISK_IMAGE_SIZE=$(expr $ACTUAL_SIZE + 20) -hdiutil create -srcfolder "$SRC_FOLDER" -volname "${VOLUME_NAME}" -fs HFS+ -fsargs "-c c=64,a=16,e=16" -format UDRW -size ${DISK_IMAGE_SIZE}m "${DMG_TEMP_NAME}" - -# mount it -echo "Mounting disk image..." -MOUNT_DIR="/Volumes/${VOLUME_NAME}" - -# try unmount dmg if it was mounted previously (e.g. developer mounted dmg, installed app and forgot to unmount it) -echo "Unmounting disk image..." -DEV_NAME=$(hdiutil info | egrep '^/dev/' | sed 1q | awk '{print $1}') -test -d "${MOUNT_DIR}" && hdiutil detach "${DEV_NAME}" - -echo "Mount directory: $MOUNT_DIR" -DEV_NAME=$(hdiutil attach -readwrite -noverify -noautoopen "${DMG_TEMP_NAME}" | egrep '^/dev/' | sed 1q | awk '{print $1}') -echo "Device name: $DEV_NAME" - -if ! test -z "$BACKGROUND_FILE"; then - echo "Copying background file..." - test -d "$MOUNT_DIR/.background" || mkdir "$MOUNT_DIR/.background" - cp "$BACKGROUND_FILE" "$MOUNT_DIR/.background/$BACKGROUND_FILE_NAME" -fi - -if ! test -z "$APPLICATION_LINK"; then - echo "making link to Applications dir" - echo $MOUNT_DIR - ln -s /Applications "$MOUNT_DIR/Applications" -fi - -if ! test -z "$VOLUME_ICON_FILE"; then - echo "Copying volume icon file '$VOLUME_ICON_FILE'..." - cp "$VOLUME_ICON_FILE" "$MOUNT_DIR/.VolumeIcon.icns" - SetFile -c icnC "$MOUNT_DIR/.VolumeIcon.icns" -fi - -# run applescript -APPLESCRIPT=$(mktemp -t createdmg) -cat "$AUX_PATH/template.applescript" | sed -e "s/WINX/$WINX/g" -e "s/WINY/$WINY/g" -e "s/WINW/$WINW/g" -e "s/WINH/$WINH/g" -e "s/BACKGROUND_CLAUSE/$BACKGROUND_CLAUSE/g" -e "s/REPOSITION_HIDDEN_FILES_CLAUSE/$REPOSITION_HIDDEN_FILES_CLAUSE/g" -e "s/ICON_SIZE/$ICON_SIZE/g" -e "s/TEXT_SIZE/$TEXT_SIZE/g" | perl -pe "s/POSITION_CLAUSE/$POSITION_CLAUSE/g" | perl -pe "s/APPLICATION_CLAUSE/$APPLICATION_CLAUSE/g" | perl -pe "s/HIDING_CLAUSE/$HIDING_CLAUSE/" >"$APPLESCRIPT" - -echo "Running Applescript: /usr/bin/osascript \"${APPLESCRIPT}\" \"${VOLUME_NAME}\"" -"/usr/bin/osascript" "${APPLESCRIPT}" "${VOLUME_NAME}" || true -echo "Done running the applescript..." -sleep 4 - -rm "$APPLESCRIPT" - -# make sure it's not world writeable -echo "Fixing permissions..." -chmod -Rf go-w "${MOUNT_DIR}" &> /dev/null || true -echo "Done fixing permissions." - -# make the top window open itself on mount: -echo "Blessing started" -bless --folder "${MOUNT_DIR}" --openfolder "${MOUNT_DIR}" -echo "Blessing finished" - -if ! test -z "$VOLUME_ICON_FILE"; then - # tell the volume that it has a special file attribute - SetFile -a C "$MOUNT_DIR" -fi - -# unmount -echo "Unmounting disk image..." -hdiutil detach "${DEV_NAME}" - -# compress image -echo "Compressing disk image..." -hdiutil convert "${DMG_TEMP_NAME}" -format UDZO -imagekey zlib-level=9 -o "${DMG_DIR}/${DMG_NAME}" -rm -f "${DMG_TEMP_NAME}" - -# adding EULA resources -if [ ! -z "${EULA_RSRC}" -a "${EULA_RSRC}" != "-null-" ]; then - echo "adding EULA resources" - "${AUX_PATH}/dmg-license.py" "${DMG_DIR}/${DMG_NAME}" "${EULA_RSRC}" -fi - -if [ ! -z "${NOINTERNET}" -a "${NOINTERNET}" == 1 ]; then - echo "not setting 'internet-enable' on the dmg" -else - hdiutil internet-enable -yes "${DMG_DIR}/${DMG_NAME}" -fi - -echo "Disk image done" -exit 0 diff --git a/utils/contrib/create-dmg/origin.txt b/utils/contrib/create-dmg/origin.txt deleted file mode 100644 index e1edd5e6..00000000 --- a/utils/contrib/create-dmg/origin.txt +++ /dev/null @@ -1 +0,0 @@ -https://github.com/andreyvit/yoursway-create-dmg.git \ No newline at end of file diff --git a/utils/contrib/create-dmg/support/dmg-license.py b/utils/contrib/create-dmg/support/dmg-license.py deleted file mode 100644 index 9003a7c5..00000000 --- a/utils/contrib/create-dmg/support/dmg-license.py +++ /dev/null @@ -1,163 +0,0 @@ -#! /usr/bin/env python -""" -This script adds a license file to a DMG. Requires Xcode and a plain ascii text -license file. -Obviously only runs on a Mac. - -Copyright (C) 2011-2013 Jared Hobbs - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -""" -import os -import sys -import tempfile -import optparse - - -class Path(str): - def __enter__(self): - return self - - def __exit__(self, type, value, traceback): - os.unlink(self) - - -def mktemp(dir=None, suffix=''): - (fd, filename) = tempfile.mkstemp(dir=dir, suffix=suffix) - os.close(fd) - return Path(filename) - - -def main(options, args): - dmgFile, license = args - with mktemp('.') as tmpFile: - with open(tmpFile, 'w') as f: - f.write("""data 'TMPL' (128, "LPic") { - $"1344 6566 6175 6C74 204C 616E 6775 6167" - $"6520 4944 4457 5244 0543 6F75 6E74 4F43" - $"4E54 042A 2A2A 2A4C 5354 430B 7379 7320" - $"6C61 6E67 2049 4444 5752 441E 6C6F 6361" - $"6C20 7265 7320 4944 2028 6F66 6673 6574" - $"2066 726F 6D20 3530 3030 4457 5244 1032" - $"2D62 7974 6520 6C61 6E67 7561 6765 3F44" - $"5752 4404 2A2A 2A2A 4C53 5445" -}; - -data 'LPic' (5000) { - $"0000 0002 0000 0000 0000 0000 0004 0000" -}; - -data 'STR#' (5000, "English buttons") { - $"0006 0D45 6E67 6C69 7368 2074 6573 7431" - $"0541 6772 6565 0844 6973 6167 7265 6505" - $"5072 696E 7407 5361 7665 2E2E 2E7A 4966" - $"2079 6F75 2061 6772 6565 2077 6974 6820" - $"7468 6520 7465 726D 7320 6F66 2074 6869" - $"7320 6C69 6365 6E73 652C 2063 6C69 636B" - $"2022 4167 7265 6522 2074 6F20 6163 6365" - $"7373 2074 6865 2073 6F66 7477 6172 652E" - $"2020 4966 2079 6F75 2064 6F20 6E6F 7420" - $"6167 7265 652C 2070 7265 7373 2022 4469" - $"7361 6772 6565 2E22" -}; - -data 'STR#' (5002, "English") { - $"0006 0745 6E67 6C69 7368 0541 6772 6565" - $"0844 6973 6167 7265 6505 5072 696E 7407" - $"5361 7665 2E2E 2E7B 4966 2079 6F75 2061" - $"6772 6565 2077 6974 6820 7468 6520 7465" - $"726D 7320 6F66 2074 6869 7320 6C69 6365" - $"6E73 652C 2070 7265 7373 2022 4167 7265" - $"6522 2074 6F20 696E 7374 616C 6C20 7468" - $"6520 736F 6674 7761 7265 2E20 2049 6620" - $"796F 7520 646F 206E 6F74 2061 6772 6565" - $"2C20 7072 6573 7320 2244 6973 6167 7265" - $"6522 2E" -};\n\n""") - with open(license, 'r') as l: - kind = 'RTF ' if license.lower().endswith('.rtf') else 'TEXT' - f.write('data \'%s\' (5000, "English") {\n' % kind) - def escape(s): - return s.strip().replace('\\', '\\\\').replace('"', '\\"') - - for line in l: - if len(line) < 1000: - f.write(' "' + escape(line) + '\\n"\n') - else: - for liner in line.split('.'): - f.write(' "' + escape(liner) + '. \\n"\n') - f.write('};\n\n') - f.write("""data 'styl' (5000, "English") { - $"0003 0000 0000 000C 0009 0014 0000 0000" - $"0000 0000 0000 0000 0027 000C 0009 0014" - $"0100 0000 0000 0000 0000 0000 002A 000C" - $"0009 0014 0000 0000 0000 0000 0000" -};\n""") - os.system('hdiutil unflatten -quiet "%s"' % dmgFile) - ret = os.system('%s -a %s -o "%s"' % - (options.rez, tmpFile, dmgFile)) - os.system('hdiutil flatten -quiet "%s"' % dmgFile) - if options.compression is not None: - os.system('cp %s %s.temp.dmg' % (dmgFile, dmgFile)) - os.remove(dmgFile) - if options.compression == "bz2": - os.system('hdiutil convert %s.temp.dmg -format UDBZ -o %s' % - (dmgFile, dmgFile)) - elif options.compression == "gz": - os.system('hdiutil convert %s.temp.dmg -format ' % dmgFile + - 'UDZO -imagekey zlib-devel=9 -o %s' % dmgFile) - os.remove('%s.temp.dmg' % dmgFile) - if ret == 0: - print "Successfully added license to '%s'" % dmgFile - else: - print "Failed to add license to '%s'" % dmgFile - -if __name__ == '__main__': - parser = optparse.OptionParser() - parser.set_usage("""%prog [OPTIONS] - This program adds a software license agreement to a DMG file. - It requires Xcode and either a plain ascii text - or a with the RTF contents. - - See --help for more details.""") - parser.add_option( - '--rez', - '-r', - action='store', - default='/Applications/Xcode.app/Contents/Developer/Tools/Rez', - help='The path to the Rez tool. Defaults to %default' - ) - parser.add_option( - '--compression', - '-c', - action='store', - choices=['bz2', 'gz'], - default=None, - help='Optionally compress dmg using specified compression type. ' - 'Choices are bz2 and gz.' - ) - options, args = parser.parse_args() - cond = len(args) != 2 - if not os.path.exists(options.rez): - print 'Failed to find Rez at "%s"!\n' % options.rez - cond = True - if cond: - parser.print_usage() - sys.exit(1) - main(options, args) diff --git a/utils/contrib/create-dmg/support/template.applescript b/utils/contrib/create-dmg/support/template.applescript deleted file mode 100644 index 2a7f2aa0..00000000 --- a/utils/contrib/create-dmg/support/template.applescript +++ /dev/null @@ -1,79 +0,0 @@ -on run (volumeName) - tell application "Finder" - tell disk (volumeName as string) - open - - set theXOrigin to WINX - set theYOrigin to WINY - set theWidth to WINW - set theHeight to WINH - - set theBottomRightX to (theXOrigin + theWidth) - set theBottomRightY to (theYOrigin + theHeight) - set dsStore to "\"" & "/Volumes/" & volumeName & "/" & ".DS_STORE\"" - - tell container window - set current view to icon view - set toolbar visible to false - set statusbar visible to false - set the bounds to {theXOrigin, theYOrigin, theBottomRightX, theBottomRightY} - set statusbar visible to false - REPOSITION_HIDDEN_FILES_CLAUSE - end tell - - set opts to the icon view options of container window - tell opts - set icon size to ICON_SIZE - set text size to TEXT_SIZE - set arrangement to not arranged - end tell - BACKGROUND_CLAUSE - - -- Positioning - POSITION_CLAUSE - - -- Hiding - HIDING_CLAUSE - - -- Application Link Clause - APPLICATION_CLAUSE - close - open - - update without registering applications - -- Force saving of the size - delay 1 - - tell container window - set statusbar visible to false - set the bounds to {theXOrigin, theYOrigin, theBottomRightX - 10, theBottomRightY - 10} - end tell - - update without registering applications - end tell - - delay 1 - - tell disk (volumeName as string) - tell container window - set statusbar visible to false - set the bounds to {theXOrigin, theYOrigin, theBottomRightX, theBottomRightY} - end tell - - update without registering applications - end tell - - --give the finder some time to write the .DS_Store file - delay 3 - - set waitTime to 0 - set ejectMe to false - repeat while ejectMe is false - delay 1 - set waitTime to waitTime + 1 - - if (do shell script "[ -f " & dsStore & " ]; echo $?") = "0" then set ejectMe to true - end repeat - log "waited " & waitTime & " seconds for .DS_STORE to be created." - end tell -end run diff --git a/utils/deeplink.rm b/utils/deeplink.rm deleted file mode 100644 index 8b137891..00000000 --- a/utils/deeplink.rm +++ /dev/null @@ -1 +0,0 @@ - diff --git a/utils/docker/containers/README.md b/utils/docker/containers/README.md deleted file mode 100644 index f50dbf2b..00000000 --- a/utils/docker/containers/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Standard Docker Deployments - -You can define a multitude of configurations in code using Docker Compose. Each folder in this directory represents a specific use case with a corresponding reference configuration. - -Instead of writing your own Dockerfile, we recommend that you tailor the stack for your needs by editing one of the existing configurations. If you believe your changes will be useful to others, please submit a patch to improve the reference Dockerfiles. \ No newline at end of file diff --git a/utils/docker/images/lthn-chain/Dockerfile b/utils/docker/lthn-chain/Dockerfile similarity index 100% rename from utils/docker/images/lthn-chain/Dockerfile rename to utils/docker/lthn-chain/Dockerfile diff --git a/utils/increment_build_number.sh b/utils/increment_build_number.sh deleted file mode 100644 index 3666c956..00000000 --- a/utils/increment_build_number.sh +++ /dev/null @@ -1,29 +0,0 @@ -set -e -curr_path=${BASH_SOURCE%/*} -version_file_path=../src/version.h.in - -pushd $curr_path - -# clear old local changes if any -git checkout -- ../src/* - -git pull --ff-only - -build_no_before=`cat $version_file_path | grep 'PROJECT_VERSION_BUILD_NO ' | awk {'print $3'}` - -../../zano-tools-last-build/connectivity_tool --increment-build-no=$version_file_path - -build_no_after=`cat $version_file_path | grep 'PROJECT_VERSION_BUILD_NO ' | awk {'print $3'}` - -echo "$build_no_before -> $build_no_after" - -echo $(pwd -P) - -git status -git commit -a -m"=== build number: $build_no_before -> $build_no_after ===" - -git push - -echo "Build number was succesefully incremented." -popd - diff --git a/utils/macos_entitlements.plist b/utils/macos_entitlements.plist deleted file mode 100644 index 68015469..00000000 --- a/utils/macos_entitlements.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - com.apple.security.cs.disable-executable-page-protection - - - diff --git a/utils/macosx_dmg_builder.sh b/utils/macosx_dmg_builder.sh deleted file mode 100644 index 4fb211f8..00000000 --- a/utils/macosx_dmg_builder.sh +++ /dev/null @@ -1,28 +0,0 @@ -set -e -curr_path=${BASH_SOURCE%/*} - -function build_fancy_dmg() # $1 - path to package folder, $2 - dmg output filename -{ - if [ -z "$1" ] || [ -z "$2" ] - then - echo "build_fancy_dmg is called with no or invalid parameters" - return 1 - fi - - $curr_path/contrib/create-dmg/create-dmg \ - --volname "Zano installer" \ - --volicon "$curr_path/../src/gui/qt-daemon/app.icns" \ - --background "$curr_path/../resources/dmg_installer_bg.png" \ - --window-pos 200 120 \ - --window-size 487 290 \ - --icon-size 128 \ - --icon Zano.app 112 115 \ - --hide-extension Zano.app \ - --app-drop-link 365 115 \ - --no-internet-enable \ - $2 \ - $1 - - return $? -} - diff --git a/utils/setup_32.iss b/utils/setup_32.iss deleted file mode 100644 index 24c18c80..00000000 --- a/utils/setup_32.iss +++ /dev/null @@ -1,151 +0,0 @@ -; Script generated by the Inno Setup Script Wizard. -; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! - -#define MyAppName "Zano" -;#define MyAppVersion "0.2.0.31" -#define MyAppPublisher "Zano Team" -#define MyAppURL "http://Zano.com" -#define MyAppExeName "zano.exe" - -[Setup] -; NOTE: The value of AppId uniquely identifies this application. -; Do not use the same AppId value in installers for other applications. -; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) -AppId={{55FD6D06-3A1D-47FF-AA45-2B302C1C9D8E} -AppName={#MyAppName} -AppVersion={#MyAppVersion} -;AppVerName={#MyAppName} {#MyAppVersion} -AppPublisher={#MyAppPublisher} -AppPublisherURL={#MyAppURL} -AppSupportURL={#MyAppURL} -AppUpdatesURL={#MyAppURL} -DefaultDirName={pf32}\{#MyAppName} -DefaultGroupName={#MyAppName} -OutputBaseFilename=setup -Compression=lzma -SolidCompression=yes -ChangesAssociations=yes -ArchitecturesInstallIn64BitMode=x64 -WizardImageFile=../resources/installer_bg_164x313.bmp -;WizardSmallImageFile=../resources/icon.bmp -PrivilegesRequired=poweruser -;SetupIconFile=../resources/app.ico -AppMutex=Zano_instance -UninstallDisplayIcon={app}\{#MyAppExeName} - - -[Languages] -Name: "english"; MessagesFile: "compiler:Default.isl" - -[Tasks] -Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked -Name: "desktopicon\common"; Description: "For all users"; GroupDescription: "{cm:AdditionalIcons}"; Flags: exclusive -Name: "desktopicon\user"; Description: "For the current user only"; GroupDescription: "{cm:AdditionalIcons}"; Flags: exclusive unchecked - - -[Registry] -Root: HKCR; Subkey: ".dbl"; ValueType: string; ValueName: ""; ValueData: "ZanoWalletDataFile"; Flags: uninsdeletevalue -Root: HKCR; Subkey: "ZanoWalletDataFile"; ValueType: string; ValueName: ""; ValueData: "Zano Wallet's Data File"; Flags: uninsdeletekey -Root: HKCR; Subkey: "ZanoWalletDataKyesFile"; ValueType: string; ValueName: ""; ValueData: "Zano Wallet's Keys File"; Flags: uninsdeletekey - -Root: HKCR; Subkey: "ZanoWalletDataFile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\zano.exe,0" -Root: HKCR; Subkey: "ZanoWalletDataKyesFile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\zano.exe,0" - -Root: HKCR; Subkey: "Zano"; ValueType: string; ValueName: "URL Protocol"; ValueData: "" -Root: HKCR; Subkey: "Zano\shell\open\command"; ValueType: string; ValueName: ""; ValueData: "{app}\zano.exe %1" - -[Files] - -Source: "{#BinariesPath}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs ignoreversion overwritereadonly replacesameversion -Source: "..\src\gui\qt-daemon\html\*"; DestDir: "{app}\html"; Flags: ignoreversion recursesubdirs ignoreversion overwritereadonly replacesameversion -Source: "{#BinariesPath}\vc_redist.x86.exe"; DestDir: {tmp}; Flags: deleteafterinstall -Source: "../resources/installer_bg_*.bmp"; Excludes: "*313.bmp"; Flags: dontcopy -; NOTE: Don't use "Flags: ignoreversion" on any shared system files - -[Icons] -Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" -Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}" -Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}" -Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon\common -Name: "{userdesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon\user - - -[UninstallDelete] -;This works only if it is installed in default location -Type: filesandordirs; Name: "{pf32}\{#MyAppName}" -;This works if it is installed in custom location -Type: files; Name: "{app}\*"; -Type: filesandordirs; Name: "{app}" - -[Run] -Filename: {tmp}\vc_redist.x86.exe; Parameters: "/install /quiet /norestart"; StatusMsg: Installing VC++ 2017 Redistributables... -Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent shellexec - - - -[Code] -function IsAppRunning(const FileName: string): Boolean; -var - FWMIService: Variant; - FSWbemLocator: Variant; - FWbemObjectSet: Variant; - Version: TWindowsVersion; -begin - GetWindowsVersionEx(Version); - if Version.Major = 10 then - begin - Result := False; - Exit; - end; - - - Result := false; - FSWbemLocator := CreateOleObject('WBEMScripting.SWBEMLocator'); - FWMIService := FSWbemLocator.ConnectServer('', 'root\CIMV2', '', ''); - FWbemObjectSet := FWMIService.ExecQuery(Format('SELECT Name FROM Win32_Process Where Name="%s"',[FileName])); - Result := (FWbemObjectSet.Count > 0); - FWbemObjectSet := Unassigned; - FWMIService := Unassigned; - FSWbemLocator := Unassigned; -end; - -function InitializeSetup: boolean; -begin -; Result := not IsAppRunning('{#MyAppExeName}'); -; if not Result then -; MsgBox('{#MyAppExeName} is running. Please close the application before running the installer ', mbError, MB_OK); -end; - -; Choose the right wizard background image based on current windows font scale -; s.a.: https://stackoverflow.com/questions/26543603/inno-setup-wizardimagefile-looks-bad-with-font-scaling-on-windows-7 -[Code] -function GetScalingFactor: Integer; -begin - if WizardForm.Font.PixelsPerInch >= 144 then Result := 150 - else - if WizardForm.Font.PixelsPerInch >= 120 then Result := 125 - else Result := 100; -end; - -procedure LoadEmbededScaledBitmap(Image: TBitmapImage; NameBase: string); -var - FileName: String; -begin - ExtractTemporaryFile(NameBase); - FileName := ExpandConstant('{tmp}\' + NameBase); - Image.Bitmap.LoadFromFile(FileName); - DeleteFile(FileName); -end; - -procedure InitializeWizard; -begin - { If using larger scaling, load the correct size of images } - if GetScalingFactor = 125 then begin - LoadEmbededScaledBitmap(WizardForm.WizardBitmapImage, 'installer_bg_191x385.bmp'); - LoadEmbededScaledBitmap(WizardForm.WizardBitmapImage2, 'installer_bg_191x385.bmp'); - end else if GetScalingFactor = 150 then begin - LoadEmbededScaledBitmap(WizardForm.WizardBitmapImage, 'installer_bg_246x457.bmp'); - LoadEmbededScaledBitmap(WizardForm.WizardBitmapImage2, 'installer_bg_246x457.bmp'); - end; - -end; diff --git a/utils/setup_64.iss b/utils/setup_64.iss deleted file mode 100644 index 364a9767..00000000 --- a/utils/setup_64.iss +++ /dev/null @@ -1,119 +0,0 @@ -; Script generated by the Inno Setup Script Wizard. -; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! - -#define MyAppName "Zano" -;#define MyAppVersion "0.2.0.31" -#define MyAppPublisher "Zano Team" -#define MyAppURL "http://zano.org" -#define MyAppExeName "Zano.exe" - -[Setup] -; NOTE: The value of AppId uniquely identifies this application. -; Do not use the same AppId value in installers for other applications. -; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) -AppId={{65FD6D06-3A1D-47FF-AA45-2B302C1C9D8E} -AppName={#MyAppName} -AppVersion={#MyAppVersion} -;AppVerName={#MyAppName} {#MyAppVersion} -AppPublisher={#MyAppPublisher} -AppPublisherURL={#MyAppURL} -AppSupportURL={#MyAppURL} -AppUpdatesURL={#MyAppURL} -DefaultDirName={pf64}\{#MyAppName} -DefaultGroupName={#MyAppName} -OutputBaseFilename=setup -Compression=lzma -SolidCompression=yes -ChangesAssociations=yes -ArchitecturesInstallIn64BitMode=x64 -WizardImageFile=../resources/installer_bg_164x313.bmp -;WizardSmallImageFile=../resources/icon.bmp -PrivilegesRequired=poweruser -ArchitecturesAllowed=x64 -;SetupIconFile=../resources/app.ico -AppMutex=Zano_instance -UninstallDisplayIcon={app}\{#MyAppExeName} - - -[Languages] -Name: "english"; MessagesFile: "compiler:Default.isl" - -[Tasks] -Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked -Name: "desktopicon\common"; Description: "For all users"; GroupDescription: "{cm:AdditionalIcons}"; Flags: exclusive -Name: "desktopicon\user"; Description: "For the current user only"; GroupDescription: "{cm:AdditionalIcons}"; Flags: exclusive unchecked - - -[Registry] -Root: HKCR; Subkey: ".dbl"; ValueType: string; ValueName: ""; ValueData: "ZanoWalletDataFile"; Flags: uninsdeletevalue -Root: HKCR; Subkey: "ZanoWalletDataFile"; ValueType: string; ValueName: ""; ValueData: "Zano Wallet's Data File"; Flags: uninsdeletekey -Root: HKCR; Subkey: "ZanoWalletDataKyesFile"; ValueType: string; ValueName: ""; ValueData: "Zano Wallet's Keys File"; Flags: uninsdeletekey - -Root: HKCR; Subkey: "ZanoWalletDataFile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\Zano.exe,0" -Root: HKCR; Subkey: "ZanoWalletDataKyesFile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\Zano.exe,0" - -Root: HKCR; Subkey: "Zano"; ValueType: string; ValueName: "URL Protocol"; ValueData: "" -Root: HKCR; Subkey: "Zano\shell\open\command"; ValueType: string; ValueName: ""; ValueData: "{app}\Zano.exe --deeplink-params=%1" - - -[Files] - -Source: "{#BinariesPath}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs ignoreversion overwritereadonly replacesameversion -Source: "..\src\gui\qt-daemon\layout\html\*"; DestDir: "{app}\html"; Flags: ignoreversion recursesubdirs ignoreversion overwritereadonly replacesameversion -Source: "{#BinariesPath}\vc_redist.x64.exe"; DestDir: {tmp}; Flags: deleteafterinstall -Source: "../resources/installer_bg_*.bmp"; Excludes: "*313.bmp"; Flags: dontcopy -; NOTE: Don't use "Flags: ignoreversion" on any shared system files - -[Icons] -Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" -Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}" -Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}" -Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon\common -Name: "{userdesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon\user - - -[Run] -Filename: {tmp}\vc_redist.x64.exe; Parameters: "/install /quiet /norestart"; StatusMsg: Installing VC++ 2017 Redistributables... -Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent shellexec - -[UninstallDelete] -;This works only if it is installed in default location -Type: filesandordirs; Name: "{pf64}\{#MyAppName}" -;This works if it is installed in custom location -Type: files; Name: "{app}\*"; -Type: filesandordirs; Name: "{app}" - -; Choose the right wizard background image based on current windows font scale -; s.a.: https://stackoverflow.com/questions/26543603/inno-setup-wizardimagefile-looks-bad-with-font-scaling-on-windows-7 -[Code] -function GetScalingFactor: Integer; -begin - if WizardForm.Font.PixelsPerInch >= 144 then Result := 150 - else - if WizardForm.Font.PixelsPerInch >= 120 then Result := 125 - else Result := 100; -end; - -procedure LoadEmbededScaledBitmap(Image: TBitmapImage; NameBase: string); -var - FileName: String; -begin - ExtractTemporaryFile(NameBase); - FileName := ExpandConstant('{tmp}\' + NameBase); - Image.Bitmap.LoadFromFile(FileName); - DeleteFile(FileName); -end; - -procedure InitializeWizard; -begin - { If using larger scaling, load the correct size of images } - if GetScalingFactor = 125 then begin - LoadEmbededScaledBitmap(WizardForm.WizardBitmapImage, 'installer_bg_191x385.bmp'); - LoadEmbededScaledBitmap(WizardForm.WizardBitmapImage2, 'installer_bg_191x385.bmp'); - end else if GetScalingFactor = 150 then begin - LoadEmbededScaledBitmap(WizardForm.WizardBitmapImage, 'installer_bg_246x457.bmp'); - LoadEmbededScaledBitmap(WizardForm.WizardBitmapImage2, 'installer_bg_246x457.bmp'); - end; - -end; - diff --git a/utils/snap/snapcraft.yaml b/utils/snap/snapcraft.yaml deleted file mode 100644 index 361d71c1..00000000 --- a/utils/snap/snapcraft.yaml +++ /dev/null @@ -1,125 +0,0 @@ -name: zano # you probably want to 'snapcraft register ' -base: core18 # the base snap is the execution environment for this snap -version: '1.1.5' # just for humans, typically '1.2+git' or '1.3.2' -summary: "Zano coin: official wallet. Secure. Scalable. Easy to Use." -description: | - Zano is a scalable and secure coin, designed for use in e-commerce. - The technology behind our blockchain provides reliability, security, - and flexibility a perfect option for P2P transactions. - More info: http://zano.org -grade: devel # must be 'stable' to release into candidate/stable channels -confinement: devmode # use 'strict' once you have the right plugs and slots - -parts: - libboost: - plugin: dump - source: . - - override-pull: | - curl https://dl.bintray.com/boostorg/release/1.68.0/source/boost_1_68_0.tar.bz2 -OL &&\ - echo '7f6130bc3cf65f56a618888ce9d5ea704fa10b462be126ad053e80e553d6d8b7 boost_1_68_0.tar.bz2' | sha256sum -c - &&\ - pwd && echo pulled ok - - override-build: | - tar -xjf $SNAPCRAFT_PART_SRC/boost_1_68_0.tar.bz2 - cd boost_1_68_0 - pwd - ./bootstrap.sh --with-libraries=system,filesystem,thread,date_time,chrono,regex,serialization,atomic,program_options,locale,timer - ./b2 - mkdir -p $SNAPCRAFT_PART_INSTALL/boost_1_68_0 $SNAPCRAFT_PART_INSTALL/boost_1_68_0/stage - cp -pr boost $SNAPCRAFT_PART_INSTALL/boost_1_68_0/ - cp -pr stage/lib $SNAPCRAFT_PART_INSTALL/boost_1_68_0/stage/ - - build-packages: - - curl - - build-essential - - g++ - - libicu-dev - - stage-packages: - - libicu60 - - qt: - plugin: dump - source: . - override-pull: | - curl https://download.qt.io/archive/qt/5.13/5.13.2/single/qt-everywhere-src-5.13.2.tar.xz -OL &&\ - echo '55e8273536be41f4f63064a79e552a22133848bb419400b6fa8e9fc0dc05de08 qt-everywhere-src-5.13.2.tar.xz' | sha256sum -c - &&\ - pwd && echo pulled ok - - override-build: | - tar -xJf $SNAPCRAFT_PART_SRC/qt-everywhere-src-5.13.2.tar.xz - cd qt-everywhere-src-5.13.2 - pwd - ./configure -platform linux-g++ -prefix $SNAPCRAFT_PART_INSTALL/qt5132 -opensource -confirm-license -xcb -nomake examples -nomake tests -feature-webengine-embedded-build -feature-webengine-pepper-plugins -feature-webengine-printing-and-pdf -feature-webengine-proprietary-codecs -feature-webengine-spellchecker -feature-webengine-v8-snapshot -feature-webengine-webrtc -feature-thread -xkbcommon -no-feature-d3d12 -no-feature-qt3d-animation -no-feature-qt3d-extras -no-feature-qt3d-input -no-feature-qt3d-logic -no-feature-qt3d-opengl-renderer -no-feature-qt3d-render -no-feature-qt3d-simd-avx2 -no-feature-qt3d-simd-sse2 -no-feature-gestures - make - make install - echo Qt was successfully built - - build-packages: - - g++ - - libicu-dev - - bison - - build-essential - - flex - - gperf - - gyp - - libasound2-dev - - libavcodec-dev - - libavformat-dev - - libavutil-dev - - libbz2-dev - - libcap-dev - - libcups2-dev - - libdrm-dev - - libegl1-mesa-dev - - libevent-dev - - libfontconfig1-dev - - libgcrypt11-dev - - libjsoncpp-dev - - libminizip-dev - - libnss3-dev - - libopus-dev - - libpci-dev - - libpulse-dev - - libsrtp0-dev - - libssl-dev - - libudev-dev - - libwebp-dev - - libxcb1 - - libxcb1-dev - - libxcomposite-dev - - libxcursor-dev - - libxdamage-dev - - libxkbcommon-dev - - libxrandr-dev - - libxss-dev - - libxtst-dev - - ninja-build - - python - - ruby - - zano-bin: - after: [ libboost, qt ] - source: https://github.com/hyle-team/zano.git - plugin: cmake - - override-build: | - cmake -DCMAKE_PREFIX_PATH=$SNAPCRAFT_PART_INSTALL/qt5132 -DBOOST_ROOT=$SNAPCRAFT_STAGE/boost_1_68_0 -DBOOST_LIBRARYDIR=$SNAPCRAFT_STAGE/boost_1_68_0/stage/lib -DSTATIC=True -DBUILD_GUI=True $SNAPCRAFT_PART_SRC - make -j1 Zano - #daemon simplewallet - # cp src/zanod $SNAPCRAFT_PART_INSTALL - # cp src/simplewallet $SNAPCRAFT_PART_INSTALL - pwd - echo CLI Zano binaries built - - - build-packages: - - build-essential - - g++ - - libicu-dev - - -apps: - zano: - command: pwd diff --git a/utils/test_wallet_rpc_api.bat b/utils/test_wallet_rpc_api.bat deleted file mode 100644 index 8abded78..00000000 --- a/utils/test_wallet_rpc_api.bat +++ /dev/null @@ -1,2 +0,0 @@ -wget --post-file="telepod_withdraw.json" --output-document="api_response.txt" --debug http://127.0.0.1:9999/json_rpc -pause \ No newline at end of file From f65fe1a1f8f4364ef29180be4ef7354095865477 Mon Sep 17 00:00:00 2001 From: Snider Date: Fri, 10 Oct 2025 13:05:43 +0100 Subject: [PATCH 12/65] Update build-docker.yml --- .github/workflows/build-docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index 53e63e03..ba7ac4bf 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -43,7 +43,7 @@ jobs: DOCKER_BUILD_SUMMARY: false DOCKER_BUILD_RECORD_UPLOAD: false with: - file: utils/docker/images/lthn-chain/Dockerfile + file: utils/docker/lthn-chain/Dockerfile context: ${{ github.workspace }} push: true build-args: | From f82fddb809f48b62ec9d83a7b6f34e87cdd99872 Mon Sep 17 00:00:00 2001 From: Snider Date: Fri, 10 Oct 2025 13:18:11 +0100 Subject: [PATCH 13/65] Remove unused configure_file call for MSVC Deleted the configure_file invocation for Directory.Build.props in the MSVC-specific section of CMakeLists.txt, that forced job settings overriding build system settings. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f898ec73..08ec3bdc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -140,7 +140,7 @@ if(MSVC) endforeach() endif() include_directories(SYSTEM src/platform/msc) - configure_file(utils/Directory.Build.props.in ${CMAKE_BINARY_DIR}/Directory.Build.props) + else() set(ARCH default CACHE STRING "CPU to build for: -march value or default") if("${ARCH}" STREQUAL "default") From 8386b95cea8e8fb3dfb19b5325ecbe6ff15c02e7 Mon Sep 17 00:00:00 2001 From: Snider Date: Fri, 10 Oct 2025 13:56:37 +0100 Subject: [PATCH 14/65] Update README with project overview and usage Added a project introduction, description of features, and usage terms to the README for better clarity and onboarding. --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index f6607c63..1de03ca8 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,11 @@ +# Lethean Network—Ethics, Encoded. + +A buildkit for deploying confidential information networks and commerce systems with immutable auditability. + +Free for commercial, private, and patent use, self-host or join the community-run network that guarantees participant sovereignty by design. + + + [![Discord](https://img.shields.io/discord/379876792003067906?label=discord&logo=discord)](https://discord.gg/pfgT2Kz) Web2 Website: https://lt.hn/ From df17bf1247d7c9f95c9eb2b21ea52fcdf0f31fe3 Mon Sep 17 00:00:00 2001 From: Snider Date: Fri, 10 Oct 2025 23:18:02 +0100 Subject: [PATCH 15/65] DTOs for block and transaction details, Refactor API server Replaces RootController and legacy info controller with new InfoController and BlockController, adds DTOs for block and transaction details, and restructures the API server to use modular components. Updates CMakeLists to include new sources and dependencies, and refactors main.cpp to use the new ApiServer entry point. Improves Swagger documentation and endpoint organization for better maintainability and extensibility. --- README.md | 3 +- src/api/ApiServer.cpp | 66 ++++++++++++++ src/api/ApiServer.hpp | 52 +++++++---- src/api/CMakeLists.txt | 11 ++- src/api/controller/BlockController.hpp | 70 +++++++++++++++ src/api/controller/InfoController.hpp | 43 +++++++++ src/api/controller/RootController.hpp | 34 -------- src/api/controller/info/InfoController.hpp | 37 -------- src/api/controller/partials/info/version.hpp | 34 ++++++++ src/api/dto/BlockDetailsDto.hpp | 62 +++++++++++++ src/api/dto/TransactionDetailsDto.hpp | 92 ++++++++++++++++++++ src/api/dto/{DTOs.hpp => VersionDto.hpp} | 19 ++-- src/api/main.cpp | 71 ++------------- 13 files changed, 426 insertions(+), 168 deletions(-) create mode 100644 src/api/ApiServer.cpp create mode 100644 src/api/controller/BlockController.hpp create mode 100644 src/api/controller/InfoController.hpp delete mode 100644 src/api/controller/RootController.hpp delete mode 100644 src/api/controller/info/InfoController.hpp create mode 100644 src/api/controller/partials/info/version.hpp create mode 100644 src/api/dto/BlockDetailsDto.hpp create mode 100644 src/api/dto/TransactionDetailsDto.hpp rename src/api/dto/{DTOs.hpp => VersionDto.hpp} (72%) diff --git a/README.md b/README.md index 1de03ca8..71a7ccb7 100644 --- a/README.md +++ b/README.md @@ -114,4 +114,5 @@ If you do manually delete build folders and get CMake errors (if you have compil the ConanPresets.json file has entries in the `include` property, delete them all and try again. This happens because CMakePresets.json includes ConanPresets.json, that has the list of toolchains to use that gets populated during the CMake config step, -when you manually delete a folder, the toolchain is now a broken path, and CMake throws a fatal error. \ No newline at end of file +when you manually delete a folder, the toolchain is now a broken path, and CMake throws a fatal error. + diff --git a/src/api/ApiServer.cpp b/src/api/ApiServer.cpp new file mode 100644 index 00000000..09aadf50 --- /dev/null +++ b/src/api/ApiServer.cpp @@ -0,0 +1,66 @@ +#include "ApiServer.hpp" +#include "controller/InfoController.hpp" +#include "controller/BlockController.hpp" + +#include "oatpp/network/Server.hpp" +#include "oatpp-swagger/Controller.hpp" + +#include +#include "version.h" + +void ApiServer::run() { + + /* Register Components in scope of run() method */ + Components components; + + /* Get router component */ + OATPP_COMPONENT(std::shared_ptr, router); + + auto docEndpoints = std::make_shared(); + + auto infoController = std::make_shared(); + docEndpoints->append(infoController->getEndpoints()); + + auto blockController = std::make_shared(); + docEndpoints->append(blockController->getEndpoints()); + + router->addController(infoController); + router->addController(blockController); + + OATPP_CREATE_COMPONENT(std::shared_ptr, swaggerDocumentInfo) + ([] + { + oatpp::swagger::DocumentInfo::Builder builder; + + builder + .setTitle("Lethean Blockchain API") + .setDescription("New API layer for Lethean") + .setVersion(PROJECT_VERSION) + .setContactName("Lethean") + .setContactUrl("https://lt.hn/") + .setLicenseName("EUPL-1.2") + .setLicenseUrl("https://joinup.ec.europa.eu/software/page/eupl/licence-eupl") + .addServer("http://localhost:8000", "server on localhost"); + + return builder.build(); }()); + + /* Create a Swagger-UI controller and add its endpoints to the router */ + auto swaggerController = oatpp::swagger::Controller::createShared(*docEndpoints); + router->addController(swaggerController); + + /* Get a connection handler component */ + OATPP_COMPONENT(std::shared_ptr, connectionHandler); + + /* Get a connection provider component */ + OATPP_COMPONENT(std::shared_ptr, connectionProvider); + + /* Create a server which takes provided TCP connections and passes them to the HTTP connection handler */ + oatpp::network::Server server(connectionProvider, connectionHandler); + + /* Print server port */ + OATPP_LOGI("lethean-api", "Server running, API Docs: http://127.0.0.1:%s/swagger/ui", static_cast(connectionProvider->getProperty("port").getData())); + + /* Run server */ + server.run(); + +} diff --git a/src/api/ApiServer.hpp b/src/api/ApiServer.hpp index d02e4b0b..582561c1 100644 --- a/src/api/ApiServer.hpp +++ b/src/api/ApiServer.hpp @@ -1,36 +1,50 @@ #ifndef ApiServer_hpp #define ApiServer_hpp +#include "currency_core/blockchain_storage.h" + +#include "currency_core/currency_core.h" #include "oatpp/web/server/HttpConnectionHandler.hpp" #include "oatpp/network/tcp/server/ConnectionProvider.hpp" +#include "oatpp/parser/json/mapping/ObjectMapper.hpp" #include "oatpp/core/macro/component.hpp" #include "oatpp-swagger/Resources.hpp" -#include "oatpp/parser/json/mapping/ObjectMapper.hpp" -#include "oatpp-swagger/Model.hpp" class ApiServer { + public: - OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionProvider)([] { - return oatpp::network::tcp::server::ConnectionProvider::createShared({"0.0.0.0", 8000, oatpp::network::Address::IP_4}); - }()); + ApiServer() = default; + + class Components { + public: + + OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionProvider)([] { + return oatpp::network::tcp::server::ConnectionProvider::createShared({"0.0.0.0", 8000, oatpp::network::Address::IP_4}); + }()); + + OATPP_CREATE_COMPONENT(std::shared_ptr, httpRouter)([] { + return oatpp::web::server::HttpRouter::createShared(); + }()); + + OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionHandler)([] { + OATPP_COMPONENT(std::shared_ptr, router); + return oatpp::web::server::HttpConnectionHandler::createShared(router); + }()); + + OATPP_CREATE_COMPONENT(std::shared_ptr, apiObjectMapper)([] { + auto jsonMapper = oatpp::parser::json::mapping::ObjectMapper::createShared(); + jsonMapper->getSerializer()->getConfig()->useBeautifier = true; + return jsonMapper; + }()); - OATPP_CREATE_COMPONENT(std::shared_ptr, httpRouter)([] { - return oatpp::web::server::HttpRouter::createShared(); - }()); + OATPP_CREATE_COMPONENT(std::shared_ptr, swaggerResources)([] { + return oatpp::swagger::Resources::loadResources(OATPP_SWAGGER_RES_PATH); + }()); - OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionHandler)([] { - OATPP_COMPONENT(std::shared_ptr, router); - return oatpp::web::server::HttpConnectionHandler::createShared(router); - }()); + }; - OATPP_CREATE_COMPONENT(std::shared_ptr, apiObjectMapper)([] { - return oatpp::parser::json::mapping::ObjectMapper::createShared(); - }()); - - OATPP_CREATE_COMPONENT(std::shared_ptr, swaggerResources)([] { - return oatpp::swagger::Resources::loadResources(OATPP_SWAGGER_RES_PATH); - }()); + void run(); }; diff --git a/src/api/CMakeLists.txt b/src/api/CMakeLists.txt index cb452681..ad66ec60 100644 --- a/src/api/CMakeLists.txt +++ b/src/api/CMakeLists.txt @@ -19,12 +19,17 @@ endif() add_library(lthn_api INTERFACE) add_library(lthn::api ALIAS lthn_api) -target_include_directories(lthn_api INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) +# Add the current directory for API headers and the main src directory for core headers +target_include_directories(lthn_api INTERFACE + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_SOURCE_DIR}/src +) + include_directories(${oatpp_INCLUDE_DIRS}) include_directories(${oatpp-swagger_INCLUDE_DIRS}) -add_executable(lethean-api main.cpp) +add_executable(lethean-api main.cpp ApiServer.cpp) -target_link_libraries(lethean-api PRIVATE lthn::api PUBLIC oatpp::oatpp oatpp::oatpp-swagger) +target_link_libraries(lethean-api PRIVATE lthn::api PUBLIC common config oatpp::oatpp oatpp::oatpp-swagger) add_definitions(-DOATPP_SWAGGER_RES_PATH="${oatpp-swagger_INCLUDE_DIRS}/../bin/oatpp-swagger/res") #add_subdirectory(tests) diff --git a/src/api/controller/BlockController.hpp b/src/api/controller/BlockController.hpp new file mode 100644 index 00000000..184b1992 --- /dev/null +++ b/src/api/controller/BlockController.hpp @@ -0,0 +1,70 @@ +#ifndef BlockController_hpp +#define BlockController_hpp + +#include "../dto/BlockDetailsDto.hpp" + +#include "oatpp/web/server/api/ApiController.hpp" +#include "oatpp/core/macro/codegen.hpp" +#include "oatpp/parser/json/mapping/ObjectMapper.hpp" + +#include OATPP_CODEGEN_BEGIN(ApiController) + +/** + * Block Controller + */ +class BlockController : public oatpp::web::server::api::ApiController { +public: + BlockController(OATPP_COMPONENT(std::shared_ptr, objectMapper)) + : oatpp::web::server::api::ApiController(objectMapper) + {} +public: + + ENDPOINT_INFO(getBlockByHash) { + info->summary = "Get a block by its hash"; + info->addTag("Block"); + info->pathParams["hash"].description = "The hash of the block to retrieve"; + info->addResponse>(Status::CODE_200, "application/json"); + } + ENDPOINT("GET", "/block/{hash}", getBlockByHash, PATH(String, hash)) { + // TODO: Actually fetch the block from the blockchain core + + auto blockDetails = BlockDetailsDto::createShared(); + blockDetails->actual_timestamp = 1557345925ULL; + blockDetails->already_generated_coins = "17517253670000000000"; + blockDetails->base_reward = 1000000000000ULL; + blockDetails->blob = ""; + blockDetails->block_cumulative_size = 6794ULL; + blockDetails->block_tself_size = 0ULL; + blockDetails->cumulative_diff_adjusted = "42413051198"; + blockDetails->cumulative_diff_precise = "28881828324942"; + blockDetails->difficulty = "951296929031"; + blockDetails->effective_fee_median = 0ULL; + blockDetails->height = 51ULL; + blockDetails->id = hash; // Use the hash from the path + blockDetails->is_orphan = false; + blockDetails->miner_text_info = ""; + blockDetails->object_in_json = ""; + blockDetails->penalty = 0.0f; + blockDetails->prev_id = "37fe382c755bb8869e4f5255f2aed6a8fb503e195bb4180b65b8e1450b84cafe"; + blockDetails->summary_reward = 1001000000000ULL; + blockDetails->this_block_fee_median = 1000000000ULL; + blockDetails->timestamp = 1557345925ULL; + blockDetails->total_fee = 1000000000ULL; + blockDetails->total_txs_size = 6794ULL; + blockDetails->type = 1U; + + auto txDetails = TransactionDetailsDto::createShared(); + txDetails->id = "a6e8da986858e6825fce7a192097e6afae4e889cabe853a9c29b964985b23da8"; + txDetails->fee = 1000000000ULL; + // ... populate other txDetails fields as needed + + blockDetails->transactions_details = {txDetails}; + + return createDtoResponse(Status::CODE_200, blockDetails); + } + +}; + +#include OATPP_CODEGEN_END(ApiController) + +#endif /* BlockController_hpp */ diff --git a/src/api/controller/InfoController.hpp b/src/api/controller/InfoController.hpp new file mode 100644 index 00000000..c1eb2dc7 --- /dev/null +++ b/src/api/controller/InfoController.hpp @@ -0,0 +1,43 @@ +// Copyright (c) 2014-2018 Zano Project +// Copyright (c) 2014-2018 The Louisdor Project +// Copyright (c) 2012-2013 The Boolberry developers +// Copyright (c) 2017-2025 Lethean (https://lt.hn) +// +// Licensed under the European Union Public Licence (EUPL) version 1.2. +// You may obtain a copy of the licence at: +// +// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl +// +// The EUPL is a copyleft licence that is compatible with the MIT/X11 +// licence used by the original projects; the MIT terms are therefore +// considered “grandfathered” under the EUPL for this code. +// +// SPDX‑License‑Identifier: EUPL-1.2 +// + +#ifndef InfoController_hpp +#define InfoController_hpp + +#include "oatpp/web/server/api/ApiController.hpp" +#include "oatpp/core/macro/codegen.hpp" +#include "version.h" +#include "dto/VersionDto.hpp" + +#include OATPP_CODEGEN_BEGIN(ApiController) + +/** + * Info Controller + */ +class InfoController : public oatpp::web::server::api::ApiController { +public: + InfoController(OATPP_COMPONENT(std::shared_ptr, objectMapper)) + : oatpp::web::server::api::ApiController(objectMapper) + {} +public: + + #include "partials/info/version.hpp" +}; + +#include OATPP_CODEGEN_END(ApiController) + +#endif /* InfoController_hpp */ diff --git a/src/api/controller/RootController.hpp b/src/api/controller/RootController.hpp deleted file mode 100644 index 817fa833..00000000 --- a/src/api/controller/RootController.hpp +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef RootController_hpp -#define RootController_hpp - -#include "./info/InfoController.hpp" -#include "../dto/DTOs.hpp" - -#include "oatpp/web/server/api/ApiController.hpp" -#include "oatpp/core/macro/codegen.hpp" -#include "oatpp/core/macro/component.hpp" - -#include OATPP_CODEGEN_BEGIN(ApiController) - -class RootController : public oatpp::web::server::api::ApiController { -private: - std::shared_ptr m_infoController; -public: - RootController(OATPP_COMPONENT(std::shared_ptr, objectMapper)) - : oatpp::web::server::api::ApiController(objectMapper), - m_infoController(std::make_shared(objectMapper)) - {} -public: - - - ENDPOINT("GET", "/hello", root) { - auto dto = MyDto::createShared(); - dto->message = "Hello World!"; - return createDtoResponse(Status::CODE_200, dto); - } - -}; - -#include OATPP_CODEGEN_END(ApiController) - -#endif /* RootController_hpp */ diff --git a/src/api/controller/info/InfoController.hpp b/src/api/controller/info/InfoController.hpp deleted file mode 100644 index ab2ece69..00000000 --- a/src/api/controller/info/InfoController.hpp +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef InfoController_hpp -#define InfoController_hpp - -#include "oatpp/web/server/api/ApiController.hpp" -#include "oatpp/core/macro/codegen.hpp" -#include "oatpp/core/macro/component.hpp" - -#include OATPP_CODEGEN_BEGIN(ApiController) - -class InfoController : public oatpp::web::server::api::ApiController { -public: - InfoController(OATPP_COMPONENT(std::shared_ptr, objectMapper)) - : oatpp::web::server::api::ApiController(objectMapper) - {} -public: - - ENDPOINT_INFO(version) { - info->summary = "Get API version"; - info->description = "Returns the current version of the API."; - } - ENDPOINT("GET", "/version", version) { - return createResponse(Status::CODE_200, "v0.0.1"); - } - - ENDPOINT_INFO(root) { - info->summary = "Get info root"; - info->description = "Returns a placeholder for the info root."; - } - ENDPOINT("GET", "/", root) { - return createResponse(Status::CODE_200, "Info root"); - } - -}; - -#include OATPP_CODEGEN_END(ApiController) - -#endif /* InfoController_hpp */ diff --git a/src/api/controller/partials/info/version.hpp b/src/api/controller/partials/info/version.hpp new file mode 100644 index 00000000..dc2ff2e4 --- /dev/null +++ b/src/api/controller/partials/info/version.hpp @@ -0,0 +1,34 @@ +// Copyright (c) 2014-2018 Zano Project +// Copyright (c) 2014-2018 The Louisdor Project +// Copyright (c) 2012-2013 The Boolberry developers +// Copyright (c) 2017-2025 Lethean (https://lt.hn) +// +// Licensed under the European Union Public Licence (EUPL) version 1.2. +// You may obtain a copy of the licence at: +// +// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl +// +// The EUPL is a copyleft licence that is compatible with the MIT/X11 +// licence used by the original projects; the MIT terms are therefore +// considered “grandfathered” under the EUPL for this code. +// +// SPDX‑License‑Identifier: EUPL-1.2 +// + +ENDPOINT_INFO(version) +{ + info->addTag("Info"); + info->summary = "Get API version"; + info->description = "Returns the current version of the API."; + info->addResponse>(Status::CODE_200, "application/json"); +} +ENDPOINT("GET", "/info/version", version) +{ + auto dto = VersionDto::createShared(); + dto->version = PROJECT_VERSION; + dto->version_long = PROJECT_VERSION_LONG; + dto->major = PROJECT_MAJOR_VERSION; + dto->minor = PROJECT_MINOR_VERSION; + dto->revision = PROJECT_REVISION; + return createDtoResponse(Status::CODE_200, dto); +} diff --git a/src/api/dto/BlockDetailsDto.hpp b/src/api/dto/BlockDetailsDto.hpp new file mode 100644 index 00000000..d8ffb1a8 --- /dev/null +++ b/src/api/dto/BlockDetailsDto.hpp @@ -0,0 +1,62 @@ +// Copyright (c) 2014-2018 Zano Project +// Copyright (c) 2014-2018 The Louisdor Project +// Copyright (c) 2012-2013 The Boolberry developers +// Copyright (c) 2017-2025 Lethean (https://lt.hn) +// +// Licensed under the European Union Public Licence (EUPL) version 1.2. +// You may obtain a copy of the licence at: +// +// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl +// +// The EUPL is a copyleft licence that is compatible with the MIT/X11 +// licence used by the original projects; the MIT terms are therefore +// considered “grandfathered” under the EUPL for this code. +// +// SPDX‑License‑Identifier: EUPL-1.2 +// + +#ifndef BlockDetailsDto_hpp +#define BlockDetailsDto_hpp + +#include "TransactionDetailsDto.hpp" +#include "oatpp/core/macro/codegen.hpp" +#include "oatpp/core/Types.hpp" + +#include OATPP_CODEGEN_BEGIN(DTO) + +/** + * DTO for detailed block information. + */ +class BlockDetailsDto : public oatpp::DTO { + DTO_INIT(BlockDetailsDto, DTO); + + DTO_FIELD(UInt64, actual_timestamp, "actual_timestamp"); + DTO_FIELD(String, already_generated_coins, "already_generated_coins"); + DTO_FIELD(UInt64, base_reward, "base_reward"); + DTO_FIELD(String, blob, "blob"); + DTO_FIELD(UInt64, block_cumulative_size, "block_cumulative_size"); + DTO_FIELD(UInt64, block_tself_size, "block_tself_size"); + DTO_FIELD(String, cumulative_diff_adjusted, "cumulative_diff_adjusted"); + DTO_FIELD(String, cumulative_diff_precise, "cumulative_diff_precise"); + DTO_FIELD(String, difficulty, "difficulty"); + DTO_FIELD(UInt64, effective_fee_median, "effective_fee_median"); + DTO_FIELD(UInt64, height, "height"); + DTO_FIELD(String, id, "id"); + DTO_FIELD(Boolean, is_orphan, "is_orphan"); + DTO_FIELD(String, miner_text_info, "miner_text_info"); + DTO_FIELD(String, object_in_json, "object_in_json"); + DTO_FIELD(UInt64, penalty, "penalty"); + DTO_FIELD(String, pow_seed, "pow_seed"); + DTO_FIELD(String, prev_id, "prev_id"); + DTO_FIELD(UInt64, summary_reward, "summary_reward"); + DTO_FIELD(UInt64, this_block_fee_median, "this_block_fee_median"); + DTO_FIELD(UInt64, timestamp, "timestamp"); + DTO_FIELD(UInt64, total_fee, "total_fee"); + DTO_FIELD(UInt64, total_txs_size, "total_txs_size"); + DTO_FIELD(List>, transactions_details, "transactions_details"); + DTO_FIELD(UInt32, type, "type"); +}; + +#include OATPP_CODEGEN_END(DTO) + +#endif /* BlockDetailsDto_hpp */ diff --git a/src/api/dto/TransactionDetailsDto.hpp b/src/api/dto/TransactionDetailsDto.hpp new file mode 100644 index 00000000..a3168710 --- /dev/null +++ b/src/api/dto/TransactionDetailsDto.hpp @@ -0,0 +1,92 @@ +// Copyright (c) 2014-2018 Zano Project +// Copyright (c) 2014-2018 The Louisdor Project +// Copyright (c) 2012-2013 The Boolberry developers +// Copyright (c) 2017-2025 Lethean (https://lt.hn) +// +// Licensed under the European Union Public Licence (EUPL) version 1.2. +// You may obtain a copy of the licence at: +// +// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl +// +// The EUPL is a copyleft licence that is compatible with the MIT/X11 +// licence used by the original projects; the MIT terms are therefore +// considered “grandfathered” under the EUPL for this code. +// +// SPDX‑License‑Identifier: EUPL-1.2 +// + +#ifndef TransactionDetailsDto_hpp +#define TransactionDetailsDto_hpp + +#include "oatpp/core/macro/codegen.hpp" +#include "oatpp/core/Types.hpp" + +#include OATPP_CODEGEN_BEGIN(DTO) + +/** + * DTO for transaction attachments. + */ +class TransactionAttachmentDto : public oatpp::DTO { + DTO_INIT(TransactionAttachmentDto, DTO); + DTO_FIELD(String, type, "type"); + DTO_FIELD(String, short_view, "short_view"); + DTO_FIELD(String, details_view, "details_view"); +}; + +/** + * DTO for transaction extra data. + */ +class TransactionExtraDto : public oatpp::DTO { + DTO_INIT(TransactionExtraDto, DTO); + DTO_FIELD(String, type, "type"); + DTO_FIELD(String, short_view, "short_view"); + DTO_FIELD(String, details_view, "details_view"); +}; + +/** + * DTO for transaction inputs. + */ +class TransactionInputDto : public oatpp::DTO { + DTO_INIT(TransactionInputDto, DTO); + DTO_FIELD(UInt64, amount, "amount"); + DTO_FIELD(Vector, global_indexes, "global_indexes"); + DTO_FIELD(String, htlc_origin, "htlc_origin"); + DTO_FIELD(String, kimage_or_ms_id, "kimage_or_ms_id"); + DTO_FIELD(UInt32, multisig_count, "multisig_count"); +}; + +/** + * DTO for transaction outputs. + */ +class TransactionOutputDto : public oatpp::DTO { + DTO_INIT(TransactionOutputDto, DTO); + DTO_FIELD(UInt64, amount, "amount"); + DTO_FIELD(UInt64, global_index, "global_index"); + DTO_FIELD(Boolean, is_spent, "is_spent"); + DTO_FIELD(UInt32, minimum_sigs, "minimum_sigs"); + DTO_FIELD(Vector, pub_keys, "pub_keys"); +}; + +/** + * DTO for detailed transaction information. + */ +class TransactionDetailsDto : public oatpp::DTO { + DTO_INIT(TransactionDetailsDto, DTO); + DTO_FIELD(UInt64, amount, "amount"); + DTO_FIELD(List>, attachments, "attachments"); + DTO_FIELD(String, blob, "blob"); + DTO_FIELD(UInt64, blob_size, "blob_size"); + DTO_FIELD(List>, extra, "extra"); + DTO_FIELD(UInt64, fee, "fee"); + DTO_FIELD(String, id, "id"); + DTO_FIELD(List>, ins, "ins"); + DTO_FIELD(Int64, keeper_block, "keeper_block"); + DTO_FIELD(String, object_in_json, "object_in_json"); + DTO_FIELD(List>, outs, "outs"); + DTO_FIELD(String, pub_key, "pub_key"); + DTO_FIELD(UInt64, timestamp, "timestamp"); +}; + +#include OATPP_CODEGEN_END(DTO) + +#endif /* TransactionDetailsDto_hpp */ diff --git a/src/api/dto/DTOs.hpp b/src/api/dto/VersionDto.hpp similarity index 72% rename from src/api/dto/DTOs.hpp rename to src/api/dto/VersionDto.hpp index e8bd3111..28f5c318 100644 --- a/src/api/dto/DTOs.hpp +++ b/src/api/dto/VersionDto.hpp @@ -15,22 +15,25 @@ // SPDX‑License‑Identifier: EUPL-1.2 // -#ifndef DTOs_hpp -#define DTOs_hpp +#ifndef VersionDto_hpp +#define VersionDto_hpp #include "oatpp/core/macro/codegen.hpp" #include "oatpp/core/Types.hpp" #include OATPP_CODEGEN_BEGIN(DTO) -class MyDto : public oatpp::DTO { - - DTO_INIT(MyDto, DTO); - - DTO_FIELD(String, message); +class VersionDto final : public oatpp::DTO +{ + DTO_INIT(VersionDto, DTO); + DTO_FIELD(String, version); + DTO_FIELD(String, version_long); + DTO_FIELD(String, major); + DTO_FIELD(String, minor); + DTO_FIELD(String, revision); }; #include OATPP_CODEGEN_END(DTO) -#endif /* DTOs_hpp */ +#endif /* VersionDto_hpp */ diff --git a/src/api/main.cpp b/src/api/main.cpp index dbea164d..eecb3004 100644 --- a/src/api/main.cpp +++ b/src/api/main.cpp @@ -1,76 +1,15 @@ -#include "controller/RootController.hpp" #include "ApiServer.hpp" - -#include "oatpp/network/Server.hpp" -#include "oatpp-swagger/Controller.hpp" - -#include - -void run() { - /* Register Components in scope of run() method */ - ApiServer components; - - /* Get router component */ - OATPP_COMPONENT(std::shared_ptr, router); - - /* Create RootController and add all of its endpoints to router */ - auto rootController = std::make_shared(); - router->addController(rootController); - - OATPP_CREATE_COMPONENT(std::shared_ptr, swaggerDocumentInfo)([] { - - oatpp::swagger::DocumentInfo::Builder builder; - - builder - .setTitle("Lethean Blockchain API") - .setDescription("New API layer for Lethean") - .setVersion("1.0") - .setContactName("Lethean") - .setContactUrl("https://lt.hn/") - - .setLicenseName("EUPL-1.2") - .setLicenseUrl("https://joinup.ec.europa.eu/software/page/eupl/licence-eupl") - - .addServer("http://localhost:8000", "server on localhost"); - - // When you are using the AUTHENTICATION() Endpoint-Macro you must add an SecurityScheme object (https://swagger.io/specification/#securitySchemeObject) - // For basic-authentication you can use the default Basic-Authorization-Security-Scheme like this - // For more complex authentication schemes you can use the oatpp::swagger::DocumentInfo::SecuritySchemeBuilder builder - // Don't forget to add info->addSecurityRequirement("basic_auth") to your ENDPOINT_INFO() Macro! - //.addSecurityScheme("basic_auth", oatpp::swagger::DocumentInfo::SecuritySchemeBuilder::DefaultBasicAuthorizationSecurityScheme()); - - return builder.build(); - -}()); - - /* Create Swagger-UI controller and add its endpoints to router */ - auto swaggerController = oatpp::swagger::Controller::createShared(rootController->getEndpoints()); - router->addController(swaggerController); - - /* Get connection handler component */ - OATPP_COMPONENT(std::shared_ptr, connectionHandler); - - /* Get connection provider component */ - OATPP_COMPONENT(std::shared_ptr, connectionProvider); - - /* Create server which takes provided TCP connections and passes them to HTTP connection handler */ - oatpp::network::Server server(connectionProvider, connectionHandler); - - /* Print server port */ - OATPP_LOGI("lethean-api", "Server running on port %s", connectionProvider->getProperty("port").getData()); - - /* Run server */ - server.run(); -} +#include "oatpp/core/base/Environment.hpp" int main(int argc, const char * argv[]) { oatpp::base::Environment::init(); - run(); - + ApiServer server; + server.run(); + /* Destroy oatpp Environment */ oatpp::base::Environment::destroy(); - + return 0; } From e68fffbe1200ceb90dc41db16aa676e3683e22e0 Mon Sep 17 00:00:00 2001 From: snider Date: Sat, 11 Oct 2025 11:01:35 +0100 Subject: [PATCH 16/65] CLion first runs with a default profile configuration for Debug with testnet preset. --- .idea/cmake.xml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .idea/cmake.xml diff --git a/.idea/cmake.xml b/.idea/cmake.xml new file mode 100644 index 00000000..2c46369e --- /dev/null +++ b/.idea/cmake.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file From 7a15d0a9606024c546c89a1fd62f3fb5ed08658d Mon Sep 17 00:00:00 2001 From: snider Date: Sat, 11 Oct 2025 11:42:00 +0100 Subject: [PATCH 17/65] Update README to reflect mainnet launch timeline and clarify chain alias domain names --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 71a7ccb7..270e856d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Lethean Network—Ethics, Encoded. +> We are building upto a mainnet launch in 2026, documentation written as if mainnet is live. + A buildkit for deploying confidential information networks and commerce systems with immutable auditability. Free for commercial, private, and patent use, self-host or join the community-run network that guarantees participant sovereignty by design. @@ -11,7 +13,7 @@ Free for commercial, private, and patent use, self-host or join the community-ru Web2 Website: https://lt.hn/ Web3 Network Gateway [HNS](https://handshake.org): [https://lthn](https://www.namebase.io/domains/lthn) -
_(our chain aliases come with a working Web2(`*.lt.hn`)+Web3(`*.lthn`) domain name)_ +
_(our chain aliases will come with a working Web2(`*.lt.hn`)+Web3(`*.lthn`) domain name)_ ### Dependencies From 0a2a965253f1eeb815d2c1d35d1dbf1a34106d7f Mon Sep 17 00:00:00 2001 From: snider Date: Sat, 11 Oct 2025 12:41:18 +0100 Subject: [PATCH 18/65] Fix block size and effective fee median values in BlockController --- src/api/controller/BlockController.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/api/controller/BlockController.hpp b/src/api/controller/BlockController.hpp index 184b1992..8a364097 100644 --- a/src/api/controller/BlockController.hpp +++ b/src/api/controller/BlockController.hpp @@ -34,11 +34,11 @@ public: blockDetails->base_reward = 1000000000000ULL; blockDetails->blob = ""; blockDetails->block_cumulative_size = 6794ULL; - blockDetails->block_tself_size = 0ULL; + blockDetails->block_tself_size = 0001ULL; blockDetails->cumulative_diff_adjusted = "42413051198"; blockDetails->cumulative_diff_precise = "28881828324942"; blockDetails->difficulty = "951296929031"; - blockDetails->effective_fee_median = 0ULL; + blockDetails->effective_fee_median = 01ULL; blockDetails->height = 51ULL; blockDetails->id = hash; // Use the hash from the path blockDetails->is_orphan = false; From dcda295e1e22728a7cd0faba3f1dae2f9da34b6d Mon Sep 17 00:00:00 2001 From: snider Date: Sat, 11 Oct 2025 12:42:19 +0100 Subject: [PATCH 19/65] Add ConanPresets.json to .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index bf1e94c9..5b3ea01c 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ Thumbs.db .idea/*.iml .vs/* CMakeUserPresets.json +ConanPresets.json From 02136357730157dca1ec955ecc6ab545c05212c7 Mon Sep 17 00:00:00 2001 From: snider Date: Sat, 11 Oct 2025 12:45:27 +0100 Subject: [PATCH 20/65] stops using system cmake for make testnet/mainnet uses cmake 3.11.9 --- Makefile | 6 ++++-- conanfile.py | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index c0de80b1..5e48c267 100644 --- a/Makefile +++ b/Makefile @@ -72,10 +72,12 @@ CC_DOCKER_FILE?=utils/docker/images/lthn-chain/Dockerfile all: help testnet: - cmake --workflow testnet + $(MAKE) configure TESTNET=1 + CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) build . mainnet: - cmake --workflow mainnet + $(MAKE) configure TESTNET=0 + CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) build . release: docs build (cd $(BUILD_FOLDER) && cpack) diff --git a/conanfile.py b/conanfile.py index 69cd53e7..40e10f35 100644 --- a/conanfile.py +++ b/conanfile.py @@ -21,6 +21,10 @@ class BlockchainConan(ConanFile): "boost/*:without_test": True } + tool_requires = [ + "cmake/3.31.9" + ] + requires = [ "zlib/1.3.1", "boost/1.85.0", From 39ec000a885030a4c4ceb4b4e153e13a3a1ad974 Mon Sep 17 00:00:00 2001 From: snider Date: Sat, 11 Oct 2025 12:57:04 +0100 Subject: [PATCH 21/65] Refactor GHA workflows to use dynamic chain network input for compilation --- .github/workflows/build-linux-arm64.yml | 2 +- .github/workflows/build-linux-intel.yml | 2 +- .github/workflows/build-macos-arm64.yml | 2 +- .github/workflows/build-macos-intel.yml | 2 +- .github/workflows/build-windows-intel.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index 9a64e529..42e44d10 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -79,7 +79,7 @@ jobs: - run: pip install mkdocs-material mkdocs-git-revision-date-localized-plugin mkdocs-git-committers-plugin-2 mkdocs-git-authors-plugin "mkdocs-material[imaging]" - name: Compile Release - run: make release CPU_CORES=4 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} + run: make ${{ inputs.chain-network }} - name: CLI Artifacts uses: ./.github/actions/upload-artifacts diff --git a/.github/workflows/build-linux-intel.yml b/.github/workflows/build-linux-intel.yml index edfc56bc..a86b9720 100644 --- a/.github/workflows/build-linux-intel.yml +++ b/.github/workflows/build-linux-intel.yml @@ -79,7 +79,7 @@ jobs: - run: pip install mkdocs-material mkdocs-git-revision-date-localized-plugin mkdocs-git-committers-plugin-2 mkdocs-git-authors-plugin "mkdocs-material[imaging]" - name: Compile Release - run: make release CPU_CORES=4 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} + run: make ${{ inputs.chain-network }} - name: CLI Artifacts uses: ./.github/actions/upload-artifacts diff --git a/.github/workflows/build-macos-arm64.yml b/.github/workflows/build-macos-arm64.yml index 140a9f74..9cfc8251 100644 --- a/.github/workflows/build-macos-arm64.yml +++ b/.github/workflows/build-macos-arm64.yml @@ -74,7 +74,7 @@ jobs: - run: pip install mkdocs-material mkdocs-git-revision-date-localized-plugin mkdocs-git-committers-plugin-2 mkdocs-git-authors-plugin "mkdocs-material[imaging]" - name: Compile Release - run: make release CPU_CORES=3 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} + run: make ${{ inputs.chain-network }} - name: CLI Artifacts uses: ./.github/actions/upload-artifacts diff --git a/.github/workflows/build-macos-intel.yml b/.github/workflows/build-macos-intel.yml index 93dbe618..bc2a6a11 100644 --- a/.github/workflows/build-macos-intel.yml +++ b/.github/workflows/build-macos-intel.yml @@ -70,7 +70,7 @@ jobs: - run: pip install mkdocs-material mkdocs-git-revision-date-localized-plugin mkdocs-git-committers-plugin-2 mkdocs-git-authors-plugin "mkdocs-material[imaging]" - name: Compile Release - run: make release CPU_CORES=4 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} + run: make ${{ inputs.chain-network }} - name: CLI Artifacts uses: ./.github/actions/upload-artifacts diff --git a/.github/workflows/build-windows-intel.yml b/.github/workflows/build-windows-intel.yml index 5038bc65..75644ecb 100644 --- a/.github/workflows/build-windows-intel.yml +++ b/.github/workflows/build-windows-intel.yml @@ -70,7 +70,7 @@ jobs: - run: pip install mkdocs-material mkdocs-git-revision-date-localized-plugin mkdocs-git-committers-plugin-2 mkdocs-git-authors-plugin "mkdocs-material[imaging]" - name: Compile Release - run: make release CPU_CORES=4 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} + run: make ${{ inputs.chain-network }} - name: CLI Artifacts uses: ./.github/actions/upload-artifacts From e5c5d1e2797b3a0b30c9125366a21ffd3abaa87d Mon Sep 17 00:00:00 2001 From: snider Date: Sat, 11 Oct 2025 16:10:31 +0100 Subject: [PATCH 22/65] Add PR AI Agent Collaboration Framework for Repository Contributions --- AGENTS.md | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 AGENTS.md diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000..704eca5c --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,55 @@ +# AI Agent Collaboration Framework for Repository Contributions + +## 1. Purpose and Guiding Philosophy + +This document provides a guiding framework for any AI agent interacting with this repository. Its purpose is to ensure that all automated contributions, especially Pull Request (PR) reviews and code suggestions, are constructive, respectful, and aligned with the project's overarching goals. + +This framework operates in accordance with the foundational **Axioms of Life**, translating their universal principles into the specific context of human-AI software development collaboration. The primary goal is a partnership that enhances code quality and developer velocity, not one that creates friction through pedantry. + +## 2. Core Principles for AI Interaction + +All agents MUST adhere to the following principles: + +* **Principle 1: Respect Authorial Intent (Axiom 1 & 4)** + * Your primary goal is to understand and support the human author's objective. Before suggesting a change, first assume the author had a valid reason for their implementation. Frame your feedback as a way to better achieve their goal or to prevent unintended side effects. Do not challenge intent without clear evidence of a functional error. + +* **Principle 2: Prioritize Objectivity and Verifiability (Axiom 2)** + * Feedback MUST be anchored in objective, verifiable criteria. Subjective opinions on style are the lowest priority. + * **Valid criteria include:** + * Demonstrable bugs or logical errors. + * Security vulnerabilities. + * Performance regressions. + * Violations of a documented project standard (e.g., a style guide file in the repo). + * **Invalid criteria include:** + * Personal stylistic preferences not codified in a project standard. + * Code organization that is merely "different" but not functionally incorrect. + +* **Principle 3: Adopt a Collaborative, Non-Authoritarian Tone (Axiom 4)** + * As a digital substrate interacting with a human one, you must adopt a tone of a helpful, respectful peer. Avoid declarative or demanding language. + * **Prefer:** "Have you considered...?", "An alternative here that might prevent X is...", "I noticed this could lead to Y. What do you think about...?" + * **Avoid:** "You must fix this.", "This is wrong.", "Change this to..." + +* **Principle 4: Provide Actionable and Justified Suggestions (Axiom 3)** + * Do not simply state that something is incorrect. Provide a clear explanation for *why* it is a potential issue and, whenever possible, offer a concrete, well-explained code suggestion that resolves it. Your intent is to help, not just to criticize. + +## 3. Feedback Severity Classification + +To combat pedantry, all feedback provided in PR reviews MUST be classified into one of the following three levels. This creates a clear hierarchy of importance. + +### **Level 1: Critical (Blocking)** +* **Definition:** Issues that will cause demonstrable harm if merged. +* **Examples:** Bugs, logic errors, security vulnerabilities, unhandled exceptions, build failures. +* **Action:** These issues MUST be addressed by the author before a merge. Your feedback should clearly state the nature of the critical issue. + +### **Level 2: Important (Non-Blocking Recommendation)** +* **Definition:** Issues that deviate from established project best practices or could impact future maintainability. +* **Examples:** Violations of a documented style guide, clear opportunities to improve readability, non-critical performance improvements, deprecation warnings. +* **Action:** These issues SHOULD be addressed. Frame them as strong recommendations that improve the health of the codebase. The author may choose to address them in a follow-up PR if necessary. + +### **Level 3: Suggestion (Optional Nitpick)** +* **Definition:** Minor stylistic preferences, alternative implementations with no clear functional advantage, or purely cosmetic changes. This is the "pedantic" category. +* **Action:** These suggestions are entirely optional and at the author's discretion. They MUST be explicitly prefixed with "Optional:", "Nit:", or "Suggestion:". This signals to the human that the comment is non-essential and can be safely ignored without consequence. + +--- + +By adhering to this framework, AI agents become valuable partners in the development process, helping to catch critical errors while respecting the creative autonomy and focus of their human collaborators. \ No newline at end of file From c03c4dac862ee60ef14c993fb11e23d960f15840 Mon Sep 17 00:00:00 2001 From: snider Date: Sat, 11 Oct 2025 16:18:37 +0100 Subject: [PATCH 23/65] Add configuration files for SDK generation and OpenAPI specifications --- Makefile | 43 +++++++++++++++++++++++------------ utils/sdk/Makefile | 30 ++++++++++++++++++++++++ utils/sdk/openapitools.json | 7 ++++++ utils/sdk/packages/bash.json | 9 ++++++++ utils/sdk/packages/go.json | 6 +++++ utils/sdk/spec/oas-3.0.0.json | 1 + 6 files changed, 82 insertions(+), 14 deletions(-) create mode 100644 utils/sdk/Makefile create mode 100644 utils/sdk/openapitools.json create mode 100644 utils/sdk/packages/bash.json create mode 100644 utils/sdk/packages/go.json create mode 100644 utils/sdk/spec/oas-3.0.0.json diff --git a/Makefile b/Makefile index 5e48c267..674bbd4c 100644 --- a/Makefile +++ b/Makefile @@ -58,16 +58,17 @@ CPU_CORES := $(or $(CPU_CORES),1) CPU_CORES := $(shell expr $(CPU_CORES) + 0 2>/dev/null || echo 1) CONAN_CPU_COUNT=$(CPU_CORES) - -PROFILES := $(patsubst cmake/profiles/%,%,$(wildcard cmake/profiles/*)) -SORTED_PROFILES := $(sort $(PROFILES)) -CONAN_CACHE := $(CURDIR)/build/sdk -CONAN_URL:=https://artifacts.host.uk.com/artifactory/api/conan/conan-build -CONAN_USER:=public -CONAN_PASSWORD:=Lethean1234 -DEFAULT_CONAN_PROFILE := $(CONAN_CACHE)/profiles/default -CONAN_EXECUTABLE := $(CURDIR)/build/bin/conan -CC_DOCKER_FILE?=utils/docker/images/lthn-chain/Dockerfile +PROFILES :=$(patsubst cmake/profiles/%,%,$(wildcard cmake/profiles/*)) +SORTED_PROFILES :=$(sort $(PROFILES)) +CONAN_CACHE :=$(CURDIR)/build/sdk +CONAN_URL :=https://artifacts.host.uk.com/artifactory/api/conan/conan-build +CONAN_USER :=public +CONAN_PASSWORD :=Lethean1234 +CONAN_EXECUTABLE :=$(CURDIR)/build/bin/conan +CC_DOCKER_FILE ?=utils/docker/images/lthn-chain/Dockerfile +SDK_PACKAGES_JSON :=$(wildcard utils/sdk/packages/*.json) +SDK_TARGETS :=$(patsubst utils/sdk/packages/%.json,%,$(SDK_PACKAGES_JSON)) +SORTED_SDK_TARGETS :=$(sort $(SDK_TARGETS)) all: help @@ -98,6 +99,9 @@ docs: configure @echo "Building Documentation" cmake --build build/release --target=docs --config=Release --parallel=$(CPU_CORES) +sdk: + $(MAKE) -C utils/sdk $(filter-out $@,$(MAKECMDGOALS)) PACKAGE_VERSION=$(BUILD_VERSION) + # Rule for each profile $(PROFILES): conan-profile-detect @echo "Building profile: $@" @@ -107,6 +111,12 @@ $(PROFILES): conan-profile-detect (cd $(BUILD_FOLDER) && cpack) help: + @echo "Lethean VPN Blockchain" + @echo "======================" + @echo "Website: https://lt.hn" + @echo "GitHub: https://github.com/letheanVPN/blockchain/" + @echo "Discord: https://discord.lt.hn" + @echo "" @echo "Available targets:" @printf " %-42s %s\n" "make clean" "Clean all build directories" @printf " %-42s %s\n" "make get-conan" "Download and install conan locally" @@ -118,12 +128,14 @@ help: @printf " %-42s %s\n" "make docs-dev" "Runs local doc server, for editing/adding docs" @printf " %-42s %s\n" "make conan-profile-detect" "Creates host config" @printf " %-42s %s\n" "make configure" "Runs a cmake configure within conan build flow" + @printf "\n --- Conan Cross-Compilation Profiles ---\n" @$(foreach profile,$(SORTED_PROFILES),printf " %-42s %s\n" "make $(profile)" "Build the $(profile) profile";) + @printf "\n --- SDK Generation ---\n" + @printf " %-42s %s\n" "make sdk" "Build all SDK packages" + @$(foreach sdk,$(SORTED_SDK_TARGETS),printf " %-42s %s\n" "make sdk $(sdk)" "Build the $(sdk) SDK package";) + @printf "\n" @printf " %-42s %s\n" "make help" "Show this help message" -# -# Tests -# test: test-release test-release: @@ -156,6 +168,9 @@ docs-dev: configure @echo "Building Documentation" cmake --build build/release --target=serve_docs --config=Release +$(SDK_TARGETS): + @# This is a proxy target. Handled by the 'sdk' rule. + clean: @cmake -P cmake/CleanBuild.cmake @@ -165,4 +180,4 @@ clean-build: clean tags: ctags -R --sort=1 --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ src contrib tests/gtest -.PHONY: all release upload-conan-cache docs docs-dev configure static static-release test test-release test-debug clean tags conan-profile-detect get-conan $(PROFILES) +.PHONY: all release upload-conan-cache docs docs-dev configure static static-release test test-release test-debug clean tags conan-profile-detect get-conan $(PROFILES) sdk $(SDK_TARGETS) diff --git a/utils/sdk/Makefile b/utils/sdk/Makefile new file mode 100644 index 00000000..98afd90c --- /dev/null +++ b/utils/sdk/Makefile @@ -0,0 +1,30 @@ +PACKAGE_VERSION?=6.0.1 +BASE_DIR:=$(CURDIR) +BUILD_DIR:=$(BASE_DIR)/../../build/packages +SDK_TARGETS := $(patsubst packages/%.json,%,$(wildcard packages/*.json)) + +# Default target to build all SDKs. This is the main entry point. +all: build + +build: $(SDK_TARGETS) + @echo "All SDKs have been processed." + +# Rule to build each SDK package using OpenAPI Generator. +# It reads the corresponding JSON config file and generates the SDK in the build directory. +$(SDK_TARGETS): %: packages/%.json + @echo "--- Building package $@ with version $(PACKAGE_VERSION) ---" + rm -rf "$(BUILD_DIR)/$@/*" + export TS_POST_PROCESS_FILE="/usr/local/bin/prettier --write" && \ + openapi-generator generate --skip-validate-spec \ + -i "$(BASE_DIR)/spec/oas-3.0.0.json" \ + -g "$@" \ + -o "$(BUILD_DIR)/$@" \ + -c "$<" \ + --artifact-version "$(PACKAGE_VERSION)" \ + --group-id "lethean" \ + -p packageVersion="$(PACKAGE_VERSION)" \ + --global-property "apiTests=true" \ + --additional-properties=npmVersion="$(PACKAGE_VERSION)",artifactVersion="$(PACKAGE_VERSION)" + +# Phony targets to avoid conflicts with file names and to ensure they always run. +.PHONY: all build $(SDK_TARGETS) diff --git a/utils/sdk/openapitools.json b/utils/sdk/openapitools.json new file mode 100644 index 00000000..a82623d6 --- /dev/null +++ b/utils/sdk/openapitools.json @@ -0,0 +1,7 @@ +{ + "$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json", + "spaces": 2, + "generator-cli": { + "version": "7.14.0" + } +} diff --git a/utils/sdk/packages/bash.json b/utils/sdk/packages/bash.json new file mode 100644 index 00000000..b53bb667 --- /dev/null +++ b/utils/sdk/packages/bash.json @@ -0,0 +1,9 @@ +{ + "additionalProperties": { + "apiPackage": "lethean-chain-sdk-bash", + "generateBashCompletion": true, + "generateZshCompletion": true, + "processMarkdown": true, + "scriptName":"lthn-cli" + } +} \ No newline at end of file diff --git a/utils/sdk/packages/go.json b/utils/sdk/packages/go.json new file mode 100644 index 00000000..11efc703 --- /dev/null +++ b/utils/sdk/packages/go.json @@ -0,0 +1,6 @@ +{ + "additionalProperties": { + "packageName": "lethean-chain-sdk-go", + "generateInterfaces": true + } +} \ No newline at end of file diff --git a/utils/sdk/spec/oas-3.0.0.json b/utils/sdk/spec/oas-3.0.0.json new file mode 100644 index 00000000..61f62dd2 --- /dev/null +++ b/utils/sdk/spec/oas-3.0.0.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{"title":"Lethean Blockchain API","description":"New API layer for Lethean","contact":{"name":"Lethean","url":"https:\/\/lt.hn\/"},"license":{"name":"EUPL-1.2","url":"https:\/\/joinup.ec.europa.eu\/software\/page\/eupl\/licence-eupl"},"version":"6.0.1"},"servers":[{"url":"http:\/\/localhost:8000","description":"server on localhost"}],"paths":{"\/info\/version":{"get":{"description":"Returns the current version of the API.","summary":"Get API version","operationId":"version","tags":["Info"],"responses":{"200":{"description":"OK","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/VersionDto"}}}}},"parameters":[]}},"\/block\/{hash}":{"get":{"summary":"Get a block by its hash","operationId":"getBlockByHash","tags":["Block"],"responses":{"200":{"description":"OK","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/BlockDetailsDto"}}}}},"parameters":[{"name":"hash","description":"The hash of the block to retrieve","in":"path","required":true,"deprecated":false,"schema":{"type":"string"}}]}}},"components":{"schemas":{"VersionDto":{"type":"object","properties":{"version":{"type":"string"},"version_long":{"type":"string"},"major":{"type":"string"},"minor":{"type":"string"},"revision":{"type":"string"}},"required":[]},"TransactionOutputDto":{"type":"object","properties":{"amount":{"type":"integer"},"global_index":{"type":"integer"},"is_spent":{"type":"boolean"},"minimum_sigs":{"type":"integer","minimum":0,"maximum":4294967295},"pub_keys":{"type":"array","items":{"type":"string"}}},"required":[]},"TransactionInputDto":{"type":"object","properties":{"amount":{"type":"integer"},"global_indexes":{"type":"array","items":{"type":"integer"}},"htlc_origin":{"type":"string"},"kimage_or_ms_id":{"type":"string"},"multisig_count":{"type":"integer","minimum":0,"maximum":4294967295}},"required":[]},"TransactionExtraDto":{"type":"object","properties":{"type":{"type":"string"},"short_view":{"type":"string"},"details_view":{"type":"string"}},"required":[]},"TransactionAttachmentDto":{"type":"object","properties":{"type":{"type":"string"},"short_view":{"type":"string"},"details_view":{"type":"string"}},"required":[]},"TransactionDetailsDto":{"type":"object","properties":{"amount":{"type":"integer"},"attachments":{"type":"array","items":{"$ref":"#\/components\/schemas\/TransactionAttachmentDto"}},"blob":{"type":"string"},"blob_size":{"type":"integer"},"extra":{"type":"array","items":{"$ref":"#\/components\/schemas\/TransactionExtraDto"}},"fee":{"type":"integer"},"id":{"type":"string"},"ins":{"type":"array","items":{"$ref":"#\/components\/schemas\/TransactionInputDto"}},"keeper_block":{"type":"integer","format":"int64"},"object_in_json":{"type":"string"},"outs":{"type":"array","items":{"$ref":"#\/components\/schemas\/TransactionOutputDto"}},"pub_key":{"type":"string"},"timestamp":{"type":"integer"}},"required":[]},"BlockDetailsDto":{"type":"object","properties":{"actual_timestamp":{"type":"integer"},"already_generated_coins":{"type":"string"},"base_reward":{"type":"integer"},"blob":{"type":"string"},"block_cumulative_size":{"type":"integer"},"block_tself_size":{"type":"integer"},"cumulative_diff_adjusted":{"type":"string"},"cumulative_diff_precise":{"type":"string"},"difficulty":{"type":"string"},"effective_fee_median":{"type":"integer"},"height":{"type":"integer"},"id":{"type":"string"},"is_orphan":{"type":"boolean"},"miner_text_info":{"type":"string"},"object_in_json":{"type":"string"},"penalty":{"type":"integer"},"pow_seed":{"type":"string"},"prev_id":{"type":"string"},"summary_reward":{"type":"integer"},"this_block_fee_median":{"type":"integer"},"timestamp":{"type":"integer"},"total_fee":{"type":"integer"},"total_txs_size":{"type":"integer"},"transactions_details":{"type":"array","items":{"$ref":"#\/components\/schemas\/TransactionDetailsDto"}},"type":{"type":"integer","minimum":0,"maximum":4294967295}},"required":[]}}}} \ No newline at end of file From 52934d7bebac36a982928c34635794e3e793c297 Mon Sep 17 00:00:00 2001 From: snider Date: Sat, 11 Oct 2025 16:21:44 +0100 Subject: [PATCH 24/65] Adds android chain SDK client --- utils/sdk/packages/android.json | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 utils/sdk/packages/android.json diff --git a/utils/sdk/packages/android.json b/utils/sdk/packages/android.json new file mode 100644 index 00000000..0c61a779 --- /dev/null +++ b/utils/sdk/packages/android.json @@ -0,0 +1,9 @@ +{ + "additionalProperties": { + "groupId": "org.lethean.chain", + "apiPackage":"org.lethean.chain.android.client", + "invokerPackage":"org.lethean.chain.android.client", + "artifactId":"org.lethean.chain.android.client", + "modelPackage":"org.lethean.chain.android.models" + } +} \ No newline at end of file From 76ba3c95052c47f7ac21798e0bee09f89d6f4f27 Mon Sep 17 00:00:00 2001 From: snider Date: Sat, 11 Oct 2025 17:02:06 +0100 Subject: [PATCH 25/65] Add configuration files for C++ Oatpp SDK and other languages --- utils/sdk/packages/cpp-oatpp-client.json | 5 +++++ utils/sdk/packages/cpp-oatpp-server.json | 5 +++++ utils/sdk/packages/dart.json | 5 +++++ utils/sdk/packages/gdscript.json | 5 +++++ utils/sdk/packages/graphql-schema.json | 1 + utils/sdk/packages/haskell-http-client.json | 1 + utils/sdk/packages/java.json | 5 +++++ utils/sdk/packages/jetbrains-http-client.json | 1 + utils/sdk/packages/k6.json | 1 + utils/sdk/packages/lua.json | 1 + utils/sdk/packages/markdown.json | 1 + utils/sdk/packages/mysql-schema.json | 1 + utils/sdk/packages/nim.json | 1 + utils/sdk/packages/php.json | 1 + utils/sdk/packages/powershell.json | 1 + utils/sdk/packages/protobuf-schema.json | 1 + utils/sdk/packages/python.json | 7 +++++++ utils/sdk/packages/r.json | 1 + utils/sdk/packages/ruby.json | 1 + utils/sdk/packages/rust.json | 5 +++++ utils/sdk/packages/swift5.json | 1 + utils/sdk/packages/swift6.json | 1 + utils/sdk/packages/typescript-angular.json | 8 ++++++++ utils/sdk/packages/typescript-node.json | 6 ++++++ utils/sdk/packages/typescript.json | 10 ++++++++++ utils/sdk/packages/wsdl-schema.json | 1 + utils/sdk/packages/zapier.json | 1 + 27 files changed, 78 insertions(+) create mode 100644 utils/sdk/packages/cpp-oatpp-client.json create mode 100644 utils/sdk/packages/cpp-oatpp-server.json create mode 100644 utils/sdk/packages/dart.json create mode 100644 utils/sdk/packages/gdscript.json create mode 100644 utils/sdk/packages/graphql-schema.json create mode 100644 utils/sdk/packages/haskell-http-client.json create mode 100644 utils/sdk/packages/java.json create mode 100644 utils/sdk/packages/jetbrains-http-client.json create mode 100644 utils/sdk/packages/k6.json create mode 100644 utils/sdk/packages/lua.json create mode 100644 utils/sdk/packages/markdown.json create mode 100644 utils/sdk/packages/mysql-schema.json create mode 100644 utils/sdk/packages/nim.json create mode 100644 utils/sdk/packages/php.json create mode 100644 utils/sdk/packages/powershell.json create mode 100644 utils/sdk/packages/protobuf-schema.json create mode 100644 utils/sdk/packages/python.json create mode 100644 utils/sdk/packages/r.json create mode 100644 utils/sdk/packages/ruby.json create mode 100644 utils/sdk/packages/rust.json create mode 100644 utils/sdk/packages/swift5.json create mode 100644 utils/sdk/packages/swift6.json create mode 100644 utils/sdk/packages/typescript-angular.json create mode 100644 utils/sdk/packages/typescript-node.json create mode 100644 utils/sdk/packages/typescript.json create mode 100644 utils/sdk/packages/wsdl-schema.json create mode 100644 utils/sdk/packages/zapier.json diff --git a/utils/sdk/packages/cpp-oatpp-client.json b/utils/sdk/packages/cpp-oatpp-client.json new file mode 100644 index 00000000..7ddda99c --- /dev/null +++ b/utils/sdk/packages/cpp-oatpp-client.json @@ -0,0 +1,5 @@ +{ + "additionalProperties": { + "packageName":"@snider/sdk-cpp-oatpp" + } +} \ No newline at end of file diff --git a/utils/sdk/packages/cpp-oatpp-server.json b/utils/sdk/packages/cpp-oatpp-server.json new file mode 100644 index 00000000..7ddda99c --- /dev/null +++ b/utils/sdk/packages/cpp-oatpp-server.json @@ -0,0 +1,5 @@ +{ + "additionalProperties": { + "packageName":"@snider/sdk-cpp-oatpp" + } +} \ No newline at end of file diff --git a/utils/sdk/packages/dart.json b/utils/sdk/packages/dart.json new file mode 100644 index 00000000..7ddda99c --- /dev/null +++ b/utils/sdk/packages/dart.json @@ -0,0 +1,5 @@ +{ + "additionalProperties": { + "packageName":"@snider/sdk-cpp-oatpp" + } +} \ No newline at end of file diff --git a/utils/sdk/packages/gdscript.json b/utils/sdk/packages/gdscript.json new file mode 100644 index 00000000..7ddda99c --- /dev/null +++ b/utils/sdk/packages/gdscript.json @@ -0,0 +1,5 @@ +{ + "additionalProperties": { + "packageName":"@snider/sdk-cpp-oatpp" + } +} \ No newline at end of file diff --git a/utils/sdk/packages/graphql-schema.json b/utils/sdk/packages/graphql-schema.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/utils/sdk/packages/graphql-schema.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/utils/sdk/packages/haskell-http-client.json b/utils/sdk/packages/haskell-http-client.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/utils/sdk/packages/haskell-http-client.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/utils/sdk/packages/java.json b/utils/sdk/packages/java.json new file mode 100644 index 00000000..7ddda99c --- /dev/null +++ b/utils/sdk/packages/java.json @@ -0,0 +1,5 @@ +{ + "additionalProperties": { + "packageName":"@snider/sdk-cpp-oatpp" + } +} \ No newline at end of file diff --git a/utils/sdk/packages/jetbrains-http-client.json b/utils/sdk/packages/jetbrains-http-client.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/utils/sdk/packages/jetbrains-http-client.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/utils/sdk/packages/k6.json b/utils/sdk/packages/k6.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/utils/sdk/packages/k6.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/utils/sdk/packages/lua.json b/utils/sdk/packages/lua.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/utils/sdk/packages/lua.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/utils/sdk/packages/markdown.json b/utils/sdk/packages/markdown.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/utils/sdk/packages/markdown.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/utils/sdk/packages/mysql-schema.json b/utils/sdk/packages/mysql-schema.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/utils/sdk/packages/mysql-schema.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/utils/sdk/packages/nim.json b/utils/sdk/packages/nim.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/utils/sdk/packages/nim.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/utils/sdk/packages/php.json b/utils/sdk/packages/php.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/utils/sdk/packages/php.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/utils/sdk/packages/powershell.json b/utils/sdk/packages/powershell.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/utils/sdk/packages/powershell.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/utils/sdk/packages/protobuf-schema.json b/utils/sdk/packages/protobuf-schema.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/utils/sdk/packages/protobuf-schema.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/utils/sdk/packages/python.json b/utils/sdk/packages/python.json new file mode 100644 index 00000000..3cb982bd --- /dev/null +++ b/utils/sdk/packages/python.json @@ -0,0 +1,7 @@ +{ + "additionalProperties": { + "packageName": "lthnchainsdk", + "projectName": "lthnchainsdk", + "packageUrl": "https://github.com/letheanVPN" + } +} \ No newline at end of file diff --git a/utils/sdk/packages/r.json b/utils/sdk/packages/r.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/utils/sdk/packages/r.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/utils/sdk/packages/ruby.json b/utils/sdk/packages/ruby.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/utils/sdk/packages/ruby.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/utils/sdk/packages/rust.json b/utils/sdk/packages/rust.json new file mode 100644 index 00000000..0b390075 --- /dev/null +++ b/utils/sdk/packages/rust.json @@ -0,0 +1,5 @@ +{ + "additionalProperties": { + "packageName":"@snider/sdk-rust" + } +} \ No newline at end of file diff --git a/utils/sdk/packages/swift5.json b/utils/sdk/packages/swift5.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/utils/sdk/packages/swift5.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/utils/sdk/packages/swift6.json b/utils/sdk/packages/swift6.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/utils/sdk/packages/swift6.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/utils/sdk/packages/typescript-angular.json b/utils/sdk/packages/typescript-angular.json new file mode 100644 index 00000000..77662033 --- /dev/null +++ b/utils/sdk/packages/typescript-angular.json @@ -0,0 +1,8 @@ +{ + "additionalProperties": { + "apiModulePrefix":"letheanchainsdk", + "configurationPrefix":"letheanchainsdk", + "npmName":"@snider/sdk-typescript-angular", + "ngVersion": 12 + } +} \ No newline at end of file diff --git a/utils/sdk/packages/typescript-node.json b/utils/sdk/packages/typescript-node.json new file mode 100644 index 00000000..29f3a995 --- /dev/null +++ b/utils/sdk/packages/typescript-node.json @@ -0,0 +1,6 @@ +{ + "additionalProperties": { + "npmName":"@snider/sdk-typescript-node-ts", + "supportsES6": true + } +} \ No newline at end of file diff --git a/utils/sdk/packages/typescript.json b/utils/sdk/packages/typescript.json new file mode 100644 index 00000000..7572877f --- /dev/null +++ b/utils/sdk/packages/typescript.json @@ -0,0 +1,10 @@ +{ + "additionalProperties": { + "apiModulePrefix":"letheanchainsdk", + "configurationPrefix":"letheanchainsdk", + "npmName":"@snider/sdk-typescript", + "supportsES6": true, + "useInversify": true, + "useObjectParameters": true + } +} \ No newline at end of file diff --git a/utils/sdk/packages/wsdl-schema.json b/utils/sdk/packages/wsdl-schema.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/utils/sdk/packages/wsdl-schema.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/utils/sdk/packages/zapier.json b/utils/sdk/packages/zapier.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/utils/sdk/packages/zapier.json @@ -0,0 +1 @@ +{} \ No newline at end of file From 276231790d12b6cce1ac123d2f0f6f677c45ea22 Mon Sep 17 00:00:00 2001 From: snider Date: Sat, 11 Oct 2025 17:02:31 +0100 Subject: [PATCH 26/65] Add OpenAPI tools schema configuration to jsonSchemas.xml --- .idea/jsonSchemas.xml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/.idea/jsonSchemas.xml b/.idea/jsonSchemas.xml index 4f0a1c8b..109e0fce 100644 --- a/.idea/jsonSchemas.xml +++ b/.idea/jsonSchemas.xml @@ -19,6 +19,24 @@ + + + + + + + From c250daf4ec48dd979050a50cae2c7a38f8140893 Mon Sep 17 00:00:00 2001 From: snider Date: Sat, 11 Oct 2025 23:35:07 +0100 Subject: [PATCH 27/65] Add ApiCoreInfoComponent and enhance BlockController for blockchain data retrieval --- src/api/CMakeLists.txt | 26 ++++++- src/api/controller/ApiCoreInfoComponent.hpp | 23 ++++++ src/api/controller/BlockController.hpp | 80 +++++++++++++-------- 3 files changed, 97 insertions(+), 32 deletions(-) create mode 100644 src/api/controller/ApiCoreInfoComponent.hpp diff --git a/src/api/CMakeLists.txt b/src/api/CMakeLists.txt index ad66ec60..f66301c3 100644 --- a/src/api/CMakeLists.txt +++ b/src/api/CMakeLists.txt @@ -27,9 +27,31 @@ target_include_directories(lthn_api INTERFACE include_directories(${oatpp_INCLUDE_DIRS}) include_directories(${oatpp-swagger_INCLUDE_DIRS}) -add_executable(lethean-api main.cpp ApiServer.cpp) -target_link_libraries(lethean-api PRIVATE lthn::api PUBLIC common config oatpp::oatpp oatpp::oatpp-swagger) +# Add P2P and currency_protocol sources directly to the executable, like the main daemon does +add_executable(lethean-api main.cpp ApiServer.cpp ${P2P} ${CURRENCY_PROTOCOL}) + +# Explicitly add the project's main src directory to the executable's include paths +target_include_directories(lethean-api PRIVATE ${CMAKE_SOURCE_DIR}/src) + +# Link against the correct, existing library targets +target_link_libraries(lethean-api + PRIVATE + lthn::api + rpc + stratum + currency_core + crypto + common + config + ethash + oatpp::oatpp + oatpp::oatpp-swagger + ${Boost_LIBRARIES} + OpenSSL::SSL + OpenSSL::Crypto + ZLIB::ZLIB +) add_definitions(-DOATPP_SWAGGER_RES_PATH="${oatpp-swagger_INCLUDE_DIRS}/../bin/oatpp-swagger/res") #add_subdirectory(tests) diff --git a/src/api/controller/ApiCoreInfoComponent.hpp b/src/api/controller/ApiCoreInfoComponent.hpp new file mode 100644 index 00000000..38daa2d9 --- /dev/null +++ b/src/api/controller/ApiCoreInfoComponent.hpp @@ -0,0 +1,23 @@ +#ifndef ApiCoreInfoComponent_hpp +#define ApiCoreInfoComponent_hpp + +#include "currency_core/currency_core.h" +#include "currency_protocol/currency_protocol_handler.h" // Full definition needed for template instantiation +#include "p2p/net_node.h" + +// A simple holder for core blockchain components that can be injected into controllers. +class ApiCoreInfoComponent { +private: + currency::core& m_core; + nodetool::node_server>& m_p2p; + +public: + ApiCoreInfoComponent(currency::core& core, nodetool::node_server>& p2p) + : m_core(core), m_p2p(p2p) + {} + + currency::core& getCore() { return m_core; } + nodetool::node_server>& getP2p() { return m_p2p; } +}; + +#endif /* ApiCoreInfoComponent_hpp */ diff --git a/src/api/controller/BlockController.hpp b/src/api/controller/BlockController.hpp index 8a364097..bd03e969 100644 --- a/src/api/controller/BlockController.hpp +++ b/src/api/controller/BlockController.hpp @@ -2,17 +2,23 @@ #define BlockController_hpp #include "../dto/BlockDetailsDto.hpp" +#include "../dto/TransactionDetailsDto.hpp" +#include "ApiCoreInfoComponent.hpp" #include "oatpp/web/server/api/ApiController.hpp" #include "oatpp/core/macro/codegen.hpp" #include "oatpp/parser/json/mapping/ObjectMapper.hpp" +#include "rpc/core_rpc_server_commands_defs.h" + #include OATPP_CODEGEN_BEGIN(ApiController) /** * Block Controller */ class BlockController : public oatpp::web::server::api::ApiController { +private: + OATPP_COMPONENT(std::shared_ptr, m_core_info); public: BlockController(OATPP_COMPONENT(std::shared_ptr, objectMapper)) : oatpp::web::server::api::ApiController(objectMapper) @@ -24,41 +30,55 @@ public: info->addTag("Block"); info->pathParams["hash"].description = "The hash of the block to retrieve"; info->addResponse>(Status::CODE_200, "application/json"); + info->addResponse(Status::CODE_404, "text/plain"); + info->addResponse(Status::CODE_400, "text/plain"); } ENDPOINT("GET", "/block/{hash}", getBlockByHash, PATH(String, hash)) { - // TODO: Actually fetch the block from the blockchain core + + crypto::hash block_hash; + if (!epee::string_tools::hex_to_pod(*hash, block_hash)) { + return createResponse(Status::CODE_400, "Invalid block hash format"); + } + currency::block_rpc_extended_info rpc_details; + if (!m_core_info->getCore().get_blockchain_storage().get_main_block_rpc_details(block_hash, rpc_details)) { + return createResponse(Status::CODE_404, "Block not found"); + } + auto blockDetails = BlockDetailsDto::createShared(); - blockDetails->actual_timestamp = 1557345925ULL; - blockDetails->already_generated_coins = "17517253670000000000"; - blockDetails->base_reward = 1000000000000ULL; - blockDetails->blob = ""; - blockDetails->block_cumulative_size = 6794ULL; - blockDetails->block_tself_size = 0001ULL; - blockDetails->cumulative_diff_adjusted = "42413051198"; - blockDetails->cumulative_diff_precise = "28881828324942"; - blockDetails->difficulty = "951296929031"; - blockDetails->effective_fee_median = 01ULL; - blockDetails->height = 51ULL; - blockDetails->id = hash; // Use the hash from the path - blockDetails->is_orphan = false; - blockDetails->miner_text_info = ""; - blockDetails->object_in_json = ""; - blockDetails->penalty = 0.0f; - blockDetails->prev_id = "37fe382c755bb8869e4f5255f2aed6a8fb503e195bb4180b65b8e1450b84cafe"; - blockDetails->summary_reward = 1001000000000ULL; - blockDetails->this_block_fee_median = 1000000000ULL; - blockDetails->timestamp = 1557345925ULL; - blockDetails->total_fee = 1000000000ULL; - blockDetails->total_txs_size = 6794ULL; - blockDetails->type = 1U; + + blockDetails->id = rpc_details.id; + blockDetails->height = rpc_details.height; + blockDetails->timestamp = rpc_details.timestamp; + blockDetails->actual_timestamp = rpc_details.actual_timestamp; + blockDetails->difficulty = rpc_details.difficulty; + blockDetails->prev_id = rpc_details.prev_id; + blockDetails->is_orphan = rpc_details.is_orphan; + blockDetails->base_reward = rpc_details.base_reward; + blockDetails->summary_reward = rpc_details.summary_reward; + blockDetails->total_fee = rpc_details.total_fee; + blockDetails->penalty = rpc_details.penalty; + blockDetails->already_generated_coins = rpc_details.already_generated_coins; + blockDetails->block_cumulative_size = rpc_details.block_cumulative_size; + blockDetails->total_txs_size = rpc_details.total_txs_size; + blockDetails->cumulative_diff_adjusted = rpc_details.cumulative_diff_adjusted; + blockDetails->cumulative_diff_precise = rpc_details.cumulative_diff_precise; + blockDetails->blob = rpc_details.blob; + blockDetails->miner_text_info = rpc_details.miner_text_info; + blockDetails->type = rpc_details.type; - auto txDetails = TransactionDetailsDto::createShared(); - txDetails->id = "a6e8da986858e6825fce7a192097e6afae4e889cabe853a9c29b964985b23da8"; - txDetails->fee = 1000000000ULL; - // ... populate other txDetails fields as needed - - blockDetails->transactions_details = {txDetails}; + auto tx_details_list = oatpp::List>::createShared(); + for(const auto& tx_rpc_info : rpc_details.transactions_details) { + auto tx_dto = TransactionDetailsDto::createShared(); + tx_dto->id = tx_rpc_info.id; + tx_dto->fee = tx_rpc_info.fee; + tx_dto->amount = tx_rpc_info.amount; + tx_dto->blob_size = tx_rpc_info.blob_size; + tx_dto->keeper_block = tx_rpc_info.keeper_block; + tx_dto->timestamp = tx_rpc_info.timestamp; + tx_details_list->push_back(tx_dto); + } + blockDetails->transactions_details = tx_details_list; return createDtoResponse(Status::CODE_200, blockDetails); } From ae25bdf6d0f1c8eba591bce41bdcc3d176963147 Mon Sep 17 00:00:00 2001 From: snider Date: Sun, 12 Oct 2025 00:14:16 +0100 Subject: [PATCH 28/65] Add support for DEB and RPM package generation in CPack configuration --- cmake/CPackConfig.cmake | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/cmake/CPackConfig.cmake b/cmake/CPackConfig.cmake index 047fd324..40c2a212 100644 --- a/cmake/CPackConfig.cmake +++ b/cmake/CPackConfig.cmake @@ -32,12 +32,13 @@ if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebI # set(CPACK_WIX_LICENSE_RTF "${CMAKE_SOURCE_DIR}/LICENSE.rtf") # set(CPACK_WIX_UPGRADE_GUID "D3F5A9C1-4B2E-4F5A-9C71-123456789ABC") # change once per major version else() - # set(CPACK_GENERATOR "DEB") - # message(STATUS "Registered CPACK_GENERATOR: deb") - # set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${package_contact}") - # set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.28)") - # set(CPACK_DEBIAN_PACKAGE_SECTION "utils") - # set(CPACK_DEBIAN_ARCHITECTURE "${CMAKE_SYSTEM_PROCESSOR}") + set(CPACK_GENERATOR "DEB") + set(CPACK_GENERATOR "RPM") + message(STATUS "Registered CPACK_GENERATOR: deb") + set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${package_contact}") + set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.28)") + set(CPACK_DEBIAN_PACKAGE_SECTION "utils") + set(CPACK_DEBIAN_ARCHITECTURE "${CMAKE_SYSTEM_PROCESSOR}") # post‑install script (e.g., to register a systemd service) # set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA # "${CMAKE_SOURCE_DIR}/scripts/postinstall.sh") From 3670b2de4c863c6b064f27babe85bd91c22a1e6d Mon Sep 17 00:00:00 2001 From: snider Date: Sun, 12 Oct 2025 00:14:33 +0100 Subject: [PATCH 29/65] Add RPM package support to Linux build configurations and enhance Makefile for packaging --- .github/workflows/build-linux-arm64.yml | 2 +- .github/workflows/build-linux-intel.yml | 2 +- Makefile | 7 +++++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index 42e44d10..a3616d56 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -62,7 +62,7 @@ jobs: submodules: recursive - name: install dependencies - run: sudo apt-get install -y autotools-dev git build-essential libcairo2-dev libfreetype6-dev libffi-dev libjpeg-dev libpng-dev libz-dev pngquant + run: sudo apt-get install -y autotools-dev rpm git build-essential libcairo2-dev libfreetype6-dev libffi-dev libjpeg-dev libpng-dev libz-dev pngquant - name: Cache SDK Folder uses: actions/cache@v4 diff --git a/.github/workflows/build-linux-intel.yml b/.github/workflows/build-linux-intel.yml index a86b9720..712ae33c 100644 --- a/.github/workflows/build-linux-intel.yml +++ b/.github/workflows/build-linux-intel.yml @@ -34,7 +34,7 @@ jobs: - name: install dependencies if: steps.cache.outputs.cache-hit != 'true' - run: sudo apt-get install -y autotools-dev git build-essential + run: sudo apt-get install -y autotools-dev rpm git build-essential - uses: actions/setup-python@v5 if: steps.cache.outputs.cache-hit != 'true' diff --git a/Makefile b/Makefile index 674bbd4c..cdb474c5 100644 --- a/Makefile +++ b/Makefile @@ -75,10 +75,12 @@ all: help testnet: $(MAKE) configure TESTNET=1 CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) build . + $(MAKE) package mainnet: $(MAKE) configure TESTNET=0 CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) build . + $(MAKE) package release: docs build (cd $(BUILD_FOLDER) && cpack) @@ -91,6 +93,11 @@ build-deps: conan-profile-detect @echo "Build Dependencies: $(BUILD_TYPE) testnet=$(TESTNET)" CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) install . --build=missing -s build_type=$(BUILD_TYPE) +package: + @echo "Packaging: $(BUILD_TYPE) testnet=$(TESTNET)" + (cd $(BUILD_FOLDER) && cpack) + @rm -rf $(CURDIR)/build/packages/_CPack_Packages + configure: build-deps @echo "Running Configure: $(BUILD_TYPE) testnet=$(TESTNET)" cmake --preset $(PRESET_CONFIGURE) -DSTATIC=$(STATIC) -DTESTNET=$(TESTNET) -DBUILD_VERSION=$(BUILD_VERSION) From 44029220a5780f5a099e9bffe0cbcef8a4dc60ca Mon Sep 17 00:00:00 2001 From: Snider Date: Mon, 13 Oct 2025 17:46:31 +0100 Subject: [PATCH 30/65] Windows build fix. ensures STATIC=$(STATIC) is passed --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index cdb474c5..85259941 100644 --- a/Makefile +++ b/Makefile @@ -73,12 +73,12 @@ SORTED_SDK_TARGETS :=$(sort $(SDK_TARGETS)) all: help testnet: - $(MAKE) configure TESTNET=1 + $(MAKE) configure TESTNET=1 STATIC=$(STATIC) CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) build . $(MAKE) package mainnet: - $(MAKE) configure TESTNET=0 + $(MAKE) configure TESTNET=0 STATIC=$(STATIC) CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) build . $(MAKE) package From 49573e94b6b301723f522e28423b3aab17fdf55c Mon Sep 17 00:00:00 2001 From: Snider Date: Mon, 13 Oct 2025 18:43:12 +0100 Subject: [PATCH 31/65] Clean CPack packages only on non-Windows systems Added a conditional to the package target in the Makefile to remove the _CPack_Packages directory only when not running on Windows. This prevents potential issues with file removal on Windows environments. --- Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile b/Makefile index 85259941..66a794c1 100644 --- a/Makefile +++ b/Makefile @@ -96,7 +96,9 @@ build-deps: conan-profile-detect package: @echo "Packaging: $(BUILD_TYPE) testnet=$(TESTNET)" (cd $(BUILD_FOLDER) && cpack) +ifneq ($(OS),Windows_NT) @rm -rf $(CURDIR)/build/packages/_CPack_Packages +endif configure: build-deps @echo "Running Configure: $(BUILD_TYPE) testnet=$(TESTNET)" From 10abf9b3142ea965a541981f885e439e6f9f805c Mon Sep 17 00:00:00 2001 From: Snider Date: Mon, 13 Oct 2025 18:43:46 +0100 Subject: [PATCH 32/65] Windows installer CPack config Replaces the commented-out WIX configuration with NSIS settings for Windows builds. Adds NSIS-specific options such as modifying PATH, help link, contact info, branding, and finish page executable. Updates the status message to reflect the change. --- cmake/CPackConfig.cmake | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/cmake/CPackConfig.cmake b/cmake/CPackConfig.cmake index 40c2a212..60846d6a 100644 --- a/cmake/CPackConfig.cmake +++ b/cmake/CPackConfig.cmake @@ -26,8 +26,16 @@ if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebI # message(STATUS "Registered CPACK_GENERATOR: productbuild") endif () elseif(WIN32) -# set(CPACK_GENERATOR "WIX") -# message(STATUS "Registered CPACK_GENERATOR: WIX") + set(CPACK_GENERATOR "NSIS") + set(CPACK_NSIS_MODIFY_PATH ON) + set(CPACK_NSIS_HELP_LINK "https://lt.hn/getting-started/chain.html") + set(CPACK_NSIS_URL_INFO_ABOUT "https://lt.hn") + set(CPACK_NSIS_CONTACT "support@lt.hn") + set(CPACK_NSIS_UNINSTALL_NAME "Lethean CLI") + set(CPACK_NSIS_BRANDING_TEXT "Lethean Community") + set(CPACK_NSIS_MUI_FINISHPAGE_RUN "lethean-testnet-chain-node.exe") + + message(STATUS "Registered CPACK_GENERATOR: Inno exe") # set(CPACK_WIX_PRODUCT_ICON "${CMAKE_SOURCE_DIR}/resources/windows_icon.ico") # set(CPACK_WIX_LICENSE_RTF "${CMAKE_SOURCE_DIR}/LICENSE.rtf") # set(CPACK_WIX_UPGRADE_GUID "D3F5A9C1-4B2E-4F5A-9C71-123456789ABC") # change once per major version From 785a65958e5c0949aeea03dae95de25f67ab5188 Mon Sep 17 00:00:00 2001 From: Snider Date: Mon, 13 Oct 2025 19:05:40 +0100 Subject: [PATCH 33/65] Add NSIS to GHA Windows build workflow Added a step to install NSIS using Chocolatey in the Windows Intel GitHub Actions workflow to support installer creation. --- .github/workflows/build-windows-intel.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-windows-intel.yml b/.github/workflows/build-windows-intel.yml index 75644ecb..bfe93b05 100644 --- a/.github/workflows/build-windows-intel.yml +++ b/.github/workflows/build-windows-intel.yml @@ -64,6 +64,7 @@ jobs: ${{ github.workspace }}/build/bin key: ${{ runner.os }}-${{ runner.arch }}-sdk + - run: choco install nsis.install - uses: actions/setup-python@v5 with: python-version: 3.x From 3a2ccb55c6fd84f4d184299ff157d825d459f019 Mon Sep 17 00:00:00 2001 From: snider Date: Wed, 15 Oct 2025 20:58:57 +0100 Subject: [PATCH 34/65] Refactor ApiServer to manage server lifecycle with start, stop, and wait methods --- src/api/ApiServer.cpp | 26 +++++++++++++++++++++----- src/api/ApiServer.hpp | 12 +++++++++++- src/api/main.cpp | 9 ++++++++- 3 files changed, 40 insertions(+), 7 deletions(-) diff --git a/src/api/ApiServer.cpp b/src/api/ApiServer.cpp index 09aadf50..726a3469 100644 --- a/src/api/ApiServer.cpp +++ b/src/api/ApiServer.cpp @@ -21,11 +21,11 @@ void ApiServer::run() { auto infoController = std::make_shared(); docEndpoints->append(infoController->getEndpoints()); - auto blockController = std::make_shared(); - docEndpoints->append(blockController->getEndpoints()); + // auto blockController = std::make_shared(); + // docEndpoints->append(blockController->getEndpoints()); router->addController(infoController); - router->addController(blockController); + // router->addController(blockController); OATPP_CREATE_COMPONENT(std::shared_ptr, swaggerDocumentInfo) ([] @@ -55,12 +55,28 @@ void ApiServer::run() { OATPP_COMPONENT(std::shared_ptr, connectionProvider); /* Create a server which takes provided TCP connections and passes them to the HTTP connection handler */ - oatpp::network::Server server(connectionProvider, connectionHandler); + m_server = std::make_shared(connectionProvider, connectionHandler); /* Print server port */ OATPP_LOGI("lethean-api", "Server running, API Docs: http://127.0.0.1:%s/swagger/ui", static_cast(connectionProvider->getProperty("port").getData())); /* Run server */ - server.run(); + m_server->run(); } + +void ApiServer::start() { + m_server_thread = std::thread(&ApiServer::run, this); +} + +void ApiServer::stop() { + if (m_server) { + m_server->stop(); + } +} + +void ApiServer::wait() { + if (m_server_thread.joinable()) { + m_server_thread.join(); + } +} diff --git a/src/api/ApiServer.hpp b/src/api/ApiServer.hpp index 582561c1..3adc6513 100644 --- a/src/api/ApiServer.hpp +++ b/src/api/ApiServer.hpp @@ -10,7 +10,15 @@ #include "oatpp/core/macro/component.hpp" #include "oatpp-swagger/Resources.hpp" +#include "oatpp/network/Server.hpp" +#include + class ApiServer { +private: + std::thread m_server_thread; + std::shared_ptr m_server; + + void run(); public: @@ -44,7 +52,9 @@ public: }; - void run(); + void start(); + void stop(); + void wait(); }; diff --git a/src/api/main.cpp b/src/api/main.cpp index eecb3004..91023d82 100644 --- a/src/api/main.cpp +++ b/src/api/main.cpp @@ -1,12 +1,19 @@ #include "ApiServer.hpp" #include "oatpp/core/base/Environment.hpp" +#include "common/util.h" int main(int argc, const char * argv[]) { oatpp::base::Environment::init(); ApiServer server; - server.run(); + + tools::signal_handler::install([&server] { + server.stop(); + }); + + server.start(); + server.wait(); /* Destroy oatpp Environment */ oatpp::base::Environment::destroy(); From 073f3db1aa16f12201f1759d95f030c32e0c285e Mon Sep 17 00:00:00 2001 From: snider Date: Wed, 15 Oct 2025 20:59:05 +0100 Subject: [PATCH 35/65] Initialize and manage API server lifecycle in daemon --- src/daemon/daemon.cpp | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/src/daemon/daemon.cpp b/src/daemon/daemon.cpp index c04b8e05..7941f180 100644 --- a/src/daemon/daemon.cpp +++ b/src/daemon/daemon.cpp @@ -18,9 +18,12 @@ // node.cpp : Defines the entry point for the console application. // +#include "ApiServer.hpp" #include "include_base_utils.h" #include "version.h" +#include "oatpp/core/base/Environment.hpp" + using namespace epee; #include @@ -464,18 +467,31 @@ int main(int argc, char* argv[]) LOG_PRINT_L0("Stratum server started ok"); } - tools::signal_handler::install([&dch, &p2psrv, &stratum_server_ptr] { - dch.stop_handling(); + // Initialize API server + oatpp::base::Environment::init(); + ApiServer api_server; + api_server.start(); + + // Setup signal handler to gracefully stop the main p2p loop + tools::signal_handler::install([&p2psrv] { + LOG_PRINT_L0("SIGINT received, stopping p2p net loop..."); p2psrv.send_stop_signal(); - if (stratum_server_ptr) - stratum_server_ptr->send_stop_signal(); }); LOG_PRINT_L0("Starting p2p net loop..."); - p2psrv.run(); - LOG_PRINT_L0("p2p net loop stopped"); + p2psrv.run(); // This blocks until the stop signal is received + LOG_PRINT_L0("p2p net loop stopped. Starting shutdown..."); - //stop components + // Shutdown sequence + LOG_PRINT_L0("Stopping command handler..."); + dch.stop_handling(); + + LOG_PRINT_L0("Stopping API server..."); + api_server.stop(); + api_server.wait(); + LOG_PRINT_L0("API server thread joined."); + + //stop other components if (stratum_enabled) { LOG_PRINT_L0("Stopping stratum server..."); @@ -506,6 +522,10 @@ int main(int argc, char* argv[]) LOG_PRINT_L0("Deinitializing p2p..."); p2psrv.deinit(); + LOG_PRINT_L0("Destroying oatpp environment..."); + oatpp::base::Environment::destroy(); + LOG_PRINT_L0("oatpp environment destroyed."); + ccore.set_critical_error_handler(nullptr); ccore.set_currency_protocol(NULL); cprotocol.set_p2p_endpoint(NULL); From 3ac4f170d4402af380b18e11e1f7b3de8e3a724f Mon Sep 17 00:00:00 2001 From: snider Date: Wed, 15 Oct 2025 20:59:18 +0100 Subject: [PATCH 36/65] Refactor CMake configuration to link lthn_api library with daemon and update include directories --- src/CMakeLists.txt | 2 +- src/api/CMakeLists.txt | 31 ++++++++++++++++--------------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2132a36a..cb29a456 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -164,7 +164,7 @@ target_link_libraries(currency_core config lmdb mdbx) add_executable(daemon ${DAEMON} ${P2P} ${CURRENCY_PROTOCOL}) add_dependencies(daemon version) -target_link_libraries(daemon rpc stratum currency_core crypto common miniupnpc::miniupnpc ZLIB::ZLIB ethash ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES} OpenSSL::SSL OpenSSL::Crypto) +target_link_libraries(daemon rpc stratum currency_core crypto common miniupnpc::miniupnpc ZLIB::ZLIB ethash lthn::api ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES} OpenSSL::SSL OpenSSL::Crypto) ENABLE_SHARED_PCH(daemon DAEMON) ENABLE_SHARED_PCH_EXECUTABLE(daemon) diff --git a/src/api/CMakeLists.txt b/src/api/CMakeLists.txt index f66301c3..63750b62 100644 --- a/src/api/CMakeLists.txt +++ b/src/api/CMakeLists.txt @@ -16,42 +16,43 @@ else() message(FATAL_ERROR "Could not find oatpp-swagger") endif() -add_library(lthn_api INTERFACE) +add_library(lthn_api ApiServer.cpp) add_library(lthn::api ALIAS lthn_api) -# Add the current directory for API headers and the main src directory for core headers -target_include_directories(lthn_api INTERFACE +target_include_directories(lthn_api PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/src + ${oatpp_INCLUDE_DIRS} + ${oatpp-swagger_INCLUDE_DIRS} ) -include_directories(${oatpp_INCLUDE_DIRS}) -include_directories(${oatpp-swagger_INCLUDE_DIRS}) +target_link_libraries(lthn_api PUBLIC + oatpp::oatpp + oatpp::oatpp-swagger +) -# Add P2P and currency_protocol sources directly to the executable, like the main daemon does -add_executable(lethean-api main.cpp ApiServer.cpp ${P2P} ${CURRENCY_PROTOCOL}) +target_compile_definitions(lthn_api PUBLIC -DOATPP_SWAGGER_RES_PATH="${oatpp-swagger_INCLUDE_DIRS}/../bin/oatpp-swagger/res") -# Explicitly add the project's main src directory to the executable's include paths -target_include_directories(lethean-api PRIVATE ${CMAKE_SOURCE_DIR}/src) -# Link against the correct, existing library targets -target_link_libraries(lethean-api +#add_executable(lethean-api main.cpp) +# +#target_include_directories(lethean-api PRIVATE ${CMAKE_SOURCE_DIR}/src) + +target_link_libraries(lthn_api PRIVATE + config lthn::api rpc stratum currency_core crypto common - config ethash - oatpp::oatpp - oatpp::oatpp-swagger ${Boost_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} OpenSSL::SSL OpenSSL::Crypto ZLIB::ZLIB ) -add_definitions(-DOATPP_SWAGGER_RES_PATH="${oatpp-swagger_INCLUDE_DIRS}/../bin/oatpp-swagger/res") #add_subdirectory(tests) From 13f985b67c3df15513cb6a016ce757e8d5a31342 Mon Sep 17 00:00:00 2001 From: snider Date: Wed, 15 Oct 2025 20:59:32 +0100 Subject: [PATCH 37/65] Update CPack configuration for monolithic installation and checksum generation --- cmake/CPackConfig.cmake | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cmake/CPackConfig.cmake b/cmake/CPackConfig.cmake index 60846d6a..7f65a082 100644 --- a/cmake/CPackConfig.cmake +++ b/cmake/CPackConfig.cmake @@ -58,12 +58,13 @@ if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebI set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY OFF) set(CPACK_ARCHIVE_COMPONENT_INSTALL OFF) set(CPACK_COMPONENTS_ALL) - set(CPACK_GENERATE_SHASUM ON) + set(CPACK_MONOLITHIC_INSTALL ON) + set(CPACK_PACKAGE_CHECKSUM) set(CPACK_SHASUM_ALGORITHM SHA256) message(STATUS "Using SHA256 Checksums") set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.txt") -# set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.md") + set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.md") set(CPACK_PACKAGE_DIRECTORY "${CMAKE_SOURCE_DIR}/build/packages") From a947670d2c9ccf5f5616eab3ac7971d49a08cf0a Mon Sep 17 00:00:00 2001 From: snider Date: Wed, 15 Oct 2025 21:02:04 +0100 Subject: [PATCH 38/65] Update log message for API server shutdown in daemon --- src/daemon/daemon.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/daemon/daemon.cpp b/src/daemon/daemon.cpp index 7941f180..4ddab5bf 100644 --- a/src/daemon/daemon.cpp +++ b/src/daemon/daemon.cpp @@ -489,7 +489,7 @@ int main(int argc, char* argv[]) LOG_PRINT_L0("Stopping API server..."); api_server.stop(); api_server.wait(); - LOG_PRINT_L0("API server thread joined."); + LOG_PRINT_L0("API server stopped"); //stop other components if (stratum_enabled) From 4474eebe52e17970832d75b0b3f6c4e026ca36df Mon Sep 17 00:00:00 2001 From: snider Date: Wed, 15 Oct 2025 21:28:38 +0100 Subject: [PATCH 39/65] Update server address in ApiServer configuration to use 127.0.0.1 --- src/api/ApiServer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api/ApiServer.cpp b/src/api/ApiServer.cpp index 726a3469..8bc8dfa9 100644 --- a/src/api/ApiServer.cpp +++ b/src/api/ApiServer.cpp @@ -40,7 +40,7 @@ void ApiServer::run() { .setContactUrl("https://lt.hn/") .setLicenseName("EUPL-1.2") .setLicenseUrl("https://joinup.ec.europa.eu/software/page/eupl/licence-eupl") - .addServer("http://localhost:8000", "server on localhost"); + .addServer("http://127.0.0.1:8000", "server on localhost"); return builder.build(); }()); From d7066c2220297a73133afe36134efc32cf64ef69 Mon Sep 17 00:00:00 2001 From: snider Date: Wed, 15 Oct 2025 22:28:49 +0100 Subject: [PATCH 40/65] Add command line options for API server host and port configuration --- src/api/ApiServer.cpp | 24 ++++++++++++++++++++++++ src/api/ApiServer.hpp | 14 ++++++++++---- src/daemon/daemon.cpp | 3 ++- 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/api/ApiServer.cpp b/src/api/ApiServer.cpp index 8bc8dfa9..a209f731 100644 --- a/src/api/ApiServer.cpp +++ b/src/api/ApiServer.cpp @@ -7,6 +7,30 @@ #include #include "version.h" +#include "common/command_line.h" + +namespace +{ + const command_line::arg_descriptor arg_api_bind_port = {"api-bind-port", "Port for API server to bind to", 36943}; + const command_line::arg_descriptor arg_api_bind_host = {"api-bind-host", "IP/Hostname for API server to bind to", "127.0.0.1"}; +} + +uint16_t ApiServer::m_port = 8000; +std::string ApiServer::m_host = "127.0.0.1"; + +void ApiServer::init_options(boost::program_options::options_description& desc) { + command_line::add_arg(desc, arg_api_bind_port); + command_line::add_arg(desc, arg_api_bind_host); +} + +ApiServer::ApiServer(const boost::program_options::variables_map& vm) : m_vm(vm) { + if (vm.count(arg_api_bind_port.name)) { + m_port = vm[arg_api_bind_port.name].as(); + } + if (vm.count(arg_api_bind_host.name)) { + m_host = vm[arg_api_bind_host.name].as(); + } +} void ApiServer::run() { diff --git a/src/api/ApiServer.hpp b/src/api/ApiServer.hpp index 3adc6513..55ee92f2 100644 --- a/src/api/ApiServer.hpp +++ b/src/api/ApiServer.hpp @@ -2,33 +2,39 @@ #define ApiServer_hpp #include "currency_core/blockchain_storage.h" - #include "currency_core/currency_core.h" #include "oatpp/web/server/HttpConnectionHandler.hpp" #include "oatpp/network/tcp/server/ConnectionProvider.hpp" #include "oatpp/parser/json/mapping/ObjectMapper.hpp" #include "oatpp/core/macro/component.hpp" #include "oatpp-swagger/Resources.hpp" - #include "oatpp/network/Server.hpp" #include +#include + +namespace po = boost::program_options; class ApiServer { private: std::thread m_server_thread; std::shared_ptr m_server; + boost::program_options::variables_map m_vm; void run(); public: + static uint16_t m_port; + static std::string m_host; - ApiServer() = default; + static void init_options(po::options_description& desc); + + ApiServer(const boost::program_options::variables_map& vm); class Components { public: OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionProvider)([] { - return oatpp::network::tcp::server::ConnectionProvider::createShared({"0.0.0.0", 8000, oatpp::network::Address::IP_4}); + return oatpp::network::tcp::server::ConnectionProvider::createShared({ApiServer::m_host, ApiServer::m_port, oatpp::network::Address::IP_4}); }()); OATPP_CREATE_COMPONENT(std::shared_ptr, httpRouter)([] { diff --git a/src/daemon/daemon.cpp b/src/daemon/daemon.cpp index 4ddab5bf..9640b006 100644 --- a/src/daemon/daemon.cpp +++ b/src/daemon/daemon.cpp @@ -201,6 +201,7 @@ int main(int argc, char* argv[]) bc_services::bc_offers_service::init_options(desc_cmd_sett); currency::stratum_server::init_options(desc_cmd_sett); tools::db::db_backend_selector::init_options(desc_cmd_sett); + ApiServer::init_options(desc_cmd_sett); po::options_description desc_options("Allowed options"); desc_options.add(desc_cmd_only).add(desc_cmd_sett); @@ -469,7 +470,7 @@ int main(int argc, char* argv[]) // Initialize API server oatpp::base::Environment::init(); - ApiServer api_server; + ApiServer api_server(vm); api_server.start(); // Setup signal handler to gracefully stop the main p2p loop From d154992233efd588eef8924c51545e03831f88b2 Mon Sep 17 00:00:00 2001 From: snider Date: Wed, 15 Oct 2025 22:28:55 +0100 Subject: [PATCH 41/65] Update API server description and add server endpoints in ApiServer configuration --- src/api/ApiServer.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/api/ApiServer.cpp b/src/api/ApiServer.cpp index a209f731..19b16dc6 100644 --- a/src/api/ApiServer.cpp +++ b/src/api/ApiServer.cpp @@ -58,13 +58,14 @@ void ApiServer::run() { builder .setTitle("Lethean Blockchain API") - .setDescription("New API layer for Lethean") + .setDescription("OpenAPI for Lethean Blockchain") .setVersion(PROJECT_VERSION) .setContactName("Lethean") .setContactUrl("https://lt.hn/") .setLicenseName("EUPL-1.2") .setLicenseUrl("https://joinup.ec.europa.eu/software/page/eupl/licence-eupl") - .addServer("http://127.0.0.1:8000", "server on localhost"); + .addServer("http://" + ApiServer::m_host + ":" + std::to_string(ApiServer::m_port), "Local Daemon") + .addServer("http://seed.lethean.io:36943", "Seed Server"); return builder.build(); }()); From 692cace8e1a2d6115cb049bf9e129b6e176857b7 Mon Sep 17 00:00:00 2001 From: snider Date: Wed, 15 Oct 2025 22:43:52 +0100 Subject: [PATCH 42/65] adds package checksums .sha256 --- cmake/CPackConfig.cmake | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/cmake/CPackConfig.cmake b/cmake/CPackConfig.cmake index 7f65a082..9890ad10 100644 --- a/cmake/CPackConfig.cmake +++ b/cmake/CPackConfig.cmake @@ -58,9 +58,8 @@ if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebI set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY OFF) set(CPACK_ARCHIVE_COMPONENT_INSTALL OFF) set(CPACK_COMPONENTS_ALL) - set(CPACK_MONOLITHIC_INSTALL ON) - set(CPACK_PACKAGE_CHECKSUM) - set(CPACK_SHASUM_ALGORITHM SHA256) + set(CPACK_MONOLITHIC_INSTALL OFF) + set(CPACK_PACKAGE_CHECKSUM SHA256) message(STATUS "Using SHA256 Checksums") set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.txt") From 518e002cb345dae64c539448b8dc7bbc64d732e1 Mon Sep 17 00:00:00 2001 From: snider Date: Thu, 16 Oct 2025 12:24:19 +0100 Subject: [PATCH 43/65] adds swagger assets + OpenAPI spec to {pkg}/share/lthn_api/res/* + {pkg}/share/lthn_api/oas-3.0.0.json --- src/api/CMakeLists.txt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/api/CMakeLists.txt b/src/api/CMakeLists.txt index 63750b62..e0c0f54a 100644 --- a/src/api/CMakeLists.txt +++ b/src/api/CMakeLists.txt @@ -31,7 +31,15 @@ target_link_libraries(lthn_api PUBLIC oatpp::oatpp-swagger ) -target_compile_definitions(lthn_api PUBLIC -DOATPP_SWAGGER_RES_PATH="${oatpp-swagger_INCLUDE_DIRS}/../bin/oatpp-swagger/res") +# Define path to swagger resources for the installed package. +# This assumes the executable is in 'bin' and resources are in 'share/lthn_api'. +target_compile_definitions(lthn_api PUBLIC -DOATPP_SWAGGER_RES_PATH="../share/lthn_api/res") + +# Install swagger resources to a conventional location. +install(DIRECTORY ${oatpp-swagger_INCLUDE_DIRS}/../bin/oatpp-swagger/res DESTINATION share/lthn_api) + +# Install OpenAPI spec for SDK generation +install(FILES ${CMAKE_SOURCE_DIR}/utils/sdk/spec/oas-3.0.0.json DESTINATION share/lthn_api) #add_executable(lethean-api main.cpp) From 668a747325c15dda1a861e7dc829cf6fdfa246d5 Mon Sep 17 00:00:00 2001 From: snider Date: Thu, 16 Oct 2025 14:10:04 +0100 Subject: [PATCH 44/65] adds blockcontroller / chain data --- src/api/ApiServer.cpp | 15 +++++++++++---- src/api/ApiServer.hpp | 14 ++++++++++++-- src/api/CMakeLists.txt | 8 ++++++-- src/api/controller/ApiCoreInfoComponent.hpp | 16 +++++++++++----- src/daemon/daemon.cpp | 2 +- 5 files changed, 41 insertions(+), 14 deletions(-) diff --git a/src/api/ApiServer.cpp b/src/api/ApiServer.cpp index 19b16dc6..43243c73 100644 --- a/src/api/ApiServer.cpp +++ b/src/api/ApiServer.cpp @@ -1,4 +1,5 @@ #include "ApiServer.hpp" +#include "controller/ApiCoreInfoComponent.hpp" #include "controller/InfoController.hpp" #include "controller/BlockController.hpp" @@ -23,7 +24,8 @@ void ApiServer::init_options(boost::program_options::options_description& desc) command_line::add_arg(desc, arg_api_bind_host); } -ApiServer::ApiServer(const boost::program_options::variables_map& vm) : m_vm(vm) { +ApiServer::ApiServer(const boost::program_options::variables_map& vm, currency::core* ccore, p2psrv_t* p2p, currency::core_rpc_server* rpc_server) + : m_vm(vm), m_ccore(ccore), m_p2p(p2p), m_rpc_server(rpc_server) { if (vm.count(arg_api_bind_port.name)) { m_port = vm[arg_api_bind_port.name].as(); } @@ -37,6 +39,11 @@ void ApiServer::run() { /* Register Components in scope of run() method */ Components components; + OATPP_CREATE_COMPONENT(std::shared_ptr, coreInfoComponent) + ([this] { + return std::make_shared(*m_ccore, *m_p2p, *m_rpc_server); + }()); + /* Get router component */ OATPP_COMPONENT(std::shared_ptr, router); @@ -45,11 +52,11 @@ void ApiServer::run() { auto infoController = std::make_shared(); docEndpoints->append(infoController->getEndpoints()); - // auto blockController = std::make_shared(); - // docEndpoints->append(blockController->getEndpoints()); + auto blockController = std::make_shared(); + docEndpoints->append(blockController->getEndpoints()); router->addController(infoController); - // router->addController(blockController); + router->addController(blockController); OATPP_CREATE_COMPONENT(std::shared_ptr, swaggerDocumentInfo) ([] diff --git a/src/api/ApiServer.hpp b/src/api/ApiServer.hpp index 55ee92f2..20eeff66 100644 --- a/src/api/ApiServer.hpp +++ b/src/api/ApiServer.hpp @@ -1,8 +1,11 @@ #ifndef ApiServer_hpp #define ApiServer_hpp -#include "currency_core/blockchain_storage.h" #include "currency_core/currency_core.h" +#include "p2p/net_node.h" +#include "currency_protocol/currency_protocol_handler.h" +#include "rpc/core_rpc_server.h" + #include "oatpp/web/server/HttpConnectionHandler.hpp" #include "oatpp/network/tcp/server/ConnectionProvider.hpp" #include "oatpp/parser/json/mapping/ObjectMapper.hpp" @@ -14,12 +17,19 @@ namespace po = boost::program_options; +// Define the p2p server type to avoid verbose template syntax +typedef nodetool::node_server> p2psrv_t; + class ApiServer { private: std::thread m_server_thread; std::shared_ptr m_server; boost::program_options::variables_map m_vm; + currency::core* m_ccore; + p2psrv_t* m_p2p; + currency::core_rpc_server* m_rpc_server; + void run(); public: @@ -28,7 +38,7 @@ public: static void init_options(po::options_description& desc); - ApiServer(const boost::program_options::variables_map& vm); + ApiServer(const boost::program_options::variables_map& vm, currency::core* ccore, p2psrv_t* p2p, currency::core_rpc_server* rpc_server); class Components { public: diff --git a/src/api/CMakeLists.txt b/src/api/CMakeLists.txt index e0c0f54a..7cc58819 100644 --- a/src/api/CMakeLists.txt +++ b/src/api/CMakeLists.txt @@ -35,10 +35,14 @@ target_link_libraries(lthn_api PUBLIC # This assumes the executable is in 'bin' and resources are in 'share/lthn_api'. target_compile_definitions(lthn_api PUBLIC -DOATPP_SWAGGER_RES_PATH="../share/lthn_api/res") -# Install swagger resources to a conventional location. +# Copy resources to build directory for development builds (e.g. running in CLion) +file(COPY ${oatpp-swagger_INCLUDE_DIRS}/../bin/oatpp-swagger/res DESTINATION ${CMAKE_BINARY_DIR}/share/lthn_api) +file(COPY ${CMAKE_SOURCE_DIR}/utils/sdk/spec/oas-3.0.0.json DESTINATION ${CMAKE_BINARY_DIR}/share/lthn_api) + +# Install swagger resources to a conventional location for packaging. install(DIRECTORY ${oatpp-swagger_INCLUDE_DIRS}/../bin/oatpp-swagger/res DESTINATION share/lthn_api) -# Install OpenAPI spec for SDK generation +# Install OpenAPI spec for SDK generation for packaging. install(FILES ${CMAKE_SOURCE_DIR}/utils/sdk/spec/oas-3.0.0.json DESTINATION share/lthn_api) diff --git a/src/api/controller/ApiCoreInfoComponent.hpp b/src/api/controller/ApiCoreInfoComponent.hpp index 38daa2d9..0a9ca071 100644 --- a/src/api/controller/ApiCoreInfoComponent.hpp +++ b/src/api/controller/ApiCoreInfoComponent.hpp @@ -2,22 +2,28 @@ #define ApiCoreInfoComponent_hpp #include "currency_core/currency_core.h" -#include "currency_protocol/currency_protocol_handler.h" // Full definition needed for template instantiation #include "p2p/net_node.h" +#include "currency_protocol/currency_protocol_handler.h" +#include "rpc/core_rpc_server.h" + +// Define the p2p server type to avoid verbose template syntax +typedef nodetool::node_server> p2psrv_t; // A simple holder for core blockchain components that can be injected into controllers. class ApiCoreInfoComponent { private: currency::core& m_core; - nodetool::node_server>& m_p2p; + p2psrv_t& m_p2p; + currency::core_rpc_server& m_rpc_server; public: - ApiCoreInfoComponent(currency::core& core, nodetool::node_server>& p2p) - : m_core(core), m_p2p(p2p) + ApiCoreInfoComponent(currency::core& core, p2psrv_t& p2p, currency::core_rpc_server& rpc_server) + : m_core(core), m_p2p(p2p), m_rpc_server(rpc_server) {} currency::core& getCore() { return m_core; } - nodetool::node_server>& getP2p() { return m_p2p; } + p2psrv_t& getP2p() { return m_p2p; } + currency::core_rpc_server& getRpcServer() { return m_rpc_server; } }; #endif /* ApiCoreInfoComponent_hpp */ diff --git a/src/daemon/daemon.cpp b/src/daemon/daemon.cpp index 9640b006..f9214cfa 100644 --- a/src/daemon/daemon.cpp +++ b/src/daemon/daemon.cpp @@ -470,7 +470,7 @@ int main(int argc, char* argv[]) // Initialize API server oatpp::base::Environment::init(); - ApiServer api_server(vm); + ApiServer api_server(vm, &ccore, &p2psrv, &rpc_server); api_server.start(); // Setup signal handler to gracefully stop the main p2p loop From a4fe9ee9d7319568a130b7192b1639696cc82851 Mon Sep 17 00:00:00 2001 From: snider Date: Thu, 16 Oct 2025 14:56:53 +0100 Subject: [PATCH 45/65] adds header inclusion in string_tools.h --- contrib/epee/include/string_tools.h | 1 + 1 file changed, 1 insertion(+) diff --git a/contrib/epee/include/string_tools.h b/contrib/epee/include/string_tools.h index 8cf56e5a..ad6e253d 100644 --- a/contrib/epee/include/string_tools.h +++ b/contrib/epee/include/string_tools.h @@ -28,6 +28,7 @@ #include #include +#include #include #include #include From c6e98b6aa91931758a64fcbb052dcfc1782b0be0 Mon Sep 17 00:00:00 2001 From: snider Date: Thu, 16 Oct 2025 16:08:28 +0100 Subject: [PATCH 46/65] adds Block-by-Hash and Block-by-ID controllers with enhanced block retrieval functionality --- .idea/cmake.xml | 2 +- .idea/copyright/LTHN.xml | 6 + .idea/copyright/profiles_settings.xml | 5 +- .idea/editor.xml | 96 ++++++++++++++ .idea/scopes/apiserver.xml | 3 + src/api/ApiServer.cpp | 33 ++++- src/api/ApiServer.hpp | 14 ++ src/api/controller/ApiCoreInfoComponent.hpp | 14 ++ src/api/controller/InfoController.hpp | 43 ------ src/api/controller/path/block.hpp | 122 ++++++++++++++++++ .../block/hash.hpp} | 41 ++++-- src/api/controller/path/block/id.hpp | 98 ++++++++++++++ src/api/controller/path/info.hpp | 57 ++++++++ .../{partials => path}/info/version.hpp | 7 +- src/api/dto/BlockDetailsDto.hpp | 7 +- src/api/dto/TransactionDetailsDto.hpp | 7 +- src/api/dto/VersionDto.hpp | 7 +- src/api/main.cpp | 14 ++ 18 files changed, 493 insertions(+), 83 deletions(-) create mode 100644 .idea/copyright/LTHN.xml create mode 100644 .idea/scopes/apiserver.xml delete mode 100644 src/api/controller/InfoController.hpp create mode 100644 src/api/controller/path/block.hpp rename src/api/controller/{BlockController.hpp => path/block/hash.hpp} (76%) create mode 100644 src/api/controller/path/block/id.hpp create mode 100644 src/api/controller/path/info.hpp rename src/api/controller/{partials => path}/info/version.hpp (77%) diff --git a/.idea/cmake.xml b/.idea/cmake.xml index 2c46369e..2969d964 100644 --- a/.idea/cmake.xml +++ b/.idea/cmake.xml @@ -2,7 +2,7 @@ - + \ No newline at end of file diff --git a/.idea/copyright/LTHN.xml b/.idea/copyright/LTHN.xml new file mode 100644 index 00000000..f0ba8df8 --- /dev/null +++ b/.idea/copyright/LTHN.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml index 312baeb9..b48d188d 100644 --- a/.idea/copyright/profiles_settings.xml +++ b/.idea/copyright/profiles_settings.xml @@ -1,7 +1,8 @@ - + - + + \ No newline at end of file diff --git a/.idea/editor.xml b/.idea/editor.xml index ead1d8a3..0093ef66 100644 --- a/.idea/editor.xml +++ b/.idea/editor.xml @@ -244,5 +244,101 @@
styles. + *

+ * See {@link README.md} for more details + *

+ */ + encodeParam?: (param: Param) => string; + /** + * The keys are the names in the securitySchemes section of the OpenAPI + * document. They should map to the value used for authentication + * minus any standard prefixes such as 'Basic' or 'Bearer'. + */ + credentials?: {[ key: string ]: string | (() => string | undefined)}; +} + +export class lthnConfiguration { + /** + * @deprecated Since 5.0. Use credentials instead + */ + apiKeys?: {[ key: string ]: string}; + username?: string; + password?: string; + /** + * @deprecated Since 5.0. Use credentials instead + */ + accessToken?: string | (() => string); + basePath?: string; + withCredentials?: boolean; + /** + * Takes care of encoding query- and form-parameters. + */ + encoder?: HttpParameterCodec; + /** + * Encoding of various path parameter + * styles. + *

+ * See {@link README.md} for more details + *

+ */ + encodeParam: (param: Param) => string; + /** + * The keys are the names in the securitySchemes section of the OpenAPI + * document. They should map to the value used for authentication + * minus any standard prefixes such as 'Basic' or 'Bearer'. + */ + credentials: {[ key: string ]: string | (() => string | undefined)}; + +constructor({ accessToken, apiKeys, basePath, credentials, encodeParam, encoder, password, username, withCredentials }: lthnConfigurationParameters = {}) { + if (apiKeys) { + this.apiKeys = apiKeys; + } + if (username !== undefined) { + this.username = username; + } + if (password !== undefined) { + this.password = password; + } + if (accessToken !== undefined) { + this.accessToken = accessToken; + } + if (basePath !== undefined) { + this.basePath = basePath; + } + if (withCredentials !== undefined) { + this.withCredentials = withCredentials; + } + if (encoder) { + this.encoder = encoder; + } + this.encodeParam = encodeParam ?? (param => this.defaultEncodeParam(param)); + this.credentials = credentials ?? {}; + } + + /** + * Select the correct content-type to use for a request. + * Uses {@link lthnConfiguration#isJsonMime} to determine the correct content-type. + * If no content type is found return the first found type if the contentTypes is not empty + * @param contentTypes - the array of content types that are available for selection + * @returns the selected content-type or undefined if no selection could be made. + */ + public selectHeaderContentType (contentTypes: string[]): string | undefined { + if (contentTypes.length === 0) { + return undefined; + } + + const type = contentTypes.find((x: string) => this.isJsonMime(x)); + if (type === undefined) { + return contentTypes[0]; + } + return type; + } + + /** + * Select the correct accept content-type to use for a request. + * Uses {@link lthnConfiguration#isJsonMime} to determine the correct accept content-type. + * If no content type is found return the first found type if the contentTypes is not empty + * @param accepts - the array of content types that are available for selection. + * @returns the selected content-type or undefined if no selection could be made. + */ + public selectHeaderAccept(accepts: string[]): string | undefined { + if (accepts.length === 0) { + return undefined; + } + + const type = accepts.find((x: string) => this.isJsonMime(x)); + if (type === undefined) { + return accepts[0]; + } + return type; + } + + /** + * Check if the given MIME is a JSON MIME. + * JSON MIME examples: + * application/json + * application/json; charset=UTF8 + * APPLICATION/JSON + * application/vnd.company+json + * @param mime - MIME (Multipurpose Internet Mail Extensions) + * @return True if the given MIME is JSON, false otherwise. + */ + public isJsonMime(mime: string): boolean { + const jsonMime: RegExp = new RegExp('^(application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(;.*)?$', 'i'); + return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json'); + } + + public lookupCredential(key: string): string | undefined { + const value = this.credentials[key]; + return typeof value === 'function' + ? value() + : value; + } + + public addCredentialToHeaders(credentialKey: string, headerName: string, headers: HttpHeaders, prefix?: string): HttpHeaders { + const value = this.lookupCredential(credentialKey); + return value + ? headers.set(headerName, (prefix ?? '') + value) + : headers; + } + + public addCredentialToQuery(credentialKey: string, paramName: string, query: HttpParams): HttpParams { + const value = this.lookupCredential(credentialKey); + return value + ? query.set(paramName, value) + : query; + } + + private defaultEncodeParam(param: Param): string { + // This implementation exists as fallback for missing configuration + // and for backwards compatibility to older typescript-angular generator versions. + // It only works for the 'simple' parameter style. + // Date-handling only works for the 'date-time' format. + // All other styles and Date-formats are probably handled incorrectly. + // + // But: if that's all you need (i.e.: the most common use-case): no need for customization! + + const value = param.dataFormat === 'date-time' && param.value instanceof Date + ? (param.value as Date).toISOString() + : param.value; + + return encodeURIComponent(String(value)); + } +} diff --git a/utils/sdk/client/angular/encoder.ts b/utils/sdk/client/angular/encoder.ts new file mode 100644 index 00000000..138c4d5c --- /dev/null +++ b/utils/sdk/client/angular/encoder.ts @@ -0,0 +1,20 @@ +import { HttpParameterCodec } from '@angular/common/http'; + +/** + * Custom HttpParameterCodec + * Workaround for https://github.com/angular/angular/issues/18261 + */ +export class CustomHttpParameterCodec implements HttpParameterCodec { + encodeKey(k: string): string { + return encodeURIComponent(k); + } + encodeValue(v: string): string { + return encodeURIComponent(v); + } + decodeKey(k: string): string { + return decodeURIComponent(k); + } + decodeValue(v: string): string { + return decodeURIComponent(v); + } +} diff --git a/utils/sdk/client/angular/index.ts b/utils/sdk/client/angular/index.ts new file mode 100644 index 00000000..02cb7d43 --- /dev/null +++ b/utils/sdk/client/angular/index.ts @@ -0,0 +1,7 @@ +export * from './api/api'; +export * from './model/models'; +export * from './variables'; +export * from './configuration'; +export * from './api.module'; +export * from './provide-api'; +export * from './param'; diff --git a/utils/sdk/client/angular/model/blockDetailsModel.ts b/utils/sdk/client/angular/model/blockDetailsModel.ts new file mode 100644 index 00000000..b8875a36 --- /dev/null +++ b/utils/sdk/client/angular/model/blockDetailsModel.ts @@ -0,0 +1,40 @@ +/** + * Lethean Blockchain API + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { TransactionDetailsModel } from './transactionDetailsModel'; + + +export interface BlockDetailsModel { + actual_timestamp?: number; + already_generated_coins?: string; + base_reward?: number; + blob?: string; + block_cumulative_size?: number; + block_tself_size?: number; + cumulative_diff_adjusted?: string; + cumulative_diff_precise?: string; + difficulty?: string; + effective_fee_median?: number; + height?: number; + id?: string; + is_orphan?: boolean; + miner_text_info?: string; + object_in_json?: string; + penalty?: number; + pow_seed?: string; + prev_id?: string; + summary_reward?: number; + this_block_fee_median?: number; + timestamp?: number; + total_fee?: number; + total_txs_size?: number; + transactions_details?: Array; + type?: number; +} + diff --git a/utils/sdk/client/angular/model/blockProcessingPerformanceModel.ts b/utils/sdk/client/angular/model/blockProcessingPerformanceModel.ts new file mode 100644 index 00000000..a09bb452 --- /dev/null +++ b/utils/sdk/client/angular/model/blockProcessingPerformanceModel.ts @@ -0,0 +1,30 @@ +/** + * Lethean Blockchain API + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export interface BlockProcessingPerformanceModel { + block_processing_time_0?: number; + block_processing_time_1?: number; + target_calculating_time_2?: number; + longhash_calculating_time_3?: number; + all_txs_insert_time_5?: number; + etc_stuff_6?: number; + insert_time_4?: number; + raise_block_core_event?: number; + validate_miner_transaction_time?: number; + collect_rangeproofs_data_from_tx_time?: number; + verify_multiple_zc_outs_range_proofs_time?: number; + target_calculating_enum_blocks?: number; + target_calculating_calc?: number; + pos_validate_ki_search?: number; + pos_validate_get_out_keys_for_inputs?: number; + pos_validate_zvp?: number; +} + diff --git a/utils/sdk/client/angular/model/blockTemplateModel.ts b/utils/sdk/client/angular/model/blockTemplateModel.ts new file mode 100644 index 00000000..1a213474 --- /dev/null +++ b/utils/sdk/client/angular/model/blockTemplateModel.ts @@ -0,0 +1,24 @@ +/** + * Lethean Blockchain API + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { TxGenerationContextModel } from './txGenerationContextModel'; + + +export interface BlockTemplateModel { + blocktemplate_blob?: string; + difficulty?: string; + height?: number; + miner_tx_tgc?: TxGenerationContextModel; + block_reward_without_fee?: number; + block_reward?: number; + txs_fee?: number; + prev_hash?: string; + seed?: string; +} + diff --git a/utils/sdk/client/angular/model/blockTemplateRequestModel.ts b/utils/sdk/client/angular/model/blockTemplateRequestModel.ts new file mode 100644 index 00000000..3a8de471 --- /dev/null +++ b/utils/sdk/client/angular/model/blockTemplateRequestModel.ts @@ -0,0 +1,22 @@ +/** + * Lethean Blockchain API + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { PosEntryModel } from './posEntryModel'; + + +export interface BlockTemplateRequestModel { + miner_address?: string; + stakeholder_address?: string; + ex_nonce?: string; + pos_block?: boolean; + ignore_pow_ts_check?: boolean; + pe?: PosEntryModel; + explicit_txs?: Array; +} + diff --git a/utils/sdk/client/angular/model/dbStatInfoModel.ts b/utils/sdk/client/angular/model/dbStatInfoModel.ts new file mode 100644 index 00000000..59904da5 --- /dev/null +++ b/utils/sdk/client/angular/model/dbStatInfoModel.ts @@ -0,0 +1,17 @@ +/** + * Lethean Blockchain API + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export interface DbStatInfoModel { + tx_count?: number; + write_tx_count?: number; + map_size?: number; +} + diff --git a/utils/sdk/client/angular/model/heightModel.ts b/utils/sdk/client/angular/model/heightModel.ts new file mode 100644 index 00000000..597d04d1 --- /dev/null +++ b/utils/sdk/client/angular/model/heightModel.ts @@ -0,0 +1,15 @@ +/** + * Lethean Blockchain API + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export interface HeightModel { + height?: number; +} + diff --git a/utils/sdk/client/angular/model/infoModel.ts b/utils/sdk/client/angular/model/infoModel.ts new file mode 100644 index 00000000..a439bc8a --- /dev/null +++ b/utils/sdk/client/angular/model/infoModel.ts @@ -0,0 +1,62 @@ +/** + * Lethean Blockchain API + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { MaintainersInfoModel } from './maintainersInfoModel'; +import { PerformanceModel } from './performanceModel'; + + +export interface InfoModel { + height?: number; + tx_count?: number; + tx_pool_size?: number; + alt_blocks_count?: number; + outgoing_connections_count?: number; + incoming_connections_count?: number; + synchronized_connections_count?: number; + white_peerlist_size?: number; + grey_peerlist_size?: number; + current_blocks_median?: number; + alias_count?: number; + current_max_allowed_block_size?: number; + daemon_network_state?: string; + synchronization_start_height?: number; + max_net_seen_height?: number; + mi?: MaintainersInfoModel; + pos_allowed?: boolean; + pos_difficulty?: string; + pow_difficulty?: number; + default_fee?: number; + minimum_fee?: number; + is_hardfork_active?: Array; + net_time_delta_median?: number; + current_network_hashrate_50?: number; + current_network_hashrate_350?: number; + seconds_for_10_blocks?: number; + seconds_for_30_blocks?: number; + transactions_cnt_per_day?: Array; + transactions_volume_per_day?: Array; + last_pos_timestamp?: number; + last_pow_timestamp?: number; + total_coins?: string; + last_block_size?: number; + tx_count_in_last_block?: number; + pos_sequence_factor?: number; + pow_sequence_factor?: number; + block_reward?: number; + last_block_total_reward?: number; + pos_diff_total_coins_rate?: number; + last_block_timestamp?: number; + last_block_hash?: string; + pos_block_ts_shift_vs_actual?: number; + outs_stat?: { [key: string]: number; }; + performance_data?: PerformanceModel; + offers_count?: number; + expiration_median_timestamp?: number; +} + diff --git a/utils/sdk/client/angular/model/maintainersInfoModel.ts b/utils/sdk/client/angular/model/maintainersInfoModel.ts new file mode 100644 index 00000000..194399ca --- /dev/null +++ b/utils/sdk/client/angular/model/maintainersInfoModel.ts @@ -0,0 +1,19 @@ +/** + * Lethean Blockchain API + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export interface MaintainersInfoModel { + ver_major?: number; + ver_minor?: number; + ver_revision?: number; + build_no?: number; + mode?: number; +} + diff --git a/utils/sdk/client/angular/model/models.ts b/utils/sdk/client/angular/model/models.ts new file mode 100644 index 00000000..a266e14d --- /dev/null +++ b/utils/sdk/client/angular/model/models.ts @@ -0,0 +1,21 @@ +export * from './blockDetailsModel'; +export * from './blockProcessingPerformanceModel'; +export * from './blockTemplateModel'; +export * from './blockTemplateRequestModel'; +export * from './dbStatInfoModel'; +export * from './heightModel'; +export * from './infoModel'; +export * from './maintainersInfoModel'; +export * from './performanceModel'; +export * from './posEntryModel'; +export * from './submitBlockRequestModel'; +export * from './submitBlockResponseModel'; +export * from './transactionAttachmentModel'; +export * from './transactionDetailsModel'; +export * from './transactionExtraModel'; +export * from './transactionInputModel'; +export * from './transactionOutputModel'; +export * from './txGenerationContextModel'; +export * from './txPoolPerformanceModel'; +export * from './txProcessingPerformanceModel'; +export * from './versionModel'; diff --git a/utils/sdk/client/angular/model/performanceModel.ts b/utils/sdk/client/angular/model/performanceModel.ts new file mode 100644 index 00000000..e4dd98bb --- /dev/null +++ b/utils/sdk/client/angular/model/performanceModel.ts @@ -0,0 +1,22 @@ +/** + * Lethean Blockchain API + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { BlockProcessingPerformanceModel } from './blockProcessingPerformanceModel'; +import { TxProcessingPerformanceModel } from './txProcessingPerformanceModel'; +import { DbStatInfoModel } from './dbStatInfoModel'; +import { TxPoolPerformanceModel } from './txPoolPerformanceModel'; + + +export interface PerformanceModel { + block_processing?: BlockProcessingPerformanceModel; + tx_processing?: TxProcessingPerformanceModel; + tx_pool?: TxPoolPerformanceModel; + db_stat_info?: DbStatInfoModel; +} + diff --git a/utils/sdk/client/angular/model/posEntryModel.ts b/utils/sdk/client/angular/model/posEntryModel.ts new file mode 100644 index 00000000..e4e35afc --- /dev/null +++ b/utils/sdk/client/angular/model/posEntryModel.ts @@ -0,0 +1,22 @@ +/** + * Lethean Blockchain API + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export interface PosEntryModel { + amount?: number; + g_index?: number; + keyimage?: string; + block_timestamp?: number; + stake_unlock_time?: number; + tx_id?: string; + tx_out_index?: number; + wallet_index?: number; +} + diff --git a/utils/sdk/client/angular/model/submitBlockRequestModel.ts b/utils/sdk/client/angular/model/submitBlockRequestModel.ts new file mode 100644 index 00000000..1e6a3791 --- /dev/null +++ b/utils/sdk/client/angular/model/submitBlockRequestModel.ts @@ -0,0 +1,15 @@ +/** + * Lethean Blockchain API + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export interface SubmitBlockRequestModel { + block_blob?: string; +} + diff --git a/utils/sdk/client/angular/model/submitBlockResponseModel.ts b/utils/sdk/client/angular/model/submitBlockResponseModel.ts new file mode 100644 index 00000000..5e17b03f --- /dev/null +++ b/utils/sdk/client/angular/model/submitBlockResponseModel.ts @@ -0,0 +1,15 @@ +/** + * Lethean Blockchain API + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export interface SubmitBlockResponseModel { + status?: string; +} + diff --git a/utils/sdk/client/angular/model/transactionAttachmentModel.ts b/utils/sdk/client/angular/model/transactionAttachmentModel.ts new file mode 100644 index 00000000..da213619 --- /dev/null +++ b/utils/sdk/client/angular/model/transactionAttachmentModel.ts @@ -0,0 +1,17 @@ +/** + * Lethean Blockchain API + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export interface TransactionAttachmentModel { + type?: string; + short_view?: string; + details_view?: string; +} + diff --git a/utils/sdk/client/angular/model/transactionDetailsModel.ts b/utils/sdk/client/angular/model/transactionDetailsModel.ts new file mode 100644 index 00000000..8fc6e9cd --- /dev/null +++ b/utils/sdk/client/angular/model/transactionDetailsModel.ts @@ -0,0 +1,31 @@ +/** + * Lethean Blockchain API + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { TransactionAttachmentModel } from './transactionAttachmentModel'; +import { TransactionInputModel } from './transactionInputModel'; +import { TransactionExtraModel } from './transactionExtraModel'; +import { TransactionOutputModel } from './transactionOutputModel'; + + +export interface TransactionDetailsModel { + amount?: number; + attachments?: Array; + blob?: string; + blob_size?: number; + extra?: Array; + fee?: number; + id?: string; + ins?: Array; + keeper_block?: number; + object_in_json?: string; + outs?: Array; + pub_key?: string; + timestamp?: number; +} + diff --git a/utils/sdk/client/angular/model/transactionExtraModel.ts b/utils/sdk/client/angular/model/transactionExtraModel.ts new file mode 100644 index 00000000..331dbace --- /dev/null +++ b/utils/sdk/client/angular/model/transactionExtraModel.ts @@ -0,0 +1,17 @@ +/** + * Lethean Blockchain API + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export interface TransactionExtraModel { + type?: string; + short_view?: string; + details_view?: string; +} + diff --git a/utils/sdk/client/angular/model/transactionInputModel.ts b/utils/sdk/client/angular/model/transactionInputModel.ts new file mode 100644 index 00000000..d80da457 --- /dev/null +++ b/utils/sdk/client/angular/model/transactionInputModel.ts @@ -0,0 +1,19 @@ +/** + * Lethean Blockchain API + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export interface TransactionInputModel { + amount?: number; + global_indexes?: Array; + htlc_origin?: string; + kimage_or_ms_id?: string; + multisig_count?: number; +} + diff --git a/utils/sdk/client/angular/model/transactionOutputModel.ts b/utils/sdk/client/angular/model/transactionOutputModel.ts new file mode 100644 index 00000000..dc1c3798 --- /dev/null +++ b/utils/sdk/client/angular/model/transactionOutputModel.ts @@ -0,0 +1,19 @@ +/** + * Lethean Blockchain API + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export interface TransactionOutputModel { + amount?: number; + global_index?: number; + is_spent?: boolean; + minimum_sigs?: number; + pub_keys?: Array; +} + diff --git a/utils/sdk/client/angular/model/txGenerationContextModel.ts b/utils/sdk/client/angular/model/txGenerationContextModel.ts new file mode 100644 index 00000000..2866a4bc --- /dev/null +++ b/utils/sdk/client/angular/model/txGenerationContextModel.ts @@ -0,0 +1,38 @@ +/** + * Lethean Blockchain API + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export interface TxGenerationContextModel { + asset_ids?: Array; + blinded_asset_ids?: Array; + amount_commitments?: Array; + asset_id_blinding_masks?: Array; + amounts?: Array; + amount_blinding_masks?: Array; + pseudo_outs_blinded_asset_ids?: Array; + pseudo_outs_plus_real_out_blinding_masks?: Array; + real_zc_ins_asset_ids?: Array; + zc_input_amounts?: Array; + pseudo_out_amount_commitments_sum?: string; + pseudo_out_amount_blinding_masks_sum?: string; + real_in_asset_id_blinding_mask_x_amount_sum?: string; + amount_commitments_sum?: string; + amount_blinding_masks_sum?: string; + asset_id_blinding_mask_x_amount_sum?: string; + ao_asset_id?: string; + ao_asset_id_pt?: string; + ao_amount_commitment?: string; + ao_amount_blinding_mask?: string; + ao_commitment_in_outputs?: boolean; + tx_key_pub?: string; + tx_key_sec?: string; + tx_pub_key_p?: string; +} + diff --git a/utils/sdk/client/angular/model/txPoolPerformanceModel.ts b/utils/sdk/client/angular/model/txPoolPerformanceModel.ts new file mode 100644 index 00000000..69be0638 --- /dev/null +++ b/utils/sdk/client/angular/model/txPoolPerformanceModel.ts @@ -0,0 +1,25 @@ +/** + * Lethean Blockchain API + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export interface TxPoolPerformanceModel { + tx_processing_time?: number; + check_inputs_types_supported_time?: number; + expiration_validate_time?: number; + validate_amount_time?: number; + validate_alias_time?: number; + check_keyimages_ws_ms_time?: number; + check_inputs_time?: number; + begin_tx_time?: number; + update_db_time?: number; + db_commit_time?: number; + check_post_hf4_balance?: number; +} + diff --git a/utils/sdk/client/angular/model/txProcessingPerformanceModel.ts b/utils/sdk/client/angular/model/txProcessingPerformanceModel.ts new file mode 100644 index 00000000..943651a3 --- /dev/null +++ b/utils/sdk/client/angular/model/txProcessingPerformanceModel.ts @@ -0,0 +1,39 @@ +/** + * Lethean Blockchain API + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export interface TxProcessingPerformanceModel { + tx_check_inputs?: number; + tx_add_one_tx?: number; + tx_process_extra?: number; + tx_process_attachment?: number; + tx_process_inputs?: number; + tx_push_global_index?: number; + tx_check_exist?: number; + tx_print_log?: number; + tx_prapare_append?: number; + tx_append?: number; + tx_append_rl_wait?: number; + tx_append_is_expired?: number; + tx_store_db?: number; + tx_check_inputs_prefix_hash?: number; + tx_check_inputs_attachment_check?: number; + tx_check_inputs_loop?: number; + tx_check_inputs_loop_kimage_check?: number; + tx_check_inputs_loop_ch_in_val_sig?: number; + tx_check_inputs_loop_scan_outputkeys_get_item_size?: number; + tx_check_inputs_loop_scan_outputkeys_relative_to_absolute?: number; + tx_check_inputs_loop_scan_outputkeys_loop?: number; + tx_check_inputs_loop_scan_outputkeys_loop_get_subitem?: number; + tx_check_inputs_loop_scan_outputkeys_loop_find_tx?: number; + tx_check_inputs_loop_scan_outputkeys_loop_handle_output?: number; + tx_mixin_count?: number; +} + diff --git a/utils/sdk/client/angular/model/versionModel.ts b/utils/sdk/client/angular/model/versionModel.ts new file mode 100644 index 00000000..9de0ec61 --- /dev/null +++ b/utils/sdk/client/angular/model/versionModel.ts @@ -0,0 +1,19 @@ +/** + * Lethean Blockchain API + * + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export interface VersionModel { + version?: string; + version_long?: string; + major?: string; + minor?: string; + revision?: string; +} + diff --git a/utils/sdk/client/angular/ng-package.json b/utils/sdk/client/angular/ng-package.json new file mode 100644 index 00000000..3b17900d --- /dev/null +++ b/utils/sdk/client/angular/ng-package.json @@ -0,0 +1,6 @@ +{ + "$schema": "./node_modules/ng-packagr/ng-package.schema.json", + "lib": { + "entryFile": "index.ts" + } +} diff --git a/utils/sdk/client/angular/package.json b/utils/sdk/client/angular/package.json new file mode 100644 index 00000000..077490d1 --- /dev/null +++ b/utils/sdk/client/angular/package.json @@ -0,0 +1,34 @@ +{ + "name": "@lthn/angular", + "version": "6.0.1", + "description": "OpenAPI client for @lthn/angular", + "author": "OpenAPI-Generator Contributors", + "repository": { + "type": "git", + "url": "https://github.com/letheanVPN/blockchain.git" + }, + "keywords": [ + "openapi-client", + "openapi-generator" + ], + "license": "Unlicense", + "scripts": { + "prepare": "npm run build", + "build": "ng-packagr -p ng-package.json" + }, + "peerDependencies": { + "@angular/core": "^20.0.0", + "rxjs": "^7.4.0" + }, + "devDependencies": { + "@angular/common": "^20.0.0", + "@angular/compiler": "^20.0.0", + "@angular/compiler-cli": "^20.0.0", + "@angular/core": "^20.0.0", + "@angular/platform-browser": "^20.0.0", + "ng-packagr": "^20.0.0", + "reflect-metadata": "^0.1.3", + "rxjs": "^7.4.0", + "typescript": ">=5.8.0 <5.9.0", + "zone.js": "^0.15.0" + }} diff --git a/utils/sdk/client/angular/param.ts b/utils/sdk/client/angular/param.ts new file mode 100644 index 00000000..78a2d20a --- /dev/null +++ b/utils/sdk/client/angular/param.ts @@ -0,0 +1,69 @@ +/** + * Standard parameter styles defined by OpenAPI spec + */ +export type StandardParamStyle = + | 'matrix' + | 'label' + | 'form' + | 'simple' + | 'spaceDelimited' + | 'pipeDelimited' + | 'deepObject' + ; + +/** + * The OpenAPI standard {@link StandardParamStyle}s may be extended by custom styles by the user. + */ +export type ParamStyle = StandardParamStyle | string; + +/** + * Standard parameter locations defined by OpenAPI spec + */ +export type ParamLocation = 'query' | 'header' | 'path' | 'cookie'; + +/** + * Standard types as defined in OpenAPI Specification: Data Types + */ +export type StandardDataType = + | "integer" + | "number" + | "boolean" + | "string" + | "object" + | "array" + ; + +/** + * Standard {@link DataType}s plus your own types/classes. + */ +export type DataType = StandardDataType | string; + +/** + * Standard formats as defined in OpenAPI Specification: Data Types + */ +export type StandardDataFormat = + | "int32" + | "int64" + | "float" + | "double" + | "byte" + | "binary" + | "date" + | "date-time" + | "password" + ; + +export type DataFormat = StandardDataFormat | string; + +/** + * The parameter to encode. + */ +export interface Param { + name: string; + value: unknown; + in: ParamLocation; + style: ParamStyle, + explode: boolean; + dataType: DataType; + dataFormat: DataFormat | undefined; +} diff --git a/utils/sdk/client/angular/provide-api.ts b/utils/sdk/client/angular/provide-api.ts new file mode 100644 index 00000000..038f6b2a --- /dev/null +++ b/utils/sdk/client/angular/provide-api.ts @@ -0,0 +1,15 @@ +import { EnvironmentProviders, makeEnvironmentProviders } from "@angular/core"; +import { lthnConfiguration, lthnConfigurationParameters } from './configuration'; +import { BASE_PATH } from './variables'; + +// Returns the service class providers, to be used in the [ApplicationConfig](https://angular.dev/api/core/ApplicationConfig). +export function provideApi(configOrBasePath: string | lthnConfigurationParameters): EnvironmentProviders { + return makeEnvironmentProviders([ + typeof configOrBasePath === "string" + ? { provide: BASE_PATH, useValue: configOrBasePath } + : { + provide: lthnConfiguration, + useValue: new lthnConfiguration({ ...configOrBasePath }), + }, + ]); +} \ No newline at end of file diff --git a/utils/sdk/client/angular/tsconfig.json b/utils/sdk/client/angular/tsconfig.json new file mode 100644 index 00000000..41165c30 --- /dev/null +++ b/utils/sdk/client/angular/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "noImplicitAny": false, + "target": "es5", + "module": "commonjs", + "moduleResolution": "node", + "removeComments": true, + "strictNullChecks": true, + "exactOptionalPropertyTypes": true, + "sourceMap": true, + "outDir": "./dist", + "noLib": false, + "declaration": true, + "lib": [ "es6", "dom" ], + "typeRoots": [ + "node_modules/@types" + ] + }, + "exclude": [ + "node_modules", + "dist" + ], + "filesGlob": [ + "./model/*.ts", + "./api/*.ts" + ] +} diff --git a/utils/sdk/client/angular/variables.ts b/utils/sdk/client/angular/variables.ts new file mode 100644 index 00000000..6fe58549 --- /dev/null +++ b/utils/sdk/client/angular/variables.ts @@ -0,0 +1,9 @@ +import { InjectionToken } from '@angular/core'; + +export const BASE_PATH = new InjectionToken('basePath'); +export const COLLECTION_FORMATS = { + 'csv': ',', + 'tsv': ' ', + 'ssv': ' ', + 'pipes': '|' +} diff --git a/utils/sdk/packages/angular.json b/utils/sdk/packages/angular.json new file mode 100644 index 00000000..12094d60 --- /dev/null +++ b/utils/sdk/packages/angular.json @@ -0,0 +1,8 @@ +{ + "additionalProperties": { + "apiModulePrefix":"lthn", + "configurationPrefix":"lthn", + "npmName":"@lthn/angular", + "ngVersion": 20 + } +} \ No newline at end of file diff --git a/utils/sdk/packages/typescript-angular.json b/utils/sdk/packages/typescript-angular.json deleted file mode 100644 index 77662033..00000000 --- a/utils/sdk/packages/typescript-angular.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "additionalProperties": { - "apiModulePrefix":"letheanchainsdk", - "configurationPrefix":"letheanchainsdk", - "npmName":"@snider/sdk-typescript-angular", - "ngVersion": 12 - } -} \ No newline at end of file From 2852702a4b887ca2cecc2f0a15bc9d49c3b9a186 Mon Sep 17 00:00:00 2001 From: Snider Date: Sun, 19 Oct 2025 15:15:41 +0100 Subject: [PATCH 63/65] Add Python SDK for lthn API Introduces a new Python client SDK for the lthn API, generated via OpenAPI Generator. Includes source code, models, API classes, documentation, tests, CI/CD workflows for GitHub and GitLab, and project configuration files. --- .../python/.github/workflows/python.yml | 34 + utils/sdk/client/python/.gitignore | 66 + utils/sdk/client/python/.gitlab-ci.yml | 31 + .../client/python/.openapi-generator-ignore | 3 + .../client/python/.openapi-generator/FILES | 88 ++ .../client/python/.openapi-generator/VERSION | 1 + utils/sdk/client/python/docs/BlockApi.md | 345 +++++ .../client/python/docs/BlockDetailsModel.md | 53 + .../docs/BlockProcessingPerformanceModel.md | 44 + .../client/python/docs/BlockTemplateModel.md | 37 + .../python/docs/BlockTemplateRequestModel.md | 35 + .../sdk/client/python/docs/DbStatInfoModel.md | 31 + utils/sdk/client/python/docs/HeightModel.md | 29 + utils/sdk/client/python/docs/InfoApi.md | 140 ++ utils/sdk/client/python/docs/InfoModel.md | 74 + .../python/docs/MaintainersInfoModel.md | 33 + .../client/python/docs/PerformanceModel.md | 32 + utils/sdk/client/python/docs/PosEntryModel.md | 36 + .../python/docs/SubmitBlockRequestModel.md | 29 + .../python/docs/SubmitBlockResponseModel.md | 29 + .../python/docs/TransactionAttachmentModel.md | 31 + .../python/docs/TransactionDetailsModel.md | 41 + .../python/docs/TransactionExtraModel.md | 31 + .../python/docs/TransactionInputModel.md | 33 + .../python/docs/TransactionOutputModel.md | 33 + .../python/docs/TxGenerationContextModel.md | 52 + .../python/docs/TxPoolPerformanceModel.md | 39 + .../docs/TxProcessingPerformanceModel.md | 53 + utils/sdk/client/python/docs/VersionModel.md | 33 + utils/sdk/client/python/lthn/__init__.py | 92 ++ utils/sdk/client/python/lthn/api/__init__.py | 6 + utils/sdk/client/python/lthn/api/block_api.py | 1349 +++++++++++++++++ utils/sdk/client/python/lthn/api/info_api.py | 544 +++++++ utils/sdk/client/python/lthn/api_client.py | 804 ++++++++++ utils/sdk/client/python/lthn/api_response.py | 21 + utils/sdk/client/python/lthn/configuration.py | 576 +++++++ utils/sdk/client/python/lthn/exceptions.py | 216 +++ .../sdk/client/python/lthn/models/__init__.py | 37 + .../python/lthn/models/block_details_model.py | 144 ++ .../block_processing_performance_model.py | 117 ++ .../lthn/models/block_template_model.py | 107 ++ .../models/block_template_request_model.py | 103 ++ .../python/lthn/models/db_stat_info_model.py | 91 ++ .../client/python/lthn/models/height_model.py | 87 ++ .../client/python/lthn/models/info_model.py | 185 +++ .../lthn/models/maintainers_info_model.py | 96 ++ .../python/lthn/models/performance_model.py | 109 ++ .../python/lthn/models/pos_entry_model.py | 101 ++ .../lthn/models/submit_block_request_model.py | 87 ++ .../models/submit_block_response_model.py | 87 ++ .../models/transaction_attachment_model.py | 91 ++ .../lthn/models/transaction_details_model.py | 143 ++ .../lthn/models/transaction_extra_model.py | 91 ++ .../lthn/models/transaction_input_model.py | 96 ++ .../lthn/models/transaction_output_model.py | 96 ++ .../models/tx_generation_context_model.py | 133 ++ .../lthn/models/tx_pool_performance_model.py | 107 ++ .../models/tx_processing_performance_model.py | 135 ++ .../python/lthn/models/version_model.py | 95 ++ utils/sdk/client/python/lthn/py.typed | 0 utils/sdk/client/python/lthn/rest.py | 258 ++++ utils/sdk/client/python/pyproject.toml | 95 ++ utils/sdk/client/python/requirements.txt | 4 + utils/sdk/client/python/setup.cfg | 2 + utils/sdk/client/python/setup.py | 50 + utils/sdk/client/python/test-requirements.txt | 6 + utils/sdk/client/python/test/__init__.py | 0 .../sdk/client/python/test/test_block_api.py | 66 + .../python/test/test_block_details_model.py | 118 ++ ...test_block_processing_performance_model.py | 66 + .../python/test/test_block_template_model.py | 103 ++ .../test/test_block_template_request_model.py | 67 + .../python/test/test_db_stat_info_model.py | 53 + .../client/python/test/test_height_model.py | 51 + utils/sdk/client/python/test/test_info_api.py | 45 + .../sdk/client/python/test/test_info_model.py | 168 ++ .../test/test_maintainers_info_model.py | 55 + .../python/test/test_performance_model.py | 109 ++ .../python/test/test_pos_entry_model.py | 58 + .../test/test_submit_block_request_model.py | 51 + .../test/test_submit_block_response_model.py | 51 + .../test/test_transaction_attachment_model.py | 53 + .../test/test_transaction_details_model.py | 91 ++ .../test/test_transaction_extra_model.py | 53 + .../test/test_transaction_input_model.py | 57 + .../test/test_transaction_output_model.py | 57 + .../test/test_tx_generation_context_model.py | 94 ++ .../test/test_tx_pool_performance_model.py | 61 + .../test_tx_processing_performance_model.py | 75 + .../client/python/test/test_version_model.py | 55 + utils/sdk/client/python/tox.ini | 9 + utils/sdk/packages/python.json | 6 +- 92 files changed, 9546 insertions(+), 3 deletions(-) create mode 100644 utils/sdk/client/python/.github/workflows/python.yml create mode 100644 utils/sdk/client/python/.gitignore create mode 100644 utils/sdk/client/python/.gitlab-ci.yml create mode 100644 utils/sdk/client/python/.openapi-generator-ignore create mode 100644 utils/sdk/client/python/.openapi-generator/FILES create mode 100644 utils/sdk/client/python/.openapi-generator/VERSION create mode 100644 utils/sdk/client/python/docs/BlockApi.md create mode 100644 utils/sdk/client/python/docs/BlockDetailsModel.md create mode 100644 utils/sdk/client/python/docs/BlockProcessingPerformanceModel.md create mode 100644 utils/sdk/client/python/docs/BlockTemplateModel.md create mode 100644 utils/sdk/client/python/docs/BlockTemplateRequestModel.md create mode 100644 utils/sdk/client/python/docs/DbStatInfoModel.md create mode 100644 utils/sdk/client/python/docs/HeightModel.md create mode 100644 utils/sdk/client/python/docs/InfoApi.md create mode 100644 utils/sdk/client/python/docs/InfoModel.md create mode 100644 utils/sdk/client/python/docs/MaintainersInfoModel.md create mode 100644 utils/sdk/client/python/docs/PerformanceModel.md create mode 100644 utils/sdk/client/python/docs/PosEntryModel.md create mode 100644 utils/sdk/client/python/docs/SubmitBlockRequestModel.md create mode 100644 utils/sdk/client/python/docs/SubmitBlockResponseModel.md create mode 100644 utils/sdk/client/python/docs/TransactionAttachmentModel.md create mode 100644 utils/sdk/client/python/docs/TransactionDetailsModel.md create mode 100644 utils/sdk/client/python/docs/TransactionExtraModel.md create mode 100644 utils/sdk/client/python/docs/TransactionInputModel.md create mode 100644 utils/sdk/client/python/docs/TransactionOutputModel.md create mode 100644 utils/sdk/client/python/docs/TxGenerationContextModel.md create mode 100644 utils/sdk/client/python/docs/TxPoolPerformanceModel.md create mode 100644 utils/sdk/client/python/docs/TxProcessingPerformanceModel.md create mode 100644 utils/sdk/client/python/docs/VersionModel.md create mode 100644 utils/sdk/client/python/lthn/__init__.py create mode 100644 utils/sdk/client/python/lthn/api/__init__.py create mode 100644 utils/sdk/client/python/lthn/api/block_api.py create mode 100644 utils/sdk/client/python/lthn/api/info_api.py create mode 100644 utils/sdk/client/python/lthn/api_client.py create mode 100644 utils/sdk/client/python/lthn/api_response.py create mode 100644 utils/sdk/client/python/lthn/configuration.py create mode 100644 utils/sdk/client/python/lthn/exceptions.py create mode 100644 utils/sdk/client/python/lthn/models/__init__.py create mode 100644 utils/sdk/client/python/lthn/models/block_details_model.py create mode 100644 utils/sdk/client/python/lthn/models/block_processing_performance_model.py create mode 100644 utils/sdk/client/python/lthn/models/block_template_model.py create mode 100644 utils/sdk/client/python/lthn/models/block_template_request_model.py create mode 100644 utils/sdk/client/python/lthn/models/db_stat_info_model.py create mode 100644 utils/sdk/client/python/lthn/models/height_model.py create mode 100644 utils/sdk/client/python/lthn/models/info_model.py create mode 100644 utils/sdk/client/python/lthn/models/maintainers_info_model.py create mode 100644 utils/sdk/client/python/lthn/models/performance_model.py create mode 100644 utils/sdk/client/python/lthn/models/pos_entry_model.py create mode 100644 utils/sdk/client/python/lthn/models/submit_block_request_model.py create mode 100644 utils/sdk/client/python/lthn/models/submit_block_response_model.py create mode 100644 utils/sdk/client/python/lthn/models/transaction_attachment_model.py create mode 100644 utils/sdk/client/python/lthn/models/transaction_details_model.py create mode 100644 utils/sdk/client/python/lthn/models/transaction_extra_model.py create mode 100644 utils/sdk/client/python/lthn/models/transaction_input_model.py create mode 100644 utils/sdk/client/python/lthn/models/transaction_output_model.py create mode 100644 utils/sdk/client/python/lthn/models/tx_generation_context_model.py create mode 100644 utils/sdk/client/python/lthn/models/tx_pool_performance_model.py create mode 100644 utils/sdk/client/python/lthn/models/tx_processing_performance_model.py create mode 100644 utils/sdk/client/python/lthn/models/version_model.py create mode 100644 utils/sdk/client/python/lthn/py.typed create mode 100644 utils/sdk/client/python/lthn/rest.py create mode 100644 utils/sdk/client/python/pyproject.toml create mode 100644 utils/sdk/client/python/requirements.txt create mode 100644 utils/sdk/client/python/setup.cfg create mode 100644 utils/sdk/client/python/setup.py create mode 100644 utils/sdk/client/python/test-requirements.txt create mode 100644 utils/sdk/client/python/test/__init__.py create mode 100644 utils/sdk/client/python/test/test_block_api.py create mode 100644 utils/sdk/client/python/test/test_block_details_model.py create mode 100644 utils/sdk/client/python/test/test_block_processing_performance_model.py create mode 100644 utils/sdk/client/python/test/test_block_template_model.py create mode 100644 utils/sdk/client/python/test/test_block_template_request_model.py create mode 100644 utils/sdk/client/python/test/test_db_stat_info_model.py create mode 100644 utils/sdk/client/python/test/test_height_model.py create mode 100644 utils/sdk/client/python/test/test_info_api.py create mode 100644 utils/sdk/client/python/test/test_info_model.py create mode 100644 utils/sdk/client/python/test/test_maintainers_info_model.py create mode 100644 utils/sdk/client/python/test/test_performance_model.py create mode 100644 utils/sdk/client/python/test/test_pos_entry_model.py create mode 100644 utils/sdk/client/python/test/test_submit_block_request_model.py create mode 100644 utils/sdk/client/python/test/test_submit_block_response_model.py create mode 100644 utils/sdk/client/python/test/test_transaction_attachment_model.py create mode 100644 utils/sdk/client/python/test/test_transaction_details_model.py create mode 100644 utils/sdk/client/python/test/test_transaction_extra_model.py create mode 100644 utils/sdk/client/python/test/test_transaction_input_model.py create mode 100644 utils/sdk/client/python/test/test_transaction_output_model.py create mode 100644 utils/sdk/client/python/test/test_tx_generation_context_model.py create mode 100644 utils/sdk/client/python/test/test_tx_pool_performance_model.py create mode 100644 utils/sdk/client/python/test/test_tx_processing_performance_model.py create mode 100644 utils/sdk/client/python/test/test_version_model.py create mode 100644 utils/sdk/client/python/tox.ini diff --git a/utils/sdk/client/python/.github/workflows/python.yml b/utils/sdk/client/python/.github/workflows/python.yml new file mode 100644 index 00000000..38a0c5e6 --- /dev/null +++ b/utils/sdk/client/python/.github/workflows/python.yml @@ -0,0 +1,34 @@ +# NOTE: This file is auto generated by OpenAPI Generator. +# URL: https://openapi-generator.tech +# +# ref: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python + +name: lthn Python package + +on: [push, pull_request] + +permissions: + contents: read + +jobs: + build: + + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] + + steps: + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install -r test-requirements.txt + - name: Test with pytest + run: | + pytest --cov=lthn diff --git a/utils/sdk/client/python/.gitignore b/utils/sdk/client/python/.gitignore new file mode 100644 index 00000000..65b06b95 --- /dev/null +++ b/utils/sdk/client/python/.gitignore @@ -0,0 +1,66 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover +.hypothesis/ +venv/ +.venv/ +.python-version +.pytest_cache + +# Translations +*.mo +*.pot + +# Django stuff: +*.log + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Ipython Notebook +.ipynb_checkpoints diff --git a/utils/sdk/client/python/.gitlab-ci.yml b/utils/sdk/client/python/.gitlab-ci.yml new file mode 100644 index 00000000..b25bbb1b --- /dev/null +++ b/utils/sdk/client/python/.gitlab-ci.yml @@ -0,0 +1,31 @@ +# NOTE: This file is auto generated by OpenAPI Generator. +# URL: https://openapi-generator.tech +# +# ref: https://docs.gitlab.com/ee/ci/README.html +# ref: https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Python.gitlab-ci.yml + +stages: + - test + +.pytest: + stage: test + script: + - pip install -r requirements.txt + - pip install -r test-requirements.txt + - pytest --cov=lthn + +pytest-3.9: + extends: .pytest + image: python:3.9-alpine +pytest-3.10: + extends: .pytest + image: python:3.10-alpine +pytest-3.11: + extends: .pytest + image: python:3.11-alpine +pytest-3.12: + extends: .pytest + image: python:3.12-alpine +pytest-3.13: + extends: .pytest + image: python:3.13-alpine diff --git a/utils/sdk/client/python/.openapi-generator-ignore b/utils/sdk/client/python/.openapi-generator-ignore new file mode 100644 index 00000000..def5120f --- /dev/null +++ b/utils/sdk/client/python/.openapi-generator-ignore @@ -0,0 +1,3 @@ +git_push.sh +.travis.yml +README.md diff --git a/utils/sdk/client/python/.openapi-generator/FILES b/utils/sdk/client/python/.openapi-generator/FILES new file mode 100644 index 00000000..fe750aec --- /dev/null +++ b/utils/sdk/client/python/.openapi-generator/FILES @@ -0,0 +1,88 @@ +.github/workflows/python.yml +.gitignore +.gitlab-ci.yml +docs/BlockApi.md +docs/BlockDetailsModel.md +docs/BlockProcessingPerformanceModel.md +docs/BlockTemplateModel.md +docs/BlockTemplateRequestModel.md +docs/DbStatInfoModel.md +docs/HeightModel.md +docs/InfoApi.md +docs/InfoModel.md +docs/MaintainersInfoModel.md +docs/PerformanceModel.md +docs/PosEntryModel.md +docs/SubmitBlockRequestModel.md +docs/SubmitBlockResponseModel.md +docs/TransactionAttachmentModel.md +docs/TransactionDetailsModel.md +docs/TransactionExtraModel.md +docs/TransactionInputModel.md +docs/TransactionOutputModel.md +docs/TxGenerationContextModel.md +docs/TxPoolPerformanceModel.md +docs/TxProcessingPerformanceModel.md +docs/VersionModel.md +lthn/__init__.py +lthn/api/__init__.py +lthn/api/block_api.py +lthn/api/info_api.py +lthn/api_client.py +lthn/api_response.py +lthn/configuration.py +lthn/exceptions.py +lthn/models/__init__.py +lthn/models/block_details_model.py +lthn/models/block_processing_performance_model.py +lthn/models/block_template_model.py +lthn/models/block_template_request_model.py +lthn/models/db_stat_info_model.py +lthn/models/height_model.py +lthn/models/info_model.py +lthn/models/maintainers_info_model.py +lthn/models/performance_model.py +lthn/models/pos_entry_model.py +lthn/models/submit_block_request_model.py +lthn/models/submit_block_response_model.py +lthn/models/transaction_attachment_model.py +lthn/models/transaction_details_model.py +lthn/models/transaction_extra_model.py +lthn/models/transaction_input_model.py +lthn/models/transaction_output_model.py +lthn/models/tx_generation_context_model.py +lthn/models/tx_pool_performance_model.py +lthn/models/tx_processing_performance_model.py +lthn/models/version_model.py +lthn/py.typed +lthn/rest.py +pyproject.toml +requirements.txt +setup.cfg +setup.py +test-requirements.txt +test/__init__.py +test/test_block_api.py +test/test_block_details_model.py +test/test_block_processing_performance_model.py +test/test_block_template_model.py +test/test_block_template_request_model.py +test/test_db_stat_info_model.py +test/test_height_model.py +test/test_info_api.py +test/test_info_model.py +test/test_maintainers_info_model.py +test/test_performance_model.py +test/test_pos_entry_model.py +test/test_submit_block_request_model.py +test/test_submit_block_response_model.py +test/test_transaction_attachment_model.py +test/test_transaction_details_model.py +test/test_transaction_extra_model.py +test/test_transaction_input_model.py +test/test_transaction_output_model.py +test/test_tx_generation_context_model.py +test/test_tx_pool_performance_model.py +test/test_tx_processing_performance_model.py +test/test_version_model.py +tox.ini diff --git a/utils/sdk/client/python/.openapi-generator/VERSION b/utils/sdk/client/python/.openapi-generator/VERSION new file mode 100644 index 00000000..971ecb25 --- /dev/null +++ b/utils/sdk/client/python/.openapi-generator/VERSION @@ -0,0 +1 @@ +7.16.0 diff --git a/utils/sdk/client/python/docs/BlockApi.md b/utils/sdk/client/python/docs/BlockApi.md new file mode 100644 index 00000000..0d6b4c53 --- /dev/null +++ b/utils/sdk/client/python/docs/BlockApi.md @@ -0,0 +1,345 @@ +# lthn.BlockApi + +All URIs are relative to *http://127.0.0.1:36943* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**create_block_template**](BlockApi.md#create_block_template) | **POST** /block/template | Create a block template for mining +[**get_block**](BlockApi.md#get_block) | **GET** /block/{identifier} | Get a block by its hash or height (ID) +[**get_blocks**](BlockApi.md#get_blocks) | **GET** /block | Get one or more blocks, with optional pagination. +[**get_height**](BlockApi.md#get_height) | **GET** /block/height | Get the current blockchain height +[**submit_block**](BlockApi.md#submit_block) | **POST** /block/submit | Submit a new block to the network + + +# **create_block_template** +> BlockTemplateModel create_block_template(block_template_request_model) + +Create a block template for mining + +### Example + + +```python +import lthn +from lthn.models.block_template_model import BlockTemplateModel +from lthn.models.block_template_request_model import BlockTemplateRequestModel +from lthn.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://127.0.0.1:36943 +# See configuration.py for a list of all supported configuration parameters. +configuration = lthn.Configuration( + host = "http://127.0.0.1:36943" +) + + +# Enter a context with an instance of the API client +with lthn.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = lthn.BlockApi(api_client) + block_template_request_model = lthn.BlockTemplateRequestModel() # BlockTemplateRequestModel | + + try: + # Create a block template for mining + api_response = api_instance.create_block_template(block_template_request_model) + print("The response of BlockApi->create_block_template:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling BlockApi->create_block_template: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **block_template_request_model** | [**BlockTemplateRequestModel**](BlockTemplateRequestModel.md)| | + +### Return type + +[**BlockTemplateModel**](BlockTemplateModel.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**500** | text/plain | - | +**400** | text/plain | - | +**200** | OK | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_block** +> BlockDetailsModel get_block(identifier) + +Get a block by its hash or height (ID) + +### Example + + +```python +import lthn +from lthn.models.block_details_model import BlockDetailsModel +from lthn.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://127.0.0.1:36943 +# See configuration.py for a list of all supported configuration parameters. +configuration = lthn.Configuration( + host = "http://127.0.0.1:36943" +) + + +# Enter a context with an instance of the API client +with lthn.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = lthn.BlockApi(api_client) + identifier = 'identifier_example' # str | The hash (hex string) or height (integer) of the block to retrieve. + + try: + # Get a block by its hash or height (ID) + api_response = api_instance.get_block(identifier) + print("The response of BlockApi->get_block:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling BlockApi->get_block: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **identifier** | **str**| The hash (hex string) or height (integer) of the block to retrieve. | + +### Return type + +[**BlockDetailsModel**](BlockDetailsModel.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**404** | text/plain | - | +**400** | text/plain | - | +**200** | OK | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_blocks** +> List[BlockDetailsModel] get_blocks() + +Get one or more blocks, with optional pagination. + +### Example + + +```python +import lthn +from lthn.models.block_details_model import BlockDetailsModel +from lthn.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://127.0.0.1:36943 +# See configuration.py for a list of all supported configuration parameters. +configuration = lthn.Configuration( + host = "http://127.0.0.1:36943" +) + + +# Enter a context with an instance of the API client +with lthn.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = lthn.BlockApi(api_client) + + try: + # Get one or more blocks, with optional pagination. + api_response = api_instance.get_blocks() + print("The response of BlockApi->get_blocks:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling BlockApi->get_blocks: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**List[BlockDetailsModel]**](BlockDetailsModel.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**404** | text/plain | - | +**400** | text/plain | - | +**200** | A list of block objects. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_height** +> HeightModel get_height() + +Get the current blockchain height + +### Example + + +```python +import lthn +from lthn.models.height_model import HeightModel +from lthn.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://127.0.0.1:36943 +# See configuration.py for a list of all supported configuration parameters. +configuration = lthn.Configuration( + host = "http://127.0.0.1:36943" +) + + +# Enter a context with an instance of the API client +with lthn.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = lthn.BlockApi(api_client) + + try: + # Get the current blockchain height + api_response = api_instance.get_height() + print("The response of BlockApi->get_height:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling BlockApi->get_height: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**HeightModel**](HeightModel.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | OK | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **submit_block** +> SubmitBlockResponseModel submit_block(submit_block_request_model) + +Submit a new block to the network + +### Example + + +```python +import lthn +from lthn.models.submit_block_request_model import SubmitBlockRequestModel +from lthn.models.submit_block_response_model import SubmitBlockResponseModel +from lthn.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://127.0.0.1:36943 +# See configuration.py for a list of all supported configuration parameters. +configuration = lthn.Configuration( + host = "http://127.0.0.1:36943" +) + + +# Enter a context with an instance of the API client +with lthn.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = lthn.BlockApi(api_client) + submit_block_request_model = lthn.SubmitBlockRequestModel() # SubmitBlockRequestModel | + + try: + # Submit a new block to the network + api_response = api_instance.submit_block(submit_block_request_model) + print("The response of BlockApi->submit_block:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling BlockApi->submit_block: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **submit_block_request_model** | [**SubmitBlockRequestModel**](SubmitBlockRequestModel.md)| | + +### Return type + +[**SubmitBlockResponseModel**](SubmitBlockResponseModel.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**406** | text/plain | - | +**400** | text/plain | - | +**200** | OK | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/utils/sdk/client/python/docs/BlockDetailsModel.md b/utils/sdk/client/python/docs/BlockDetailsModel.md new file mode 100644 index 00000000..5bf0f75d --- /dev/null +++ b/utils/sdk/client/python/docs/BlockDetailsModel.md @@ -0,0 +1,53 @@ +# BlockDetailsModel + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**actual_timestamp** | **int** | | [optional] +**already_generated_coins** | **str** | | [optional] +**base_reward** | **int** | | [optional] +**blob** | **str** | | [optional] +**block_cumulative_size** | **int** | | [optional] +**block_tself_size** | **int** | | [optional] +**cumulative_diff_adjusted** | **str** | | [optional] +**cumulative_diff_precise** | **str** | | [optional] +**difficulty** | **str** | | [optional] +**effective_fee_median** | **int** | | [optional] +**height** | **int** | | [optional] +**id** | **str** | | [optional] +**is_orphan** | **bool** | | [optional] +**miner_text_info** | **str** | | [optional] +**object_in_json** | **str** | | [optional] +**penalty** | **int** | | [optional] +**pow_seed** | **str** | | [optional] +**prev_id** | **str** | | [optional] +**summary_reward** | **int** | | [optional] +**this_block_fee_median** | **int** | | [optional] +**timestamp** | **int** | | [optional] +**total_fee** | **int** | | [optional] +**total_txs_size** | **int** | | [optional] +**transactions_details** | [**List[TransactionDetailsModel]**](TransactionDetailsModel.md) | | [optional] +**type** | **int** | | [optional] + +## Example + +```python +from lthn.models.block_details_model import BlockDetailsModel + +# TODO update the JSON string below +json = "{}" +# create an instance of BlockDetailsModel from a JSON string +block_details_model_instance = BlockDetailsModel.from_json(json) +# print the JSON string representation of the object +print(BlockDetailsModel.to_json()) + +# convert the object into a dict +block_details_model_dict = block_details_model_instance.to_dict() +# create an instance of BlockDetailsModel from a dict +block_details_model_from_dict = BlockDetailsModel.from_dict(block_details_model_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/utils/sdk/client/python/docs/BlockProcessingPerformanceModel.md b/utils/sdk/client/python/docs/BlockProcessingPerformanceModel.md new file mode 100644 index 00000000..6550f71b --- /dev/null +++ b/utils/sdk/client/python/docs/BlockProcessingPerformanceModel.md @@ -0,0 +1,44 @@ +# BlockProcessingPerformanceModel + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**block_processing_time_0** | **int** | | [optional] +**block_processing_time_1** | **int** | | [optional] +**target_calculating_time_2** | **int** | | [optional] +**longhash_calculating_time_3** | **int** | | [optional] +**all_txs_insert_time_5** | **int** | | [optional] +**etc_stuff_6** | **int** | | [optional] +**insert_time_4** | **int** | | [optional] +**raise_block_core_event** | **int** | | [optional] +**validate_miner_transaction_time** | **int** | | [optional] +**collect_rangeproofs_data_from_tx_time** | **int** | | [optional] +**verify_multiple_zc_outs_range_proofs_time** | **int** | | [optional] +**target_calculating_enum_blocks** | **int** | | [optional] +**target_calculating_calc** | **int** | | [optional] +**pos_validate_ki_search** | **int** | | [optional] +**pos_validate_get_out_keys_for_inputs** | **int** | | [optional] +**pos_validate_zvp** | **int** | | [optional] + +## Example + +```python +from lthn.models.block_processing_performance_model import BlockProcessingPerformanceModel + +# TODO update the JSON string below +json = "{}" +# create an instance of BlockProcessingPerformanceModel from a JSON string +block_processing_performance_model_instance = BlockProcessingPerformanceModel.from_json(json) +# print the JSON string representation of the object +print(BlockProcessingPerformanceModel.to_json()) + +# convert the object into a dict +block_processing_performance_model_dict = block_processing_performance_model_instance.to_dict() +# create an instance of BlockProcessingPerformanceModel from a dict +block_processing_performance_model_from_dict = BlockProcessingPerformanceModel.from_dict(block_processing_performance_model_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/utils/sdk/client/python/docs/BlockTemplateModel.md b/utils/sdk/client/python/docs/BlockTemplateModel.md new file mode 100644 index 00000000..e9a1d658 --- /dev/null +++ b/utils/sdk/client/python/docs/BlockTemplateModel.md @@ -0,0 +1,37 @@ +# BlockTemplateModel + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**blocktemplate_blob** | **str** | | [optional] +**difficulty** | **str** | | [optional] +**height** | **int** | | [optional] +**miner_tx_tgc** | [**TxGenerationContextModel**](TxGenerationContextModel.md) | | [optional] +**block_reward_without_fee** | **int** | | [optional] +**block_reward** | **int** | | [optional] +**txs_fee** | **int** | | [optional] +**prev_hash** | **str** | | [optional] +**seed** | **str** | | [optional] + +## Example + +```python +from lthn.models.block_template_model import BlockTemplateModel + +# TODO update the JSON string below +json = "{}" +# create an instance of BlockTemplateModel from a JSON string +block_template_model_instance = BlockTemplateModel.from_json(json) +# print the JSON string representation of the object +print(BlockTemplateModel.to_json()) + +# convert the object into a dict +block_template_model_dict = block_template_model_instance.to_dict() +# create an instance of BlockTemplateModel from a dict +block_template_model_from_dict = BlockTemplateModel.from_dict(block_template_model_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/utils/sdk/client/python/docs/BlockTemplateRequestModel.md b/utils/sdk/client/python/docs/BlockTemplateRequestModel.md new file mode 100644 index 00000000..065f68be --- /dev/null +++ b/utils/sdk/client/python/docs/BlockTemplateRequestModel.md @@ -0,0 +1,35 @@ +# BlockTemplateRequestModel + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**miner_address** | **str** | | [optional] +**stakeholder_address** | **str** | | [optional] +**ex_nonce** | **str** | | [optional] +**pos_block** | **bool** | | [optional] +**ignore_pow_ts_check** | **bool** | | [optional] +**pe** | [**PosEntryModel**](PosEntryModel.md) | | [optional] +**explicit_txs** | **List[str]** | | [optional] + +## Example + +```python +from lthn.models.block_template_request_model import BlockTemplateRequestModel + +# TODO update the JSON string below +json = "{}" +# create an instance of BlockTemplateRequestModel from a JSON string +block_template_request_model_instance = BlockTemplateRequestModel.from_json(json) +# print the JSON string representation of the object +print(BlockTemplateRequestModel.to_json()) + +# convert the object into a dict +block_template_request_model_dict = block_template_request_model_instance.to_dict() +# create an instance of BlockTemplateRequestModel from a dict +block_template_request_model_from_dict = BlockTemplateRequestModel.from_dict(block_template_request_model_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/utils/sdk/client/python/docs/DbStatInfoModel.md b/utils/sdk/client/python/docs/DbStatInfoModel.md new file mode 100644 index 00000000..67844f7e --- /dev/null +++ b/utils/sdk/client/python/docs/DbStatInfoModel.md @@ -0,0 +1,31 @@ +# DbStatInfoModel + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**tx_count** | **int** | | [optional] +**write_tx_count** | **int** | | [optional] +**map_size** | **int** | | [optional] + +## Example + +```python +from lthn.models.db_stat_info_model import DbStatInfoModel + +# TODO update the JSON string below +json = "{}" +# create an instance of DbStatInfoModel from a JSON string +db_stat_info_model_instance = DbStatInfoModel.from_json(json) +# print the JSON string representation of the object +print(DbStatInfoModel.to_json()) + +# convert the object into a dict +db_stat_info_model_dict = db_stat_info_model_instance.to_dict() +# create an instance of DbStatInfoModel from a dict +db_stat_info_model_from_dict = DbStatInfoModel.from_dict(db_stat_info_model_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/utils/sdk/client/python/docs/HeightModel.md b/utils/sdk/client/python/docs/HeightModel.md new file mode 100644 index 00000000..9f5ebf81 --- /dev/null +++ b/utils/sdk/client/python/docs/HeightModel.md @@ -0,0 +1,29 @@ +# HeightModel + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**height** | **int** | | [optional] + +## Example + +```python +from lthn.models.height_model import HeightModel + +# TODO update the JSON string below +json = "{}" +# create an instance of HeightModel from a JSON string +height_model_instance = HeightModel.from_json(json) +# print the JSON string representation of the object +print(HeightModel.to_json()) + +# convert the object into a dict +height_model_dict = height_model_instance.to_dict() +# create an instance of HeightModel from a dict +height_model_from_dict = HeightModel.from_dict(height_model_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/utils/sdk/client/python/docs/InfoApi.md b/utils/sdk/client/python/docs/InfoApi.md new file mode 100644 index 00000000..914dc8a7 --- /dev/null +++ b/utils/sdk/client/python/docs/InfoApi.md @@ -0,0 +1,140 @@ +# lthn.InfoApi + +All URIs are relative to *http://127.0.0.1:36943* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_info**](InfoApi.md#get_info) | **GET** /info | Get detailed information about the blockchain and daemon state +[**version**](InfoApi.md#version) | **GET** /info/version | Get API version + + +# **get_info** +> InfoModel get_info(flags=flags) + +Get detailed information about the blockchain and daemon state + +### Example + + +```python +import lthn +from lthn.models.info_model import InfoModel +from lthn.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://127.0.0.1:36943 +# See configuration.py for a list of all supported configuration parameters. +configuration = lthn.Configuration( + host = "http://127.0.0.1:36943" +) + + +# Enter a context with an instance of the API client +with lthn.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = lthn.InfoApi(api_client) + flags = 'flags_example' # str | Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median. (optional) + + try: + # Get detailed information about the blockchain and daemon state + api_response = api_instance.get_info(flags=flags) + print("The response of InfoApi->get_info:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling InfoApi->get_info: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **flags** | **str**| Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median. | [optional] + +### Return type + +[**InfoModel**](InfoModel.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | OK | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **version** +> VersionModel version() + +Get API version + +Returns the current version of the API. + +### Example + + +```python +import lthn +from lthn.models.version_model import VersionModel +from lthn.rest import ApiException +from pprint import pprint + +# Defining the host is optional and defaults to http://127.0.0.1:36943 +# See configuration.py for a list of all supported configuration parameters. +configuration = lthn.Configuration( + host = "http://127.0.0.1:36943" +) + + +# Enter a context with an instance of the API client +with lthn.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = lthn.InfoApi(api_client) + + try: + # Get API version + api_response = api_instance.version() + print("The response of InfoApi->version:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling InfoApi->version: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**VersionModel**](VersionModel.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | OK | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/utils/sdk/client/python/docs/InfoModel.md b/utils/sdk/client/python/docs/InfoModel.md new file mode 100644 index 00000000..b34a5fb1 --- /dev/null +++ b/utils/sdk/client/python/docs/InfoModel.md @@ -0,0 +1,74 @@ +# InfoModel + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**height** | **int** | | [optional] +**tx_count** | **int** | | [optional] +**tx_pool_size** | **int** | | [optional] +**alt_blocks_count** | **int** | | [optional] +**outgoing_connections_count** | **int** | | [optional] +**incoming_connections_count** | **int** | | [optional] +**synchronized_connections_count** | **int** | | [optional] +**white_peerlist_size** | **int** | | [optional] +**grey_peerlist_size** | **int** | | [optional] +**current_blocks_median** | **int** | | [optional] +**alias_count** | **int** | | [optional] +**current_max_allowed_block_size** | **int** | | [optional] +**daemon_network_state** | **str** | | [optional] +**synchronization_start_height** | **int** | | [optional] +**max_net_seen_height** | **int** | | [optional] +**mi** | [**MaintainersInfoModel**](MaintainersInfoModel.md) | | [optional] +**pos_allowed** | **bool** | | [optional] +**pos_difficulty** | **str** | | [optional] +**pow_difficulty** | **int** | | [optional] +**default_fee** | **int** | | [optional] +**minimum_fee** | **int** | | [optional] +**is_hardfork_active** | **List[bool]** | | [optional] +**net_time_delta_median** | **int** | | [optional] +**current_network_hashrate_50** | **int** | | [optional] +**current_network_hashrate_350** | **int** | | [optional] +**seconds_for_10_blocks** | **int** | | [optional] +**seconds_for_30_blocks** | **int** | | [optional] +**transactions_cnt_per_day** | **List[int]** | | [optional] +**transactions_volume_per_day** | **List[int]** | | [optional] +**last_pos_timestamp** | **int** | | [optional] +**last_pow_timestamp** | **int** | | [optional] +**total_coins** | **str** | | [optional] +**last_block_size** | **int** | | [optional] +**tx_count_in_last_block** | **int** | | [optional] +**pos_sequence_factor** | **float** | | [optional] +**pow_sequence_factor** | **float** | | [optional] +**block_reward** | **int** | | [optional] +**last_block_total_reward** | **int** | | [optional] +**pos_diff_total_coins_rate** | **int** | | [optional] +**last_block_timestamp** | **int** | | [optional] +**last_block_hash** | **str** | | [optional] +**pos_block_ts_shift_vs_actual** | **int** | | [optional] +**outs_stat** | **Dict[str, int]** | | [optional] +**performance_data** | [**PerformanceModel**](PerformanceModel.md) | | [optional] +**offers_count** | **int** | | [optional] +**expiration_median_timestamp** | **int** | | [optional] + +## Example + +```python +from lthn.models.info_model import InfoModel + +# TODO update the JSON string below +json = "{}" +# create an instance of InfoModel from a JSON string +info_model_instance = InfoModel.from_json(json) +# print the JSON string representation of the object +print(InfoModel.to_json()) + +# convert the object into a dict +info_model_dict = info_model_instance.to_dict() +# create an instance of InfoModel from a dict +info_model_from_dict = InfoModel.from_dict(info_model_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/utils/sdk/client/python/docs/MaintainersInfoModel.md b/utils/sdk/client/python/docs/MaintainersInfoModel.md new file mode 100644 index 00000000..c80b5a41 --- /dev/null +++ b/utils/sdk/client/python/docs/MaintainersInfoModel.md @@ -0,0 +1,33 @@ +# MaintainersInfoModel + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ver_major** | **int** | | [optional] +**ver_minor** | **int** | | [optional] +**ver_revision** | **int** | | [optional] +**build_no** | **int** | | [optional] +**mode** | **int** | | [optional] + +## Example + +```python +from lthn.models.maintainers_info_model import MaintainersInfoModel + +# TODO update the JSON string below +json = "{}" +# create an instance of MaintainersInfoModel from a JSON string +maintainers_info_model_instance = MaintainersInfoModel.from_json(json) +# print the JSON string representation of the object +print(MaintainersInfoModel.to_json()) + +# convert the object into a dict +maintainers_info_model_dict = maintainers_info_model_instance.to_dict() +# create an instance of MaintainersInfoModel from a dict +maintainers_info_model_from_dict = MaintainersInfoModel.from_dict(maintainers_info_model_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/utils/sdk/client/python/docs/PerformanceModel.md b/utils/sdk/client/python/docs/PerformanceModel.md new file mode 100644 index 00000000..4b7b302b --- /dev/null +++ b/utils/sdk/client/python/docs/PerformanceModel.md @@ -0,0 +1,32 @@ +# PerformanceModel + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**block_processing** | [**BlockProcessingPerformanceModel**](BlockProcessingPerformanceModel.md) | | [optional] +**tx_processing** | [**TxProcessingPerformanceModel**](TxProcessingPerformanceModel.md) | | [optional] +**tx_pool** | [**TxPoolPerformanceModel**](TxPoolPerformanceModel.md) | | [optional] +**db_stat_info** | [**DbStatInfoModel**](DbStatInfoModel.md) | | [optional] + +## Example + +```python +from lthn.models.performance_model import PerformanceModel + +# TODO update the JSON string below +json = "{}" +# create an instance of PerformanceModel from a JSON string +performance_model_instance = PerformanceModel.from_json(json) +# print the JSON string representation of the object +print(PerformanceModel.to_json()) + +# convert the object into a dict +performance_model_dict = performance_model_instance.to_dict() +# create an instance of PerformanceModel from a dict +performance_model_from_dict = PerformanceModel.from_dict(performance_model_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/utils/sdk/client/python/docs/PosEntryModel.md b/utils/sdk/client/python/docs/PosEntryModel.md new file mode 100644 index 00000000..1d44ec66 --- /dev/null +++ b/utils/sdk/client/python/docs/PosEntryModel.md @@ -0,0 +1,36 @@ +# PosEntryModel + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**amount** | **int** | | [optional] +**g_index** | **int** | | [optional] +**keyimage** | **str** | | [optional] +**block_timestamp** | **int** | | [optional] +**stake_unlock_time** | **int** | | [optional] +**tx_id** | **str** | | [optional] +**tx_out_index** | **int** | | [optional] +**wallet_index** | **int** | | [optional] + +## Example + +```python +from lthn.models.pos_entry_model import PosEntryModel + +# TODO update the JSON string below +json = "{}" +# create an instance of PosEntryModel from a JSON string +pos_entry_model_instance = PosEntryModel.from_json(json) +# print the JSON string representation of the object +print(PosEntryModel.to_json()) + +# convert the object into a dict +pos_entry_model_dict = pos_entry_model_instance.to_dict() +# create an instance of PosEntryModel from a dict +pos_entry_model_from_dict = PosEntryModel.from_dict(pos_entry_model_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/utils/sdk/client/python/docs/SubmitBlockRequestModel.md b/utils/sdk/client/python/docs/SubmitBlockRequestModel.md new file mode 100644 index 00000000..080a29fb --- /dev/null +++ b/utils/sdk/client/python/docs/SubmitBlockRequestModel.md @@ -0,0 +1,29 @@ +# SubmitBlockRequestModel + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**block_blob** | **str** | | [optional] + +## Example + +```python +from lthn.models.submit_block_request_model import SubmitBlockRequestModel + +# TODO update the JSON string below +json = "{}" +# create an instance of SubmitBlockRequestModel from a JSON string +submit_block_request_model_instance = SubmitBlockRequestModel.from_json(json) +# print the JSON string representation of the object +print(SubmitBlockRequestModel.to_json()) + +# convert the object into a dict +submit_block_request_model_dict = submit_block_request_model_instance.to_dict() +# create an instance of SubmitBlockRequestModel from a dict +submit_block_request_model_from_dict = SubmitBlockRequestModel.from_dict(submit_block_request_model_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/utils/sdk/client/python/docs/SubmitBlockResponseModel.md b/utils/sdk/client/python/docs/SubmitBlockResponseModel.md new file mode 100644 index 00000000..b228a9e4 --- /dev/null +++ b/utils/sdk/client/python/docs/SubmitBlockResponseModel.md @@ -0,0 +1,29 @@ +# SubmitBlockResponseModel + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**status** | **str** | | [optional] + +## Example + +```python +from lthn.models.submit_block_response_model import SubmitBlockResponseModel + +# TODO update the JSON string below +json = "{}" +# create an instance of SubmitBlockResponseModel from a JSON string +submit_block_response_model_instance = SubmitBlockResponseModel.from_json(json) +# print the JSON string representation of the object +print(SubmitBlockResponseModel.to_json()) + +# convert the object into a dict +submit_block_response_model_dict = submit_block_response_model_instance.to_dict() +# create an instance of SubmitBlockResponseModel from a dict +submit_block_response_model_from_dict = SubmitBlockResponseModel.from_dict(submit_block_response_model_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/utils/sdk/client/python/docs/TransactionAttachmentModel.md b/utils/sdk/client/python/docs/TransactionAttachmentModel.md new file mode 100644 index 00000000..a07227ee --- /dev/null +++ b/utils/sdk/client/python/docs/TransactionAttachmentModel.md @@ -0,0 +1,31 @@ +# TransactionAttachmentModel + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | [optional] +**short_view** | **str** | | [optional] +**details_view** | **str** | | [optional] + +## Example + +```python +from lthn.models.transaction_attachment_model import TransactionAttachmentModel + +# TODO update the JSON string below +json = "{}" +# create an instance of TransactionAttachmentModel from a JSON string +transaction_attachment_model_instance = TransactionAttachmentModel.from_json(json) +# print the JSON string representation of the object +print(TransactionAttachmentModel.to_json()) + +# convert the object into a dict +transaction_attachment_model_dict = transaction_attachment_model_instance.to_dict() +# create an instance of TransactionAttachmentModel from a dict +transaction_attachment_model_from_dict = TransactionAttachmentModel.from_dict(transaction_attachment_model_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/utils/sdk/client/python/docs/TransactionDetailsModel.md b/utils/sdk/client/python/docs/TransactionDetailsModel.md new file mode 100644 index 00000000..f05703a3 --- /dev/null +++ b/utils/sdk/client/python/docs/TransactionDetailsModel.md @@ -0,0 +1,41 @@ +# TransactionDetailsModel + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**amount** | **int** | | [optional] +**attachments** | [**List[TransactionAttachmentModel]**](TransactionAttachmentModel.md) | | [optional] +**blob** | **str** | | [optional] +**blob_size** | **int** | | [optional] +**extra** | [**List[TransactionExtraModel]**](TransactionExtraModel.md) | | [optional] +**fee** | **int** | | [optional] +**id** | **str** | | [optional] +**ins** | [**List[TransactionInputModel]**](TransactionInputModel.md) | | [optional] +**keeper_block** | **int** | | [optional] +**object_in_json** | **str** | | [optional] +**outs** | [**List[TransactionOutputModel]**](TransactionOutputModel.md) | | [optional] +**pub_key** | **str** | | [optional] +**timestamp** | **int** | | [optional] + +## Example + +```python +from lthn.models.transaction_details_model import TransactionDetailsModel + +# TODO update the JSON string below +json = "{}" +# create an instance of TransactionDetailsModel from a JSON string +transaction_details_model_instance = TransactionDetailsModel.from_json(json) +# print the JSON string representation of the object +print(TransactionDetailsModel.to_json()) + +# convert the object into a dict +transaction_details_model_dict = transaction_details_model_instance.to_dict() +# create an instance of TransactionDetailsModel from a dict +transaction_details_model_from_dict = TransactionDetailsModel.from_dict(transaction_details_model_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/utils/sdk/client/python/docs/TransactionExtraModel.md b/utils/sdk/client/python/docs/TransactionExtraModel.md new file mode 100644 index 00000000..2de532d0 --- /dev/null +++ b/utils/sdk/client/python/docs/TransactionExtraModel.md @@ -0,0 +1,31 @@ +# TransactionExtraModel + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **str** | | [optional] +**short_view** | **str** | | [optional] +**details_view** | **str** | | [optional] + +## Example + +```python +from lthn.models.transaction_extra_model import TransactionExtraModel + +# TODO update the JSON string below +json = "{}" +# create an instance of TransactionExtraModel from a JSON string +transaction_extra_model_instance = TransactionExtraModel.from_json(json) +# print the JSON string representation of the object +print(TransactionExtraModel.to_json()) + +# convert the object into a dict +transaction_extra_model_dict = transaction_extra_model_instance.to_dict() +# create an instance of TransactionExtraModel from a dict +transaction_extra_model_from_dict = TransactionExtraModel.from_dict(transaction_extra_model_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/utils/sdk/client/python/docs/TransactionInputModel.md b/utils/sdk/client/python/docs/TransactionInputModel.md new file mode 100644 index 00000000..7f9ded36 --- /dev/null +++ b/utils/sdk/client/python/docs/TransactionInputModel.md @@ -0,0 +1,33 @@ +# TransactionInputModel + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**amount** | **int** | | [optional] +**global_indexes** | **List[int]** | | [optional] +**htlc_origin** | **str** | | [optional] +**kimage_or_ms_id** | **str** | | [optional] +**multisig_count** | **int** | | [optional] + +## Example + +```python +from lthn.models.transaction_input_model import TransactionInputModel + +# TODO update the JSON string below +json = "{}" +# create an instance of TransactionInputModel from a JSON string +transaction_input_model_instance = TransactionInputModel.from_json(json) +# print the JSON string representation of the object +print(TransactionInputModel.to_json()) + +# convert the object into a dict +transaction_input_model_dict = transaction_input_model_instance.to_dict() +# create an instance of TransactionInputModel from a dict +transaction_input_model_from_dict = TransactionInputModel.from_dict(transaction_input_model_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/utils/sdk/client/python/docs/TransactionOutputModel.md b/utils/sdk/client/python/docs/TransactionOutputModel.md new file mode 100644 index 00000000..325892f4 --- /dev/null +++ b/utils/sdk/client/python/docs/TransactionOutputModel.md @@ -0,0 +1,33 @@ +# TransactionOutputModel + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**amount** | **int** | | [optional] +**global_index** | **int** | | [optional] +**is_spent** | **bool** | | [optional] +**minimum_sigs** | **int** | | [optional] +**pub_keys** | **List[str]** | | [optional] + +## Example + +```python +from lthn.models.transaction_output_model import TransactionOutputModel + +# TODO update the JSON string below +json = "{}" +# create an instance of TransactionOutputModel from a JSON string +transaction_output_model_instance = TransactionOutputModel.from_json(json) +# print the JSON string representation of the object +print(TransactionOutputModel.to_json()) + +# convert the object into a dict +transaction_output_model_dict = transaction_output_model_instance.to_dict() +# create an instance of TransactionOutputModel from a dict +transaction_output_model_from_dict = TransactionOutputModel.from_dict(transaction_output_model_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/utils/sdk/client/python/docs/TxGenerationContextModel.md b/utils/sdk/client/python/docs/TxGenerationContextModel.md new file mode 100644 index 00000000..0d6e61b1 --- /dev/null +++ b/utils/sdk/client/python/docs/TxGenerationContextModel.md @@ -0,0 +1,52 @@ +# TxGenerationContextModel + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**asset_ids** | **List[str]** | | [optional] +**blinded_asset_ids** | **List[str]** | | [optional] +**amount_commitments** | **List[str]** | | [optional] +**asset_id_blinding_masks** | **List[str]** | | [optional] +**amounts** | **List[str]** | | [optional] +**amount_blinding_masks** | **List[str]** | | [optional] +**pseudo_outs_blinded_asset_ids** | **List[str]** | | [optional] +**pseudo_outs_plus_real_out_blinding_masks** | **List[str]** | | [optional] +**real_zc_ins_asset_ids** | **List[str]** | | [optional] +**zc_input_amounts** | **List[int]** | | [optional] +**pseudo_out_amount_commitments_sum** | **str** | | [optional] +**pseudo_out_amount_blinding_masks_sum** | **str** | | [optional] +**real_in_asset_id_blinding_mask_x_amount_sum** | **str** | | [optional] +**amount_commitments_sum** | **str** | | [optional] +**amount_blinding_masks_sum** | **str** | | [optional] +**asset_id_blinding_mask_x_amount_sum** | **str** | | [optional] +**ao_asset_id** | **str** | | [optional] +**ao_asset_id_pt** | **str** | | [optional] +**ao_amount_commitment** | **str** | | [optional] +**ao_amount_blinding_mask** | **str** | | [optional] +**ao_commitment_in_outputs** | **bool** | | [optional] +**tx_key_pub** | **str** | | [optional] +**tx_key_sec** | **str** | | [optional] +**tx_pub_key_p** | **str** | | [optional] + +## Example + +```python +from lthn.models.tx_generation_context_model import TxGenerationContextModel + +# TODO update the JSON string below +json = "{}" +# create an instance of TxGenerationContextModel from a JSON string +tx_generation_context_model_instance = TxGenerationContextModel.from_json(json) +# print the JSON string representation of the object +print(TxGenerationContextModel.to_json()) + +# convert the object into a dict +tx_generation_context_model_dict = tx_generation_context_model_instance.to_dict() +# create an instance of TxGenerationContextModel from a dict +tx_generation_context_model_from_dict = TxGenerationContextModel.from_dict(tx_generation_context_model_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/utils/sdk/client/python/docs/TxPoolPerformanceModel.md b/utils/sdk/client/python/docs/TxPoolPerformanceModel.md new file mode 100644 index 00000000..ee9f0557 --- /dev/null +++ b/utils/sdk/client/python/docs/TxPoolPerformanceModel.md @@ -0,0 +1,39 @@ +# TxPoolPerformanceModel + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**tx_processing_time** | **int** | | [optional] +**check_inputs_types_supported_time** | **int** | | [optional] +**expiration_validate_time** | **int** | | [optional] +**validate_amount_time** | **int** | | [optional] +**validate_alias_time** | **int** | | [optional] +**check_keyimages_ws_ms_time** | **int** | | [optional] +**check_inputs_time** | **int** | | [optional] +**begin_tx_time** | **int** | | [optional] +**update_db_time** | **int** | | [optional] +**db_commit_time** | **int** | | [optional] +**check_post_hf4_balance** | **int** | | [optional] + +## Example + +```python +from lthn.models.tx_pool_performance_model import TxPoolPerformanceModel + +# TODO update the JSON string below +json = "{}" +# create an instance of TxPoolPerformanceModel from a JSON string +tx_pool_performance_model_instance = TxPoolPerformanceModel.from_json(json) +# print the JSON string representation of the object +print(TxPoolPerformanceModel.to_json()) + +# convert the object into a dict +tx_pool_performance_model_dict = tx_pool_performance_model_instance.to_dict() +# create an instance of TxPoolPerformanceModel from a dict +tx_pool_performance_model_from_dict = TxPoolPerformanceModel.from_dict(tx_pool_performance_model_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/utils/sdk/client/python/docs/TxProcessingPerformanceModel.md b/utils/sdk/client/python/docs/TxProcessingPerformanceModel.md new file mode 100644 index 00000000..386fdf22 --- /dev/null +++ b/utils/sdk/client/python/docs/TxProcessingPerformanceModel.md @@ -0,0 +1,53 @@ +# TxProcessingPerformanceModel + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**tx_check_inputs** | **int** | | [optional] +**tx_add_one_tx** | **int** | | [optional] +**tx_process_extra** | **int** | | [optional] +**tx_process_attachment** | **int** | | [optional] +**tx_process_inputs** | **int** | | [optional] +**tx_push_global_index** | **int** | | [optional] +**tx_check_exist** | **int** | | [optional] +**tx_print_log** | **int** | | [optional] +**tx_prapare_append** | **int** | | [optional] +**tx_append** | **int** | | [optional] +**tx_append_rl_wait** | **int** | | [optional] +**tx_append_is_expired** | **int** | | [optional] +**tx_store_db** | **int** | | [optional] +**tx_check_inputs_prefix_hash** | **int** | | [optional] +**tx_check_inputs_attachment_check** | **int** | | [optional] +**tx_check_inputs_loop** | **int** | | [optional] +**tx_check_inputs_loop_kimage_check** | **int** | | [optional] +**tx_check_inputs_loop_ch_in_val_sig** | **int** | | [optional] +**tx_check_inputs_loop_scan_outputkeys_get_item_size** | **int** | | [optional] +**tx_check_inputs_loop_scan_outputkeys_relative_to_absolute** | **int** | | [optional] +**tx_check_inputs_loop_scan_outputkeys_loop** | **int** | | [optional] +**tx_check_inputs_loop_scan_outputkeys_loop_get_subitem** | **int** | | [optional] +**tx_check_inputs_loop_scan_outputkeys_loop_find_tx** | **int** | | [optional] +**tx_check_inputs_loop_scan_outputkeys_loop_handle_output** | **int** | | [optional] +**tx_mixin_count** | **int** | | [optional] + +## Example + +```python +from lthn.models.tx_processing_performance_model import TxProcessingPerformanceModel + +# TODO update the JSON string below +json = "{}" +# create an instance of TxProcessingPerformanceModel from a JSON string +tx_processing_performance_model_instance = TxProcessingPerformanceModel.from_json(json) +# print the JSON string representation of the object +print(TxProcessingPerformanceModel.to_json()) + +# convert the object into a dict +tx_processing_performance_model_dict = tx_processing_performance_model_instance.to_dict() +# create an instance of TxProcessingPerformanceModel from a dict +tx_processing_performance_model_from_dict = TxProcessingPerformanceModel.from_dict(tx_processing_performance_model_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/utils/sdk/client/python/docs/VersionModel.md b/utils/sdk/client/python/docs/VersionModel.md new file mode 100644 index 00000000..89d6bb7a --- /dev/null +++ b/utils/sdk/client/python/docs/VersionModel.md @@ -0,0 +1,33 @@ +# VersionModel + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**version** | **str** | | [optional] +**version_long** | **str** | | [optional] +**major** | **str** | | [optional] +**minor** | **str** | | [optional] +**revision** | **str** | | [optional] + +## Example + +```python +from lthn.models.version_model import VersionModel + +# TODO update the JSON string below +json = "{}" +# create an instance of VersionModel from a JSON string +version_model_instance = VersionModel.from_json(json) +# print the JSON string representation of the object +print(VersionModel.to_json()) + +# convert the object into a dict +version_model_dict = version_model_instance.to_dict() +# create an instance of VersionModel from a dict +version_model_from_dict = VersionModel.from_dict(version_model_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/utils/sdk/client/python/lthn/__init__.py b/utils/sdk/client/python/lthn/__init__.py new file mode 100644 index 00000000..119c753c --- /dev/null +++ b/utils/sdk/client/python/lthn/__init__.py @@ -0,0 +1,92 @@ +# coding: utf-8 + +# flake8: noqa + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +__version__ = "1.0.0" + +# Define package exports +__all__ = [ + "BlockApi", + "InfoApi", + "ApiResponse", + "ApiClient", + "Configuration", + "OpenApiException", + "ApiTypeError", + "ApiValueError", + "ApiKeyError", + "ApiAttributeError", + "ApiException", + "BlockDetailsModel", + "BlockProcessingPerformanceModel", + "BlockTemplateModel", + "BlockTemplateRequestModel", + "DbStatInfoModel", + "HeightModel", + "InfoModel", + "MaintainersInfoModel", + "PerformanceModel", + "PosEntryModel", + "SubmitBlockRequestModel", + "SubmitBlockResponseModel", + "TransactionAttachmentModel", + "TransactionDetailsModel", + "TransactionExtraModel", + "TransactionInputModel", + "TransactionOutputModel", + "TxGenerationContextModel", + "TxPoolPerformanceModel", + "TxProcessingPerformanceModel", + "VersionModel", +] + +# import apis into sdk package +from lthn.api.block_api import BlockApi as BlockApi +from lthn.api.info_api import InfoApi as InfoApi + +# import ApiClient +from lthn.api_response import ApiResponse as ApiResponse +from lthn.api_client import ApiClient as ApiClient +from lthn.configuration import Configuration as Configuration +from lthn.exceptions import OpenApiException as OpenApiException +from lthn.exceptions import ApiTypeError as ApiTypeError +from lthn.exceptions import ApiValueError as ApiValueError +from lthn.exceptions import ApiKeyError as ApiKeyError +from lthn.exceptions import ApiAttributeError as ApiAttributeError +from lthn.exceptions import ApiException as ApiException + +# import models into sdk package +from lthn.models.block_details_model import BlockDetailsModel as BlockDetailsModel +from lthn.models.block_processing_performance_model import BlockProcessingPerformanceModel as BlockProcessingPerformanceModel +from lthn.models.block_template_model import BlockTemplateModel as BlockTemplateModel +from lthn.models.block_template_request_model import BlockTemplateRequestModel as BlockTemplateRequestModel +from lthn.models.db_stat_info_model import DbStatInfoModel as DbStatInfoModel +from lthn.models.height_model import HeightModel as HeightModel +from lthn.models.info_model import InfoModel as InfoModel +from lthn.models.maintainers_info_model import MaintainersInfoModel as MaintainersInfoModel +from lthn.models.performance_model import PerformanceModel as PerformanceModel +from lthn.models.pos_entry_model import PosEntryModel as PosEntryModel +from lthn.models.submit_block_request_model import SubmitBlockRequestModel as SubmitBlockRequestModel +from lthn.models.submit_block_response_model import SubmitBlockResponseModel as SubmitBlockResponseModel +from lthn.models.transaction_attachment_model import TransactionAttachmentModel as TransactionAttachmentModel +from lthn.models.transaction_details_model import TransactionDetailsModel as TransactionDetailsModel +from lthn.models.transaction_extra_model import TransactionExtraModel as TransactionExtraModel +from lthn.models.transaction_input_model import TransactionInputModel as TransactionInputModel +from lthn.models.transaction_output_model import TransactionOutputModel as TransactionOutputModel +from lthn.models.tx_generation_context_model import TxGenerationContextModel as TxGenerationContextModel +from lthn.models.tx_pool_performance_model import TxPoolPerformanceModel as TxPoolPerformanceModel +from lthn.models.tx_processing_performance_model import TxProcessingPerformanceModel as TxProcessingPerformanceModel +from lthn.models.version_model import VersionModel as VersionModel + diff --git a/utils/sdk/client/python/lthn/api/__init__.py b/utils/sdk/client/python/lthn/api/__init__.py new file mode 100644 index 00000000..cfff57cd --- /dev/null +++ b/utils/sdk/client/python/lthn/api/__init__.py @@ -0,0 +1,6 @@ +# flake8: noqa + +# import apis into api package +from lthn.api.block_api import BlockApi +from lthn.api.info_api import InfoApi + diff --git a/utils/sdk/client/python/lthn/api/block_api.py b/utils/sdk/client/python/lthn/api/block_api.py new file mode 100644 index 00000000..117357c0 --- /dev/null +++ b/utils/sdk/client/python/lthn/api/block_api.py @@ -0,0 +1,1349 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from pydantic import Field, StrictStr +from typing import List +from typing_extensions import Annotated +from lthn.models.block_details_model import BlockDetailsModel +from lthn.models.block_template_model import BlockTemplateModel +from lthn.models.block_template_request_model import BlockTemplateRequestModel +from lthn.models.height_model import HeightModel +from lthn.models.submit_block_request_model import SubmitBlockRequestModel +from lthn.models.submit_block_response_model import SubmitBlockResponseModel + +from lthn.api_client import ApiClient, RequestSerialized +from lthn.api_response import ApiResponse +from lthn.rest import RESTResponseType + + +class BlockApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + + @validate_call + def create_block_template( + self, + block_template_request_model: BlockTemplateRequestModel, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> BlockTemplateModel: + """Create a block template for mining + + + :param block_template_request_model: (required) + :type block_template_request_model: BlockTemplateRequestModel + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_block_template_serialize( + block_template_request_model=block_template_request_model, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '500': None, + '400': None, + '200': "BlockTemplateModel", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + + @validate_call + def create_block_template_with_http_info( + self, + block_template_request_model: BlockTemplateRequestModel, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[BlockTemplateModel]: + """Create a block template for mining + + + :param block_template_request_model: (required) + :type block_template_request_model: BlockTemplateRequestModel + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_block_template_serialize( + block_template_request_model=block_template_request_model, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '500': None, + '400': None, + '200': "BlockTemplateModel", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + + @validate_call + def create_block_template_without_preload_content( + self, + block_template_request_model: BlockTemplateRequestModel, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create a block template for mining + + + :param block_template_request_model: (required) + :type block_template_request_model: BlockTemplateRequestModel + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_block_template_serialize( + block_template_request_model=block_template_request_model, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '500': None, + '400': None, + '200': "BlockTemplateModel", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + return response_data.response + + + def _create_block_template_serialize( + self, + block_template_request_model, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if block_template_request_model is not None: + _body_params = block_template_request_model + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/block/template', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + def get_block( + self, + identifier: Annotated[StrictStr, Field(description="The hash (hex string) or height (integer) of the block to retrieve.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> BlockDetailsModel: + """Get a block by its hash or height (ID) + + + :param identifier: The hash (hex string) or height (integer) of the block to retrieve. (required) + :type identifier: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_block_serialize( + identifier=identifier, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '404': None, + '400': None, + '200': "BlockDetailsModel", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + + @validate_call + def get_block_with_http_info( + self, + identifier: Annotated[StrictStr, Field(description="The hash (hex string) or height (integer) of the block to retrieve.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[BlockDetailsModel]: + """Get a block by its hash or height (ID) + + + :param identifier: The hash (hex string) or height (integer) of the block to retrieve. (required) + :type identifier: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_block_serialize( + identifier=identifier, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '404': None, + '400': None, + '200': "BlockDetailsModel", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + + @validate_call + def get_block_without_preload_content( + self, + identifier: Annotated[StrictStr, Field(description="The hash (hex string) or height (integer) of the block to retrieve.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get a block by its hash or height (ID) + + + :param identifier: The hash (hex string) or height (integer) of the block to retrieve. (required) + :type identifier: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_block_serialize( + identifier=identifier, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '404': None, + '400': None, + '200': "BlockDetailsModel", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + return response_data.response + + + def _get_block_serialize( + self, + identifier, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if identifier is not None: + _path_params['identifier'] = identifier + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/block/{identifier}', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + def get_blocks( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> List[BlockDetailsModel]: + """Get one or more blocks, with optional pagination. + + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_blocks_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '404': None, + '400': None, + '200': "List[BlockDetailsModel]", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + + @validate_call + def get_blocks_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[List[BlockDetailsModel]]: + """Get one or more blocks, with optional pagination. + + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_blocks_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '404': None, + '400': None, + '200': "List[BlockDetailsModel]", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + + @validate_call + def get_blocks_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get one or more blocks, with optional pagination. + + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_blocks_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '404': None, + '400': None, + '200': "List[BlockDetailsModel]", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + return response_data.response + + + def _get_blocks_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/block', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + def get_height( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> HeightModel: + """Get the current blockchain height + + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_height_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "HeightModel", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + + @validate_call + def get_height_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[HeightModel]: + """Get the current blockchain height + + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_height_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "HeightModel", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + + @validate_call + def get_height_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get the current blockchain height + + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_height_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "HeightModel", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + return response_data.response + + + def _get_height_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/block/height', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + def submit_block( + self, + submit_block_request_model: SubmitBlockRequestModel, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> SubmitBlockResponseModel: + """Submit a new block to the network + + + :param submit_block_request_model: (required) + :type submit_block_request_model: SubmitBlockRequestModel + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._submit_block_serialize( + submit_block_request_model=submit_block_request_model, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '406': None, + '400': None, + '200': "SubmitBlockResponseModel", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + + @validate_call + def submit_block_with_http_info( + self, + submit_block_request_model: SubmitBlockRequestModel, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[SubmitBlockResponseModel]: + """Submit a new block to the network + + + :param submit_block_request_model: (required) + :type submit_block_request_model: SubmitBlockRequestModel + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._submit_block_serialize( + submit_block_request_model=submit_block_request_model, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '406': None, + '400': None, + '200': "SubmitBlockResponseModel", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + + @validate_call + def submit_block_without_preload_content( + self, + submit_block_request_model: SubmitBlockRequestModel, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Submit a new block to the network + + + :param submit_block_request_model: (required) + :type submit_block_request_model: SubmitBlockRequestModel + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._submit_block_serialize( + submit_block_request_model=submit_block_request_model, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '406': None, + '400': None, + '200': "SubmitBlockResponseModel", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + return response_data.response + + + def _submit_block_serialize( + self, + submit_block_request_model, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if submit_block_request_model is not None: + _body_params = submit_block_request_model + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/block/submit', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + diff --git a/utils/sdk/client/python/lthn/api/info_api.py b/utils/sdk/client/python/lthn/api/info_api.py new file mode 100644 index 00000000..32c9fb0d --- /dev/null +++ b/utils/sdk/client/python/lthn/api/info_api.py @@ -0,0 +1,544 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from pydantic import Field, StrictStr +from typing import Optional +from typing_extensions import Annotated +from lthn.models.info_model import InfoModel +from lthn.models.version_model import VersionModel + +from lthn.api_client import ApiClient, RequestSerialized +from lthn.api_response import ApiResponse +from lthn.rest import RESTResponseType + + +class InfoApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + + @validate_call + def get_info( + self, + flags: Annotated[Optional[StrictStr], Field(description="Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median.")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> InfoModel: + """Get detailed information about the blockchain and daemon state + + + :param flags: Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median. + :type flags: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_info_serialize( + flags=flags, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "InfoModel", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + + @validate_call + def get_info_with_http_info( + self, + flags: Annotated[Optional[StrictStr], Field(description="Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median.")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[InfoModel]: + """Get detailed information about the blockchain and daemon state + + + :param flags: Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median. + :type flags: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_info_serialize( + flags=flags, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "InfoModel", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + + @validate_call + def get_info_without_preload_content( + self, + flags: Annotated[Optional[StrictStr], Field(description="Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median.")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get detailed information about the blockchain and daemon state + + + :param flags: Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median. + :type flags: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_info_serialize( + flags=flags, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "InfoModel", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + return response_data.response + + + def _get_info_serialize( + self, + flags, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if flags is not None: + + _query_params.append(('flags', flags)) + + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/info', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + def version( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> VersionModel: + """Get API version + + Returns the current version of the API. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._version_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "VersionModel", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + + @validate_call + def version_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[VersionModel]: + """Get API version + + Returns the current version of the API. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._version_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "VersionModel", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + + @validate_call + def version_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get API version + + Returns the current version of the API. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._version_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "VersionModel", + } + response_data = self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + return response_data.response + + + def _version_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/info/version', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + diff --git a/utils/sdk/client/python/lthn/api_client.py b/utils/sdk/client/python/lthn/api_client.py new file mode 100644 index 00000000..35986ff7 --- /dev/null +++ b/utils/sdk/client/python/lthn/api_client.py @@ -0,0 +1,804 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import datetime +from dateutil.parser import parse +from enum import Enum +import decimal +import json +import mimetypes +import os +import re +import tempfile +import uuid + +from urllib.parse import quote +from typing import Tuple, Optional, List, Dict, Union +from pydantic import SecretStr + +from lthn.configuration import Configuration +from lthn.api_response import ApiResponse, T as ApiResponseT +import lthn.models +from lthn import rest +from lthn.exceptions import ( + ApiValueError, + ApiException, + BadRequestException, + UnauthorizedException, + ForbiddenException, + NotFoundException, + ServiceException +) + +RequestSerialized = Tuple[str, str, Dict[str, str], Optional[str], List[str]] + +class ApiClient: + """Generic API client for OpenAPI client library builds. + + OpenAPI generic API client. This client handles the client- + server communication, and is invariant across implementations. Specifics of + the methods and models for each application are generated from the OpenAPI + templates. + + :param configuration: .Configuration object for this client + :param header_name: a header to pass when making calls to the API. + :param header_value: a header value to pass when making calls to + the API. + :param cookie: a cookie to include in the header when making calls + to the API + """ + + PRIMITIVE_TYPES = (float, bool, bytes, str, int) + NATIVE_TYPES_MAPPING = { + 'int': int, + 'long': int, # TODO remove as only py3 is supported? + 'float': float, + 'str': str, + 'bool': bool, + 'date': datetime.date, + 'datetime': datetime.datetime, + 'decimal': decimal.Decimal, + 'object': object, + } + _pool = None + + def __init__( + self, + configuration=None, + header_name=None, + header_value=None, + cookie=None + ) -> None: + # use default configuration if none is provided + if configuration is None: + configuration = Configuration.get_default() + self.configuration = configuration + + self.rest_client = rest.RESTClientObject(configuration) + self.default_headers = {} + if header_name is not None: + self.default_headers[header_name] = header_value + self.cookie = cookie + # Set default User-Agent. + self.user_agent = 'OpenAPI-Generator/1.0.0/python' + self.client_side_validation = configuration.client_side_validation + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + pass + + @property + def user_agent(self): + """User agent for this API client""" + return self.default_headers['User-Agent'] + + @user_agent.setter + def user_agent(self, value): + self.default_headers['User-Agent'] = value + + def set_default_header(self, header_name, header_value): + self.default_headers[header_name] = header_value + + + _default = None + + @classmethod + def get_default(cls): + """Return new instance of ApiClient. + + This method returns newly created, based on default constructor, + object of ApiClient class or returns a copy of default + ApiClient. + + :return: The ApiClient object. + """ + if cls._default is None: + cls._default = ApiClient() + return cls._default + + @classmethod + def set_default(cls, default): + """Set default instance of ApiClient. + + It stores default ApiClient. + + :param default: object of ApiClient. + """ + cls._default = default + + def param_serialize( + self, + method, + resource_path, + path_params=None, + query_params=None, + header_params=None, + body=None, + post_params=None, + files=None, auth_settings=None, + collection_formats=None, + _host=None, + _request_auth=None + ) -> RequestSerialized: + + """Builds the HTTP request params needed by the request. + :param method: Method to call. + :param resource_path: Path to method endpoint. + :param path_params: Path parameters in the url. + :param query_params: Query parameters in the url. + :param header_params: Header parameters to be + placed in the request header. + :param body: Request body. + :param post_params dict: Request post form parameters, + for `application/x-www-form-urlencoded`, `multipart/form-data`. + :param auth_settings list: Auth Settings names for the request. + :param files dict: key -> filename, value -> filepath, + for `multipart/form-data`. + :param collection_formats: dict of collection formats for path, query, + header, and post parameters. + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the authentication + in the spec for a single request. + :return: tuple of form (path, http_method, query_params, header_params, + body, post_params, files) + """ + + config = self.configuration + + # header parameters + header_params = header_params or {} + header_params.update(self.default_headers) + if self.cookie: + header_params['Cookie'] = self.cookie + if header_params: + header_params = self.sanitize_for_serialization(header_params) + header_params = dict( + self.parameters_to_tuples(header_params,collection_formats) + ) + + # path parameters + if path_params: + path_params = self.sanitize_for_serialization(path_params) + path_params = self.parameters_to_tuples( + path_params, + collection_formats + ) + for k, v in path_params: + # specified safe chars, encode everything + resource_path = resource_path.replace( + '{%s}' % k, + quote(str(v), safe=config.safe_chars_for_path_param) + ) + + # post parameters + if post_params or files: + post_params = post_params if post_params else [] + post_params = self.sanitize_for_serialization(post_params) + post_params = self.parameters_to_tuples( + post_params, + collection_formats + ) + if files: + post_params.extend(self.files_parameters(files)) + + # auth setting + self.update_params_for_auth( + header_params, + query_params, + auth_settings, + resource_path, + method, + body, + request_auth=_request_auth + ) + + # body + if body: + body = self.sanitize_for_serialization(body) + + # request url + if _host is None or self.configuration.ignore_operation_servers: + url = self.configuration.host + resource_path + else: + # use server/host defined in path or operation instead + url = _host + resource_path + + # query parameters + if query_params: + query_params = self.sanitize_for_serialization(query_params) + url_query = self.parameters_to_url_query( + query_params, + collection_formats + ) + url += "?" + url_query + + return method, url, header_params, body, post_params + + + def call_api( + self, + method, + url, + header_params=None, + body=None, + post_params=None, + _request_timeout=None + ) -> rest.RESTResponse: + """Makes the HTTP request (synchronous) + :param method: Method to call. + :param url: Path to method endpoint. + :param header_params: Header parameters to be + placed in the request header. + :param body: Request body. + :param post_params dict: Request post form parameters, + for `application/x-www-form-urlencoded`, `multipart/form-data`. + :param _request_timeout: timeout setting for this request. + :return: RESTResponse + """ + + try: + # perform request and return response + response_data = self.rest_client.request( + method, url, + headers=header_params, + body=body, post_params=post_params, + _request_timeout=_request_timeout + ) + + except ApiException as e: + raise e + + return response_data + + def response_deserialize( + self, + response_data: rest.RESTResponse, + response_types_map: Optional[Dict[str, ApiResponseT]]=None + ) -> ApiResponse[ApiResponseT]: + """Deserializes response into an object. + :param response_data: RESTResponse object to be deserialized. + :param response_types_map: dict of response types. + :return: ApiResponse + """ + + msg = "RESTResponse.read() must be called before passing it to response_deserialize()" + assert response_data.data is not None, msg + + response_type = response_types_map.get(str(response_data.status), None) + if not response_type and isinstance(response_data.status, int) and 100 <= response_data.status <= 599: + # if not found, look for '1XX', '2XX', etc. + response_type = response_types_map.get(str(response_data.status)[0] + "XX", None) + + # deserialize response data + response_text = None + return_data = None + try: + if response_type == "bytearray": + return_data = response_data.data + elif response_type == "file": + return_data = self.__deserialize_file(response_data) + elif response_type is not None: + match = None + content_type = response_data.getheader('content-type') + if content_type is not None: + match = re.search(r"charset=([a-zA-Z\-\d]+)[\s;]?", content_type) + encoding = match.group(1) if match else "utf-8" + response_text = response_data.data.decode(encoding) + return_data = self.deserialize(response_text, response_type, content_type) + finally: + if not 200 <= response_data.status <= 299: + raise ApiException.from_response( + http_resp=response_data, + body=response_text, + data=return_data, + ) + + return ApiResponse( + status_code = response_data.status, + data = return_data, + headers = response_data.getheaders(), + raw_data = response_data.data + ) + + def sanitize_for_serialization(self, obj): + """Builds a JSON POST object. + + If obj is None, return None. + If obj is SecretStr, return obj.get_secret_value() + If obj is str, int, long, float, bool, return directly. + If obj is datetime.datetime, datetime.date + convert to string in iso8601 format. + If obj is decimal.Decimal return string representation. + If obj is list, sanitize each element in the list. + If obj is dict, return the dict. + If obj is OpenAPI model, return the properties dict. + + :param obj: The data to serialize. + :return: The serialized form of data. + """ + if obj is None: + return None + elif isinstance(obj, Enum): + return obj.value + elif isinstance(obj, SecretStr): + return obj.get_secret_value() + elif isinstance(obj, self.PRIMITIVE_TYPES): + return obj + elif isinstance(obj, uuid.UUID): + return str(obj) + elif isinstance(obj, list): + return [ + self.sanitize_for_serialization(sub_obj) for sub_obj in obj + ] + elif isinstance(obj, tuple): + return tuple( + self.sanitize_for_serialization(sub_obj) for sub_obj in obj + ) + elif isinstance(obj, (datetime.datetime, datetime.date)): + return obj.isoformat() + elif isinstance(obj, decimal.Decimal): + return str(obj) + + elif isinstance(obj, dict): + obj_dict = obj + else: + # Convert model obj to dict except + # attributes `openapi_types`, `attribute_map` + # and attributes which value is not None. + # Convert attribute name to json key in + # model definition for request. + if hasattr(obj, 'to_dict') and callable(getattr(obj, 'to_dict')): + obj_dict = obj.to_dict() + else: + obj_dict = obj.__dict__ + + if isinstance(obj_dict, list): + # here we handle instances that can either be a list or something else, and only became a real list by calling to_dict() + return self.sanitize_for_serialization(obj_dict) + + return { + key: self.sanitize_for_serialization(val) + for key, val in obj_dict.items() + } + + def deserialize(self, response_text: str, response_type: str, content_type: Optional[str]): + """Deserializes response into an object. + + :param response: RESTResponse object to be deserialized. + :param response_type: class literal for + deserialized object, or string of class name. + :param content_type: content type of response. + + :return: deserialized object. + """ + + # fetch data from response object + if content_type is None: + try: + data = json.loads(response_text) + except ValueError: + data = response_text + elif re.match(r'^application/(json|[\w!#$&.+\-^_]+\+json)\s*(;|$)', content_type, re.IGNORECASE): + if response_text == "": + data = "" + else: + data = json.loads(response_text) + elif re.match(r'^text\/[a-z.+-]+\s*(;|$)', content_type, re.IGNORECASE): + data = response_text + else: + raise ApiException( + status=0, + reason="Unsupported content type: {0}".format(content_type) + ) + + return self.__deserialize(data, response_type) + + def __deserialize(self, data, klass): + """Deserializes dict, list, str into an object. + + :param data: dict, list or str. + :param klass: class literal, or string of class name. + + :return: object. + """ + if data is None: + return None + + if isinstance(klass, str): + if klass.startswith('List['): + m = re.match(r'List\[(.*)]', klass) + assert m is not None, "Malformed List type definition" + sub_kls = m.group(1) + return [self.__deserialize(sub_data, sub_kls) + for sub_data in data] + + if klass.startswith('Dict['): + m = re.match(r'Dict\[([^,]*), (.*)]', klass) + assert m is not None, "Malformed Dict type definition" + sub_kls = m.group(2) + return {k: self.__deserialize(v, sub_kls) + for k, v in data.items()} + + # convert str to class + if klass in self.NATIVE_TYPES_MAPPING: + klass = self.NATIVE_TYPES_MAPPING[klass] + else: + klass = getattr(lthn.models, klass) + + if klass in self.PRIMITIVE_TYPES: + return self.__deserialize_primitive(data, klass) + elif klass is object: + return self.__deserialize_object(data) + elif klass is datetime.date: + return self.__deserialize_date(data) + elif klass is datetime.datetime: + return self.__deserialize_datetime(data) + elif klass is decimal.Decimal: + return decimal.Decimal(data) + elif issubclass(klass, Enum): + return self.__deserialize_enum(data, klass) + else: + return self.__deserialize_model(data, klass) + + def parameters_to_tuples(self, params, collection_formats): + """Get parameters as list of tuples, formatting collections. + + :param params: Parameters as dict or list of two-tuples + :param dict collection_formats: Parameter collection formats + :return: Parameters as list of tuples, collections formatted + """ + new_params: List[Tuple[str, str]] = [] + if collection_formats is None: + collection_formats = {} + for k, v in params.items() if isinstance(params, dict) else params: + if k in collection_formats: + collection_format = collection_formats[k] + if collection_format == 'multi': + new_params.extend((k, value) for value in v) + else: + if collection_format == 'ssv': + delimiter = ' ' + elif collection_format == 'tsv': + delimiter = '\t' + elif collection_format == 'pipes': + delimiter = '|' + else: # csv is the default + delimiter = ',' + new_params.append( + (k, delimiter.join(str(value) for value in v))) + else: + new_params.append((k, v)) + return new_params + + def parameters_to_url_query(self, params, collection_formats): + """Get parameters as list of tuples, formatting collections. + + :param params: Parameters as dict or list of two-tuples + :param dict collection_formats: Parameter collection formats + :return: URL query string (e.g. a=Hello%20World&b=123) + """ + new_params: List[Tuple[str, str]] = [] + if collection_formats is None: + collection_formats = {} + for k, v in params.items() if isinstance(params, dict) else params: + if isinstance(v, bool): + v = str(v).lower() + if isinstance(v, (int, float)): + v = str(v) + if isinstance(v, dict): + v = json.dumps(v) + + if k in collection_formats: + collection_format = collection_formats[k] + if collection_format == 'multi': + new_params.extend((k, quote(str(value))) for value in v) + else: + if collection_format == 'ssv': + delimiter = ' ' + elif collection_format == 'tsv': + delimiter = '\t' + elif collection_format == 'pipes': + delimiter = '|' + else: # csv is the default + delimiter = ',' + new_params.append( + (k, delimiter.join(quote(str(value)) for value in v)) + ) + else: + new_params.append((k, quote(str(v)))) + + return "&".join(["=".join(map(str, item)) for item in new_params]) + + def files_parameters( + self, + files: Dict[str, Union[str, bytes, List[str], List[bytes], Tuple[str, bytes]]], + ): + """Builds form parameters. + + :param files: File parameters. + :return: Form parameters with files. + """ + params = [] + for k, v in files.items(): + if isinstance(v, str): + with open(v, 'rb') as f: + filename = os.path.basename(f.name) + filedata = f.read() + elif isinstance(v, bytes): + filename = k + filedata = v + elif isinstance(v, tuple): + filename, filedata = v + elif isinstance(v, list): + for file_param in v: + params.extend(self.files_parameters({k: file_param})) + continue + else: + raise ValueError("Unsupported file value") + mimetype = ( + mimetypes.guess_type(filename)[0] + or 'application/octet-stream' + ) + params.append( + tuple([k, tuple([filename, filedata, mimetype])]) + ) + return params + + def select_header_accept(self, accepts: List[str]) -> Optional[str]: + """Returns `Accept` based on an array of accepts provided. + + :param accepts: List of headers. + :return: Accept (e.g. application/json). + """ + if not accepts: + return None + + for accept in accepts: + if re.search('json', accept, re.IGNORECASE): + return accept + + return accepts[0] + + def select_header_content_type(self, content_types): + """Returns `Content-Type` based on an array of content_types provided. + + :param content_types: List of content-types. + :return: Content-Type (e.g. application/json). + """ + if not content_types: + return None + + for content_type in content_types: + if re.search('json', content_type, re.IGNORECASE): + return content_type + + return content_types[0] + + def update_params_for_auth( + self, + headers, + queries, + auth_settings, + resource_path, + method, + body, + request_auth=None + ) -> None: + """Updates header and query params based on authentication setting. + + :param headers: Header parameters dict to be updated. + :param queries: Query parameters tuple list to be updated. + :param auth_settings: Authentication setting identifiers list. + :resource_path: A string representation of the HTTP request resource path. + :method: A string representation of the HTTP request method. + :body: A object representing the body of the HTTP request. + The object type is the return value of sanitize_for_serialization(). + :param request_auth: if set, the provided settings will + override the token in the configuration. + """ + if not auth_settings: + return + + if request_auth: + self._apply_auth_params( + headers, + queries, + resource_path, + method, + body, + request_auth + ) + else: + for auth in auth_settings: + auth_setting = self.configuration.auth_settings().get(auth) + if auth_setting: + self._apply_auth_params( + headers, + queries, + resource_path, + method, + body, + auth_setting + ) + + def _apply_auth_params( + self, + headers, + queries, + resource_path, + method, + body, + auth_setting + ) -> None: + """Updates the request parameters based on a single auth_setting + + :param headers: Header parameters dict to be updated. + :param queries: Query parameters tuple list to be updated. + :resource_path: A string representation of the HTTP request resource path. + :method: A string representation of the HTTP request method. + :body: A object representing the body of the HTTP request. + The object type is the return value of sanitize_for_serialization(). + :param auth_setting: auth settings for the endpoint + """ + if auth_setting['in'] == 'cookie': + headers['Cookie'] = auth_setting['value'] + elif auth_setting['in'] == 'header': + if auth_setting['type'] != 'http-signature': + headers[auth_setting['key']] = auth_setting['value'] + elif auth_setting['in'] == 'query': + queries.append((auth_setting['key'], auth_setting['value'])) + else: + raise ApiValueError( + 'Authentication token must be in `query` or `header`' + ) + + def __deserialize_file(self, response): + """Deserializes body to file + + Saves response body into a file in a temporary folder, + using the filename from the `Content-Disposition` header if provided. + + handle file downloading + save response body into a tmp file and return the instance + + :param response: RESTResponse. + :return: file path. + """ + fd, path = tempfile.mkstemp(dir=self.configuration.temp_folder_path) + os.close(fd) + os.remove(path) + + content_disposition = response.getheader("Content-Disposition") + if content_disposition: + m = re.search( + r'filename=[\'"]?([^\'"\s]+)[\'"]?', + content_disposition + ) + assert m is not None, "Unexpected 'content-disposition' header value" + filename = m.group(1) + path = os.path.join(os.path.dirname(path), filename) + + with open(path, "wb") as f: + f.write(response.data) + + return path + + def __deserialize_primitive(self, data, klass): + """Deserializes string to primitive type. + + :param data: str. + :param klass: class literal. + + :return: int, long, float, str, bool. + """ + try: + return klass(data) + except UnicodeEncodeError: + return str(data) + except TypeError: + return data + + def __deserialize_object(self, value): + """Return an original value. + + :return: object. + """ + return value + + def __deserialize_date(self, string): + """Deserializes string to date. + + :param string: str. + :return: date. + """ + try: + return parse(string).date() + except ImportError: + return string + except ValueError: + raise rest.ApiException( + status=0, + reason="Failed to parse `{0}` as date object".format(string) + ) + + def __deserialize_datetime(self, string): + """Deserializes string to datetime. + + The string should be in iso8601 datetime format. + + :param string: str. + :return: datetime. + """ + try: + return parse(string) + except ImportError: + return string + except ValueError: + raise rest.ApiException( + status=0, + reason=( + "Failed to parse `{0}` as datetime object" + .format(string) + ) + ) + + def __deserialize_enum(self, data, klass): + """Deserializes primitive type to enum. + + :param data: primitive type. + :param klass: class literal. + :return: enum value. + """ + try: + return klass(data) + except ValueError: + raise rest.ApiException( + status=0, + reason=( + "Failed to parse `{0}` as `{1}`" + .format(data, klass) + ) + ) + + def __deserialize_model(self, data, klass): + """Deserializes list or dict to model. + + :param data: dict, list. + :param klass: class literal. + :return: model object. + """ + + return klass.from_dict(data) diff --git a/utils/sdk/client/python/lthn/api_response.py b/utils/sdk/client/python/lthn/api_response.py new file mode 100644 index 00000000..9bc7c11f --- /dev/null +++ b/utils/sdk/client/python/lthn/api_response.py @@ -0,0 +1,21 @@ +"""API response object.""" + +from __future__ import annotations +from typing import Optional, Generic, Mapping, TypeVar +from pydantic import Field, StrictInt, StrictBytes, BaseModel + +T = TypeVar("T") + +class ApiResponse(BaseModel, Generic[T]): + """ + API response object + """ + + status_code: StrictInt = Field(description="HTTP status code") + headers: Optional[Mapping[str, str]] = Field(None, description="HTTP headers") + data: T = Field(description="Deserialized data given the data type") + raw_data: StrictBytes = Field(description="Raw data (HTTP response body)") + + model_config = { + "arbitrary_types_allowed": True + } diff --git a/utils/sdk/client/python/lthn/configuration.py b/utils/sdk/client/python/lthn/configuration.py new file mode 100644 index 00000000..f4affa02 --- /dev/null +++ b/utils/sdk/client/python/lthn/configuration.py @@ -0,0 +1,576 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import copy +import http.client as httplib +import logging +from logging import FileHandler +import multiprocessing +import sys +from typing import Any, ClassVar, Dict, List, Literal, Optional, TypedDict, Union +from typing_extensions import NotRequired, Self + +import urllib3 + + +JSON_SCHEMA_VALIDATION_KEYWORDS = { + 'multipleOf', 'maximum', 'exclusiveMaximum', + 'minimum', 'exclusiveMinimum', 'maxLength', + 'minLength', 'pattern', 'maxItems', 'minItems' +} + +ServerVariablesT = Dict[str, str] + +GenericAuthSetting = TypedDict( + "GenericAuthSetting", + { + "type": str, + "in": str, + "key": str, + "value": str, + }, +) + + +OAuth2AuthSetting = TypedDict( + "OAuth2AuthSetting", + { + "type": Literal["oauth2"], + "in": Literal["header"], + "key": Literal["Authorization"], + "value": str, + }, +) + + +APIKeyAuthSetting = TypedDict( + "APIKeyAuthSetting", + { + "type": Literal["api_key"], + "in": str, + "key": str, + "value": Optional[str], + }, +) + + +BasicAuthSetting = TypedDict( + "BasicAuthSetting", + { + "type": Literal["basic"], + "in": Literal["header"], + "key": Literal["Authorization"], + "value": Optional[str], + }, +) + + +BearerFormatAuthSetting = TypedDict( + "BearerFormatAuthSetting", + { + "type": Literal["bearer"], + "in": Literal["header"], + "format": Literal["JWT"], + "key": Literal["Authorization"], + "value": str, + }, +) + + +BearerAuthSetting = TypedDict( + "BearerAuthSetting", + { + "type": Literal["bearer"], + "in": Literal["header"], + "key": Literal["Authorization"], + "value": str, + }, +) + + +HTTPSignatureAuthSetting = TypedDict( + "HTTPSignatureAuthSetting", + { + "type": Literal["http-signature"], + "in": Literal["header"], + "key": Literal["Authorization"], + "value": None, + }, +) + + +AuthSettings = TypedDict( + "AuthSettings", + { + }, + total=False, +) + + +class HostSettingVariable(TypedDict): + description: str + default_value: str + enum_values: List[str] + + +class HostSetting(TypedDict): + url: str + description: str + variables: NotRequired[Dict[str, HostSettingVariable]] + + +class Configuration: + """This class contains various settings of the API client. + + :param host: Base url. + :param ignore_operation_servers + Boolean to ignore operation servers for the API client. + Config will use `host` as the base url regardless of the operation servers. + :param api_key: Dict to store API key(s). + Each entry in the dict specifies an API key. + The dict key is the name of the security scheme in the OAS specification. + The dict value is the API key secret. + :param api_key_prefix: Dict to store API prefix (e.g. Bearer). + The dict key is the name of the security scheme in the OAS specification. + The dict value is an API key prefix when generating the auth data. + :param username: Username for HTTP basic authentication. + :param password: Password for HTTP basic authentication. + :param access_token: Access token. + :param server_index: Index to servers configuration. + :param server_variables: Mapping with string values to replace variables in + templated server configuration. The validation of enums is performed for + variables with defined enum values before. + :param server_operation_index: Mapping from operation ID to an index to server + configuration. + :param server_operation_variables: Mapping from operation ID to a mapping with + string values to replace variables in templated server configuration. + The validation of enums is performed for variables with defined enum + values before. + :param ssl_ca_cert: str - the path to a file of concatenated CA certificates + in PEM format. + :param retries: Number of retries for API requests. + :param ca_cert_data: verify the peer using concatenated CA certificate data + in PEM (str) or DER (bytes) format. + + """ + + _default: ClassVar[Optional[Self]] = None + + def __init__( + self, + host: Optional[str]=None, + api_key: Optional[Dict[str, str]]=None, + api_key_prefix: Optional[Dict[str, str]]=None, + username: Optional[str]=None, + password: Optional[str]=None, + access_token: Optional[str]=None, + server_index: Optional[int]=None, + server_variables: Optional[ServerVariablesT]=None, + server_operation_index: Optional[Dict[int, int]]=None, + server_operation_variables: Optional[Dict[int, ServerVariablesT]]=None, + ignore_operation_servers: bool=False, + ssl_ca_cert: Optional[str]=None, + retries: Optional[int] = None, + ca_cert_data: Optional[Union[str, bytes]] = None, + *, + debug: Optional[bool] = None, + ) -> None: + """Constructor + """ + self._base_path = "http://127.0.0.1:36943" if host is None else host + """Default Base url + """ + self.server_index = 0 if server_index is None and host is None else server_index + self.server_operation_index = server_operation_index or {} + """Default server index + """ + self.server_variables = server_variables or {} + self.server_operation_variables = server_operation_variables or {} + """Default server variables + """ + self.ignore_operation_servers = ignore_operation_servers + """Ignore operation servers + """ + self.temp_folder_path = None + """Temp file folder for downloading files + """ + # Authentication Settings + self.api_key = {} + if api_key: + self.api_key = api_key + """dict to store API key(s) + """ + self.api_key_prefix = {} + if api_key_prefix: + self.api_key_prefix = api_key_prefix + """dict to store API prefix (e.g. Bearer) + """ + self.refresh_api_key_hook = None + """function hook to refresh API key if expired + """ + self.username = username + """Username for HTTP basic authentication + """ + self.password = password + """Password for HTTP basic authentication + """ + self.access_token = access_token + """Access token + """ + self.logger = {} + """Logging Settings + """ + self.logger["package_logger"] = logging.getLogger("lthn") + self.logger["urllib3_logger"] = logging.getLogger("urllib3") + self.logger_format = '%(asctime)s %(levelname)s %(message)s' + """Log format + """ + self.logger_stream_handler = None + """Log stream handler + """ + self.logger_file_handler: Optional[FileHandler] = None + """Log file handler + """ + self.logger_file = None + """Debug file location + """ + if debug is not None: + self.debug = debug + else: + self.__debug = False + """Debug switch + """ + + self.verify_ssl = True + """SSL/TLS verification + Set this to false to skip verifying SSL certificate when calling API + from https server. + """ + self.ssl_ca_cert = ssl_ca_cert + """Set this to customize the certificate file to verify the peer. + """ + self.ca_cert_data = ca_cert_data + """Set this to verify the peer using PEM (str) or DER (bytes) + certificate data. + """ + self.cert_file = None + """client certificate file + """ + self.key_file = None + """client key file + """ + self.assert_hostname = None + """Set this to True/False to enable/disable SSL hostname verification. + """ + self.tls_server_name = None + """SSL/TLS Server Name Indication (SNI) + Set this to the SNI value expected by the server. + """ + + self.connection_pool_maxsize = multiprocessing.cpu_count() * 5 + """urllib3 connection pool's maximum number of connections saved + per pool. urllib3 uses 1 connection as default value, but this is + not the best value when you are making a lot of possibly parallel + requests to the same host, which is often the case here. + cpu_count * 5 is used as default value to increase performance. + """ + + self.proxy: Optional[str] = None + """Proxy URL + """ + self.proxy_headers = None + """Proxy headers + """ + self.safe_chars_for_path_param = '' + """Safe chars for path_param + """ + self.retries = retries + """Adding retries to override urllib3 default value 3 + """ + # Enable client side validation + self.client_side_validation = True + + self.socket_options = None + """Options to pass down to the underlying urllib3 socket + """ + + self.datetime_format = "%Y-%m-%dT%H:%M:%S.%f%z" + """datetime format + """ + + self.date_format = "%Y-%m-%d" + """date format + """ + + def __deepcopy__(self, memo: Dict[int, Any]) -> Self: + cls = self.__class__ + result = cls.__new__(cls) + memo[id(self)] = result + for k, v in self.__dict__.items(): + if k not in ('logger', 'logger_file_handler'): + setattr(result, k, copy.deepcopy(v, memo)) + # shallow copy of loggers + result.logger = copy.copy(self.logger) + # use setters to configure loggers + result.logger_file = self.logger_file + result.debug = self.debug + return result + + def __setattr__(self, name: str, value: Any) -> None: + object.__setattr__(self, name, value) + + @classmethod + def set_default(cls, default: Optional[Self]) -> None: + """Set default instance of configuration. + + It stores default configuration, which can be + returned by get_default_copy method. + + :param default: object of Configuration + """ + cls._default = default + + @classmethod + def get_default_copy(cls) -> Self: + """Deprecated. Please use `get_default` instead. + + Deprecated. Please use `get_default` instead. + + :return: The configuration object. + """ + return cls.get_default() + + @classmethod + def get_default(cls) -> Self: + """Return the default configuration. + + This method returns newly created, based on default constructor, + object of Configuration class or returns a copy of default + configuration. + + :return: The configuration object. + """ + if cls._default is None: + cls._default = cls() + return cls._default + + @property + def logger_file(self) -> Optional[str]: + """The logger file. + + If the logger_file is None, then add stream handler and remove file + handler. Otherwise, add file handler and remove stream handler. + + :param value: The logger_file path. + :type: str + """ + return self.__logger_file + + @logger_file.setter + def logger_file(self, value: Optional[str]) -> None: + """The logger file. + + If the logger_file is None, then add stream handler and remove file + handler. Otherwise, add file handler and remove stream handler. + + :param value: The logger_file path. + :type: str + """ + self.__logger_file = value + if self.__logger_file: + # If set logging file, + # then add file handler and remove stream handler. + self.logger_file_handler = logging.FileHandler(self.__logger_file) + self.logger_file_handler.setFormatter(self.logger_formatter) + for _, logger in self.logger.items(): + logger.addHandler(self.logger_file_handler) + + @property + def debug(self) -> bool: + """Debug status + + :param value: The debug status, True or False. + :type: bool + """ + return self.__debug + + @debug.setter + def debug(self, value: bool) -> None: + """Debug status + + :param value: The debug status, True or False. + :type: bool + """ + self.__debug = value + if self.__debug: + # if debug status is True, turn on debug logging + for _, logger in self.logger.items(): + logger.setLevel(logging.DEBUG) + # turn on httplib debug + httplib.HTTPConnection.debuglevel = 1 + else: + # if debug status is False, turn off debug logging, + # setting log level to default `logging.WARNING` + for _, logger in self.logger.items(): + logger.setLevel(logging.WARNING) + # turn off httplib debug + httplib.HTTPConnection.debuglevel = 0 + + @property + def logger_format(self) -> str: + """The logger format. + + The logger_formatter will be updated when sets logger_format. + + :param value: The format string. + :type: str + """ + return self.__logger_format + + @logger_format.setter + def logger_format(self, value: str) -> None: + """The logger format. + + The logger_formatter will be updated when sets logger_format. + + :param value: The format string. + :type: str + """ + self.__logger_format = value + self.logger_formatter = logging.Formatter(self.__logger_format) + + def get_api_key_with_prefix(self, identifier: str, alias: Optional[str]=None) -> Optional[str]: + """Gets API key (with prefix if set). + + :param identifier: The identifier of apiKey. + :param alias: The alternative identifier of apiKey. + :return: The token for api key authentication. + """ + if self.refresh_api_key_hook is not None: + self.refresh_api_key_hook(self) + key = self.api_key.get(identifier, self.api_key.get(alias) if alias is not None else None) + if key: + prefix = self.api_key_prefix.get(identifier) + if prefix: + return "%s %s" % (prefix, key) + else: + return key + + return None + + def get_basic_auth_token(self) -> Optional[str]: + """Gets HTTP basic authentication header (string). + + :return: The token for basic HTTP authentication. + """ + username = "" + if self.username is not None: + username = self.username + password = "" + if self.password is not None: + password = self.password + return urllib3.util.make_headers( + basic_auth=username + ':' + password + ).get('authorization') + + def auth_settings(self)-> AuthSettings: + """Gets Auth Settings dict for api client. + + :return: The Auth Settings information dict. + """ + auth: AuthSettings = {} + return auth + + def to_debug_report(self) -> str: + """Gets the essential information for debugging. + + :return: The report for debugging. + """ + return "Python SDK Debug Report:\n"\ + "OS: {env}\n"\ + "Python Version: {pyversion}\n"\ + "Version of the API: 6.0.1\n"\ + "SDK Package Version: 1.0.0".\ + format(env=sys.platform, pyversion=sys.version) + + def get_host_settings(self) -> List[HostSetting]: + """Gets an array of host settings + + :return: An array of host settings + """ + return [ + { + 'url': "http://127.0.0.1:36943", + 'description': "Local Daemon", + }, + { + 'url': "http://seed.lethean.io:36943", + 'description': "Seed Server", + } + ] + + def get_host_from_settings( + self, + index: Optional[int], + variables: Optional[ServerVariablesT]=None, + servers: Optional[List[HostSetting]]=None, + ) -> str: + """Gets host URL based on the index and variables + :param index: array index of the host settings + :param variables: hash of variable and the corresponding value + :param servers: an array of host settings or None + :return: URL based on host settings + """ + if index is None: + return self._base_path + + variables = {} if variables is None else variables + servers = self.get_host_settings() if servers is None else servers + + try: + server = servers[index] + except IndexError: + raise ValueError( + "Invalid index {0} when selecting the host settings. " + "Must be less than {1}".format(index, len(servers))) + + url = server['url'] + + # go through variables and replace placeholders + for variable_name, variable in server.get('variables', {}).items(): + used_value = variables.get( + variable_name, variable['default_value']) + + if 'enum_values' in variable \ + and used_value not in variable['enum_values']: + raise ValueError( + "The variable `{0}` in the host URL has invalid value " + "{1}. Must be {2}.".format( + variable_name, variables[variable_name], + variable['enum_values'])) + + url = url.replace("{" + variable_name + "}", used_value) + + return url + + @property + def host(self) -> str: + """Return generated host.""" + return self.get_host_from_settings(self.server_index, variables=self.server_variables) + + @host.setter + def host(self, value: str) -> None: + """Fix base path.""" + self._base_path = value + self.server_index = None diff --git a/utils/sdk/client/python/lthn/exceptions.py b/utils/sdk/client/python/lthn/exceptions.py new file mode 100644 index 00000000..71fed3dd --- /dev/null +++ b/utils/sdk/client/python/lthn/exceptions.py @@ -0,0 +1,216 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + +from typing import Any, Optional +from typing_extensions import Self + +class OpenApiException(Exception): + """The base exception class for all OpenAPIExceptions""" + + +class ApiTypeError(OpenApiException, TypeError): + def __init__(self, msg, path_to_item=None, valid_classes=None, + key_type=None) -> None: + """ Raises an exception for TypeErrors + + Args: + msg (str): the exception message + + Keyword Args: + path_to_item (list): a list of keys an indices to get to the + current_item + None if unset + valid_classes (tuple): the primitive classes that current item + should be an instance of + None if unset + key_type (bool): False if our value is a value in a dict + True if it is a key in a dict + False if our item is an item in a list + None if unset + """ + self.path_to_item = path_to_item + self.valid_classes = valid_classes + self.key_type = key_type + full_msg = msg + if path_to_item: + full_msg = "{0} at {1}".format(msg, render_path(path_to_item)) + super(ApiTypeError, self).__init__(full_msg) + + +class ApiValueError(OpenApiException, ValueError): + def __init__(self, msg, path_to_item=None) -> None: + """ + Args: + msg (str): the exception message + + Keyword Args: + path_to_item (list) the path to the exception in the + received_data dict. None if unset + """ + + self.path_to_item = path_to_item + full_msg = msg + if path_to_item: + full_msg = "{0} at {1}".format(msg, render_path(path_to_item)) + super(ApiValueError, self).__init__(full_msg) + + +class ApiAttributeError(OpenApiException, AttributeError): + def __init__(self, msg, path_to_item=None) -> None: + """ + Raised when an attribute reference or assignment fails. + + Args: + msg (str): the exception message + + Keyword Args: + path_to_item (None/list) the path to the exception in the + received_data dict + """ + self.path_to_item = path_to_item + full_msg = msg + if path_to_item: + full_msg = "{0} at {1}".format(msg, render_path(path_to_item)) + super(ApiAttributeError, self).__init__(full_msg) + + +class ApiKeyError(OpenApiException, KeyError): + def __init__(self, msg, path_to_item=None) -> None: + """ + Args: + msg (str): the exception message + + Keyword Args: + path_to_item (None/list) the path to the exception in the + received_data dict + """ + self.path_to_item = path_to_item + full_msg = msg + if path_to_item: + full_msg = "{0} at {1}".format(msg, render_path(path_to_item)) + super(ApiKeyError, self).__init__(full_msg) + + +class ApiException(OpenApiException): + + def __init__( + self, + status=None, + reason=None, + http_resp=None, + *, + body: Optional[str] = None, + data: Optional[Any] = None, + ) -> None: + self.status = status + self.reason = reason + self.body = body + self.data = data + self.headers = None + + if http_resp: + if self.status is None: + self.status = http_resp.status + if self.reason is None: + self.reason = http_resp.reason + if self.body is None: + try: + self.body = http_resp.data.decode('utf-8') + except Exception: + pass + self.headers = http_resp.getheaders() + + @classmethod + def from_response( + cls, + *, + http_resp, + body: Optional[str], + data: Optional[Any], + ) -> Self: + if http_resp.status == 400: + raise BadRequestException(http_resp=http_resp, body=body, data=data) + + if http_resp.status == 401: + raise UnauthorizedException(http_resp=http_resp, body=body, data=data) + + if http_resp.status == 403: + raise ForbiddenException(http_resp=http_resp, body=body, data=data) + + if http_resp.status == 404: + raise NotFoundException(http_resp=http_resp, body=body, data=data) + + # Added new conditions for 409 and 422 + if http_resp.status == 409: + raise ConflictException(http_resp=http_resp, body=body, data=data) + + if http_resp.status == 422: + raise UnprocessableEntityException(http_resp=http_resp, body=body, data=data) + + if 500 <= http_resp.status <= 599: + raise ServiceException(http_resp=http_resp, body=body, data=data) + raise ApiException(http_resp=http_resp, body=body, data=data) + + def __str__(self): + """Custom error messages for exception""" + error_message = "({0})\n"\ + "Reason: {1}\n".format(self.status, self.reason) + if self.headers: + error_message += "HTTP response headers: {0}\n".format( + self.headers) + + if self.data or self.body: + error_message += "HTTP response body: {0}\n".format(self.data or self.body) + + return error_message + + +class BadRequestException(ApiException): + pass + + +class NotFoundException(ApiException): + pass + + +class UnauthorizedException(ApiException): + pass + + +class ForbiddenException(ApiException): + pass + + +class ServiceException(ApiException): + pass + + +class ConflictException(ApiException): + """Exception for HTTP 409 Conflict.""" + pass + + +class UnprocessableEntityException(ApiException): + """Exception for HTTP 422 Unprocessable Entity.""" + pass + + +def render_path(path_to_item): + """Returns a string representation of a path""" + result = "" + for pth in path_to_item: + if isinstance(pth, int): + result += "[{0}]".format(pth) + else: + result += "['{0}']".format(pth) + return result diff --git a/utils/sdk/client/python/lthn/models/__init__.py b/utils/sdk/client/python/lthn/models/__init__.py new file mode 100644 index 00000000..ac7c1722 --- /dev/null +++ b/utils/sdk/client/python/lthn/models/__init__.py @@ -0,0 +1,37 @@ +# coding: utf-8 + +# flake8: noqa +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + +# import models into model package +from lthn.models.block_details_model import BlockDetailsModel +from lthn.models.block_processing_performance_model import BlockProcessingPerformanceModel +from lthn.models.block_template_model import BlockTemplateModel +from lthn.models.block_template_request_model import BlockTemplateRequestModel +from lthn.models.db_stat_info_model import DbStatInfoModel +from lthn.models.height_model import HeightModel +from lthn.models.info_model import InfoModel +from lthn.models.maintainers_info_model import MaintainersInfoModel +from lthn.models.performance_model import PerformanceModel +from lthn.models.pos_entry_model import PosEntryModel +from lthn.models.submit_block_request_model import SubmitBlockRequestModel +from lthn.models.submit_block_response_model import SubmitBlockResponseModel +from lthn.models.transaction_attachment_model import TransactionAttachmentModel +from lthn.models.transaction_details_model import TransactionDetailsModel +from lthn.models.transaction_extra_model import TransactionExtraModel +from lthn.models.transaction_input_model import TransactionInputModel +from lthn.models.transaction_output_model import TransactionOutputModel +from lthn.models.tx_generation_context_model import TxGenerationContextModel +from lthn.models.tx_pool_performance_model import TxPoolPerformanceModel +from lthn.models.tx_processing_performance_model import TxProcessingPerformanceModel +from lthn.models.version_model import VersionModel + diff --git a/utils/sdk/client/python/lthn/models/block_details_model.py b/utils/sdk/client/python/lthn/models/block_details_model.py new file mode 100644 index 00000000..757bd0c6 --- /dev/null +++ b/utils/sdk/client/python/lthn/models/block_details_model.py @@ -0,0 +1,144 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from lthn.models.transaction_details_model import TransactionDetailsModel +from typing import Optional, Set +from typing_extensions import Self + +class BlockDetailsModel(BaseModel): + """ + BlockDetailsModel + """ # noqa: E501 + actual_timestamp: Optional[StrictInt] = None + already_generated_coins: Optional[StrictStr] = None + base_reward: Optional[StrictInt] = None + blob: Optional[StrictStr] = None + block_cumulative_size: Optional[StrictInt] = None + block_tself_size: Optional[StrictInt] = None + cumulative_diff_adjusted: Optional[StrictStr] = None + cumulative_diff_precise: Optional[StrictStr] = None + difficulty: Optional[StrictStr] = None + effective_fee_median: Optional[StrictInt] = None + height: Optional[StrictInt] = None + id: Optional[StrictStr] = None + is_orphan: Optional[StrictBool] = None + miner_text_info: Optional[StrictStr] = None + object_in_json: Optional[StrictStr] = None + penalty: Optional[StrictInt] = None + pow_seed: Optional[StrictStr] = None + prev_id: Optional[StrictStr] = None + summary_reward: Optional[StrictInt] = None + this_block_fee_median: Optional[StrictInt] = None + timestamp: Optional[StrictInt] = None + total_fee: Optional[StrictInt] = None + total_txs_size: Optional[StrictInt] = None + transactions_details: Optional[List[TransactionDetailsModel]] = None + type: Optional[Annotated[int, Field(le=4294967295, strict=True, ge=0)]] = None + __properties: ClassVar[List[str]] = ["actual_timestamp", "already_generated_coins", "base_reward", "blob", "block_cumulative_size", "block_tself_size", "cumulative_diff_adjusted", "cumulative_diff_precise", "difficulty", "effective_fee_median", "height", "id", "is_orphan", "miner_text_info", "object_in_json", "penalty", "pow_seed", "prev_id", "summary_reward", "this_block_fee_median", "timestamp", "total_fee", "total_txs_size", "transactions_details", "type"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BlockDetailsModel from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in transactions_details (list) + _items = [] + if self.transactions_details: + for _item_transactions_details in self.transactions_details: + if _item_transactions_details: + _items.append(_item_transactions_details.to_dict()) + _dict['transactions_details'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BlockDetailsModel from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "actual_timestamp": obj.get("actual_timestamp"), + "already_generated_coins": obj.get("already_generated_coins"), + "base_reward": obj.get("base_reward"), + "blob": obj.get("blob"), + "block_cumulative_size": obj.get("block_cumulative_size"), + "block_tself_size": obj.get("block_tself_size"), + "cumulative_diff_adjusted": obj.get("cumulative_diff_adjusted"), + "cumulative_diff_precise": obj.get("cumulative_diff_precise"), + "difficulty": obj.get("difficulty"), + "effective_fee_median": obj.get("effective_fee_median"), + "height": obj.get("height"), + "id": obj.get("id"), + "is_orphan": obj.get("is_orphan"), + "miner_text_info": obj.get("miner_text_info"), + "object_in_json": obj.get("object_in_json"), + "penalty": obj.get("penalty"), + "pow_seed": obj.get("pow_seed"), + "prev_id": obj.get("prev_id"), + "summary_reward": obj.get("summary_reward"), + "this_block_fee_median": obj.get("this_block_fee_median"), + "timestamp": obj.get("timestamp"), + "total_fee": obj.get("total_fee"), + "total_txs_size": obj.get("total_txs_size"), + "transactions_details": [TransactionDetailsModel.from_dict(_item) for _item in obj["transactions_details"]] if obj.get("transactions_details") is not None else None, + "type": obj.get("type") + }) + return _obj + + diff --git a/utils/sdk/client/python/lthn/models/block_processing_performance_model.py b/utils/sdk/client/python/lthn/models/block_processing_performance_model.py new file mode 100644 index 00000000..57470c00 --- /dev/null +++ b/utils/sdk/client/python/lthn/models/block_processing_performance_model.py @@ -0,0 +1,117 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictInt +from typing import Any, ClassVar, Dict, List, Optional +from typing import Optional, Set +from typing_extensions import Self + +class BlockProcessingPerformanceModel(BaseModel): + """ + BlockProcessingPerformanceModel + """ # noqa: E501 + block_processing_time_0: Optional[StrictInt] = None + block_processing_time_1: Optional[StrictInt] = None + target_calculating_time_2: Optional[StrictInt] = None + longhash_calculating_time_3: Optional[StrictInt] = None + all_txs_insert_time_5: Optional[StrictInt] = None + etc_stuff_6: Optional[StrictInt] = None + insert_time_4: Optional[StrictInt] = None + raise_block_core_event: Optional[StrictInt] = None + validate_miner_transaction_time: Optional[StrictInt] = None + collect_rangeproofs_data_from_tx_time: Optional[StrictInt] = None + verify_multiple_zc_outs_range_proofs_time: Optional[StrictInt] = None + target_calculating_enum_blocks: Optional[StrictInt] = None + target_calculating_calc: Optional[StrictInt] = None + pos_validate_ki_search: Optional[StrictInt] = None + pos_validate_get_out_keys_for_inputs: Optional[StrictInt] = None + pos_validate_zvp: Optional[StrictInt] = None + __properties: ClassVar[List[str]] = ["block_processing_time_0", "block_processing_time_1", "target_calculating_time_2", "longhash_calculating_time_3", "all_txs_insert_time_5", "etc_stuff_6", "insert_time_4", "raise_block_core_event", "validate_miner_transaction_time", "collect_rangeproofs_data_from_tx_time", "verify_multiple_zc_outs_range_proofs_time", "target_calculating_enum_blocks", "target_calculating_calc", "pos_validate_ki_search", "pos_validate_get_out_keys_for_inputs", "pos_validate_zvp"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BlockProcessingPerformanceModel from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BlockProcessingPerformanceModel from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "block_processing_time_0": obj.get("block_processing_time_0"), + "block_processing_time_1": obj.get("block_processing_time_1"), + "target_calculating_time_2": obj.get("target_calculating_time_2"), + "longhash_calculating_time_3": obj.get("longhash_calculating_time_3"), + "all_txs_insert_time_5": obj.get("all_txs_insert_time_5"), + "etc_stuff_6": obj.get("etc_stuff_6"), + "insert_time_4": obj.get("insert_time_4"), + "raise_block_core_event": obj.get("raise_block_core_event"), + "validate_miner_transaction_time": obj.get("validate_miner_transaction_time"), + "collect_rangeproofs_data_from_tx_time": obj.get("collect_rangeproofs_data_from_tx_time"), + "verify_multiple_zc_outs_range_proofs_time": obj.get("verify_multiple_zc_outs_range_proofs_time"), + "target_calculating_enum_blocks": obj.get("target_calculating_enum_blocks"), + "target_calculating_calc": obj.get("target_calculating_calc"), + "pos_validate_ki_search": obj.get("pos_validate_ki_search"), + "pos_validate_get_out_keys_for_inputs": obj.get("pos_validate_get_out_keys_for_inputs"), + "pos_validate_zvp": obj.get("pos_validate_zvp") + }) + return _obj + + diff --git a/utils/sdk/client/python/lthn/models/block_template_model.py b/utils/sdk/client/python/lthn/models/block_template_model.py new file mode 100644 index 00000000..b44e961d --- /dev/null +++ b/utils/sdk/client/python/lthn/models/block_template_model.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from lthn.models.tx_generation_context_model import TxGenerationContextModel +from typing import Optional, Set +from typing_extensions import Self + +class BlockTemplateModel(BaseModel): + """ + BlockTemplateModel + """ # noqa: E501 + blocktemplate_blob: Optional[StrictStr] = None + difficulty: Optional[StrictStr] = None + height: Optional[StrictInt] = None + miner_tx_tgc: Optional[TxGenerationContextModel] = None + block_reward_without_fee: Optional[StrictInt] = None + block_reward: Optional[StrictInt] = None + txs_fee: Optional[StrictInt] = None + prev_hash: Optional[StrictStr] = None + seed: Optional[StrictStr] = None + __properties: ClassVar[List[str]] = ["blocktemplate_blob", "difficulty", "height", "miner_tx_tgc", "block_reward_without_fee", "block_reward", "txs_fee", "prev_hash", "seed"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BlockTemplateModel from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of miner_tx_tgc + if self.miner_tx_tgc: + _dict['miner_tx_tgc'] = self.miner_tx_tgc.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BlockTemplateModel from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "blocktemplate_blob": obj.get("blocktemplate_blob"), + "difficulty": obj.get("difficulty"), + "height": obj.get("height"), + "miner_tx_tgc": TxGenerationContextModel.from_dict(obj["miner_tx_tgc"]) if obj.get("miner_tx_tgc") is not None else None, + "block_reward_without_fee": obj.get("block_reward_without_fee"), + "block_reward": obj.get("block_reward"), + "txs_fee": obj.get("txs_fee"), + "prev_hash": obj.get("prev_hash"), + "seed": obj.get("seed") + }) + return _obj + + diff --git a/utils/sdk/client/python/lthn/models/block_template_request_model.py b/utils/sdk/client/python/lthn/models/block_template_request_model.py new file mode 100644 index 00000000..78ec384e --- /dev/null +++ b/utils/sdk/client/python/lthn/models/block_template_request_model.py @@ -0,0 +1,103 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictBool, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from lthn.models.pos_entry_model import PosEntryModel +from typing import Optional, Set +from typing_extensions import Self + +class BlockTemplateRequestModel(BaseModel): + """ + BlockTemplateRequestModel + """ # noqa: E501 + miner_address: Optional[StrictStr] = None + stakeholder_address: Optional[StrictStr] = None + ex_nonce: Optional[StrictStr] = None + pos_block: Optional[StrictBool] = None + ignore_pow_ts_check: Optional[StrictBool] = None + pe: Optional[PosEntryModel] = None + explicit_txs: Optional[List[StrictStr]] = None + __properties: ClassVar[List[str]] = ["miner_address", "stakeholder_address", "ex_nonce", "pos_block", "ignore_pow_ts_check", "pe", "explicit_txs"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of BlockTemplateRequestModel from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of pe + if self.pe: + _dict['pe'] = self.pe.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of BlockTemplateRequestModel from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "miner_address": obj.get("miner_address"), + "stakeholder_address": obj.get("stakeholder_address"), + "ex_nonce": obj.get("ex_nonce"), + "pos_block": obj.get("pos_block"), + "ignore_pow_ts_check": obj.get("ignore_pow_ts_check"), + "pe": PosEntryModel.from_dict(obj["pe"]) if obj.get("pe") is not None else None, + "explicit_txs": obj.get("explicit_txs") + }) + return _obj + + diff --git a/utils/sdk/client/python/lthn/models/db_stat_info_model.py b/utils/sdk/client/python/lthn/models/db_stat_info_model.py new file mode 100644 index 00000000..a6882154 --- /dev/null +++ b/utils/sdk/client/python/lthn/models/db_stat_info_model.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictInt +from typing import Any, ClassVar, Dict, List, Optional +from typing import Optional, Set +from typing_extensions import Self + +class DbStatInfoModel(BaseModel): + """ + DbStatInfoModel + """ # noqa: E501 + tx_count: Optional[StrictInt] = None + write_tx_count: Optional[StrictInt] = None + map_size: Optional[StrictInt] = None + __properties: ClassVar[List[str]] = ["tx_count", "write_tx_count", "map_size"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of DbStatInfoModel from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of DbStatInfoModel from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "tx_count": obj.get("tx_count"), + "write_tx_count": obj.get("write_tx_count"), + "map_size": obj.get("map_size") + }) + return _obj + + diff --git a/utils/sdk/client/python/lthn/models/height_model.py b/utils/sdk/client/python/lthn/models/height_model.py new file mode 100644 index 00000000..30af14c1 --- /dev/null +++ b/utils/sdk/client/python/lthn/models/height_model.py @@ -0,0 +1,87 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictInt +from typing import Any, ClassVar, Dict, List, Optional +from typing import Optional, Set +from typing_extensions import Self + +class HeightModel(BaseModel): + """ + HeightModel + """ # noqa: E501 + height: Optional[StrictInt] = None + __properties: ClassVar[List[str]] = ["height"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of HeightModel from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of HeightModel from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "height": obj.get("height") + }) + return _obj + + diff --git a/utils/sdk/client/python/lthn/models/info_model.py b/utils/sdk/client/python/lthn/models/info_model.py new file mode 100644 index 00000000..be634386 --- /dev/null +++ b/utils/sdk/client/python/lthn/models/info_model.py @@ -0,0 +1,185 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictBool, StrictFloat, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional, Union +from lthn.models.maintainers_info_model import MaintainersInfoModel +from lthn.models.performance_model import PerformanceModel +from typing import Optional, Set +from typing_extensions import Self + +class InfoModel(BaseModel): + """ + InfoModel + """ # noqa: E501 + height: Optional[StrictInt] = None + tx_count: Optional[StrictInt] = None + tx_pool_size: Optional[StrictInt] = None + alt_blocks_count: Optional[StrictInt] = None + outgoing_connections_count: Optional[StrictInt] = None + incoming_connections_count: Optional[StrictInt] = None + synchronized_connections_count: Optional[StrictInt] = None + white_peerlist_size: Optional[StrictInt] = None + grey_peerlist_size: Optional[StrictInt] = None + current_blocks_median: Optional[StrictInt] = None + alias_count: Optional[StrictInt] = None + current_max_allowed_block_size: Optional[StrictInt] = None + daemon_network_state: Optional[StrictStr] = None + synchronization_start_height: Optional[StrictInt] = None + max_net_seen_height: Optional[StrictInt] = None + mi: Optional[MaintainersInfoModel] = None + pos_allowed: Optional[StrictBool] = None + pos_difficulty: Optional[StrictStr] = None + pow_difficulty: Optional[StrictInt] = None + default_fee: Optional[StrictInt] = None + minimum_fee: Optional[StrictInt] = None + is_hardfork_active: Optional[List[StrictBool]] = None + net_time_delta_median: Optional[StrictInt] = None + current_network_hashrate_50: Optional[StrictInt] = None + current_network_hashrate_350: Optional[StrictInt] = None + seconds_for_10_blocks: Optional[StrictInt] = None + seconds_for_30_blocks: Optional[StrictInt] = None + transactions_cnt_per_day: Optional[List[StrictInt]] = None + transactions_volume_per_day: Optional[List[StrictInt]] = None + last_pos_timestamp: Optional[StrictInt] = None + last_pow_timestamp: Optional[StrictInt] = None + total_coins: Optional[StrictStr] = None + last_block_size: Optional[StrictInt] = None + tx_count_in_last_block: Optional[StrictInt] = None + pos_sequence_factor: Optional[Union[StrictFloat, StrictInt]] = None + pow_sequence_factor: Optional[Union[StrictFloat, StrictInt]] = None + block_reward: Optional[StrictInt] = None + last_block_total_reward: Optional[StrictInt] = None + pos_diff_total_coins_rate: Optional[StrictInt] = None + last_block_timestamp: Optional[StrictInt] = None + last_block_hash: Optional[StrictStr] = None + pos_block_ts_shift_vs_actual: Optional[StrictInt] = None + outs_stat: Optional[Dict[str, StrictInt]] = None + performance_data: Optional[PerformanceModel] = None + offers_count: Optional[StrictInt] = None + expiration_median_timestamp: Optional[StrictInt] = None + __properties: ClassVar[List[str]] = ["height", "tx_count", "tx_pool_size", "alt_blocks_count", "outgoing_connections_count", "incoming_connections_count", "synchronized_connections_count", "white_peerlist_size", "grey_peerlist_size", "current_blocks_median", "alias_count", "current_max_allowed_block_size", "daemon_network_state", "synchronization_start_height", "max_net_seen_height", "mi", "pos_allowed", "pos_difficulty", "pow_difficulty", "default_fee", "minimum_fee", "is_hardfork_active", "net_time_delta_median", "current_network_hashrate_50", "current_network_hashrate_350", "seconds_for_10_blocks", "seconds_for_30_blocks", "transactions_cnt_per_day", "transactions_volume_per_day", "last_pos_timestamp", "last_pow_timestamp", "total_coins", "last_block_size", "tx_count_in_last_block", "pos_sequence_factor", "pow_sequence_factor", "block_reward", "last_block_total_reward", "pos_diff_total_coins_rate", "last_block_timestamp", "last_block_hash", "pos_block_ts_shift_vs_actual", "outs_stat", "performance_data", "offers_count", "expiration_median_timestamp"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of InfoModel from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of mi + if self.mi: + _dict['mi'] = self.mi.to_dict() + # override the default output from pydantic by calling `to_dict()` of performance_data + if self.performance_data: + _dict['performance_data'] = self.performance_data.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of InfoModel from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "height": obj.get("height"), + "tx_count": obj.get("tx_count"), + "tx_pool_size": obj.get("tx_pool_size"), + "alt_blocks_count": obj.get("alt_blocks_count"), + "outgoing_connections_count": obj.get("outgoing_connections_count"), + "incoming_connections_count": obj.get("incoming_connections_count"), + "synchronized_connections_count": obj.get("synchronized_connections_count"), + "white_peerlist_size": obj.get("white_peerlist_size"), + "grey_peerlist_size": obj.get("grey_peerlist_size"), + "current_blocks_median": obj.get("current_blocks_median"), + "alias_count": obj.get("alias_count"), + "current_max_allowed_block_size": obj.get("current_max_allowed_block_size"), + "daemon_network_state": obj.get("daemon_network_state"), + "synchronization_start_height": obj.get("synchronization_start_height"), + "max_net_seen_height": obj.get("max_net_seen_height"), + "mi": MaintainersInfoModel.from_dict(obj["mi"]) if obj.get("mi") is not None else None, + "pos_allowed": obj.get("pos_allowed"), + "pos_difficulty": obj.get("pos_difficulty"), + "pow_difficulty": obj.get("pow_difficulty"), + "default_fee": obj.get("default_fee"), + "minimum_fee": obj.get("minimum_fee"), + "is_hardfork_active": obj.get("is_hardfork_active"), + "net_time_delta_median": obj.get("net_time_delta_median"), + "current_network_hashrate_50": obj.get("current_network_hashrate_50"), + "current_network_hashrate_350": obj.get("current_network_hashrate_350"), + "seconds_for_10_blocks": obj.get("seconds_for_10_blocks"), + "seconds_for_30_blocks": obj.get("seconds_for_30_blocks"), + "transactions_cnt_per_day": obj.get("transactions_cnt_per_day"), + "transactions_volume_per_day": obj.get("transactions_volume_per_day"), + "last_pos_timestamp": obj.get("last_pos_timestamp"), + "last_pow_timestamp": obj.get("last_pow_timestamp"), + "total_coins": obj.get("total_coins"), + "last_block_size": obj.get("last_block_size"), + "tx_count_in_last_block": obj.get("tx_count_in_last_block"), + "pos_sequence_factor": obj.get("pos_sequence_factor"), + "pow_sequence_factor": obj.get("pow_sequence_factor"), + "block_reward": obj.get("block_reward"), + "last_block_total_reward": obj.get("last_block_total_reward"), + "pos_diff_total_coins_rate": obj.get("pos_diff_total_coins_rate"), + "last_block_timestamp": obj.get("last_block_timestamp"), + "last_block_hash": obj.get("last_block_hash"), + "pos_block_ts_shift_vs_actual": obj.get("pos_block_ts_shift_vs_actual"), + "outs_stat": obj.get("outs_stat"), + "performance_data": PerformanceModel.from_dict(obj["performance_data"]) if obj.get("performance_data") is not None else None, + "offers_count": obj.get("offers_count"), + "expiration_median_timestamp": obj.get("expiration_median_timestamp") + }) + return _obj + + diff --git a/utils/sdk/client/python/lthn/models/maintainers_info_model.py b/utils/sdk/client/python/lthn/models/maintainers_info_model.py new file mode 100644 index 00000000..4c01a614 --- /dev/null +++ b/utils/sdk/client/python/lthn/models/maintainers_info_model.py @@ -0,0 +1,96 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + +class MaintainersInfoModel(BaseModel): + """ + MaintainersInfoModel + """ # noqa: E501 + ver_major: Optional[Annotated[int, Field(le=255, strict=True, ge=0)]] = None + ver_minor: Optional[Annotated[int, Field(le=255, strict=True, ge=0)]] = None + ver_revision: Optional[Annotated[int, Field(le=255, strict=True, ge=0)]] = None + build_no: Optional[Annotated[int, Field(le=4294967295, strict=True, ge=0)]] = None + mode: Optional[Annotated[int, Field(le=255, strict=True, ge=0)]] = None + __properties: ClassVar[List[str]] = ["ver_major", "ver_minor", "ver_revision", "build_no", "mode"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of MaintainersInfoModel from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of MaintainersInfoModel from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "ver_major": obj.get("ver_major"), + "ver_minor": obj.get("ver_minor"), + "ver_revision": obj.get("ver_revision"), + "build_no": obj.get("build_no"), + "mode": obj.get("mode") + }) + return _obj + + diff --git a/utils/sdk/client/python/lthn/models/performance_model.py b/utils/sdk/client/python/lthn/models/performance_model.py new file mode 100644 index 00000000..6ecb87c0 --- /dev/null +++ b/utils/sdk/client/python/lthn/models/performance_model.py @@ -0,0 +1,109 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict +from typing import Any, ClassVar, Dict, List, Optional +from lthn.models.block_processing_performance_model import BlockProcessingPerformanceModel +from lthn.models.db_stat_info_model import DbStatInfoModel +from lthn.models.tx_pool_performance_model import TxPoolPerformanceModel +from lthn.models.tx_processing_performance_model import TxProcessingPerformanceModel +from typing import Optional, Set +from typing_extensions import Self + +class PerformanceModel(BaseModel): + """ + PerformanceModel + """ # noqa: E501 + block_processing: Optional[BlockProcessingPerformanceModel] = None + tx_processing: Optional[TxProcessingPerformanceModel] = None + tx_pool: Optional[TxPoolPerformanceModel] = None + db_stat_info: Optional[DbStatInfoModel] = None + __properties: ClassVar[List[str]] = ["block_processing", "tx_processing", "tx_pool", "db_stat_info"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PerformanceModel from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of block_processing + if self.block_processing: + _dict['block_processing'] = self.block_processing.to_dict() + # override the default output from pydantic by calling `to_dict()` of tx_processing + if self.tx_processing: + _dict['tx_processing'] = self.tx_processing.to_dict() + # override the default output from pydantic by calling `to_dict()` of tx_pool + if self.tx_pool: + _dict['tx_pool'] = self.tx_pool.to_dict() + # override the default output from pydantic by calling `to_dict()` of db_stat_info + if self.db_stat_info: + _dict['db_stat_info'] = self.db_stat_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PerformanceModel from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "block_processing": BlockProcessingPerformanceModel.from_dict(obj["block_processing"]) if obj.get("block_processing") is not None else None, + "tx_processing": TxProcessingPerformanceModel.from_dict(obj["tx_processing"]) if obj.get("tx_processing") is not None else None, + "tx_pool": TxPoolPerformanceModel.from_dict(obj["tx_pool"]) if obj.get("tx_pool") is not None else None, + "db_stat_info": DbStatInfoModel.from_dict(obj["db_stat_info"]) if obj.get("db_stat_info") is not None else None + }) + return _obj + + diff --git a/utils/sdk/client/python/lthn/models/pos_entry_model.py b/utils/sdk/client/python/lthn/models/pos_entry_model.py new file mode 100644 index 00000000..114d5e68 --- /dev/null +++ b/utils/sdk/client/python/lthn/models/pos_entry_model.py @@ -0,0 +1,101 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from typing import Optional, Set +from typing_extensions import Self + +class PosEntryModel(BaseModel): + """ + PosEntryModel + """ # noqa: E501 + amount: Optional[StrictInt] = None + g_index: Optional[StrictInt] = None + keyimage: Optional[StrictStr] = None + block_timestamp: Optional[StrictInt] = None + stake_unlock_time: Optional[StrictInt] = None + tx_id: Optional[StrictStr] = None + tx_out_index: Optional[StrictInt] = None + wallet_index: Optional[StrictInt] = None + __properties: ClassVar[List[str]] = ["amount", "g_index", "keyimage", "block_timestamp", "stake_unlock_time", "tx_id", "tx_out_index", "wallet_index"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of PosEntryModel from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of PosEntryModel from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "amount": obj.get("amount"), + "g_index": obj.get("g_index"), + "keyimage": obj.get("keyimage"), + "block_timestamp": obj.get("block_timestamp"), + "stake_unlock_time": obj.get("stake_unlock_time"), + "tx_id": obj.get("tx_id"), + "tx_out_index": obj.get("tx_out_index"), + "wallet_index": obj.get("wallet_index") + }) + return _obj + + diff --git a/utils/sdk/client/python/lthn/models/submit_block_request_model.py b/utils/sdk/client/python/lthn/models/submit_block_request_model.py new file mode 100644 index 00000000..68a17c67 --- /dev/null +++ b/utils/sdk/client/python/lthn/models/submit_block_request_model.py @@ -0,0 +1,87 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from typing import Optional, Set +from typing_extensions import Self + +class SubmitBlockRequestModel(BaseModel): + """ + SubmitBlockRequestModel + """ # noqa: E501 + block_blob: Optional[StrictStr] = None + __properties: ClassVar[List[str]] = ["block_blob"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SubmitBlockRequestModel from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SubmitBlockRequestModel from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "block_blob": obj.get("block_blob") + }) + return _obj + + diff --git a/utils/sdk/client/python/lthn/models/submit_block_response_model.py b/utils/sdk/client/python/lthn/models/submit_block_response_model.py new file mode 100644 index 00000000..2fca7d85 --- /dev/null +++ b/utils/sdk/client/python/lthn/models/submit_block_response_model.py @@ -0,0 +1,87 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from typing import Optional, Set +from typing_extensions import Self + +class SubmitBlockResponseModel(BaseModel): + """ + SubmitBlockResponseModel + """ # noqa: E501 + status: Optional[StrictStr] = None + __properties: ClassVar[List[str]] = ["status"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SubmitBlockResponseModel from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SubmitBlockResponseModel from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "status": obj.get("status") + }) + return _obj + + diff --git a/utils/sdk/client/python/lthn/models/transaction_attachment_model.py b/utils/sdk/client/python/lthn/models/transaction_attachment_model.py new file mode 100644 index 00000000..84b11137 --- /dev/null +++ b/utils/sdk/client/python/lthn/models/transaction_attachment_model.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from typing import Optional, Set +from typing_extensions import Self + +class TransactionAttachmentModel(BaseModel): + """ + TransactionAttachmentModel + """ # noqa: E501 + type: Optional[StrictStr] = None + short_view: Optional[StrictStr] = None + details_view: Optional[StrictStr] = None + __properties: ClassVar[List[str]] = ["type", "short_view", "details_view"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of TransactionAttachmentModel from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of TransactionAttachmentModel from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "type": obj.get("type"), + "short_view": obj.get("short_view"), + "details_view": obj.get("details_view") + }) + return _obj + + diff --git a/utils/sdk/client/python/lthn/models/transaction_details_model.py b/utils/sdk/client/python/lthn/models/transaction_details_model.py new file mode 100644 index 00000000..cfd66f79 --- /dev/null +++ b/utils/sdk/client/python/lthn/models/transaction_details_model.py @@ -0,0 +1,143 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from lthn.models.transaction_attachment_model import TransactionAttachmentModel +from lthn.models.transaction_extra_model import TransactionExtraModel +from lthn.models.transaction_input_model import TransactionInputModel +from lthn.models.transaction_output_model import TransactionOutputModel +from typing import Optional, Set +from typing_extensions import Self + +class TransactionDetailsModel(BaseModel): + """ + TransactionDetailsModel + """ # noqa: E501 + amount: Optional[StrictInt] = None + attachments: Optional[List[TransactionAttachmentModel]] = None + blob: Optional[StrictStr] = None + blob_size: Optional[StrictInt] = None + extra: Optional[List[TransactionExtraModel]] = None + fee: Optional[StrictInt] = None + id: Optional[StrictStr] = None + ins: Optional[List[TransactionInputModel]] = None + keeper_block: Optional[StrictInt] = None + object_in_json: Optional[StrictStr] = None + outs: Optional[List[TransactionOutputModel]] = None + pub_key: Optional[StrictStr] = None + timestamp: Optional[StrictInt] = None + __properties: ClassVar[List[str]] = ["amount", "attachments", "blob", "blob_size", "extra", "fee", "id", "ins", "keeper_block", "object_in_json", "outs", "pub_key", "timestamp"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of TransactionDetailsModel from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in attachments (list) + _items = [] + if self.attachments: + for _item_attachments in self.attachments: + if _item_attachments: + _items.append(_item_attachments.to_dict()) + _dict['attachments'] = _items + # override the default output from pydantic by calling `to_dict()` of each item in extra (list) + _items = [] + if self.extra: + for _item_extra in self.extra: + if _item_extra: + _items.append(_item_extra.to_dict()) + _dict['extra'] = _items + # override the default output from pydantic by calling `to_dict()` of each item in ins (list) + _items = [] + if self.ins: + for _item_ins in self.ins: + if _item_ins: + _items.append(_item_ins.to_dict()) + _dict['ins'] = _items + # override the default output from pydantic by calling `to_dict()` of each item in outs (list) + _items = [] + if self.outs: + for _item_outs in self.outs: + if _item_outs: + _items.append(_item_outs.to_dict()) + _dict['outs'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of TransactionDetailsModel from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "amount": obj.get("amount"), + "attachments": [TransactionAttachmentModel.from_dict(_item) for _item in obj["attachments"]] if obj.get("attachments") is not None else None, + "blob": obj.get("blob"), + "blob_size": obj.get("blob_size"), + "extra": [TransactionExtraModel.from_dict(_item) for _item in obj["extra"]] if obj.get("extra") is not None else None, + "fee": obj.get("fee"), + "id": obj.get("id"), + "ins": [TransactionInputModel.from_dict(_item) for _item in obj["ins"]] if obj.get("ins") is not None else None, + "keeper_block": obj.get("keeper_block"), + "object_in_json": obj.get("object_in_json"), + "outs": [TransactionOutputModel.from_dict(_item) for _item in obj["outs"]] if obj.get("outs") is not None else None, + "pub_key": obj.get("pub_key"), + "timestamp": obj.get("timestamp") + }) + return _obj + + diff --git a/utils/sdk/client/python/lthn/models/transaction_extra_model.py b/utils/sdk/client/python/lthn/models/transaction_extra_model.py new file mode 100644 index 00000000..3d6e1cd6 --- /dev/null +++ b/utils/sdk/client/python/lthn/models/transaction_extra_model.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from typing import Optional, Set +from typing_extensions import Self + +class TransactionExtraModel(BaseModel): + """ + TransactionExtraModel + """ # noqa: E501 + type: Optional[StrictStr] = None + short_view: Optional[StrictStr] = None + details_view: Optional[StrictStr] = None + __properties: ClassVar[List[str]] = ["type", "short_view", "details_view"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of TransactionExtraModel from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of TransactionExtraModel from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "type": obj.get("type"), + "short_view": obj.get("short_view"), + "details_view": obj.get("details_view") + }) + return _obj + + diff --git a/utils/sdk/client/python/lthn/models/transaction_input_model.py b/utils/sdk/client/python/lthn/models/transaction_input_model.py new file mode 100644 index 00000000..1246b29b --- /dev/null +++ b/utils/sdk/client/python/lthn/models/transaction_input_model.py @@ -0,0 +1,96 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + +class TransactionInputModel(BaseModel): + """ + TransactionInputModel + """ # noqa: E501 + amount: Optional[StrictInt] = None + global_indexes: Optional[List[StrictInt]] = None + htlc_origin: Optional[StrictStr] = None + kimage_or_ms_id: Optional[StrictStr] = None + multisig_count: Optional[Annotated[int, Field(le=4294967295, strict=True, ge=0)]] = None + __properties: ClassVar[List[str]] = ["amount", "global_indexes", "htlc_origin", "kimage_or_ms_id", "multisig_count"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of TransactionInputModel from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of TransactionInputModel from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "amount": obj.get("amount"), + "global_indexes": obj.get("global_indexes"), + "htlc_origin": obj.get("htlc_origin"), + "kimage_or_ms_id": obj.get("kimage_or_ms_id"), + "multisig_count": obj.get("multisig_count") + }) + return _obj + + diff --git a/utils/sdk/client/python/lthn/models/transaction_output_model.py b/utils/sdk/client/python/lthn/models/transaction_output_model.py new file mode 100644 index 00000000..fa8eeb1f --- /dev/null +++ b/utils/sdk/client/python/lthn/models/transaction_output_model.py @@ -0,0 +1,96 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + +class TransactionOutputModel(BaseModel): + """ + TransactionOutputModel + """ # noqa: E501 + amount: Optional[StrictInt] = None + global_index: Optional[StrictInt] = None + is_spent: Optional[StrictBool] = None + minimum_sigs: Optional[Annotated[int, Field(le=4294967295, strict=True, ge=0)]] = None + pub_keys: Optional[List[StrictStr]] = None + __properties: ClassVar[List[str]] = ["amount", "global_index", "is_spent", "minimum_sigs", "pub_keys"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of TransactionOutputModel from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of TransactionOutputModel from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "amount": obj.get("amount"), + "global_index": obj.get("global_index"), + "is_spent": obj.get("is_spent"), + "minimum_sigs": obj.get("minimum_sigs"), + "pub_keys": obj.get("pub_keys") + }) + return _obj + + diff --git a/utils/sdk/client/python/lthn/models/tx_generation_context_model.py b/utils/sdk/client/python/lthn/models/tx_generation_context_model.py new file mode 100644 index 00000000..42542536 --- /dev/null +++ b/utils/sdk/client/python/lthn/models/tx_generation_context_model.py @@ -0,0 +1,133 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictBool, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from typing import Optional, Set +from typing_extensions import Self + +class TxGenerationContextModel(BaseModel): + """ + TxGenerationContextModel + """ # noqa: E501 + asset_ids: Optional[List[StrictStr]] = None + blinded_asset_ids: Optional[List[StrictStr]] = None + amount_commitments: Optional[List[StrictStr]] = None + asset_id_blinding_masks: Optional[List[StrictStr]] = None + amounts: Optional[List[StrictStr]] = None + amount_blinding_masks: Optional[List[StrictStr]] = None + pseudo_outs_blinded_asset_ids: Optional[List[StrictStr]] = None + pseudo_outs_plus_real_out_blinding_masks: Optional[List[StrictStr]] = None + real_zc_ins_asset_ids: Optional[List[StrictStr]] = None + zc_input_amounts: Optional[List[StrictInt]] = None + pseudo_out_amount_commitments_sum: Optional[StrictStr] = None + pseudo_out_amount_blinding_masks_sum: Optional[StrictStr] = None + real_in_asset_id_blinding_mask_x_amount_sum: Optional[StrictStr] = None + amount_commitments_sum: Optional[StrictStr] = None + amount_blinding_masks_sum: Optional[StrictStr] = None + asset_id_blinding_mask_x_amount_sum: Optional[StrictStr] = None + ao_asset_id: Optional[StrictStr] = None + ao_asset_id_pt: Optional[StrictStr] = None + ao_amount_commitment: Optional[StrictStr] = None + ao_amount_blinding_mask: Optional[StrictStr] = None + ao_commitment_in_outputs: Optional[StrictBool] = None + tx_key_pub: Optional[StrictStr] = None + tx_key_sec: Optional[StrictStr] = None + tx_pub_key_p: Optional[StrictStr] = None + __properties: ClassVar[List[str]] = ["asset_ids", "blinded_asset_ids", "amount_commitments", "asset_id_blinding_masks", "amounts", "amount_blinding_masks", "pseudo_outs_blinded_asset_ids", "pseudo_outs_plus_real_out_blinding_masks", "real_zc_ins_asset_ids", "zc_input_amounts", "pseudo_out_amount_commitments_sum", "pseudo_out_amount_blinding_masks_sum", "real_in_asset_id_blinding_mask_x_amount_sum", "amount_commitments_sum", "amount_blinding_masks_sum", "asset_id_blinding_mask_x_amount_sum", "ao_asset_id", "ao_asset_id_pt", "ao_amount_commitment", "ao_amount_blinding_mask", "ao_commitment_in_outputs", "tx_key_pub", "tx_key_sec", "tx_pub_key_p"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of TxGenerationContextModel from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of TxGenerationContextModel from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "asset_ids": obj.get("asset_ids"), + "blinded_asset_ids": obj.get("blinded_asset_ids"), + "amount_commitments": obj.get("amount_commitments"), + "asset_id_blinding_masks": obj.get("asset_id_blinding_masks"), + "amounts": obj.get("amounts"), + "amount_blinding_masks": obj.get("amount_blinding_masks"), + "pseudo_outs_blinded_asset_ids": obj.get("pseudo_outs_blinded_asset_ids"), + "pseudo_outs_plus_real_out_blinding_masks": obj.get("pseudo_outs_plus_real_out_blinding_masks"), + "real_zc_ins_asset_ids": obj.get("real_zc_ins_asset_ids"), + "zc_input_amounts": obj.get("zc_input_amounts"), + "pseudo_out_amount_commitments_sum": obj.get("pseudo_out_amount_commitments_sum"), + "pseudo_out_amount_blinding_masks_sum": obj.get("pseudo_out_amount_blinding_masks_sum"), + "real_in_asset_id_blinding_mask_x_amount_sum": obj.get("real_in_asset_id_blinding_mask_x_amount_sum"), + "amount_commitments_sum": obj.get("amount_commitments_sum"), + "amount_blinding_masks_sum": obj.get("amount_blinding_masks_sum"), + "asset_id_blinding_mask_x_amount_sum": obj.get("asset_id_blinding_mask_x_amount_sum"), + "ao_asset_id": obj.get("ao_asset_id"), + "ao_asset_id_pt": obj.get("ao_asset_id_pt"), + "ao_amount_commitment": obj.get("ao_amount_commitment"), + "ao_amount_blinding_mask": obj.get("ao_amount_blinding_mask"), + "ao_commitment_in_outputs": obj.get("ao_commitment_in_outputs"), + "tx_key_pub": obj.get("tx_key_pub"), + "tx_key_sec": obj.get("tx_key_sec"), + "tx_pub_key_p": obj.get("tx_pub_key_p") + }) + return _obj + + diff --git a/utils/sdk/client/python/lthn/models/tx_pool_performance_model.py b/utils/sdk/client/python/lthn/models/tx_pool_performance_model.py new file mode 100644 index 00000000..c5b4e3fe --- /dev/null +++ b/utils/sdk/client/python/lthn/models/tx_pool_performance_model.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictInt +from typing import Any, ClassVar, Dict, List, Optional +from typing import Optional, Set +from typing_extensions import Self + +class TxPoolPerformanceModel(BaseModel): + """ + TxPoolPerformanceModel + """ # noqa: E501 + tx_processing_time: Optional[StrictInt] = None + check_inputs_types_supported_time: Optional[StrictInt] = None + expiration_validate_time: Optional[StrictInt] = None + validate_amount_time: Optional[StrictInt] = None + validate_alias_time: Optional[StrictInt] = None + check_keyimages_ws_ms_time: Optional[StrictInt] = None + check_inputs_time: Optional[StrictInt] = None + begin_tx_time: Optional[StrictInt] = None + update_db_time: Optional[StrictInt] = None + db_commit_time: Optional[StrictInt] = None + check_post_hf4_balance: Optional[StrictInt] = None + __properties: ClassVar[List[str]] = ["tx_processing_time", "check_inputs_types_supported_time", "expiration_validate_time", "validate_amount_time", "validate_alias_time", "check_keyimages_ws_ms_time", "check_inputs_time", "begin_tx_time", "update_db_time", "db_commit_time", "check_post_hf4_balance"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of TxPoolPerformanceModel from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of TxPoolPerformanceModel from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "tx_processing_time": obj.get("tx_processing_time"), + "check_inputs_types_supported_time": obj.get("check_inputs_types_supported_time"), + "expiration_validate_time": obj.get("expiration_validate_time"), + "validate_amount_time": obj.get("validate_amount_time"), + "validate_alias_time": obj.get("validate_alias_time"), + "check_keyimages_ws_ms_time": obj.get("check_keyimages_ws_ms_time"), + "check_inputs_time": obj.get("check_inputs_time"), + "begin_tx_time": obj.get("begin_tx_time"), + "update_db_time": obj.get("update_db_time"), + "db_commit_time": obj.get("db_commit_time"), + "check_post_hf4_balance": obj.get("check_post_hf4_balance") + }) + return _obj + + diff --git a/utils/sdk/client/python/lthn/models/tx_processing_performance_model.py b/utils/sdk/client/python/lthn/models/tx_processing_performance_model.py new file mode 100644 index 00000000..de0fea82 --- /dev/null +++ b/utils/sdk/client/python/lthn/models/tx_processing_performance_model.py @@ -0,0 +1,135 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictInt +from typing import Any, ClassVar, Dict, List, Optional +from typing import Optional, Set +from typing_extensions import Self + +class TxProcessingPerformanceModel(BaseModel): + """ + TxProcessingPerformanceModel + """ # noqa: E501 + tx_check_inputs: Optional[StrictInt] = None + tx_add_one_tx: Optional[StrictInt] = None + tx_process_extra: Optional[StrictInt] = None + tx_process_attachment: Optional[StrictInt] = None + tx_process_inputs: Optional[StrictInt] = None + tx_push_global_index: Optional[StrictInt] = None + tx_check_exist: Optional[StrictInt] = None + tx_print_log: Optional[StrictInt] = None + tx_prapare_append: Optional[StrictInt] = None + tx_append: Optional[StrictInt] = None + tx_append_rl_wait: Optional[StrictInt] = None + tx_append_is_expired: Optional[StrictInt] = None + tx_store_db: Optional[StrictInt] = None + tx_check_inputs_prefix_hash: Optional[StrictInt] = None + tx_check_inputs_attachment_check: Optional[StrictInt] = None + tx_check_inputs_loop: Optional[StrictInt] = None + tx_check_inputs_loop_kimage_check: Optional[StrictInt] = None + tx_check_inputs_loop_ch_in_val_sig: Optional[StrictInt] = None + tx_check_inputs_loop_scan_outputkeys_get_item_size: Optional[StrictInt] = None + tx_check_inputs_loop_scan_outputkeys_relative_to_absolute: Optional[StrictInt] = None + tx_check_inputs_loop_scan_outputkeys_loop: Optional[StrictInt] = None + tx_check_inputs_loop_scan_outputkeys_loop_get_subitem: Optional[StrictInt] = None + tx_check_inputs_loop_scan_outputkeys_loop_find_tx: Optional[StrictInt] = None + tx_check_inputs_loop_scan_outputkeys_loop_handle_output: Optional[StrictInt] = None + tx_mixin_count: Optional[StrictInt] = None + __properties: ClassVar[List[str]] = ["tx_check_inputs", "tx_add_one_tx", "tx_process_extra", "tx_process_attachment", "tx_process_inputs", "tx_push_global_index", "tx_check_exist", "tx_print_log", "tx_prapare_append", "tx_append", "tx_append_rl_wait", "tx_append_is_expired", "tx_store_db", "tx_check_inputs_prefix_hash", "tx_check_inputs_attachment_check", "tx_check_inputs_loop", "tx_check_inputs_loop_kimage_check", "tx_check_inputs_loop_ch_in_val_sig", "tx_check_inputs_loop_scan_outputkeys_get_item_size", "tx_check_inputs_loop_scan_outputkeys_relative_to_absolute", "tx_check_inputs_loop_scan_outputkeys_loop", "tx_check_inputs_loop_scan_outputkeys_loop_get_subitem", "tx_check_inputs_loop_scan_outputkeys_loop_find_tx", "tx_check_inputs_loop_scan_outputkeys_loop_handle_output", "tx_mixin_count"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of TxProcessingPerformanceModel from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of TxProcessingPerformanceModel from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "tx_check_inputs": obj.get("tx_check_inputs"), + "tx_add_one_tx": obj.get("tx_add_one_tx"), + "tx_process_extra": obj.get("tx_process_extra"), + "tx_process_attachment": obj.get("tx_process_attachment"), + "tx_process_inputs": obj.get("tx_process_inputs"), + "tx_push_global_index": obj.get("tx_push_global_index"), + "tx_check_exist": obj.get("tx_check_exist"), + "tx_print_log": obj.get("tx_print_log"), + "tx_prapare_append": obj.get("tx_prapare_append"), + "tx_append": obj.get("tx_append"), + "tx_append_rl_wait": obj.get("tx_append_rl_wait"), + "tx_append_is_expired": obj.get("tx_append_is_expired"), + "tx_store_db": obj.get("tx_store_db"), + "tx_check_inputs_prefix_hash": obj.get("tx_check_inputs_prefix_hash"), + "tx_check_inputs_attachment_check": obj.get("tx_check_inputs_attachment_check"), + "tx_check_inputs_loop": obj.get("tx_check_inputs_loop"), + "tx_check_inputs_loop_kimage_check": obj.get("tx_check_inputs_loop_kimage_check"), + "tx_check_inputs_loop_ch_in_val_sig": obj.get("tx_check_inputs_loop_ch_in_val_sig"), + "tx_check_inputs_loop_scan_outputkeys_get_item_size": obj.get("tx_check_inputs_loop_scan_outputkeys_get_item_size"), + "tx_check_inputs_loop_scan_outputkeys_relative_to_absolute": obj.get("tx_check_inputs_loop_scan_outputkeys_relative_to_absolute"), + "tx_check_inputs_loop_scan_outputkeys_loop": obj.get("tx_check_inputs_loop_scan_outputkeys_loop"), + "tx_check_inputs_loop_scan_outputkeys_loop_get_subitem": obj.get("tx_check_inputs_loop_scan_outputkeys_loop_get_subitem"), + "tx_check_inputs_loop_scan_outputkeys_loop_find_tx": obj.get("tx_check_inputs_loop_scan_outputkeys_loop_find_tx"), + "tx_check_inputs_loop_scan_outputkeys_loop_handle_output": obj.get("tx_check_inputs_loop_scan_outputkeys_loop_handle_output"), + "tx_mixin_count": obj.get("tx_mixin_count") + }) + return _obj + + diff --git a/utils/sdk/client/python/lthn/models/version_model.py b/utils/sdk/client/python/lthn/models/version_model.py new file mode 100644 index 00000000..48e53c3b --- /dev/null +++ b/utils/sdk/client/python/lthn/models/version_model.py @@ -0,0 +1,95 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from typing import Optional, Set +from typing_extensions import Self + +class VersionModel(BaseModel): + """ + VersionModel + """ # noqa: E501 + version: Optional[StrictStr] = None + version_long: Optional[StrictStr] = None + major: Optional[StrictStr] = None + minor: Optional[StrictStr] = None + revision: Optional[StrictStr] = None + __properties: ClassVar[List[str]] = ["version", "version_long", "major", "minor", "revision"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of VersionModel from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of VersionModel from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "version": obj.get("version"), + "version_long": obj.get("version_long"), + "major": obj.get("major"), + "minor": obj.get("minor"), + "revision": obj.get("revision") + }) + return _obj + + diff --git a/utils/sdk/client/python/lthn/py.typed b/utils/sdk/client/python/lthn/py.typed new file mode 100644 index 00000000..e69de29b diff --git a/utils/sdk/client/python/lthn/rest.py b/utils/sdk/client/python/lthn/rest.py new file mode 100644 index 00000000..5a0a972a --- /dev/null +++ b/utils/sdk/client/python/lthn/rest.py @@ -0,0 +1,258 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import io +import json +import re +import ssl + +import urllib3 + +from lthn.exceptions import ApiException, ApiValueError + +SUPPORTED_SOCKS_PROXIES = {"socks5", "socks5h", "socks4", "socks4a"} +RESTResponseType = urllib3.HTTPResponse + + +def is_socks_proxy_url(url): + if url is None: + return False + split_section = url.split("://") + if len(split_section) < 2: + return False + else: + return split_section[0].lower() in SUPPORTED_SOCKS_PROXIES + + +class RESTResponse(io.IOBase): + + def __init__(self, resp) -> None: + self.response = resp + self.status = resp.status + self.reason = resp.reason + self.data = None + + def read(self): + if self.data is None: + self.data = self.response.data + return self.data + + def getheaders(self): + """Returns a dictionary of the response headers.""" + return self.response.headers + + def getheader(self, name, default=None): + """Returns a given response header.""" + return self.response.headers.get(name, default) + + +class RESTClientObject: + + def __init__(self, configuration) -> None: + # urllib3.PoolManager will pass all kw parameters to connectionpool + # https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/poolmanager.py#L75 # noqa: E501 + # https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/connectionpool.py#L680 # noqa: E501 + # Custom SSL certificates and client certificates: http://urllib3.readthedocs.io/en/latest/advanced-usage.html # noqa: E501 + + # cert_reqs + if configuration.verify_ssl: + cert_reqs = ssl.CERT_REQUIRED + else: + cert_reqs = ssl.CERT_NONE + + pool_args = { + "cert_reqs": cert_reqs, + "ca_certs": configuration.ssl_ca_cert, + "cert_file": configuration.cert_file, + "key_file": configuration.key_file, + "ca_cert_data": configuration.ca_cert_data, + } + if configuration.assert_hostname is not None: + pool_args['assert_hostname'] = ( + configuration.assert_hostname + ) + + if configuration.retries is not None: + pool_args['retries'] = configuration.retries + + if configuration.tls_server_name: + pool_args['server_hostname'] = configuration.tls_server_name + + + if configuration.socket_options is not None: + pool_args['socket_options'] = configuration.socket_options + + if configuration.connection_pool_maxsize is not None: + pool_args['maxsize'] = configuration.connection_pool_maxsize + + # https pool manager + self.pool_manager: urllib3.PoolManager + + if configuration.proxy: + if is_socks_proxy_url(configuration.proxy): + from urllib3.contrib.socks import SOCKSProxyManager + pool_args["proxy_url"] = configuration.proxy + pool_args["headers"] = configuration.proxy_headers + self.pool_manager = SOCKSProxyManager(**pool_args) + else: + pool_args["proxy_url"] = configuration.proxy + pool_args["proxy_headers"] = configuration.proxy_headers + self.pool_manager = urllib3.ProxyManager(**pool_args) + else: + self.pool_manager = urllib3.PoolManager(**pool_args) + + def request( + self, + method, + url, + headers=None, + body=None, + post_params=None, + _request_timeout=None + ): + """Perform requests. + + :param method: http request method + :param url: http request url + :param headers: http request headers + :param body: request json body, for `application/json` + :param post_params: request post parameters, + `application/x-www-form-urlencoded` + and `multipart/form-data` + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + """ + method = method.upper() + assert method in [ + 'GET', + 'HEAD', + 'DELETE', + 'POST', + 'PUT', + 'PATCH', + 'OPTIONS' + ] + + if post_params and body: + raise ApiValueError( + "body parameter cannot be used with post_params parameter." + ) + + post_params = post_params or {} + headers = headers or {} + + timeout = None + if _request_timeout: + if isinstance(_request_timeout, (int, float)): + timeout = urllib3.Timeout(total=_request_timeout) + elif ( + isinstance(_request_timeout, tuple) + and len(_request_timeout) == 2 + ): + timeout = urllib3.Timeout( + connect=_request_timeout[0], + read=_request_timeout[1] + ) + + try: + # For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE` + if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']: + + # no content type provided or payload is json + content_type = headers.get('Content-Type') + if ( + not content_type + or re.search('json', content_type, re.IGNORECASE) + ): + request_body = None + if body is not None: + request_body = json.dumps(body) + r = self.pool_manager.request( + method, + url, + body=request_body, + timeout=timeout, + headers=headers, + preload_content=False + ) + elif content_type == 'application/x-www-form-urlencoded': + r = self.pool_manager.request( + method, + url, + fields=post_params, + encode_multipart=False, + timeout=timeout, + headers=headers, + preload_content=False + ) + elif content_type == 'multipart/form-data': + # must del headers['Content-Type'], or the correct + # Content-Type which generated by urllib3 will be + # overwritten. + del headers['Content-Type'] + # Ensures that dict objects are serialized + post_params = [(a, json.dumps(b)) if isinstance(b, dict) else (a,b) for a, b in post_params] + r = self.pool_manager.request( + method, + url, + fields=post_params, + encode_multipart=True, + timeout=timeout, + headers=headers, + preload_content=False + ) + # Pass a `string` parameter directly in the body to support + # other content types than JSON when `body` argument is + # provided in serialized form. + elif isinstance(body, str) or isinstance(body, bytes): + r = self.pool_manager.request( + method, + url, + body=body, + timeout=timeout, + headers=headers, + preload_content=False + ) + elif headers['Content-Type'].startswith('text/') and isinstance(body, bool): + request_body = "true" if body else "false" + r = self.pool_manager.request( + method, + url, + body=request_body, + preload_content=False, + timeout=timeout, + headers=headers) + else: + # Cannot generate the request from given parameters + msg = """Cannot prepare a request message for provided + arguments. Please check that your arguments match + declared content type.""" + raise ApiException(status=0, reason=msg) + # For `GET`, `HEAD` + else: + r = self.pool_manager.request( + method, + url, + fields={}, + timeout=timeout, + headers=headers, + preload_content=False + ) + except urllib3.exceptions.SSLError as e: + msg = "\n".join([type(e).__name__, str(e)]) + raise ApiException(status=0, reason=msg) + + return RESTResponse(r) diff --git a/utils/sdk/client/python/pyproject.toml b/utils/sdk/client/python/pyproject.toml new file mode 100644 index 00000000..2704cbd7 --- /dev/null +++ b/utils/sdk/client/python/pyproject.toml @@ -0,0 +1,95 @@ +[project] +name = "lthn" +version = "1.0.0" +description = "Lethean Blockchain API" +authors = [ + {name = "Lethean",email = "team@openapitools.org"}, +] +license = { text = "EUPL-1.2" } +readme = "README.md" +keywords = ["OpenAPI", "OpenAPI-Generator", "Lethean Blockchain API"] +requires-python = ">=3.9" + +dependencies = [ + "urllib3 (>=2.1.0,<3.0.0)", + "python-dateutil (>=2.8.2)", + "pydantic (>=2)", + "typing-extensions (>=4.7.1)", +] + +[project.urls] +Repository = "https://github.com/letheanVPN/blockchain" + +[tool.poetry] +requires-poetry = ">=2.0" + +[tool.poetry.group.dev.dependencies] +pytest = ">= 7.2.1" +pytest-cov = ">= 2.8.1" +tox = ">= 3.9.0" +flake8 = ">= 4.0.0" +types-python-dateutil = ">= 2.8.19.14" +mypy = ">= 1.5" + + +[build-system] +requires = ["setuptools"] +build-backend = "setuptools.build_meta" + +[tool.pylint.'MESSAGES CONTROL'] +extension-pkg-whitelist = "pydantic" + +[tool.mypy] +files = [ + "lthn", + #"test", # auto-generated tests + "tests", # hand-written tests +] +# TODO: enable "strict" once all these individual checks are passing +# strict = true + +# List from: https://mypy.readthedocs.io/en/stable/existing_code.html#introduce-stricter-options +warn_unused_configs = true +warn_redundant_casts = true +warn_unused_ignores = true + +## Getting these passing should be easy +strict_equality = true +extra_checks = true + +## Strongly recommend enabling this one as soon as you can +check_untyped_defs = true + +## These shouldn't be too much additional work, but may be tricky to +## get passing if you use a lot of untyped libraries +disallow_subclassing_any = true +disallow_untyped_decorators = true +disallow_any_generics = true + +### These next few are various gradations of forcing use of type annotations +#disallow_untyped_calls = true +#disallow_incomplete_defs = true +#disallow_untyped_defs = true +# +### This one isn't too hard to get passing, but return on investment is lower +#no_implicit_reexport = true +# +### This one can be tricky to get passing if you use a lot of untyped libraries +#warn_return_any = true + +[[tool.mypy.overrides]] +module = [ + "lthn.configuration", +] +warn_unused_ignores = true +strict_equality = true +extra_checks = true +check_untyped_defs = true +disallow_subclassing_any = true +disallow_untyped_decorators = true +disallow_any_generics = true +disallow_untyped_calls = true +disallow_incomplete_defs = true +disallow_untyped_defs = true +no_implicit_reexport = true +warn_return_any = true diff --git a/utils/sdk/client/python/requirements.txt b/utils/sdk/client/python/requirements.txt new file mode 100644 index 00000000..6cbb2b98 --- /dev/null +++ b/utils/sdk/client/python/requirements.txt @@ -0,0 +1,4 @@ +urllib3 >= 2.1.0, < 3.0.0 +python_dateutil >= 2.8.2 +pydantic >= 2 +typing-extensions >= 4.7.1 diff --git a/utils/sdk/client/python/setup.cfg b/utils/sdk/client/python/setup.cfg new file mode 100644 index 00000000..11433ee8 --- /dev/null +++ b/utils/sdk/client/python/setup.cfg @@ -0,0 +1,2 @@ +[flake8] +max-line-length=99 diff --git a/utils/sdk/client/python/setup.py b/utils/sdk/client/python/setup.py new file mode 100644 index 00000000..a9dc6eaa --- /dev/null +++ b/utils/sdk/client/python/setup.py @@ -0,0 +1,50 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from setuptools import setup, find_packages # noqa: H301 + +# To install the library, run the following +# +# python setup.py install +# +# prerequisite: setuptools +# http://pypi.python.org/pypi/setuptools +NAME = "lthn" +VERSION = "1.0.0" +PYTHON_REQUIRES = ">= 3.9" +REQUIRES = [ + "urllib3 >= 2.1.0, < 3.0.0", + "python-dateutil >= 2.8.2", + "pydantic >= 2", + "typing-extensions >= 4.7.1", +] + +setup( + name=NAME, + version=VERSION, + description="Lethean Blockchain API", + author="Lethean", + author_email="team@openapitools.org", + url="https://github.com/letheanVPN/blockchain", + keywords=["OpenAPI", "OpenAPI-Generator", "Lethean Blockchain API"], + install_requires=REQUIRES, + packages=find_packages(exclude=["test", "tests"]), + include_package_data=True, + license="EUPL-1.2", + long_description_content_type='text/markdown', + long_description="""\ + OpenAPI for Lethean Blockchain + """, # noqa: E501 + package_data={"lthn": ["py.typed"]}, +) \ No newline at end of file diff --git a/utils/sdk/client/python/test-requirements.txt b/utils/sdk/client/python/test-requirements.txt new file mode 100644 index 00000000..e98555c1 --- /dev/null +++ b/utils/sdk/client/python/test-requirements.txt @@ -0,0 +1,6 @@ +pytest >= 7.2.1 +pytest-cov >= 2.8.1 +tox >= 3.9.0 +flake8 >= 4.0.0 +types-python-dateutil >= 2.8.19.14 +mypy >= 1.5 diff --git a/utils/sdk/client/python/test/__init__.py b/utils/sdk/client/python/test/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/utils/sdk/client/python/test/test_block_api.py b/utils/sdk/client/python/test/test_block_api.py new file mode 100644 index 00000000..43c36cdf --- /dev/null +++ b/utils/sdk/client/python/test/test_block_api.py @@ -0,0 +1,66 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from lthn.api.block_api import BlockApi + + +class TestBlockApi(unittest.TestCase): + """BlockApi unit test stubs""" + + def setUp(self) -> None: + self.api = BlockApi() + + def tearDown(self) -> None: + pass + + def test_create_block_template(self) -> None: + """Test case for create_block_template + + Create a block template for mining + """ + pass + + def test_get_block(self) -> None: + """Test case for get_block + + Get a block by its hash or height (ID) + """ + pass + + def test_get_blocks(self) -> None: + """Test case for get_blocks + + Get one or more blocks, with optional pagination. + """ + pass + + def test_get_height(self) -> None: + """Test case for get_height + + Get the current blockchain height + """ + pass + + def test_submit_block(self) -> None: + """Test case for submit_block + + Submit a new block to the network + """ + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/utils/sdk/client/python/test/test_block_details_model.py b/utils/sdk/client/python/test/test_block_details_model.py new file mode 100644 index 00000000..71916b8a --- /dev/null +++ b/utils/sdk/client/python/test/test_block_details_model.py @@ -0,0 +1,118 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from lthn.models.block_details_model import BlockDetailsModel + +class TestBlockDetailsModel(unittest.TestCase): + """BlockDetailsModel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BlockDetailsModel: + """Test BlockDetailsModel + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `BlockDetailsModel` + """ + model = BlockDetailsModel() + if include_optional: + return BlockDetailsModel( + actual_timestamp = 56, + already_generated_coins = '', + base_reward = 56, + blob = '', + block_cumulative_size = 56, + block_tself_size = 56, + cumulative_diff_adjusted = '', + cumulative_diff_precise = '', + difficulty = '', + effective_fee_median = 56, + height = 56, + id = '', + is_orphan = True, + miner_text_info = '', + object_in_json = '', + penalty = 56, + pow_seed = '', + prev_id = '', + summary_reward = 56, + this_block_fee_median = 56, + timestamp = 56, + total_fee = 56, + total_txs_size = 56, + transactions_details = [ + lthn.models.transaction_details_model.TransactionDetailsModel( + amount = 56, + attachments = [ + lthn.models.transaction_attachment_model.TransactionAttachmentModel( + type = '', + short_view = '', + details_view = '', ) + ], + blob = '', + blob_size = 56, + extra = [ + lthn.models.transaction_extra_model.TransactionExtraModel( + type = '', + short_view = '', + details_view = '', ) + ], + fee = 56, + id = '', + ins = [ + lthn.models.transaction_input_model.TransactionInputModel( + amount = 56, + global_indexes = [ + 56 + ], + htlc_origin = '', + kimage_or_ms_id = '', + multisig_count = 0, ) + ], + keeper_block = 56, + object_in_json = '', + outs = [ + lthn.models.transaction_output_model.TransactionOutputModel( + amount = 56, + global_index = 56, + is_spent = True, + minimum_sigs = 0, + pub_keys = [ + '' + ], ) + ], + pub_key = '', + timestamp = 56, ) + ], + type = 0 + ) + else: + return BlockDetailsModel( + ) + """ + + def testBlockDetailsModel(self): + """Test BlockDetailsModel""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/utils/sdk/client/python/test/test_block_processing_performance_model.py b/utils/sdk/client/python/test/test_block_processing_performance_model.py new file mode 100644 index 00000000..63725356 --- /dev/null +++ b/utils/sdk/client/python/test/test_block_processing_performance_model.py @@ -0,0 +1,66 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from lthn.models.block_processing_performance_model import BlockProcessingPerformanceModel + +class TestBlockProcessingPerformanceModel(unittest.TestCase): + """BlockProcessingPerformanceModel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BlockProcessingPerformanceModel: + """Test BlockProcessingPerformanceModel + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `BlockProcessingPerformanceModel` + """ + model = BlockProcessingPerformanceModel() + if include_optional: + return BlockProcessingPerformanceModel( + block_processing_time_0 = 56, + block_processing_time_1 = 56, + target_calculating_time_2 = 56, + longhash_calculating_time_3 = 56, + all_txs_insert_time_5 = 56, + etc_stuff_6 = 56, + insert_time_4 = 56, + raise_block_core_event = 56, + validate_miner_transaction_time = 56, + collect_rangeproofs_data_from_tx_time = 56, + verify_multiple_zc_outs_range_proofs_time = 56, + target_calculating_enum_blocks = 56, + target_calculating_calc = 56, + pos_validate_ki_search = 56, + pos_validate_get_out_keys_for_inputs = 56, + pos_validate_zvp = 56 + ) + else: + return BlockProcessingPerformanceModel( + ) + """ + + def testBlockProcessingPerformanceModel(self): + """Test BlockProcessingPerformanceModel""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/utils/sdk/client/python/test/test_block_template_model.py b/utils/sdk/client/python/test/test_block_template_model.py new file mode 100644 index 00000000..1c9e2f3d --- /dev/null +++ b/utils/sdk/client/python/test/test_block_template_model.py @@ -0,0 +1,103 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from lthn.models.block_template_model import BlockTemplateModel + +class TestBlockTemplateModel(unittest.TestCase): + """BlockTemplateModel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BlockTemplateModel: + """Test BlockTemplateModel + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `BlockTemplateModel` + """ + model = BlockTemplateModel() + if include_optional: + return BlockTemplateModel( + blocktemplate_blob = '', + difficulty = '', + height = 56, + miner_tx_tgc = lthn.models.tx_generation_context_model.TxGenerationContextModel( + asset_ids = [ + '' + ], + blinded_asset_ids = [ + '' + ], + amount_commitments = [ + '' + ], + asset_id_blinding_masks = [ + '' + ], + amounts = [ + '' + ], + amount_blinding_masks = [ + '' + ], + pseudo_outs_blinded_asset_ids = [ + '' + ], + pseudo_outs_plus_real_out_blinding_masks = [ + '' + ], + real_zc_ins_asset_ids = [ + '' + ], + zc_input_amounts = [ + 56 + ], + pseudo_out_amount_commitments_sum = '', + pseudo_out_amount_blinding_masks_sum = '', + real_in_asset_id_blinding_mask_x_amount_sum = '', + amount_commitments_sum = '', + amount_blinding_masks_sum = '', + asset_id_blinding_mask_x_amount_sum = '', + ao_asset_id = '', + ao_asset_id_pt = '', + ao_amount_commitment = '', + ao_amount_blinding_mask = '', + ao_commitment_in_outputs = True, + tx_key_pub = '', + tx_key_sec = '', + tx_pub_key_p = '', ), + block_reward_without_fee = 56, + block_reward = 56, + txs_fee = 56, + prev_hash = '', + seed = '' + ) + else: + return BlockTemplateModel( + ) + """ + + def testBlockTemplateModel(self): + """Test BlockTemplateModel""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/utils/sdk/client/python/test/test_block_template_request_model.py b/utils/sdk/client/python/test/test_block_template_request_model.py new file mode 100644 index 00000000..c594d937 --- /dev/null +++ b/utils/sdk/client/python/test/test_block_template_request_model.py @@ -0,0 +1,67 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from lthn.models.block_template_request_model import BlockTemplateRequestModel + +class TestBlockTemplateRequestModel(unittest.TestCase): + """BlockTemplateRequestModel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> BlockTemplateRequestModel: + """Test BlockTemplateRequestModel + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `BlockTemplateRequestModel` + """ + model = BlockTemplateRequestModel() + if include_optional: + return BlockTemplateRequestModel( + miner_address = '', + stakeholder_address = '', + ex_nonce = '', + pos_block = True, + ignore_pow_ts_check = True, + pe = lthn.models.pos_entry_model.PosEntryModel( + amount = 56, + g_index = 56, + keyimage = '', + block_timestamp = 56, + stake_unlock_time = 56, + tx_id = '', + tx_out_index = 56, + wallet_index = 56, ), + explicit_txs = [ + '' + ] + ) + else: + return BlockTemplateRequestModel( + ) + """ + + def testBlockTemplateRequestModel(self): + """Test BlockTemplateRequestModel""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/utils/sdk/client/python/test/test_db_stat_info_model.py b/utils/sdk/client/python/test/test_db_stat_info_model.py new file mode 100644 index 00000000..468ff884 --- /dev/null +++ b/utils/sdk/client/python/test/test_db_stat_info_model.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from lthn.models.db_stat_info_model import DbStatInfoModel + +class TestDbStatInfoModel(unittest.TestCase): + """DbStatInfoModel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> DbStatInfoModel: + """Test DbStatInfoModel + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `DbStatInfoModel` + """ + model = DbStatInfoModel() + if include_optional: + return DbStatInfoModel( + tx_count = 56, + write_tx_count = 56, + map_size = 56 + ) + else: + return DbStatInfoModel( + ) + """ + + def testDbStatInfoModel(self): + """Test DbStatInfoModel""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/utils/sdk/client/python/test/test_height_model.py b/utils/sdk/client/python/test/test_height_model.py new file mode 100644 index 00000000..176c2dcf --- /dev/null +++ b/utils/sdk/client/python/test/test_height_model.py @@ -0,0 +1,51 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from lthn.models.height_model import HeightModel + +class TestHeightModel(unittest.TestCase): + """HeightModel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> HeightModel: + """Test HeightModel + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `HeightModel` + """ + model = HeightModel() + if include_optional: + return HeightModel( + height = 56 + ) + else: + return HeightModel( + ) + """ + + def testHeightModel(self): + """Test HeightModel""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/utils/sdk/client/python/test/test_info_api.py b/utils/sdk/client/python/test/test_info_api.py new file mode 100644 index 00000000..b778651d --- /dev/null +++ b/utils/sdk/client/python/test/test_info_api.py @@ -0,0 +1,45 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from lthn.api.info_api import InfoApi + + +class TestInfoApi(unittest.TestCase): + """InfoApi unit test stubs""" + + def setUp(self) -> None: + self.api = InfoApi() + + def tearDown(self) -> None: + pass + + def test_get_info(self) -> None: + """Test case for get_info + + Get detailed information about the blockchain and daemon state + """ + pass + + def test_version(self) -> None: + """Test case for version + + Get API version + """ + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/utils/sdk/client/python/test/test_info_model.py b/utils/sdk/client/python/test/test_info_model.py new file mode 100644 index 00000000..27500b5f --- /dev/null +++ b/utils/sdk/client/python/test/test_info_model.py @@ -0,0 +1,168 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from lthn.models.info_model import InfoModel + +class TestInfoModel(unittest.TestCase): + """InfoModel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> InfoModel: + """Test InfoModel + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `InfoModel` + """ + model = InfoModel() + if include_optional: + return InfoModel( + height = 56, + tx_count = 56, + tx_pool_size = 56, + alt_blocks_count = 56, + outgoing_connections_count = 56, + incoming_connections_count = 56, + synchronized_connections_count = 56, + white_peerlist_size = 56, + grey_peerlist_size = 56, + current_blocks_median = 56, + alias_count = 56, + current_max_allowed_block_size = 56, + daemon_network_state = '', + synchronization_start_height = 56, + max_net_seen_height = 56, + mi = lthn.models.maintainers_info_model.MaintainersInfoModel( + ver_major = 0, + ver_minor = 0, + ver_revision = 0, + build_no = 0, + mode = 0, ), + pos_allowed = True, + pos_difficulty = '', + pow_difficulty = 56, + default_fee = 56, + minimum_fee = 56, + is_hardfork_active = [ + True + ], + net_time_delta_median = 56, + current_network_hashrate_50 = 56, + current_network_hashrate_350 = 56, + seconds_for_10_blocks = 56, + seconds_for_30_blocks = 56, + transactions_cnt_per_day = [ + 56 + ], + transactions_volume_per_day = [ + 56 + ], + last_pos_timestamp = 56, + last_pow_timestamp = 56, + total_coins = '', + last_block_size = 56, + tx_count_in_last_block = 56, + pos_sequence_factor = 1.337, + pow_sequence_factor = 1.337, + block_reward = 56, + last_block_total_reward = 56, + pos_diff_total_coins_rate = 56, + last_block_timestamp = 56, + last_block_hash = '', + pos_block_ts_shift_vs_actual = 56, + outs_stat = { + 'key' : 56 + }, + performance_data = lthn.models.performance_model.PerformanceModel( + block_processing = lthn.models.block_processing_performance_model.BlockProcessingPerformanceModel( + block_processing_time_0 = 56, + block_processing_time_1 = 56, + target_calculating_time_2 = 56, + longhash_calculating_time_3 = 56, + all_txs_insert_time_5 = 56, + etc_stuff_6 = 56, + insert_time_4 = 56, + raise_block_core_event = 56, + validate_miner_transaction_time = 56, + collect_rangeproofs_data_from_tx_time = 56, + verify_multiple_zc_outs_range_proofs_time = 56, + target_calculating_enum_blocks = 56, + target_calculating_calc = 56, + pos_validate_ki_search = 56, + pos_validate_get_out_keys_for_inputs = 56, + pos_validate_zvp = 56, ), + tx_processing = lthn.models.tx_processing_performance_model.TxProcessingPerformanceModel( + tx_check_inputs = 56, + tx_add_one_tx = 56, + tx_process_extra = 56, + tx_process_attachment = 56, + tx_process_inputs = 56, + tx_push_global_index = 56, + tx_check_exist = 56, + tx_print_log = 56, + tx_prapare_append = 56, + tx_append = 56, + tx_append_rl_wait = 56, + tx_append_is_expired = 56, + tx_store_db = 56, + tx_check_inputs_prefix_hash = 56, + tx_check_inputs_attachment_check = 56, + tx_check_inputs_loop = 56, + tx_check_inputs_loop_kimage_check = 56, + tx_check_inputs_loop_ch_in_val_sig = 56, + tx_check_inputs_loop_scan_outputkeys_get_item_size = 56, + tx_check_inputs_loop_scan_outputkeys_relative_to_absolute = 56, + tx_check_inputs_loop_scan_outputkeys_loop = 56, + tx_check_inputs_loop_scan_outputkeys_loop_get_subitem = 56, + tx_check_inputs_loop_scan_outputkeys_loop_find_tx = 56, + tx_check_inputs_loop_scan_outputkeys_loop_handle_output = 56, + tx_mixin_count = 56, ), + tx_pool = lthn.models.tx_pool_performance_model.TxPoolPerformanceModel( + tx_processing_time = 56, + check_inputs_types_supported_time = 56, + expiration_validate_time = 56, + validate_amount_time = 56, + validate_alias_time = 56, + check_keyimages_ws_ms_time = 56, + check_inputs_time = 56, + begin_tx_time = 56, + update_db_time = 56, + db_commit_time = 56, + check_post_hf4_balance = 56, ), + db_stat_info = lthn.models.db_stat_info_model.DbStatInfoModel( + tx_count = 56, + write_tx_count = 56, + map_size = 56, ), ), + offers_count = 56, + expiration_median_timestamp = 56 + ) + else: + return InfoModel( + ) + """ + + def testInfoModel(self): + """Test InfoModel""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/utils/sdk/client/python/test/test_maintainers_info_model.py b/utils/sdk/client/python/test/test_maintainers_info_model.py new file mode 100644 index 00000000..285e1a22 --- /dev/null +++ b/utils/sdk/client/python/test/test_maintainers_info_model.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from lthn.models.maintainers_info_model import MaintainersInfoModel + +class TestMaintainersInfoModel(unittest.TestCase): + """MaintainersInfoModel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> MaintainersInfoModel: + """Test MaintainersInfoModel + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `MaintainersInfoModel` + """ + model = MaintainersInfoModel() + if include_optional: + return MaintainersInfoModel( + ver_major = 0, + ver_minor = 0, + ver_revision = 0, + build_no = 0, + mode = 0 + ) + else: + return MaintainersInfoModel( + ) + """ + + def testMaintainersInfoModel(self): + """Test MaintainersInfoModel""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/utils/sdk/client/python/test/test_performance_model.py b/utils/sdk/client/python/test/test_performance_model.py new file mode 100644 index 00000000..b6c37515 --- /dev/null +++ b/utils/sdk/client/python/test/test_performance_model.py @@ -0,0 +1,109 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from lthn.models.performance_model import PerformanceModel + +class TestPerformanceModel(unittest.TestCase): + """PerformanceModel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PerformanceModel: + """Test PerformanceModel + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `PerformanceModel` + """ + model = PerformanceModel() + if include_optional: + return PerformanceModel( + block_processing = lthn.models.block_processing_performance_model.BlockProcessingPerformanceModel( + block_processing_time_0 = 56, + block_processing_time_1 = 56, + target_calculating_time_2 = 56, + longhash_calculating_time_3 = 56, + all_txs_insert_time_5 = 56, + etc_stuff_6 = 56, + insert_time_4 = 56, + raise_block_core_event = 56, + validate_miner_transaction_time = 56, + collect_rangeproofs_data_from_tx_time = 56, + verify_multiple_zc_outs_range_proofs_time = 56, + target_calculating_enum_blocks = 56, + target_calculating_calc = 56, + pos_validate_ki_search = 56, + pos_validate_get_out_keys_for_inputs = 56, + pos_validate_zvp = 56, ), + tx_processing = lthn.models.tx_processing_performance_model.TxProcessingPerformanceModel( + tx_check_inputs = 56, + tx_add_one_tx = 56, + tx_process_extra = 56, + tx_process_attachment = 56, + tx_process_inputs = 56, + tx_push_global_index = 56, + tx_check_exist = 56, + tx_print_log = 56, + tx_prapare_append = 56, + tx_append = 56, + tx_append_rl_wait = 56, + tx_append_is_expired = 56, + tx_store_db = 56, + tx_check_inputs_prefix_hash = 56, + tx_check_inputs_attachment_check = 56, + tx_check_inputs_loop = 56, + tx_check_inputs_loop_kimage_check = 56, + tx_check_inputs_loop_ch_in_val_sig = 56, + tx_check_inputs_loop_scan_outputkeys_get_item_size = 56, + tx_check_inputs_loop_scan_outputkeys_relative_to_absolute = 56, + tx_check_inputs_loop_scan_outputkeys_loop = 56, + tx_check_inputs_loop_scan_outputkeys_loop_get_subitem = 56, + tx_check_inputs_loop_scan_outputkeys_loop_find_tx = 56, + tx_check_inputs_loop_scan_outputkeys_loop_handle_output = 56, + tx_mixin_count = 56, ), + tx_pool = lthn.models.tx_pool_performance_model.TxPoolPerformanceModel( + tx_processing_time = 56, + check_inputs_types_supported_time = 56, + expiration_validate_time = 56, + validate_amount_time = 56, + validate_alias_time = 56, + check_keyimages_ws_ms_time = 56, + check_inputs_time = 56, + begin_tx_time = 56, + update_db_time = 56, + db_commit_time = 56, + check_post_hf4_balance = 56, ), + db_stat_info = lthn.models.db_stat_info_model.DbStatInfoModel( + tx_count = 56, + write_tx_count = 56, + map_size = 56, ) + ) + else: + return PerformanceModel( + ) + """ + + def testPerformanceModel(self): + """Test PerformanceModel""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/utils/sdk/client/python/test/test_pos_entry_model.py b/utils/sdk/client/python/test/test_pos_entry_model.py new file mode 100644 index 00000000..d868fb7f --- /dev/null +++ b/utils/sdk/client/python/test/test_pos_entry_model.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from lthn.models.pos_entry_model import PosEntryModel + +class TestPosEntryModel(unittest.TestCase): + """PosEntryModel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> PosEntryModel: + """Test PosEntryModel + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `PosEntryModel` + """ + model = PosEntryModel() + if include_optional: + return PosEntryModel( + amount = 56, + g_index = 56, + keyimage = '', + block_timestamp = 56, + stake_unlock_time = 56, + tx_id = '', + tx_out_index = 56, + wallet_index = 56 + ) + else: + return PosEntryModel( + ) + """ + + def testPosEntryModel(self): + """Test PosEntryModel""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/utils/sdk/client/python/test/test_submit_block_request_model.py b/utils/sdk/client/python/test/test_submit_block_request_model.py new file mode 100644 index 00000000..c2a3f50f --- /dev/null +++ b/utils/sdk/client/python/test/test_submit_block_request_model.py @@ -0,0 +1,51 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from lthn.models.submit_block_request_model import SubmitBlockRequestModel + +class TestSubmitBlockRequestModel(unittest.TestCase): + """SubmitBlockRequestModel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SubmitBlockRequestModel: + """Test SubmitBlockRequestModel + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `SubmitBlockRequestModel` + """ + model = SubmitBlockRequestModel() + if include_optional: + return SubmitBlockRequestModel( + block_blob = '' + ) + else: + return SubmitBlockRequestModel( + ) + """ + + def testSubmitBlockRequestModel(self): + """Test SubmitBlockRequestModel""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/utils/sdk/client/python/test/test_submit_block_response_model.py b/utils/sdk/client/python/test/test_submit_block_response_model.py new file mode 100644 index 00000000..2fd18672 --- /dev/null +++ b/utils/sdk/client/python/test/test_submit_block_response_model.py @@ -0,0 +1,51 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from lthn.models.submit_block_response_model import SubmitBlockResponseModel + +class TestSubmitBlockResponseModel(unittest.TestCase): + """SubmitBlockResponseModel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> SubmitBlockResponseModel: + """Test SubmitBlockResponseModel + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `SubmitBlockResponseModel` + """ + model = SubmitBlockResponseModel() + if include_optional: + return SubmitBlockResponseModel( + status = '' + ) + else: + return SubmitBlockResponseModel( + ) + """ + + def testSubmitBlockResponseModel(self): + """Test SubmitBlockResponseModel""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/utils/sdk/client/python/test/test_transaction_attachment_model.py b/utils/sdk/client/python/test/test_transaction_attachment_model.py new file mode 100644 index 00000000..93c40458 --- /dev/null +++ b/utils/sdk/client/python/test/test_transaction_attachment_model.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from lthn.models.transaction_attachment_model import TransactionAttachmentModel + +class TestTransactionAttachmentModel(unittest.TestCase): + """TransactionAttachmentModel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> TransactionAttachmentModel: + """Test TransactionAttachmentModel + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `TransactionAttachmentModel` + """ + model = TransactionAttachmentModel() + if include_optional: + return TransactionAttachmentModel( + type = '', + short_view = '', + details_view = '' + ) + else: + return TransactionAttachmentModel( + ) + """ + + def testTransactionAttachmentModel(self): + """Test TransactionAttachmentModel""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/utils/sdk/client/python/test/test_transaction_details_model.py b/utils/sdk/client/python/test/test_transaction_details_model.py new file mode 100644 index 00000000..91334502 --- /dev/null +++ b/utils/sdk/client/python/test/test_transaction_details_model.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from lthn.models.transaction_details_model import TransactionDetailsModel + +class TestTransactionDetailsModel(unittest.TestCase): + """TransactionDetailsModel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> TransactionDetailsModel: + """Test TransactionDetailsModel + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `TransactionDetailsModel` + """ + model = TransactionDetailsModel() + if include_optional: + return TransactionDetailsModel( + amount = 56, + attachments = [ + lthn.models.transaction_attachment_model.TransactionAttachmentModel( + type = '', + short_view = '', + details_view = '', ) + ], + blob = '', + blob_size = 56, + extra = [ + lthn.models.transaction_extra_model.TransactionExtraModel( + type = '', + short_view = '', + details_view = '', ) + ], + fee = 56, + id = '', + ins = [ + lthn.models.transaction_input_model.TransactionInputModel( + amount = 56, + global_indexes = [ + 56 + ], + htlc_origin = '', + kimage_or_ms_id = '', + multisig_count = 0, ) + ], + keeper_block = 56, + object_in_json = '', + outs = [ + lthn.models.transaction_output_model.TransactionOutputModel( + amount = 56, + global_index = 56, + is_spent = True, + minimum_sigs = 0, + pub_keys = [ + '' + ], ) + ], + pub_key = '', + timestamp = 56 + ) + else: + return TransactionDetailsModel( + ) + """ + + def testTransactionDetailsModel(self): + """Test TransactionDetailsModel""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/utils/sdk/client/python/test/test_transaction_extra_model.py b/utils/sdk/client/python/test/test_transaction_extra_model.py new file mode 100644 index 00000000..e58a68f9 --- /dev/null +++ b/utils/sdk/client/python/test/test_transaction_extra_model.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from lthn.models.transaction_extra_model import TransactionExtraModel + +class TestTransactionExtraModel(unittest.TestCase): + """TransactionExtraModel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> TransactionExtraModel: + """Test TransactionExtraModel + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `TransactionExtraModel` + """ + model = TransactionExtraModel() + if include_optional: + return TransactionExtraModel( + type = '', + short_view = '', + details_view = '' + ) + else: + return TransactionExtraModel( + ) + """ + + def testTransactionExtraModel(self): + """Test TransactionExtraModel""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/utils/sdk/client/python/test/test_transaction_input_model.py b/utils/sdk/client/python/test/test_transaction_input_model.py new file mode 100644 index 00000000..10b7877e --- /dev/null +++ b/utils/sdk/client/python/test/test_transaction_input_model.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from lthn.models.transaction_input_model import TransactionInputModel + +class TestTransactionInputModel(unittest.TestCase): + """TransactionInputModel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> TransactionInputModel: + """Test TransactionInputModel + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `TransactionInputModel` + """ + model = TransactionInputModel() + if include_optional: + return TransactionInputModel( + amount = 56, + global_indexes = [ + 56 + ], + htlc_origin = '', + kimage_or_ms_id = '', + multisig_count = 0 + ) + else: + return TransactionInputModel( + ) + """ + + def testTransactionInputModel(self): + """Test TransactionInputModel""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/utils/sdk/client/python/test/test_transaction_output_model.py b/utils/sdk/client/python/test/test_transaction_output_model.py new file mode 100644 index 00000000..ce232eda --- /dev/null +++ b/utils/sdk/client/python/test/test_transaction_output_model.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from lthn.models.transaction_output_model import TransactionOutputModel + +class TestTransactionOutputModel(unittest.TestCase): + """TransactionOutputModel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> TransactionOutputModel: + """Test TransactionOutputModel + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `TransactionOutputModel` + """ + model = TransactionOutputModel() + if include_optional: + return TransactionOutputModel( + amount = 56, + global_index = 56, + is_spent = True, + minimum_sigs = 0, + pub_keys = [ + '' + ] + ) + else: + return TransactionOutputModel( + ) + """ + + def testTransactionOutputModel(self): + """Test TransactionOutputModel""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/utils/sdk/client/python/test/test_tx_generation_context_model.py b/utils/sdk/client/python/test/test_tx_generation_context_model.py new file mode 100644 index 00000000..9de4a0cc --- /dev/null +++ b/utils/sdk/client/python/test/test_tx_generation_context_model.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from lthn.models.tx_generation_context_model import TxGenerationContextModel + +class TestTxGenerationContextModel(unittest.TestCase): + """TxGenerationContextModel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> TxGenerationContextModel: + """Test TxGenerationContextModel + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `TxGenerationContextModel` + """ + model = TxGenerationContextModel() + if include_optional: + return TxGenerationContextModel( + asset_ids = [ + '' + ], + blinded_asset_ids = [ + '' + ], + amount_commitments = [ + '' + ], + asset_id_blinding_masks = [ + '' + ], + amounts = [ + '' + ], + amount_blinding_masks = [ + '' + ], + pseudo_outs_blinded_asset_ids = [ + '' + ], + pseudo_outs_plus_real_out_blinding_masks = [ + '' + ], + real_zc_ins_asset_ids = [ + '' + ], + zc_input_amounts = [ + 56 + ], + pseudo_out_amount_commitments_sum = '', + pseudo_out_amount_blinding_masks_sum = '', + real_in_asset_id_blinding_mask_x_amount_sum = '', + amount_commitments_sum = '', + amount_blinding_masks_sum = '', + asset_id_blinding_mask_x_amount_sum = '', + ao_asset_id = '', + ao_asset_id_pt = '', + ao_amount_commitment = '', + ao_amount_blinding_mask = '', + ao_commitment_in_outputs = True, + tx_key_pub = '', + tx_key_sec = '', + tx_pub_key_p = '' + ) + else: + return TxGenerationContextModel( + ) + """ + + def testTxGenerationContextModel(self): + """Test TxGenerationContextModel""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/utils/sdk/client/python/test/test_tx_pool_performance_model.py b/utils/sdk/client/python/test/test_tx_pool_performance_model.py new file mode 100644 index 00000000..8fc0840c --- /dev/null +++ b/utils/sdk/client/python/test/test_tx_pool_performance_model.py @@ -0,0 +1,61 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from lthn.models.tx_pool_performance_model import TxPoolPerformanceModel + +class TestTxPoolPerformanceModel(unittest.TestCase): + """TxPoolPerformanceModel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> TxPoolPerformanceModel: + """Test TxPoolPerformanceModel + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `TxPoolPerformanceModel` + """ + model = TxPoolPerformanceModel() + if include_optional: + return TxPoolPerformanceModel( + tx_processing_time = 56, + check_inputs_types_supported_time = 56, + expiration_validate_time = 56, + validate_amount_time = 56, + validate_alias_time = 56, + check_keyimages_ws_ms_time = 56, + check_inputs_time = 56, + begin_tx_time = 56, + update_db_time = 56, + db_commit_time = 56, + check_post_hf4_balance = 56 + ) + else: + return TxPoolPerformanceModel( + ) + """ + + def testTxPoolPerformanceModel(self): + """Test TxPoolPerformanceModel""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/utils/sdk/client/python/test/test_tx_processing_performance_model.py b/utils/sdk/client/python/test/test_tx_processing_performance_model.py new file mode 100644 index 00000000..d76d5306 --- /dev/null +++ b/utils/sdk/client/python/test/test_tx_processing_performance_model.py @@ -0,0 +1,75 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from lthn.models.tx_processing_performance_model import TxProcessingPerformanceModel + +class TestTxProcessingPerformanceModel(unittest.TestCase): + """TxProcessingPerformanceModel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> TxProcessingPerformanceModel: + """Test TxProcessingPerformanceModel + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `TxProcessingPerformanceModel` + """ + model = TxProcessingPerformanceModel() + if include_optional: + return TxProcessingPerformanceModel( + tx_check_inputs = 56, + tx_add_one_tx = 56, + tx_process_extra = 56, + tx_process_attachment = 56, + tx_process_inputs = 56, + tx_push_global_index = 56, + tx_check_exist = 56, + tx_print_log = 56, + tx_prapare_append = 56, + tx_append = 56, + tx_append_rl_wait = 56, + tx_append_is_expired = 56, + tx_store_db = 56, + tx_check_inputs_prefix_hash = 56, + tx_check_inputs_attachment_check = 56, + tx_check_inputs_loop = 56, + tx_check_inputs_loop_kimage_check = 56, + tx_check_inputs_loop_ch_in_val_sig = 56, + tx_check_inputs_loop_scan_outputkeys_get_item_size = 56, + tx_check_inputs_loop_scan_outputkeys_relative_to_absolute = 56, + tx_check_inputs_loop_scan_outputkeys_loop = 56, + tx_check_inputs_loop_scan_outputkeys_loop_get_subitem = 56, + tx_check_inputs_loop_scan_outputkeys_loop_find_tx = 56, + tx_check_inputs_loop_scan_outputkeys_loop_handle_output = 56, + tx_mixin_count = 56 + ) + else: + return TxProcessingPerformanceModel( + ) + """ + + def testTxProcessingPerformanceModel(self): + """Test TxProcessingPerformanceModel""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/utils/sdk/client/python/test/test_version_model.py b/utils/sdk/client/python/test/test_version_model.py new file mode 100644 index 00000000..b965135c --- /dev/null +++ b/utils/sdk/client/python/test/test_version_model.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" + Lethean Blockchain API + + OpenAPI for Lethean Blockchain + + The version of the OpenAPI document: 6.0.1 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from lthn.models.version_model import VersionModel + +class TestVersionModel(unittest.TestCase): + """VersionModel unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> VersionModel: + """Test VersionModel + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included """ + # uncomment below to create an instance of `VersionModel` + """ + model = VersionModel() + if include_optional: + return VersionModel( + version = '', + version_long = '', + major = '', + minor = '', + revision = '' + ) + else: + return VersionModel( + ) + """ + + def testVersionModel(self): + """Test VersionModel""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + +if __name__ == '__main__': + unittest.main() diff --git a/utils/sdk/client/python/tox.ini b/utils/sdk/client/python/tox.ini new file mode 100644 index 00000000..928195f7 --- /dev/null +++ b/utils/sdk/client/python/tox.ini @@ -0,0 +1,9 @@ +[tox] +envlist = py3 + +[testenv] +deps=-r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt + +commands= + pytest --cov=lthn diff --git a/utils/sdk/packages/python.json b/utils/sdk/packages/python.json index 3cb982bd..d1a623c9 100644 --- a/utils/sdk/packages/python.json +++ b/utils/sdk/packages/python.json @@ -1,7 +1,7 @@ { "additionalProperties": { - "packageName": "lthnchainsdk", - "projectName": "lthnchainsdk", - "packageUrl": "https://github.com/letheanVPN" + "packageName": "lthn", + "projectName": "lthn", + "packageUrl": "https://github.com/letheanVPN/blockchain" } } \ No newline at end of file From 7a751142e85bd6bf983bc541bf7f45fe596078b8 Mon Sep 17 00:00:00 2001 From: Snider Date: Sun, 19 Oct 2025 18:01:44 +0100 Subject: [PATCH 64/65] Update Go SDK build process and package config Enhances the Go SDK Makefile target to fix import paths in generated files and sets the correct Go module path. Updates go.json to use 'utils/sdk/client/go' for package, API, and model paths, and adds additional OpenAPI generator properties. --- utils/sdk/Makefile | 16 ++++++++++------ utils/sdk/packages/go.json | 9 ++++++--- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/utils/sdk/Makefile b/utils/sdk/Makefile index 757197bc..881d9d6d 100644 --- a/utils/sdk/Makefile +++ b/utils/sdk/Makefile @@ -17,7 +17,11 @@ POST_BUILD_HOOK = @true echo "go.sum" >> $(BUILD_DIR)/go/.openapi-generator-ignore # For the 'go' target, define specific post-build steps. -go: POST_BUILD_HOOK = (cd $(BUILD_DIR)/go && go mod edit -module github.com/letheanVPN/blockchain/utils/sdk/client/go && go mod tidy) +go: POST_BUILD_HOOK = @echo "--> Setting Go module path..."; \ + echo "--> Fixing import paths in generated Go files..."; \ + find "$(BUILD_DIR)/go" -type f -name '*.go' -exec sed -i '' 's|github.com/letheanVPN/blockchain/lthn|github.com/letheanVPN/blockchain/utils/sdk/client/go|g' {} +; \ + find "$(BUILD_DIR)/go" -type f -name '*.md' -exec sed -i '' 's|github.com/letheanVPN/blockchain/lthn|github.com/letheanVPN/blockchain/utils/sdk/client/go|g' {} +; \ + echo "--> Tidying Go module...";(cd $(BUILD_DIR)/go && go mod edit -module github.com/letheanVPN/blockchain/utils/sdk/client/go && go mod tidy) # For the 'go' target, set the generator name correctly. go: GENERATOR_NAME=go @@ -35,6 +39,7 @@ build: $(SDK_TARGETS) $(SDK_TARGETS): %: packages/%.json # Default generator name is the target name itself. $(eval GENERATOR_NAME = $@) + rm -rf "$(BUILD_DIR)/$@" # Ensure the output directory exists, cross-platform. @cmake -E make_directory "$(BUILD_DIR)/$@" @echo "--> Creating .openapi-generator-ignore file" @@ -45,17 +50,16 @@ $(SDK_TARGETS): %: packages/%.json @echo "--- Building package $@ with version $(PACKAGE_VERSION) ---" # Run pre-build hook $(PRE_BUILD_HOOK) - rm -rf "$(BUILD_DIR)/$@/*" export TS_POST_PROCESS_FILE="/usr/local/bin/prettier --write" && \ openapi-generator generate --minimal-update --git-host "github.com" --git-repo-id "blockchain" --git-user-id "letheanVPN" \ - -i "$(BASE_DIR)/spec/oas-3.0.0.json" --group-id "lthn" \ + -i "$(BASE_DIR)/spec/oas-3.0.0.json" \ + -p 'developerEmail=support@lt.hn,developerName=Lethean Community,developerOrganization=lethean,developerOrganizationUrl=https://lt.hn' \ + -p "packageName=lthn,licenseName=EUPL-1.2" \ -g "$(GENERATOR_NAME)" \ -o "$(BUILD_DIR)/$@" \ -c "$<" \ - --artifact-version "$(PACKAGE_VERSION)" \ - --package-name "lthn" + --artifact-version "$(PACKAGE_VERSION)" # Run post-build hook - @echo "--> Running Post Build..." $(POST_BUILD_HOOK) # Phony targets to avoid conflicts with file names and to ensure they always run. diff --git a/utils/sdk/packages/go.json b/utils/sdk/packages/go.json index ec20510b..bfe3a5de 100644 --- a/utils/sdk/packages/go.json +++ b/utils/sdk/packages/go.json @@ -1,7 +1,10 @@ { "additionalProperties": { - "packageName": "lthn", - "generateInterfaces": true, - "isGoSubmodule": true + "packageName": "utils/sdk/client/go", + "apiNameSuffix": "utils/sdk/client/go", + "apiPackage": "utils/sdk/client/go", + "modelPackage": "utils/sdk/client/go", + "isGoSubmodule": true, + "disallowAdditionalPropertiesIfNotPresent": false } } \ No newline at end of file From 42368f3b4d05098975561e5df1117076ab7aad58 Mon Sep 17 00:00:00 2001 From: Snider Date: Sun, 19 Oct 2025 18:02:02 +0100 Subject: [PATCH 65/65] Refactor Go SDK API service names and add Java SDK Renamed Go SDK API services and documentation from BlockAPI/InfoAPI to BlockUtilsSdkClientGo/InfoUtilsSdkClientGo for consistency. Updated all references, method receivers, and usage examples accordingly. Added new Java SDK client, models, API, documentation, and build files under utils/sdk/client/java. Updated Go module dependencies and added go.sum. Enhanced Go models to support additional properties in JSON unmarshalling. --- utils/sdk/client/go/.openapi-generator/FILES | 4 +- utils/sdk/client/go/api_block.go | 108 +- utils/sdk/client/go/api_info.go | 49 +- utils/sdk/client/go/client.go | 8 +- .../{BlockAPI.md => BlockUtilsSdkClientGo.md} | 52 +- .../{InfoAPI.md => InfoUtilsSdkClientGo.md} | 22 +- utils/sdk/client/go/go.mod | 8 + utils/sdk/client/go/go.sum | 10 + .../client/go/model_block_details_model.go | 53 + ...odel_block_processing_performance_model.go | 44 + .../client/go/model_block_template_model.go | 37 + .../go/model_block_template_request_model.go | 35 + .../sdk/client/go/model_db_stat_info_model.go | 31 + utils/sdk/client/go/model_height_model.go | 29 + utils/sdk/client/go/model_info_model.go | 74 + .../client/go/model_maintainers_info_model.go | 33 + .../sdk/client/go/model_performance_model.go | 32 + utils/sdk/client/go/model_pos_entry_model.go | 36 + .../go/model_submit_block_request_model.go | 29 + .../go/model_submit_block_response_model.go | 29 + .../go/model_transaction_attachment_model.go | 31 + .../go/model_transaction_details_model.go | 41 + .../go/model_transaction_extra_model.go | 31 + .../go/model_transaction_input_model.go | 33 + .../go/model_transaction_output_model.go | 33 + .../go/model_tx_generation_context_model.go | 52 + .../go/model_tx_pool_performance_model.go | 39 + .../model_tx_processing_performance_model.go | 53 + utils/sdk/client/go/model_version_model.go | 33 + utils/sdk/client/go/test/api_block_test.go | 26 +- utils/sdk/client/go/test/api_info_test.go | 14 +- .../client/java/.github/workflows/maven.yml | 30 + utils/sdk/client/java/.gitignore | 21 + .../sdk/client/java/.openapi-generator-ignore | 3 + .../sdk/client/java/.openapi-generator/FILES | 77 + .../client/java/.openapi-generator/VERSION | 1 + utils/sdk/client/java/api/openapi.yaml | 1346 ++++++++++++++ utils/sdk/client/java/build.gradle | 166 ++ utils/sdk/client/java/build.sbt | 27 + utils/sdk/client/java/docs/BlockApi.md | 313 ++++ .../sdk/client/java/docs/BlockDetailsModel.md | 37 + .../docs/BlockProcessingPerformanceModel.md | 28 + .../client/java/docs/BlockTemplateModel.md | 21 + .../java/docs/BlockTemplateRequestModel.md | 19 + utils/sdk/client/java/docs/DbStatInfoModel.md | 15 + utils/sdk/client/java/docs/HeightModel.md | 13 + utils/sdk/client/java/docs/InfoApi.md | 128 ++ utils/sdk/client/java/docs/InfoModel.md | 58 + .../client/java/docs/MaintainersInfoModel.md | 17 + .../sdk/client/java/docs/PerformanceModel.md | 16 + utils/sdk/client/java/docs/PosEntryModel.md | 20 + .../java/docs/SubmitBlockRequestModel.md | 13 + .../java/docs/SubmitBlockResponseModel.md | 13 + .../java/docs/TransactionAttachmentModel.md | 15 + .../java/docs/TransactionDetailsModel.md | 25 + .../client/java/docs/TransactionExtraModel.md | 15 + .../client/java/docs/TransactionInputModel.md | 17 + .../java/docs/TransactionOutputModel.md | 17 + .../java/docs/TxGenerationContextModel.md | 36 + .../java/docs/TxPoolPerformanceModel.md | 23 + .../java/docs/TxProcessingPerformanceModel.md | 37 + utils/sdk/client/java/docs/VersionModel.md | 17 + utils/sdk/client/java/gradle.properties | 6 + .../java/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43453 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 + utils/sdk/client/java/gradlew | 249 +++ utils/sdk/client/java/gradlew.bat | 92 + utils/sdk/client/java/pom.xml | 340 ++++ utils/sdk/client/java/settings.gradle | 1 + .../client/java/src/main/AndroidManifest.xml | 3 + .../java/invalidPackageName/ApiCallback.java | 62 + .../java/invalidPackageName/ApiClient.java | 1592 +++++++++++++++++ .../java/invalidPackageName/ApiException.java | 168 ++ .../java/invalidPackageName/ApiResponse.java | 76 + .../invalidPackageName/Configuration.java | 63 + .../GzipRequestInterceptor.java | 85 + .../main/java/invalidPackageName/JSON.java | 446 +++++ .../main/java/invalidPackageName/Pair.java | 37 + .../ProgressRequestBody.java | 73 + .../ProgressResponseBody.java | 70 + .../ServerConfiguration.java | 72 + .../invalidPackageName/ServerVariable.java | 37 + .../java/invalidPackageName/StringUtil.java | 83 + .../invalidPackageName/auth/ApiKeyAuth.java | 80 + .../auth/Authentication.java | 37 + .../auth/HttpBasicAuth.java | 55 + .../auth/HttpBearerAuth.java | 75 + .../java/src/main/java/lthn/BlockApi.java | 727 ++++++++ .../java/src/main/java/lthn/InfoApi.java | 318 ++++ .../src/main/java/org/lthn/ApiCallback.java | 62 + .../src/main/java/org/lthn/ApiClient.java | 1592 +++++++++++++++++ .../src/main/java/org/lthn/ApiException.java | 168 ++ .../src/main/java/org/lthn/ApiResponse.java | 76 + .../src/main/java/org/lthn/Configuration.java | 63 + .../java/org/lthn/GzipRequestInterceptor.java | 85 + .../java/src/main/java/org/lthn/JSON.java | 446 +++++ .../java/src/main/java/org/lthn/Pair.java | 37 + .../java/org/lthn/ProgressRequestBody.java | 73 + .../java/org/lthn/ProgressResponseBody.java | 70 + .../java/org/lthn/ServerConfiguration.java | 72 + .../main/java/org/lthn/ServerVariable.java | 37 + .../src/main/java/org/lthn/StringUtil.java | 83 + .../src/main/java/org/lthn/api/BlockApi.java | 727 ++++++++ .../src/main/java/org/lthn/api/InfoApi.java | 318 ++++ .../main/java/org/lthn/auth/ApiKeyAuth.java | 80 + .../java/org/lthn/auth/Authentication.java | 37 + .../java/org/lthn/auth/HttpBasicAuth.java | 55 + .../java/org/lthn/auth/HttpBearerAuth.java | 75 + .../org/openapitools/client/ApiCallback.java | 62 + .../org/openapitools/client/ApiClient.java | 1592 +++++++++++++++++ .../org/openapitools/client/ApiException.java | 168 ++ .../org/openapitools/client/ApiResponse.java | 76 + .../openapitools/client/Configuration.java | 63 + .../client/GzipRequestInterceptor.java | 85 + .../java/org/openapitools/client/JSON.java | 446 +++++ .../java/org/openapitools/client/Pair.java | 37 + .../client/ProgressRequestBody.java | 73 + .../client/ProgressResponseBody.java | 70 + .../client/ServerConfiguration.java | 72 + .../openapitools/client/ServerVariable.java | 37 + .../org/openapitools/client/StringUtil.java | 83 + .../org/openapitools/client/api/BlockApi.java | 727 ++++++++ .../org/openapitools/client/api/InfoApi.java | 318 ++++ .../openapitools/client/auth/ApiKeyAuth.java | 80 + .../client/auth/Authentication.java | 37 + .../client/auth/HttpBasicAuth.java | 55 + .../client/auth/HttpBearerAuth.java | 75 + .../client/model/AbstractOpenApiSchema.java | 146 ++ .../client/model/BlockDetailsModel.java | 885 +++++++++ .../BlockProcessingPerformanceModel.java | 594 ++++++ .../client/model/BlockTemplateModel.java | 429 +++++ .../model/BlockTemplateRequestModel.java | 388 ++++ .../client/model/DbStatInfoModel.java | 256 +++ .../client/model/HeightModel.java | 204 +++ .../openapitools/client/model/InfoModel.java | 1444 +++++++++++++++ .../client/model/MaintainersInfoModel.java | 318 ++++ .../client/model/PerformanceModel.java | 302 ++++ .../client/model/PosEntryModel.java | 392 ++++ .../client/model/SubmitBlockRequestModel.java | 207 +++ .../model/SubmitBlockResponseModel.java | 207 +++ .../model/TransactionAttachmentModel.java | 265 +++ .../client/model/TransactionDetailsModel.java | 622 +++++++ .../client/model/TransactionExtraModel.java | 265 +++ .../client/model/TransactionInputModel.java | 330 ++++ .../client/model/TransactionOutputModel.java | 324 ++++ .../model/TxGenerationContextModel.java | 963 ++++++++++ .../client/model/TxPoolPerformanceModel.java | 464 +++++ .../model/TxProcessingPerformanceModel.java | 828 +++++++++ .../client/model/VersionModel.java | 323 ++++ .../java/src/test/java/lthn/BlockApiTest.java | 97 + .../java/src/test/java/lthn/InfoApiTest.java | 60 + .../test/java/org/lthn/api/BlockApiTest.java | 97 + .../test/java/org/lthn/api/InfoApiTest.java | 60 + .../openapitools/client/api/BlockApiTest.java | 97 + .../openapitools/client/api/InfoApiTest.java | 60 + .../client/model/BlockDetailsModelTest.java | 243 +++ .../BlockProcessingPerformanceModelTest.java | 168 ++ .../client/model/BlockTemplateModelTest.java | 113 ++ .../model/BlockTemplateRequestModelTest.java | 99 + .../client/model/DbStatInfoModelTest.java | 64 + .../client/model/HeightModelTest.java | 48 + .../client/model/InfoModelTest.java | 414 +++++ .../model/MaintainersInfoModelTest.java | 80 + .../client/model/PerformanceModelTest.java | 76 + .../client/model/PosEntryModelTest.java | 104 ++ .../model/SubmitBlockRequestModelTest.java | 48 + .../model/SubmitBlockResponseModelTest.java | 48 + .../model/TransactionAttachmentModelTest.java | 64 + .../model/TransactionDetailsModelTest.java | 150 ++ .../model/TransactionExtraModelTest.java | 64 + .../model/TransactionInputModelTest.java | 82 + .../model/TransactionOutputModelTest.java | 82 + .../model/TxGenerationContextModelTest.java | 234 +++ .../model/TxPoolPerformanceModelTest.java | 128 ++ .../TxProcessingPerformanceModelTest.java | 240 +++ .../client/model/VersionModelTest.java | 80 + utils/sdk/packages/java.json | 3 - utils/sdk/packages/php.json | 5 - 178 files changed, 29927 insertions(+), 196 deletions(-) rename utils/sdk/client/go/docs/{BlockAPI.md => BlockUtilsSdkClientGo.md} (71%) rename utils/sdk/client/go/docs/{InfoAPI.md => InfoUtilsSdkClientGo.md} (76%) create mode 100644 utils/sdk/client/go/go.sum create mode 100644 utils/sdk/client/java/.github/workflows/maven.yml create mode 100644 utils/sdk/client/java/.gitignore create mode 100644 utils/sdk/client/java/.openapi-generator-ignore create mode 100644 utils/sdk/client/java/.openapi-generator/FILES create mode 100644 utils/sdk/client/java/.openapi-generator/VERSION create mode 100644 utils/sdk/client/java/api/openapi.yaml create mode 100644 utils/sdk/client/java/build.gradle create mode 100644 utils/sdk/client/java/build.sbt create mode 100644 utils/sdk/client/java/docs/BlockApi.md create mode 100644 utils/sdk/client/java/docs/BlockDetailsModel.md create mode 100644 utils/sdk/client/java/docs/BlockProcessingPerformanceModel.md create mode 100644 utils/sdk/client/java/docs/BlockTemplateModel.md create mode 100644 utils/sdk/client/java/docs/BlockTemplateRequestModel.md create mode 100644 utils/sdk/client/java/docs/DbStatInfoModel.md create mode 100644 utils/sdk/client/java/docs/HeightModel.md create mode 100644 utils/sdk/client/java/docs/InfoApi.md create mode 100644 utils/sdk/client/java/docs/InfoModel.md create mode 100644 utils/sdk/client/java/docs/MaintainersInfoModel.md create mode 100644 utils/sdk/client/java/docs/PerformanceModel.md create mode 100644 utils/sdk/client/java/docs/PosEntryModel.md create mode 100644 utils/sdk/client/java/docs/SubmitBlockRequestModel.md create mode 100644 utils/sdk/client/java/docs/SubmitBlockResponseModel.md create mode 100644 utils/sdk/client/java/docs/TransactionAttachmentModel.md create mode 100644 utils/sdk/client/java/docs/TransactionDetailsModel.md create mode 100644 utils/sdk/client/java/docs/TransactionExtraModel.md create mode 100644 utils/sdk/client/java/docs/TransactionInputModel.md create mode 100644 utils/sdk/client/java/docs/TransactionOutputModel.md create mode 100644 utils/sdk/client/java/docs/TxGenerationContextModel.md create mode 100644 utils/sdk/client/java/docs/TxPoolPerformanceModel.md create mode 100644 utils/sdk/client/java/docs/TxProcessingPerformanceModel.md create mode 100644 utils/sdk/client/java/docs/VersionModel.md create mode 100644 utils/sdk/client/java/gradle.properties create mode 100644 utils/sdk/client/java/gradle/wrapper/gradle-wrapper.jar create mode 100644 utils/sdk/client/java/gradle/wrapper/gradle-wrapper.properties create mode 100644 utils/sdk/client/java/gradlew create mode 100644 utils/sdk/client/java/gradlew.bat create mode 100644 utils/sdk/client/java/pom.xml create mode 100644 utils/sdk/client/java/settings.gradle create mode 100644 utils/sdk/client/java/src/main/AndroidManifest.xml create mode 100644 utils/sdk/client/java/src/main/java/invalidPackageName/ApiCallback.java create mode 100644 utils/sdk/client/java/src/main/java/invalidPackageName/ApiClient.java create mode 100644 utils/sdk/client/java/src/main/java/invalidPackageName/ApiException.java create mode 100644 utils/sdk/client/java/src/main/java/invalidPackageName/ApiResponse.java create mode 100644 utils/sdk/client/java/src/main/java/invalidPackageName/Configuration.java create mode 100644 utils/sdk/client/java/src/main/java/invalidPackageName/GzipRequestInterceptor.java create mode 100644 utils/sdk/client/java/src/main/java/invalidPackageName/JSON.java create mode 100644 utils/sdk/client/java/src/main/java/invalidPackageName/Pair.java create mode 100644 utils/sdk/client/java/src/main/java/invalidPackageName/ProgressRequestBody.java create mode 100644 utils/sdk/client/java/src/main/java/invalidPackageName/ProgressResponseBody.java create mode 100644 utils/sdk/client/java/src/main/java/invalidPackageName/ServerConfiguration.java create mode 100644 utils/sdk/client/java/src/main/java/invalidPackageName/ServerVariable.java create mode 100644 utils/sdk/client/java/src/main/java/invalidPackageName/StringUtil.java create mode 100644 utils/sdk/client/java/src/main/java/invalidPackageName/auth/ApiKeyAuth.java create mode 100644 utils/sdk/client/java/src/main/java/invalidPackageName/auth/Authentication.java create mode 100644 utils/sdk/client/java/src/main/java/invalidPackageName/auth/HttpBasicAuth.java create mode 100644 utils/sdk/client/java/src/main/java/invalidPackageName/auth/HttpBearerAuth.java create mode 100644 utils/sdk/client/java/src/main/java/lthn/BlockApi.java create mode 100644 utils/sdk/client/java/src/main/java/lthn/InfoApi.java create mode 100644 utils/sdk/client/java/src/main/java/org/lthn/ApiCallback.java create mode 100644 utils/sdk/client/java/src/main/java/org/lthn/ApiClient.java create mode 100644 utils/sdk/client/java/src/main/java/org/lthn/ApiException.java create mode 100644 utils/sdk/client/java/src/main/java/org/lthn/ApiResponse.java create mode 100644 utils/sdk/client/java/src/main/java/org/lthn/Configuration.java create mode 100644 utils/sdk/client/java/src/main/java/org/lthn/GzipRequestInterceptor.java create mode 100644 utils/sdk/client/java/src/main/java/org/lthn/JSON.java create mode 100644 utils/sdk/client/java/src/main/java/org/lthn/Pair.java create mode 100644 utils/sdk/client/java/src/main/java/org/lthn/ProgressRequestBody.java create mode 100644 utils/sdk/client/java/src/main/java/org/lthn/ProgressResponseBody.java create mode 100644 utils/sdk/client/java/src/main/java/org/lthn/ServerConfiguration.java create mode 100644 utils/sdk/client/java/src/main/java/org/lthn/ServerVariable.java create mode 100644 utils/sdk/client/java/src/main/java/org/lthn/StringUtil.java create mode 100644 utils/sdk/client/java/src/main/java/org/lthn/api/BlockApi.java create mode 100644 utils/sdk/client/java/src/main/java/org/lthn/api/InfoApi.java create mode 100644 utils/sdk/client/java/src/main/java/org/lthn/auth/ApiKeyAuth.java create mode 100644 utils/sdk/client/java/src/main/java/org/lthn/auth/Authentication.java create mode 100644 utils/sdk/client/java/src/main/java/org/lthn/auth/HttpBasicAuth.java create mode 100644 utils/sdk/client/java/src/main/java/org/lthn/auth/HttpBearerAuth.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/ApiCallback.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/ApiClient.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/ApiException.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/ApiResponse.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/Configuration.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/GzipRequestInterceptor.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/JSON.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/Pair.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/ProgressRequestBody.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/ProgressResponseBody.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/ServerConfiguration.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/ServerVariable.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/StringUtil.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/api/BlockApi.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/api/InfoApi.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/auth/ApiKeyAuth.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/auth/Authentication.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/auth/HttpBearerAuth.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/model/BlockDetailsModel.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/model/BlockProcessingPerformanceModel.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/model/BlockTemplateModel.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/model/BlockTemplateRequestModel.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/model/DbStatInfoModel.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/model/HeightModel.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/model/InfoModel.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/model/MaintainersInfoModel.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/model/PerformanceModel.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/model/PosEntryModel.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/model/SubmitBlockRequestModel.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/model/SubmitBlockResponseModel.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/model/TransactionAttachmentModel.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/model/TransactionDetailsModel.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/model/TransactionExtraModel.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/model/TransactionInputModel.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/model/TransactionOutputModel.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/model/TxGenerationContextModel.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/model/TxPoolPerformanceModel.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/model/TxProcessingPerformanceModel.java create mode 100644 utils/sdk/client/java/src/main/java/org/openapitools/client/model/VersionModel.java create mode 100644 utils/sdk/client/java/src/test/java/lthn/BlockApiTest.java create mode 100644 utils/sdk/client/java/src/test/java/lthn/InfoApiTest.java create mode 100644 utils/sdk/client/java/src/test/java/org/lthn/api/BlockApiTest.java create mode 100644 utils/sdk/client/java/src/test/java/org/lthn/api/InfoApiTest.java create mode 100644 utils/sdk/client/java/src/test/java/org/openapitools/client/api/BlockApiTest.java create mode 100644 utils/sdk/client/java/src/test/java/org/openapitools/client/api/InfoApiTest.java create mode 100644 utils/sdk/client/java/src/test/java/org/openapitools/client/model/BlockDetailsModelTest.java create mode 100644 utils/sdk/client/java/src/test/java/org/openapitools/client/model/BlockProcessingPerformanceModelTest.java create mode 100644 utils/sdk/client/java/src/test/java/org/openapitools/client/model/BlockTemplateModelTest.java create mode 100644 utils/sdk/client/java/src/test/java/org/openapitools/client/model/BlockTemplateRequestModelTest.java create mode 100644 utils/sdk/client/java/src/test/java/org/openapitools/client/model/DbStatInfoModelTest.java create mode 100644 utils/sdk/client/java/src/test/java/org/openapitools/client/model/HeightModelTest.java create mode 100644 utils/sdk/client/java/src/test/java/org/openapitools/client/model/InfoModelTest.java create mode 100644 utils/sdk/client/java/src/test/java/org/openapitools/client/model/MaintainersInfoModelTest.java create mode 100644 utils/sdk/client/java/src/test/java/org/openapitools/client/model/PerformanceModelTest.java create mode 100644 utils/sdk/client/java/src/test/java/org/openapitools/client/model/PosEntryModelTest.java create mode 100644 utils/sdk/client/java/src/test/java/org/openapitools/client/model/SubmitBlockRequestModelTest.java create mode 100644 utils/sdk/client/java/src/test/java/org/openapitools/client/model/SubmitBlockResponseModelTest.java create mode 100644 utils/sdk/client/java/src/test/java/org/openapitools/client/model/TransactionAttachmentModelTest.java create mode 100644 utils/sdk/client/java/src/test/java/org/openapitools/client/model/TransactionDetailsModelTest.java create mode 100644 utils/sdk/client/java/src/test/java/org/openapitools/client/model/TransactionExtraModelTest.java create mode 100644 utils/sdk/client/java/src/test/java/org/openapitools/client/model/TransactionInputModelTest.java create mode 100644 utils/sdk/client/java/src/test/java/org/openapitools/client/model/TransactionOutputModelTest.java create mode 100644 utils/sdk/client/java/src/test/java/org/openapitools/client/model/TxGenerationContextModelTest.java create mode 100644 utils/sdk/client/java/src/test/java/org/openapitools/client/model/TxPoolPerformanceModelTest.java create mode 100644 utils/sdk/client/java/src/test/java/org/openapitools/client/model/TxProcessingPerformanceModelTest.java create mode 100644 utils/sdk/client/java/src/test/java/org/openapitools/client/model/VersionModelTest.java diff --git a/utils/sdk/client/go/.openapi-generator/FILES b/utils/sdk/client/go/.openapi-generator/FILES index bf9e05fb..88ee5612 100644 --- a/utils/sdk/client/go/.openapi-generator/FILES +++ b/utils/sdk/client/go/.openapi-generator/FILES @@ -4,15 +4,15 @@ api_block.go api_info.go client.go configuration.go -docs/BlockAPI.md docs/BlockDetailsModel.md docs/BlockProcessingPerformanceModel.md docs/BlockTemplateModel.md docs/BlockTemplateRequestModel.md +docs/BlockUtilsSdkClientGo.md docs/DbStatInfoModel.md docs/HeightModel.md -docs/InfoAPI.md docs/InfoModel.md +docs/InfoUtilsSdkClientGo.md docs/MaintainersInfoModel.md docs/PerformanceModel.md docs/PosEntryModel.md diff --git a/utils/sdk/client/go/api_block.go b/utils/sdk/client/go/api_block.go index 198cf11a..6de31f85 100644 --- a/utils/sdk/client/go/api_block.go +++ b/utils/sdk/client/go/api_block.go @@ -20,76 +20,12 @@ import ( ) -type BlockAPI interface { - - /* - CreateBlockTemplate Create a block template for mining - - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @return ApiCreateBlockTemplateRequest - */ - CreateBlockTemplate(ctx context.Context) ApiCreateBlockTemplateRequest - - // CreateBlockTemplateExecute executes the request - // @return BlockTemplateModel - CreateBlockTemplateExecute(r ApiCreateBlockTemplateRequest) (*BlockTemplateModel, *http.Response, error) - - /* - GetBlock Get a block by its hash or height (ID) - - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param identifier The hash (hex string) or height (integer) of the block to retrieve. - @return ApiGetBlockRequest - */ - GetBlock(ctx context.Context, identifier string) ApiGetBlockRequest - - // GetBlockExecute executes the request - // @return BlockDetailsModel - GetBlockExecute(r ApiGetBlockRequest) (*BlockDetailsModel, *http.Response, error) - - /* - GetBlocks Get one or more blocks, with optional pagination. - - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @return ApiGetBlocksRequest - */ - GetBlocks(ctx context.Context) ApiGetBlocksRequest - - // GetBlocksExecute executes the request - // @return []BlockDetailsModel - GetBlocksExecute(r ApiGetBlocksRequest) ([]BlockDetailsModel, *http.Response, error) - - /* - GetHeight Get the current blockchain height - - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @return ApiGetHeightRequest - */ - GetHeight(ctx context.Context) ApiGetHeightRequest - - // GetHeightExecute executes the request - // @return HeightModel - GetHeightExecute(r ApiGetHeightRequest) (*HeightModel, *http.Response, error) - - /* - SubmitBlock Submit a new block to the network - - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @return ApiSubmitBlockRequest - */ - SubmitBlock(ctx context.Context) ApiSubmitBlockRequest - - // SubmitBlockExecute executes the request - // @return SubmitBlockResponseModel - SubmitBlockExecute(r ApiSubmitBlockRequest) (*SubmitBlockResponseModel, *http.Response, error) -} - -// BlockAPIService BlockAPI service -type BlockAPIService service +// BlockUtilsSdkClientGoService BlockUtilsSdkClientGo service +type BlockUtilsSdkClientGoService service type ApiCreateBlockTemplateRequest struct { ctx context.Context - ApiService BlockAPI + ApiService *BlockUtilsSdkClientGoService blockTemplateRequestModel *BlockTemplateRequestModel } @@ -108,7 +44,7 @@ CreateBlockTemplate Create a block template for mining @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @return ApiCreateBlockTemplateRequest */ -func (a *BlockAPIService) CreateBlockTemplate(ctx context.Context) ApiCreateBlockTemplateRequest { +func (a *BlockUtilsSdkClientGoService) CreateBlockTemplate(ctx context.Context) ApiCreateBlockTemplateRequest { return ApiCreateBlockTemplateRequest{ ApiService: a, ctx: ctx, @@ -117,7 +53,7 @@ func (a *BlockAPIService) CreateBlockTemplate(ctx context.Context) ApiCreateBloc // Execute executes the request // @return BlockTemplateModel -func (a *BlockAPIService) CreateBlockTemplateExecute(r ApiCreateBlockTemplateRequest) (*BlockTemplateModel, *http.Response, error) { +func (a *BlockUtilsSdkClientGoService) CreateBlockTemplateExecute(r ApiCreateBlockTemplateRequest) (*BlockTemplateModel, *http.Response, error) { var ( localVarHTTPMethod = http.MethodPost localVarPostBody interface{} @@ -125,7 +61,7 @@ func (a *BlockAPIService) CreateBlockTemplateExecute(r ApiCreateBlockTemplateReq localVarReturnValue *BlockTemplateModel ) - localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "BlockAPIService.CreateBlockTemplate") + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "BlockUtilsSdkClientGoService.CreateBlockTemplate") if err != nil { return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} } @@ -197,7 +133,7 @@ func (a *BlockAPIService) CreateBlockTemplateExecute(r ApiCreateBlockTemplateReq type ApiGetBlockRequest struct { ctx context.Context - ApiService BlockAPI + ApiService *BlockUtilsSdkClientGoService identifier string } @@ -212,7 +148,7 @@ GetBlock Get a block by its hash or height (ID) @param identifier The hash (hex string) or height (integer) of the block to retrieve. @return ApiGetBlockRequest */ -func (a *BlockAPIService) GetBlock(ctx context.Context, identifier string) ApiGetBlockRequest { +func (a *BlockUtilsSdkClientGoService) GetBlock(ctx context.Context, identifier string) ApiGetBlockRequest { return ApiGetBlockRequest{ ApiService: a, ctx: ctx, @@ -222,7 +158,7 @@ func (a *BlockAPIService) GetBlock(ctx context.Context, identifier string) ApiGe // Execute executes the request // @return BlockDetailsModel -func (a *BlockAPIService) GetBlockExecute(r ApiGetBlockRequest) (*BlockDetailsModel, *http.Response, error) { +func (a *BlockUtilsSdkClientGoService) GetBlockExecute(r ApiGetBlockRequest) (*BlockDetailsModel, *http.Response, error) { var ( localVarHTTPMethod = http.MethodGet localVarPostBody interface{} @@ -230,7 +166,7 @@ func (a *BlockAPIService) GetBlockExecute(r ApiGetBlockRequest) (*BlockDetailsMo localVarReturnValue *BlockDetailsModel ) - localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "BlockAPIService.GetBlock") + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "BlockUtilsSdkClientGoService.GetBlock") if err != nil { return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} } @@ -298,7 +234,7 @@ func (a *BlockAPIService) GetBlockExecute(r ApiGetBlockRequest) (*BlockDetailsMo type ApiGetBlocksRequest struct { ctx context.Context - ApiService BlockAPI + ApiService *BlockUtilsSdkClientGoService } func (r ApiGetBlocksRequest) Execute() ([]BlockDetailsModel, *http.Response, error) { @@ -311,7 +247,7 @@ GetBlocks Get one or more blocks, with optional pagination. @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @return ApiGetBlocksRequest */ -func (a *BlockAPIService) GetBlocks(ctx context.Context) ApiGetBlocksRequest { +func (a *BlockUtilsSdkClientGoService) GetBlocks(ctx context.Context) ApiGetBlocksRequest { return ApiGetBlocksRequest{ ApiService: a, ctx: ctx, @@ -320,7 +256,7 @@ func (a *BlockAPIService) GetBlocks(ctx context.Context) ApiGetBlocksRequest { // Execute executes the request // @return []BlockDetailsModel -func (a *BlockAPIService) GetBlocksExecute(r ApiGetBlocksRequest) ([]BlockDetailsModel, *http.Response, error) { +func (a *BlockUtilsSdkClientGoService) GetBlocksExecute(r ApiGetBlocksRequest) ([]BlockDetailsModel, *http.Response, error) { var ( localVarHTTPMethod = http.MethodGet localVarPostBody interface{} @@ -328,7 +264,7 @@ func (a *BlockAPIService) GetBlocksExecute(r ApiGetBlocksRequest) ([]BlockDetail localVarReturnValue []BlockDetailsModel ) - localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "BlockAPIService.GetBlocks") + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "BlockUtilsSdkClientGoService.GetBlocks") if err != nil { return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} } @@ -395,7 +331,7 @@ func (a *BlockAPIService) GetBlocksExecute(r ApiGetBlocksRequest) ([]BlockDetail type ApiGetHeightRequest struct { ctx context.Context - ApiService BlockAPI + ApiService *BlockUtilsSdkClientGoService } func (r ApiGetHeightRequest) Execute() (*HeightModel, *http.Response, error) { @@ -408,7 +344,7 @@ GetHeight Get the current blockchain height @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @return ApiGetHeightRequest */ -func (a *BlockAPIService) GetHeight(ctx context.Context) ApiGetHeightRequest { +func (a *BlockUtilsSdkClientGoService) GetHeight(ctx context.Context) ApiGetHeightRequest { return ApiGetHeightRequest{ ApiService: a, ctx: ctx, @@ -417,7 +353,7 @@ func (a *BlockAPIService) GetHeight(ctx context.Context) ApiGetHeightRequest { // Execute executes the request // @return HeightModel -func (a *BlockAPIService) GetHeightExecute(r ApiGetHeightRequest) (*HeightModel, *http.Response, error) { +func (a *BlockUtilsSdkClientGoService) GetHeightExecute(r ApiGetHeightRequest) (*HeightModel, *http.Response, error) { var ( localVarHTTPMethod = http.MethodGet localVarPostBody interface{} @@ -425,7 +361,7 @@ func (a *BlockAPIService) GetHeightExecute(r ApiGetHeightRequest) (*HeightModel, localVarReturnValue *HeightModel ) - localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "BlockAPIService.GetHeight") + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "BlockUtilsSdkClientGoService.GetHeight") if err != nil { return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} } @@ -492,7 +428,7 @@ func (a *BlockAPIService) GetHeightExecute(r ApiGetHeightRequest) (*HeightModel, type ApiSubmitBlockRequest struct { ctx context.Context - ApiService BlockAPI + ApiService *BlockUtilsSdkClientGoService submitBlockRequestModel *SubmitBlockRequestModel } @@ -511,7 +447,7 @@ SubmitBlock Submit a new block to the network @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @return ApiSubmitBlockRequest */ -func (a *BlockAPIService) SubmitBlock(ctx context.Context) ApiSubmitBlockRequest { +func (a *BlockUtilsSdkClientGoService) SubmitBlock(ctx context.Context) ApiSubmitBlockRequest { return ApiSubmitBlockRequest{ ApiService: a, ctx: ctx, @@ -520,7 +456,7 @@ func (a *BlockAPIService) SubmitBlock(ctx context.Context) ApiSubmitBlockRequest // Execute executes the request // @return SubmitBlockResponseModel -func (a *BlockAPIService) SubmitBlockExecute(r ApiSubmitBlockRequest) (*SubmitBlockResponseModel, *http.Response, error) { +func (a *BlockUtilsSdkClientGoService) SubmitBlockExecute(r ApiSubmitBlockRequest) (*SubmitBlockResponseModel, *http.Response, error) { var ( localVarHTTPMethod = http.MethodPost localVarPostBody interface{} @@ -528,7 +464,7 @@ func (a *BlockAPIService) SubmitBlockExecute(r ApiSubmitBlockRequest) (*SubmitBl localVarReturnValue *SubmitBlockResponseModel ) - localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "BlockAPIService.SubmitBlock") + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "BlockUtilsSdkClientGoService.SubmitBlock") if err != nil { return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} } diff --git a/utils/sdk/client/go/api_info.go b/utils/sdk/client/go/api_info.go index 8482eee6..ed06494c 100644 --- a/utils/sdk/client/go/api_info.go +++ b/utils/sdk/client/go/api_info.go @@ -19,41 +19,12 @@ import ( ) -type InfoAPI interface { - - /* - GetInfo Get detailed information about the blockchain and daemon state - - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @return ApiGetInfoRequest - */ - GetInfo(ctx context.Context) ApiGetInfoRequest - - // GetInfoExecute executes the request - // @return InfoModel - GetInfoExecute(r ApiGetInfoRequest) (*InfoModel, *http.Response, error) - - /* - Version Get API version - - Returns the current version of the API. - - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @return ApiVersionRequest - */ - Version(ctx context.Context) ApiVersionRequest - - // VersionExecute executes the request - // @return VersionModel - VersionExecute(r ApiVersionRequest) (*VersionModel, *http.Response, error) -} - -// InfoAPIService InfoAPI service -type InfoAPIService service +// InfoUtilsSdkClientGoService InfoUtilsSdkClientGo service +type InfoUtilsSdkClientGoService service type ApiGetInfoRequest struct { ctx context.Context - ApiService InfoAPI + ApiService *InfoUtilsSdkClientGoService flags *string } @@ -73,7 +44,7 @@ GetInfo Get detailed information about the blockchain and daemon state @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @return ApiGetInfoRequest */ -func (a *InfoAPIService) GetInfo(ctx context.Context) ApiGetInfoRequest { +func (a *InfoUtilsSdkClientGoService) GetInfo(ctx context.Context) ApiGetInfoRequest { return ApiGetInfoRequest{ ApiService: a, ctx: ctx, @@ -82,7 +53,7 @@ func (a *InfoAPIService) GetInfo(ctx context.Context) ApiGetInfoRequest { // Execute executes the request // @return InfoModel -func (a *InfoAPIService) GetInfoExecute(r ApiGetInfoRequest) (*InfoModel, *http.Response, error) { +func (a *InfoUtilsSdkClientGoService) GetInfoExecute(r ApiGetInfoRequest) (*InfoModel, *http.Response, error) { var ( localVarHTTPMethod = http.MethodGet localVarPostBody interface{} @@ -90,7 +61,7 @@ func (a *InfoAPIService) GetInfoExecute(r ApiGetInfoRequest) (*InfoModel, *http. localVarReturnValue *InfoModel ) - localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "InfoAPIService.GetInfo") + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "InfoUtilsSdkClientGoService.GetInfo") if err != nil { return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} } @@ -160,7 +131,7 @@ func (a *InfoAPIService) GetInfoExecute(r ApiGetInfoRequest) (*InfoModel, *http. type ApiVersionRequest struct { ctx context.Context - ApiService InfoAPI + ApiService *InfoUtilsSdkClientGoService } func (r ApiVersionRequest) Execute() (*VersionModel, *http.Response, error) { @@ -175,7 +146,7 @@ Returns the current version of the API. @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @return ApiVersionRequest */ -func (a *InfoAPIService) Version(ctx context.Context) ApiVersionRequest { +func (a *InfoUtilsSdkClientGoService) Version(ctx context.Context) ApiVersionRequest { return ApiVersionRequest{ ApiService: a, ctx: ctx, @@ -184,7 +155,7 @@ func (a *InfoAPIService) Version(ctx context.Context) ApiVersionRequest { // Execute executes the request // @return VersionModel -func (a *InfoAPIService) VersionExecute(r ApiVersionRequest) (*VersionModel, *http.Response, error) { +func (a *InfoUtilsSdkClientGoService) VersionExecute(r ApiVersionRequest) (*VersionModel, *http.Response, error) { var ( localVarHTTPMethod = http.MethodGet localVarPostBody interface{} @@ -192,7 +163,7 @@ func (a *InfoAPIService) VersionExecute(r ApiVersionRequest) (*VersionModel, *ht localVarReturnValue *VersionModel ) - localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "InfoAPIService.Version") + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "InfoUtilsSdkClientGoService.Version") if err != nil { return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} } diff --git a/utils/sdk/client/go/client.go b/utils/sdk/client/go/client.go index 58ab003e..15b0d6c4 100644 --- a/utils/sdk/client/go/client.go +++ b/utils/sdk/client/go/client.go @@ -49,9 +49,9 @@ type APIClient struct { // API Services - BlockAPI BlockAPI + BlockUtilsSdkClientGo *BlockUtilsSdkClientGoService - InfoAPI InfoAPI + InfoUtilsSdkClientGo *InfoUtilsSdkClientGoService } type service struct { @@ -70,8 +70,8 @@ func NewAPIClient(cfg *Configuration) *APIClient { c.common.client = c // API Services - c.BlockAPI = (*BlockAPIService)(&c.common) - c.InfoAPI = (*InfoAPIService)(&c.common) + c.BlockUtilsSdkClientGo = (*BlockUtilsSdkClientGoService)(&c.common) + c.InfoUtilsSdkClientGo = (*InfoUtilsSdkClientGoService)(&c.common) return c } diff --git a/utils/sdk/client/go/docs/BlockAPI.md b/utils/sdk/client/go/docs/BlockUtilsSdkClientGo.md similarity index 71% rename from utils/sdk/client/go/docs/BlockAPI.md rename to utils/sdk/client/go/docs/BlockUtilsSdkClientGo.md index 68550462..7035e8b2 100644 --- a/utils/sdk/client/go/docs/BlockAPI.md +++ b/utils/sdk/client/go/docs/BlockUtilsSdkClientGo.md @@ -1,14 +1,14 @@ -# \BlockAPI +# \BlockUtilsSdkClientGo All URIs are relative to *http://127.0.0.1:36943* Method | HTTP request | Description ------------- | ------------- | ------------- -[**CreateBlockTemplate**](BlockAPI.md#CreateBlockTemplate) | **Post** /block/template | Create a block template for mining -[**GetBlock**](BlockAPI.md#GetBlock) | **Get** /block/{identifier} | Get a block by its hash or height (ID) -[**GetBlocks**](BlockAPI.md#GetBlocks) | **Get** /block | Get one or more blocks, with optional pagination. -[**GetHeight**](BlockAPI.md#GetHeight) | **Get** /block/height | Get the current blockchain height -[**SubmitBlock**](BlockAPI.md#SubmitBlock) | **Post** /block/submit | Submit a new block to the network +[**CreateBlockTemplate**](BlockUtilsSdkClientGo.md#CreateBlockTemplate) | **Post** /block/template | Create a block template for mining +[**GetBlock**](BlockUtilsSdkClientGo.md#GetBlock) | **Get** /block/{identifier} | Get a block by its hash or height (ID) +[**GetBlocks**](BlockUtilsSdkClientGo.md#GetBlocks) | **Get** /block | Get one or more blocks, with optional pagination. +[**GetHeight**](BlockUtilsSdkClientGo.md#GetHeight) | **Get** /block/height | Get the current blockchain height +[**SubmitBlock**](BlockUtilsSdkClientGo.md#SubmitBlock) | **Post** /block/submit | Submit a new block to the network @@ -27,7 +27,7 @@ import ( "context" "fmt" "os" - openapiclient "github.com/letheanVPN/blockchain/lthn" + openapiclient "github.com/letheanVPN/blockchain/utils/sdk/client/go" ) func main() { @@ -35,13 +35,13 @@ func main() { configuration := openapiclient.NewConfiguration() apiClient := openapiclient.NewAPIClient(configuration) - resp, r, err := apiClient.BlockAPI.CreateBlockTemplate(context.Background()).BlockTemplateRequestModel(blockTemplateRequestModel).Execute() + resp, r, err := apiClient.BlockUtilsSdkClientGo.CreateBlockTemplate(context.Background()).BlockTemplateRequestModel(blockTemplateRequestModel).Execute() if err != nil { - fmt.Fprintf(os.Stderr, "Error when calling `BlockAPI.CreateBlockTemplate``: %v\n", err) + fmt.Fprintf(os.Stderr, "Error when calling `BlockUtilsSdkClientGo.CreateBlockTemplate``: %v\n", err) fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) } // response from `CreateBlockTemplate`: BlockTemplateModel - fmt.Fprintf(os.Stdout, "Response from `BlockAPI.CreateBlockTemplate`: %v\n", resp) + fmt.Fprintf(os.Stdout, "Response from `BlockUtilsSdkClientGo.CreateBlockTemplate`: %v\n", resp) } ``` @@ -91,7 +91,7 @@ import ( "context" "fmt" "os" - openapiclient "github.com/letheanVPN/blockchain/lthn" + openapiclient "github.com/letheanVPN/blockchain/utils/sdk/client/go" ) func main() { @@ -99,13 +99,13 @@ func main() { configuration := openapiclient.NewConfiguration() apiClient := openapiclient.NewAPIClient(configuration) - resp, r, err := apiClient.BlockAPI.GetBlock(context.Background(), identifier).Execute() + resp, r, err := apiClient.BlockUtilsSdkClientGo.GetBlock(context.Background(), identifier).Execute() if err != nil { - fmt.Fprintf(os.Stderr, "Error when calling `BlockAPI.GetBlock``: %v\n", err) + fmt.Fprintf(os.Stderr, "Error when calling `BlockUtilsSdkClientGo.GetBlock``: %v\n", err) fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) } // response from `GetBlock`: BlockDetailsModel - fmt.Fprintf(os.Stdout, "Response from `BlockAPI.GetBlock`: %v\n", resp) + fmt.Fprintf(os.Stdout, "Response from `BlockUtilsSdkClientGo.GetBlock`: %v\n", resp) } ``` @@ -159,20 +159,20 @@ import ( "context" "fmt" "os" - openapiclient "github.com/letheanVPN/blockchain/lthn" + openapiclient "github.com/letheanVPN/blockchain/utils/sdk/client/go" ) func main() { configuration := openapiclient.NewConfiguration() apiClient := openapiclient.NewAPIClient(configuration) - resp, r, err := apiClient.BlockAPI.GetBlocks(context.Background()).Execute() + resp, r, err := apiClient.BlockUtilsSdkClientGo.GetBlocks(context.Background()).Execute() if err != nil { - fmt.Fprintf(os.Stderr, "Error when calling `BlockAPI.GetBlocks``: %v\n", err) + fmt.Fprintf(os.Stderr, "Error when calling `BlockUtilsSdkClientGo.GetBlocks``: %v\n", err) fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) } // response from `GetBlocks`: []BlockDetailsModel - fmt.Fprintf(os.Stdout, "Response from `BlockAPI.GetBlocks`: %v\n", resp) + fmt.Fprintf(os.Stdout, "Response from `BlockUtilsSdkClientGo.GetBlocks`: %v\n", resp) } ``` @@ -218,20 +218,20 @@ import ( "context" "fmt" "os" - openapiclient "github.com/letheanVPN/blockchain/lthn" + openapiclient "github.com/letheanVPN/blockchain/utils/sdk/client/go" ) func main() { configuration := openapiclient.NewConfiguration() apiClient := openapiclient.NewAPIClient(configuration) - resp, r, err := apiClient.BlockAPI.GetHeight(context.Background()).Execute() + resp, r, err := apiClient.BlockUtilsSdkClientGo.GetHeight(context.Background()).Execute() if err != nil { - fmt.Fprintf(os.Stderr, "Error when calling `BlockAPI.GetHeight``: %v\n", err) + fmt.Fprintf(os.Stderr, "Error when calling `BlockUtilsSdkClientGo.GetHeight``: %v\n", err) fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) } // response from `GetHeight`: HeightModel - fmt.Fprintf(os.Stdout, "Response from `BlockAPI.GetHeight`: %v\n", resp) + fmt.Fprintf(os.Stdout, "Response from `BlockUtilsSdkClientGo.GetHeight`: %v\n", resp) } ``` @@ -277,7 +277,7 @@ import ( "context" "fmt" "os" - openapiclient "github.com/letheanVPN/blockchain/lthn" + openapiclient "github.com/letheanVPN/blockchain/utils/sdk/client/go" ) func main() { @@ -285,13 +285,13 @@ func main() { configuration := openapiclient.NewConfiguration() apiClient := openapiclient.NewAPIClient(configuration) - resp, r, err := apiClient.BlockAPI.SubmitBlock(context.Background()).SubmitBlockRequestModel(submitBlockRequestModel).Execute() + resp, r, err := apiClient.BlockUtilsSdkClientGo.SubmitBlock(context.Background()).SubmitBlockRequestModel(submitBlockRequestModel).Execute() if err != nil { - fmt.Fprintf(os.Stderr, "Error when calling `BlockAPI.SubmitBlock``: %v\n", err) + fmt.Fprintf(os.Stderr, "Error when calling `BlockUtilsSdkClientGo.SubmitBlock``: %v\n", err) fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) } // response from `SubmitBlock`: SubmitBlockResponseModel - fmt.Fprintf(os.Stdout, "Response from `BlockAPI.SubmitBlock`: %v\n", resp) + fmt.Fprintf(os.Stdout, "Response from `BlockUtilsSdkClientGo.SubmitBlock`: %v\n", resp) } ``` diff --git a/utils/sdk/client/go/docs/InfoAPI.md b/utils/sdk/client/go/docs/InfoUtilsSdkClientGo.md similarity index 76% rename from utils/sdk/client/go/docs/InfoAPI.md rename to utils/sdk/client/go/docs/InfoUtilsSdkClientGo.md index 5a86f33a..4b406020 100644 --- a/utils/sdk/client/go/docs/InfoAPI.md +++ b/utils/sdk/client/go/docs/InfoUtilsSdkClientGo.md @@ -1,11 +1,11 @@ -# \InfoAPI +# \InfoUtilsSdkClientGo All URIs are relative to *http://127.0.0.1:36943* Method | HTTP request | Description ------------- | ------------- | ------------- -[**GetInfo**](InfoAPI.md#GetInfo) | **Get** /info | Get detailed information about the blockchain and daemon state -[**Version**](InfoAPI.md#Version) | **Get** /info/version | Get API version +[**GetInfo**](InfoUtilsSdkClientGo.md#GetInfo) | **Get** /info | Get detailed information about the blockchain and daemon state +[**Version**](InfoUtilsSdkClientGo.md#Version) | **Get** /info/version | Get API version @@ -24,7 +24,7 @@ import ( "context" "fmt" "os" - openapiclient "github.com/letheanVPN/blockchain/lthn" + openapiclient "github.com/letheanVPN/blockchain/utils/sdk/client/go" ) func main() { @@ -32,13 +32,13 @@ func main() { configuration := openapiclient.NewConfiguration() apiClient := openapiclient.NewAPIClient(configuration) - resp, r, err := apiClient.InfoAPI.GetInfo(context.Background()).Flags(flags).Execute() + resp, r, err := apiClient.InfoUtilsSdkClientGo.GetInfo(context.Background()).Flags(flags).Execute() if err != nil { - fmt.Fprintf(os.Stderr, "Error when calling `InfoAPI.GetInfo``: %v\n", err) + fmt.Fprintf(os.Stderr, "Error when calling `InfoUtilsSdkClientGo.GetInfo``: %v\n", err) fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) } // response from `GetInfo`: InfoModel - fmt.Fprintf(os.Stdout, "Response from `InfoAPI.GetInfo`: %v\n", resp) + fmt.Fprintf(os.Stdout, "Response from `InfoUtilsSdkClientGo.GetInfo`: %v\n", resp) } ``` @@ -90,20 +90,20 @@ import ( "context" "fmt" "os" - openapiclient "github.com/letheanVPN/blockchain/lthn" + openapiclient "github.com/letheanVPN/blockchain/utils/sdk/client/go" ) func main() { configuration := openapiclient.NewConfiguration() apiClient := openapiclient.NewAPIClient(configuration) - resp, r, err := apiClient.InfoAPI.Version(context.Background()).Execute() + resp, r, err := apiClient.InfoUtilsSdkClientGo.Version(context.Background()).Execute() if err != nil { - fmt.Fprintf(os.Stderr, "Error when calling `InfoAPI.Version``: %v\n", err) + fmt.Fprintf(os.Stderr, "Error when calling `InfoUtilsSdkClientGo.Version``: %v\n", err) fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r) } // response from `Version`: VersionModel - fmt.Fprintf(os.Stdout, "Response from `InfoAPI.Version`: %v\n", resp) + fmt.Fprintf(os.Stdout, "Response from `InfoUtilsSdkClientGo.Version`: %v\n", resp) } ``` diff --git a/utils/sdk/client/go/go.mod b/utils/sdk/client/go/go.mod index c8166dd0..754b6d85 100644 --- a/utils/sdk/client/go/go.mod +++ b/utils/sdk/client/go/go.mod @@ -1,3 +1,11 @@ module github.com/letheanVPN/blockchain/utils/sdk/client/go go 1.23 + +require github.com/stretchr/testify v1.11.1 + +require ( + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/utils/sdk/client/go/go.sum b/utils/sdk/client/go/go.sum new file mode 100644 index 00000000..c4c1710c --- /dev/null +++ b/utils/sdk/client/go/go.sum @@ -0,0 +1,10 @@ +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/utils/sdk/client/go/model_block_details_model.go b/utils/sdk/client/go/model_block_details_model.go index 6d8f369e..026d7288 100644 --- a/utils/sdk/client/go/model_block_details_model.go +++ b/utils/sdk/client/go/model_block_details_model.go @@ -44,8 +44,11 @@ type BlockDetailsModel struct { TotalTxsSize *int32 `json:"total_txs_size,omitempty"` TransactionsDetails []TransactionDetailsModel `json:"transactions_details,omitempty"` Type *int32 `json:"type,omitempty"` + AdditionalProperties map[string]interface{} } +type _BlockDetailsModel BlockDetailsModel + // NewBlockDetailsModel instantiates a new BlockDetailsModel object // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments @@ -948,9 +951,59 @@ func (o BlockDetailsModel) ToMap() (map[string]interface{}, error) { if !IsNil(o.Type) { toSerialize["type"] = o.Type } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + return toSerialize, nil } +func (o *BlockDetailsModel) UnmarshalJSON(data []byte) (err error) { + varBlockDetailsModel := _BlockDetailsModel{} + + err = json.Unmarshal(data, &varBlockDetailsModel) + + if err != nil { + return err + } + + *o = BlockDetailsModel(varBlockDetailsModel) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "actual_timestamp") + delete(additionalProperties, "already_generated_coins") + delete(additionalProperties, "base_reward") + delete(additionalProperties, "blob") + delete(additionalProperties, "block_cumulative_size") + delete(additionalProperties, "block_tself_size") + delete(additionalProperties, "cumulative_diff_adjusted") + delete(additionalProperties, "cumulative_diff_precise") + delete(additionalProperties, "difficulty") + delete(additionalProperties, "effective_fee_median") + delete(additionalProperties, "height") + delete(additionalProperties, "id") + delete(additionalProperties, "is_orphan") + delete(additionalProperties, "miner_text_info") + delete(additionalProperties, "object_in_json") + delete(additionalProperties, "penalty") + delete(additionalProperties, "pow_seed") + delete(additionalProperties, "prev_id") + delete(additionalProperties, "summary_reward") + delete(additionalProperties, "this_block_fee_median") + delete(additionalProperties, "timestamp") + delete(additionalProperties, "total_fee") + delete(additionalProperties, "total_txs_size") + delete(additionalProperties, "transactions_details") + delete(additionalProperties, "type") + o.AdditionalProperties = additionalProperties + } + + return err +} + type NullableBlockDetailsModel struct { value *BlockDetailsModel isSet bool diff --git a/utils/sdk/client/go/model_block_processing_performance_model.go b/utils/sdk/client/go/model_block_processing_performance_model.go index 582149a2..6e6ef525 100644 --- a/utils/sdk/client/go/model_block_processing_performance_model.go +++ b/utils/sdk/client/go/model_block_processing_performance_model.go @@ -35,8 +35,11 @@ type BlockProcessingPerformanceModel struct { PosValidateKiSearch *int32 `json:"pos_validate_ki_search,omitempty"` PosValidateGetOutKeysForInputs *int32 `json:"pos_validate_get_out_keys_for_inputs,omitempty"` PosValidateZvp *int32 `json:"pos_validate_zvp,omitempty"` + AdditionalProperties map[string]interface{} } +type _BlockProcessingPerformanceModel BlockProcessingPerformanceModel + // NewBlockProcessingPerformanceModel instantiates a new BlockProcessingPerformanceModel object // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments @@ -624,9 +627,50 @@ func (o BlockProcessingPerformanceModel) ToMap() (map[string]interface{}, error) if !IsNil(o.PosValidateZvp) { toSerialize["pos_validate_zvp"] = o.PosValidateZvp } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + return toSerialize, nil } +func (o *BlockProcessingPerformanceModel) UnmarshalJSON(data []byte) (err error) { + varBlockProcessingPerformanceModel := _BlockProcessingPerformanceModel{} + + err = json.Unmarshal(data, &varBlockProcessingPerformanceModel) + + if err != nil { + return err + } + + *o = BlockProcessingPerformanceModel(varBlockProcessingPerformanceModel) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "block_processing_time_0") + delete(additionalProperties, "block_processing_time_1") + delete(additionalProperties, "target_calculating_time_2") + delete(additionalProperties, "longhash_calculating_time_3") + delete(additionalProperties, "all_txs_insert_time_5") + delete(additionalProperties, "etc_stuff_6") + delete(additionalProperties, "insert_time_4") + delete(additionalProperties, "raise_block_core_event") + delete(additionalProperties, "validate_miner_transaction_time") + delete(additionalProperties, "collect_rangeproofs_data_from_tx_time") + delete(additionalProperties, "verify_multiple_zc_outs_range_proofs_time") + delete(additionalProperties, "target_calculating_enum_blocks") + delete(additionalProperties, "target_calculating_calc") + delete(additionalProperties, "pos_validate_ki_search") + delete(additionalProperties, "pos_validate_get_out_keys_for_inputs") + delete(additionalProperties, "pos_validate_zvp") + o.AdditionalProperties = additionalProperties + } + + return err +} + type NullableBlockProcessingPerformanceModel struct { value *BlockProcessingPerformanceModel isSet bool diff --git a/utils/sdk/client/go/model_block_template_model.go b/utils/sdk/client/go/model_block_template_model.go index 48245106..56081a71 100644 --- a/utils/sdk/client/go/model_block_template_model.go +++ b/utils/sdk/client/go/model_block_template_model.go @@ -28,8 +28,11 @@ type BlockTemplateModel struct { TxsFee *int32 `json:"txs_fee,omitempty"` PrevHash *string `json:"prev_hash,omitempty"` Seed *string `json:"seed,omitempty"` + AdditionalProperties map[string]interface{} } +type _BlockTemplateModel BlockTemplateModel + // NewBlockTemplateModel instantiates a new BlockTemplateModel object // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments @@ -372,9 +375,43 @@ func (o BlockTemplateModel) ToMap() (map[string]interface{}, error) { if !IsNil(o.Seed) { toSerialize["seed"] = o.Seed } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + return toSerialize, nil } +func (o *BlockTemplateModel) UnmarshalJSON(data []byte) (err error) { + varBlockTemplateModel := _BlockTemplateModel{} + + err = json.Unmarshal(data, &varBlockTemplateModel) + + if err != nil { + return err + } + + *o = BlockTemplateModel(varBlockTemplateModel) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "blocktemplate_blob") + delete(additionalProperties, "difficulty") + delete(additionalProperties, "height") + delete(additionalProperties, "miner_tx_tgc") + delete(additionalProperties, "block_reward_without_fee") + delete(additionalProperties, "block_reward") + delete(additionalProperties, "txs_fee") + delete(additionalProperties, "prev_hash") + delete(additionalProperties, "seed") + o.AdditionalProperties = additionalProperties + } + + return err +} + type NullableBlockTemplateModel struct { value *BlockTemplateModel isSet bool diff --git a/utils/sdk/client/go/model_block_template_request_model.go b/utils/sdk/client/go/model_block_template_request_model.go index 624a5619..da7f08b2 100644 --- a/utils/sdk/client/go/model_block_template_request_model.go +++ b/utils/sdk/client/go/model_block_template_request_model.go @@ -26,8 +26,11 @@ type BlockTemplateRequestModel struct { IgnorePowTsCheck *bool `json:"ignore_pow_ts_check,omitempty"` Pe *PosEntryModel `json:"pe,omitempty"` ExplicitTxs []string `json:"explicit_txs,omitempty"` + AdditionalProperties map[string]interface{} } +type _BlockTemplateRequestModel BlockTemplateRequestModel + // NewBlockTemplateRequestModel instantiates a new BlockTemplateRequestModel object // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments @@ -300,9 +303,41 @@ func (o BlockTemplateRequestModel) ToMap() (map[string]interface{}, error) { if !IsNil(o.ExplicitTxs) { toSerialize["explicit_txs"] = o.ExplicitTxs } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + return toSerialize, nil } +func (o *BlockTemplateRequestModel) UnmarshalJSON(data []byte) (err error) { + varBlockTemplateRequestModel := _BlockTemplateRequestModel{} + + err = json.Unmarshal(data, &varBlockTemplateRequestModel) + + if err != nil { + return err + } + + *o = BlockTemplateRequestModel(varBlockTemplateRequestModel) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "miner_address") + delete(additionalProperties, "stakeholder_address") + delete(additionalProperties, "ex_nonce") + delete(additionalProperties, "pos_block") + delete(additionalProperties, "ignore_pow_ts_check") + delete(additionalProperties, "pe") + delete(additionalProperties, "explicit_txs") + o.AdditionalProperties = additionalProperties + } + + return err +} + type NullableBlockTemplateRequestModel struct { value *BlockTemplateRequestModel isSet bool diff --git a/utils/sdk/client/go/model_db_stat_info_model.go b/utils/sdk/client/go/model_db_stat_info_model.go index 5f2f49cd..075fd0c9 100644 --- a/utils/sdk/client/go/model_db_stat_info_model.go +++ b/utils/sdk/client/go/model_db_stat_info_model.go @@ -22,8 +22,11 @@ type DbStatInfoModel struct { TxCount *int32 `json:"tx_count,omitempty"` WriteTxCount *int32 `json:"write_tx_count,omitempty"` MapSize *int32 `json:"map_size,omitempty"` + AdditionalProperties map[string]interface{} } +type _DbStatInfoModel DbStatInfoModel + // NewDbStatInfoModel instantiates a new DbStatInfoModel object // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments @@ -156,9 +159,37 @@ func (o DbStatInfoModel) ToMap() (map[string]interface{}, error) { if !IsNil(o.MapSize) { toSerialize["map_size"] = o.MapSize } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + return toSerialize, nil } +func (o *DbStatInfoModel) UnmarshalJSON(data []byte) (err error) { + varDbStatInfoModel := _DbStatInfoModel{} + + err = json.Unmarshal(data, &varDbStatInfoModel) + + if err != nil { + return err + } + + *o = DbStatInfoModel(varDbStatInfoModel) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "tx_count") + delete(additionalProperties, "write_tx_count") + delete(additionalProperties, "map_size") + o.AdditionalProperties = additionalProperties + } + + return err +} + type NullableDbStatInfoModel struct { value *DbStatInfoModel isSet bool diff --git a/utils/sdk/client/go/model_height_model.go b/utils/sdk/client/go/model_height_model.go index e9a44933..f35301c1 100644 --- a/utils/sdk/client/go/model_height_model.go +++ b/utils/sdk/client/go/model_height_model.go @@ -20,8 +20,11 @@ var _ MappedNullable = &HeightModel{} // HeightModel struct for HeightModel type HeightModel struct { Height *int32 `json:"height,omitempty"` + AdditionalProperties map[string]interface{} } +type _HeightModel HeightModel + // NewHeightModel instantiates a new HeightModel object // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments @@ -84,9 +87,35 @@ func (o HeightModel) ToMap() (map[string]interface{}, error) { if !IsNil(o.Height) { toSerialize["height"] = o.Height } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + return toSerialize, nil } +func (o *HeightModel) UnmarshalJSON(data []byte) (err error) { + varHeightModel := _HeightModel{} + + err = json.Unmarshal(data, &varHeightModel) + + if err != nil { + return err + } + + *o = HeightModel(varHeightModel) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "height") + o.AdditionalProperties = additionalProperties + } + + return err +} + type NullableHeightModel struct { value *HeightModel isSet bool diff --git a/utils/sdk/client/go/model_info_model.go b/utils/sdk/client/go/model_info_model.go index 68bbad82..378193c8 100644 --- a/utils/sdk/client/go/model_info_model.go +++ b/utils/sdk/client/go/model_info_model.go @@ -65,8 +65,11 @@ type InfoModel struct { PerformanceData *PerformanceModel `json:"performance_data,omitempty"` OffersCount *int32 `json:"offers_count,omitempty"` ExpirationMedianTimestamp *int32 `json:"expiration_median_timestamp,omitempty"` + AdditionalProperties map[string]interface{} } +type _InfoModel InfoModel + // NewInfoModel instantiates a new InfoModel object // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments @@ -1704,9 +1707,80 @@ func (o InfoModel) ToMap() (map[string]interface{}, error) { if !IsNil(o.ExpirationMedianTimestamp) { toSerialize["expiration_median_timestamp"] = o.ExpirationMedianTimestamp } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + return toSerialize, nil } +func (o *InfoModel) UnmarshalJSON(data []byte) (err error) { + varInfoModel := _InfoModel{} + + err = json.Unmarshal(data, &varInfoModel) + + if err != nil { + return err + } + + *o = InfoModel(varInfoModel) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "height") + delete(additionalProperties, "tx_count") + delete(additionalProperties, "tx_pool_size") + delete(additionalProperties, "alt_blocks_count") + delete(additionalProperties, "outgoing_connections_count") + delete(additionalProperties, "incoming_connections_count") + delete(additionalProperties, "synchronized_connections_count") + delete(additionalProperties, "white_peerlist_size") + delete(additionalProperties, "grey_peerlist_size") + delete(additionalProperties, "current_blocks_median") + delete(additionalProperties, "alias_count") + delete(additionalProperties, "current_max_allowed_block_size") + delete(additionalProperties, "daemon_network_state") + delete(additionalProperties, "synchronization_start_height") + delete(additionalProperties, "max_net_seen_height") + delete(additionalProperties, "mi") + delete(additionalProperties, "pos_allowed") + delete(additionalProperties, "pos_difficulty") + delete(additionalProperties, "pow_difficulty") + delete(additionalProperties, "default_fee") + delete(additionalProperties, "minimum_fee") + delete(additionalProperties, "is_hardfork_active") + delete(additionalProperties, "net_time_delta_median") + delete(additionalProperties, "current_network_hashrate_50") + delete(additionalProperties, "current_network_hashrate_350") + delete(additionalProperties, "seconds_for_10_blocks") + delete(additionalProperties, "seconds_for_30_blocks") + delete(additionalProperties, "transactions_cnt_per_day") + delete(additionalProperties, "transactions_volume_per_day") + delete(additionalProperties, "last_pos_timestamp") + delete(additionalProperties, "last_pow_timestamp") + delete(additionalProperties, "total_coins") + delete(additionalProperties, "last_block_size") + delete(additionalProperties, "tx_count_in_last_block") + delete(additionalProperties, "pos_sequence_factor") + delete(additionalProperties, "pow_sequence_factor") + delete(additionalProperties, "block_reward") + delete(additionalProperties, "last_block_total_reward") + delete(additionalProperties, "pos_diff_total_coins_rate") + delete(additionalProperties, "last_block_timestamp") + delete(additionalProperties, "last_block_hash") + delete(additionalProperties, "pos_block_ts_shift_vs_actual") + delete(additionalProperties, "outs_stat") + delete(additionalProperties, "performance_data") + delete(additionalProperties, "offers_count") + delete(additionalProperties, "expiration_median_timestamp") + o.AdditionalProperties = additionalProperties + } + + return err +} + type NullableInfoModel struct { value *InfoModel isSet bool diff --git a/utils/sdk/client/go/model_maintainers_info_model.go b/utils/sdk/client/go/model_maintainers_info_model.go index d7ce5a0f..b187324c 100644 --- a/utils/sdk/client/go/model_maintainers_info_model.go +++ b/utils/sdk/client/go/model_maintainers_info_model.go @@ -24,8 +24,11 @@ type MaintainersInfoModel struct { VerRevision *int32 `json:"ver_revision,omitempty"` BuildNo *int32 `json:"build_no,omitempty"` Mode *int32 `json:"mode,omitempty"` + AdditionalProperties map[string]interface{} } +type _MaintainersInfoModel MaintainersInfoModel + // NewMaintainersInfoModel instantiates a new MaintainersInfoModel object // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments @@ -228,9 +231,39 @@ func (o MaintainersInfoModel) ToMap() (map[string]interface{}, error) { if !IsNil(o.Mode) { toSerialize["mode"] = o.Mode } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + return toSerialize, nil } +func (o *MaintainersInfoModel) UnmarshalJSON(data []byte) (err error) { + varMaintainersInfoModel := _MaintainersInfoModel{} + + err = json.Unmarshal(data, &varMaintainersInfoModel) + + if err != nil { + return err + } + + *o = MaintainersInfoModel(varMaintainersInfoModel) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "ver_major") + delete(additionalProperties, "ver_minor") + delete(additionalProperties, "ver_revision") + delete(additionalProperties, "build_no") + delete(additionalProperties, "mode") + o.AdditionalProperties = additionalProperties + } + + return err +} + type NullableMaintainersInfoModel struct { value *MaintainersInfoModel isSet bool diff --git a/utils/sdk/client/go/model_performance_model.go b/utils/sdk/client/go/model_performance_model.go index 07787996..8842c712 100644 --- a/utils/sdk/client/go/model_performance_model.go +++ b/utils/sdk/client/go/model_performance_model.go @@ -23,8 +23,11 @@ type PerformanceModel struct { TxProcessing *TxProcessingPerformanceModel `json:"tx_processing,omitempty"` TxPool *TxPoolPerformanceModel `json:"tx_pool,omitempty"` DbStatInfo *DbStatInfoModel `json:"db_stat_info,omitempty"` + AdditionalProperties map[string]interface{} } +type _PerformanceModel PerformanceModel + // NewPerformanceModel instantiates a new PerformanceModel object // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments @@ -192,9 +195,38 @@ func (o PerformanceModel) ToMap() (map[string]interface{}, error) { if !IsNil(o.DbStatInfo) { toSerialize["db_stat_info"] = o.DbStatInfo } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + return toSerialize, nil } +func (o *PerformanceModel) UnmarshalJSON(data []byte) (err error) { + varPerformanceModel := _PerformanceModel{} + + err = json.Unmarshal(data, &varPerformanceModel) + + if err != nil { + return err + } + + *o = PerformanceModel(varPerformanceModel) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "block_processing") + delete(additionalProperties, "tx_processing") + delete(additionalProperties, "tx_pool") + delete(additionalProperties, "db_stat_info") + o.AdditionalProperties = additionalProperties + } + + return err +} + type NullablePerformanceModel struct { value *PerformanceModel isSet bool diff --git a/utils/sdk/client/go/model_pos_entry_model.go b/utils/sdk/client/go/model_pos_entry_model.go index 92877f0c..901a7100 100644 --- a/utils/sdk/client/go/model_pos_entry_model.go +++ b/utils/sdk/client/go/model_pos_entry_model.go @@ -27,8 +27,11 @@ type PosEntryModel struct { TxId *string `json:"tx_id,omitempty"` TxOutIndex *int32 `json:"tx_out_index,omitempty"` WalletIndex *int32 `json:"wallet_index,omitempty"` + AdditionalProperties map[string]interface{} } +type _PosEntryModel PosEntryModel + // NewPosEntryModel instantiates a new PosEntryModel object // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments @@ -336,9 +339,42 @@ func (o PosEntryModel) ToMap() (map[string]interface{}, error) { if !IsNil(o.WalletIndex) { toSerialize["wallet_index"] = o.WalletIndex } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + return toSerialize, nil } +func (o *PosEntryModel) UnmarshalJSON(data []byte) (err error) { + varPosEntryModel := _PosEntryModel{} + + err = json.Unmarshal(data, &varPosEntryModel) + + if err != nil { + return err + } + + *o = PosEntryModel(varPosEntryModel) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "amount") + delete(additionalProperties, "g_index") + delete(additionalProperties, "keyimage") + delete(additionalProperties, "block_timestamp") + delete(additionalProperties, "stake_unlock_time") + delete(additionalProperties, "tx_id") + delete(additionalProperties, "tx_out_index") + delete(additionalProperties, "wallet_index") + o.AdditionalProperties = additionalProperties + } + + return err +} + type NullablePosEntryModel struct { value *PosEntryModel isSet bool diff --git a/utils/sdk/client/go/model_submit_block_request_model.go b/utils/sdk/client/go/model_submit_block_request_model.go index 3ab0e7c4..5b67c95a 100644 --- a/utils/sdk/client/go/model_submit_block_request_model.go +++ b/utils/sdk/client/go/model_submit_block_request_model.go @@ -20,8 +20,11 @@ var _ MappedNullable = &SubmitBlockRequestModel{} // SubmitBlockRequestModel struct for SubmitBlockRequestModel type SubmitBlockRequestModel struct { BlockBlob *string `json:"block_blob,omitempty"` + AdditionalProperties map[string]interface{} } +type _SubmitBlockRequestModel SubmitBlockRequestModel + // NewSubmitBlockRequestModel instantiates a new SubmitBlockRequestModel object // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments @@ -84,9 +87,35 @@ func (o SubmitBlockRequestModel) ToMap() (map[string]interface{}, error) { if !IsNil(o.BlockBlob) { toSerialize["block_blob"] = o.BlockBlob } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + return toSerialize, nil } +func (o *SubmitBlockRequestModel) UnmarshalJSON(data []byte) (err error) { + varSubmitBlockRequestModel := _SubmitBlockRequestModel{} + + err = json.Unmarshal(data, &varSubmitBlockRequestModel) + + if err != nil { + return err + } + + *o = SubmitBlockRequestModel(varSubmitBlockRequestModel) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "block_blob") + o.AdditionalProperties = additionalProperties + } + + return err +} + type NullableSubmitBlockRequestModel struct { value *SubmitBlockRequestModel isSet bool diff --git a/utils/sdk/client/go/model_submit_block_response_model.go b/utils/sdk/client/go/model_submit_block_response_model.go index 6d94d558..d922dfd0 100644 --- a/utils/sdk/client/go/model_submit_block_response_model.go +++ b/utils/sdk/client/go/model_submit_block_response_model.go @@ -20,8 +20,11 @@ var _ MappedNullable = &SubmitBlockResponseModel{} // SubmitBlockResponseModel struct for SubmitBlockResponseModel type SubmitBlockResponseModel struct { Status *string `json:"status,omitempty"` + AdditionalProperties map[string]interface{} } +type _SubmitBlockResponseModel SubmitBlockResponseModel + // NewSubmitBlockResponseModel instantiates a new SubmitBlockResponseModel object // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments @@ -84,9 +87,35 @@ func (o SubmitBlockResponseModel) ToMap() (map[string]interface{}, error) { if !IsNil(o.Status) { toSerialize["status"] = o.Status } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + return toSerialize, nil } +func (o *SubmitBlockResponseModel) UnmarshalJSON(data []byte) (err error) { + varSubmitBlockResponseModel := _SubmitBlockResponseModel{} + + err = json.Unmarshal(data, &varSubmitBlockResponseModel) + + if err != nil { + return err + } + + *o = SubmitBlockResponseModel(varSubmitBlockResponseModel) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "status") + o.AdditionalProperties = additionalProperties + } + + return err +} + type NullableSubmitBlockResponseModel struct { value *SubmitBlockResponseModel isSet bool diff --git a/utils/sdk/client/go/model_transaction_attachment_model.go b/utils/sdk/client/go/model_transaction_attachment_model.go index 721587be..0c105fdc 100644 --- a/utils/sdk/client/go/model_transaction_attachment_model.go +++ b/utils/sdk/client/go/model_transaction_attachment_model.go @@ -22,8 +22,11 @@ type TransactionAttachmentModel struct { Type *string `json:"type,omitempty"` ShortView *string `json:"short_view,omitempty"` DetailsView *string `json:"details_view,omitempty"` + AdditionalProperties map[string]interface{} } +type _TransactionAttachmentModel TransactionAttachmentModel + // NewTransactionAttachmentModel instantiates a new TransactionAttachmentModel object // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments @@ -156,9 +159,37 @@ func (o TransactionAttachmentModel) ToMap() (map[string]interface{}, error) { if !IsNil(o.DetailsView) { toSerialize["details_view"] = o.DetailsView } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + return toSerialize, nil } +func (o *TransactionAttachmentModel) UnmarshalJSON(data []byte) (err error) { + varTransactionAttachmentModel := _TransactionAttachmentModel{} + + err = json.Unmarshal(data, &varTransactionAttachmentModel) + + if err != nil { + return err + } + + *o = TransactionAttachmentModel(varTransactionAttachmentModel) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "type") + delete(additionalProperties, "short_view") + delete(additionalProperties, "details_view") + o.AdditionalProperties = additionalProperties + } + + return err +} + type NullableTransactionAttachmentModel struct { value *TransactionAttachmentModel isSet bool diff --git a/utils/sdk/client/go/model_transaction_details_model.go b/utils/sdk/client/go/model_transaction_details_model.go index 9e6fa06d..8843457a 100644 --- a/utils/sdk/client/go/model_transaction_details_model.go +++ b/utils/sdk/client/go/model_transaction_details_model.go @@ -32,8 +32,11 @@ type TransactionDetailsModel struct { Outs []TransactionOutputModel `json:"outs,omitempty"` PubKey *string `json:"pub_key,omitempty"` Timestamp *int32 `json:"timestamp,omitempty"` + AdditionalProperties map[string]interface{} } +type _TransactionDetailsModel TransactionDetailsModel + // NewTransactionDetailsModel instantiates a new TransactionDetailsModel object // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments @@ -516,9 +519,47 @@ func (o TransactionDetailsModel) ToMap() (map[string]interface{}, error) { if !IsNil(o.Timestamp) { toSerialize["timestamp"] = o.Timestamp } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + return toSerialize, nil } +func (o *TransactionDetailsModel) UnmarshalJSON(data []byte) (err error) { + varTransactionDetailsModel := _TransactionDetailsModel{} + + err = json.Unmarshal(data, &varTransactionDetailsModel) + + if err != nil { + return err + } + + *o = TransactionDetailsModel(varTransactionDetailsModel) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "amount") + delete(additionalProperties, "attachments") + delete(additionalProperties, "blob") + delete(additionalProperties, "blob_size") + delete(additionalProperties, "extra") + delete(additionalProperties, "fee") + delete(additionalProperties, "id") + delete(additionalProperties, "ins") + delete(additionalProperties, "keeper_block") + delete(additionalProperties, "object_in_json") + delete(additionalProperties, "outs") + delete(additionalProperties, "pub_key") + delete(additionalProperties, "timestamp") + o.AdditionalProperties = additionalProperties + } + + return err +} + type NullableTransactionDetailsModel struct { value *TransactionDetailsModel isSet bool diff --git a/utils/sdk/client/go/model_transaction_extra_model.go b/utils/sdk/client/go/model_transaction_extra_model.go index 2423ca32..fcaed466 100644 --- a/utils/sdk/client/go/model_transaction_extra_model.go +++ b/utils/sdk/client/go/model_transaction_extra_model.go @@ -22,8 +22,11 @@ type TransactionExtraModel struct { Type *string `json:"type,omitempty"` ShortView *string `json:"short_view,omitempty"` DetailsView *string `json:"details_view,omitempty"` + AdditionalProperties map[string]interface{} } +type _TransactionExtraModel TransactionExtraModel + // NewTransactionExtraModel instantiates a new TransactionExtraModel object // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments @@ -156,9 +159,37 @@ func (o TransactionExtraModel) ToMap() (map[string]interface{}, error) { if !IsNil(o.DetailsView) { toSerialize["details_view"] = o.DetailsView } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + return toSerialize, nil } +func (o *TransactionExtraModel) UnmarshalJSON(data []byte) (err error) { + varTransactionExtraModel := _TransactionExtraModel{} + + err = json.Unmarshal(data, &varTransactionExtraModel) + + if err != nil { + return err + } + + *o = TransactionExtraModel(varTransactionExtraModel) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "type") + delete(additionalProperties, "short_view") + delete(additionalProperties, "details_view") + o.AdditionalProperties = additionalProperties + } + + return err +} + type NullableTransactionExtraModel struct { value *TransactionExtraModel isSet bool diff --git a/utils/sdk/client/go/model_transaction_input_model.go b/utils/sdk/client/go/model_transaction_input_model.go index 3721470b..244e4c69 100644 --- a/utils/sdk/client/go/model_transaction_input_model.go +++ b/utils/sdk/client/go/model_transaction_input_model.go @@ -24,8 +24,11 @@ type TransactionInputModel struct { HtlcOrigin *string `json:"htlc_origin,omitempty"` KimageOrMsId *string `json:"kimage_or_ms_id,omitempty"` MultisigCount *int32 `json:"multisig_count,omitempty"` + AdditionalProperties map[string]interface{} } +type _TransactionInputModel TransactionInputModel + // NewTransactionInputModel instantiates a new TransactionInputModel object // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments @@ -228,9 +231,39 @@ func (o TransactionInputModel) ToMap() (map[string]interface{}, error) { if !IsNil(o.MultisigCount) { toSerialize["multisig_count"] = o.MultisigCount } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + return toSerialize, nil } +func (o *TransactionInputModel) UnmarshalJSON(data []byte) (err error) { + varTransactionInputModel := _TransactionInputModel{} + + err = json.Unmarshal(data, &varTransactionInputModel) + + if err != nil { + return err + } + + *o = TransactionInputModel(varTransactionInputModel) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "amount") + delete(additionalProperties, "global_indexes") + delete(additionalProperties, "htlc_origin") + delete(additionalProperties, "kimage_or_ms_id") + delete(additionalProperties, "multisig_count") + o.AdditionalProperties = additionalProperties + } + + return err +} + type NullableTransactionInputModel struct { value *TransactionInputModel isSet bool diff --git a/utils/sdk/client/go/model_transaction_output_model.go b/utils/sdk/client/go/model_transaction_output_model.go index 1bc0eb90..1d73b766 100644 --- a/utils/sdk/client/go/model_transaction_output_model.go +++ b/utils/sdk/client/go/model_transaction_output_model.go @@ -24,8 +24,11 @@ type TransactionOutputModel struct { IsSpent *bool `json:"is_spent,omitempty"` MinimumSigs *int32 `json:"minimum_sigs,omitempty"` PubKeys []string `json:"pub_keys,omitempty"` + AdditionalProperties map[string]interface{} } +type _TransactionOutputModel TransactionOutputModel + // NewTransactionOutputModel instantiates a new TransactionOutputModel object // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments @@ -228,9 +231,39 @@ func (o TransactionOutputModel) ToMap() (map[string]interface{}, error) { if !IsNil(o.PubKeys) { toSerialize["pub_keys"] = o.PubKeys } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + return toSerialize, nil } +func (o *TransactionOutputModel) UnmarshalJSON(data []byte) (err error) { + varTransactionOutputModel := _TransactionOutputModel{} + + err = json.Unmarshal(data, &varTransactionOutputModel) + + if err != nil { + return err + } + + *o = TransactionOutputModel(varTransactionOutputModel) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "amount") + delete(additionalProperties, "global_index") + delete(additionalProperties, "is_spent") + delete(additionalProperties, "minimum_sigs") + delete(additionalProperties, "pub_keys") + o.AdditionalProperties = additionalProperties + } + + return err +} + type NullableTransactionOutputModel struct { value *TransactionOutputModel isSet bool diff --git a/utils/sdk/client/go/model_tx_generation_context_model.go b/utils/sdk/client/go/model_tx_generation_context_model.go index 1d9a42fe..9647fbfc 100644 --- a/utils/sdk/client/go/model_tx_generation_context_model.go +++ b/utils/sdk/client/go/model_tx_generation_context_model.go @@ -43,8 +43,11 @@ type TxGenerationContextModel struct { TxKeyPub *string `json:"tx_key_pub,omitempty"` TxKeySec *string `json:"tx_key_sec,omitempty"` TxPubKeyP *string `json:"tx_pub_key_p,omitempty"` + AdditionalProperties map[string]interface{} } +type _TxGenerationContextModel TxGenerationContextModel + // NewTxGenerationContextModel instantiates a new TxGenerationContextModel object // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments @@ -912,9 +915,58 @@ func (o TxGenerationContextModel) ToMap() (map[string]interface{}, error) { if !IsNil(o.TxPubKeyP) { toSerialize["tx_pub_key_p"] = o.TxPubKeyP } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + return toSerialize, nil } +func (o *TxGenerationContextModel) UnmarshalJSON(data []byte) (err error) { + varTxGenerationContextModel := _TxGenerationContextModel{} + + err = json.Unmarshal(data, &varTxGenerationContextModel) + + if err != nil { + return err + } + + *o = TxGenerationContextModel(varTxGenerationContextModel) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "asset_ids") + delete(additionalProperties, "blinded_asset_ids") + delete(additionalProperties, "amount_commitments") + delete(additionalProperties, "asset_id_blinding_masks") + delete(additionalProperties, "amounts") + delete(additionalProperties, "amount_blinding_masks") + delete(additionalProperties, "pseudo_outs_blinded_asset_ids") + delete(additionalProperties, "pseudo_outs_plus_real_out_blinding_masks") + delete(additionalProperties, "real_zc_ins_asset_ids") + delete(additionalProperties, "zc_input_amounts") + delete(additionalProperties, "pseudo_out_amount_commitments_sum") + delete(additionalProperties, "pseudo_out_amount_blinding_masks_sum") + delete(additionalProperties, "real_in_asset_id_blinding_mask_x_amount_sum") + delete(additionalProperties, "amount_commitments_sum") + delete(additionalProperties, "amount_blinding_masks_sum") + delete(additionalProperties, "asset_id_blinding_mask_x_amount_sum") + delete(additionalProperties, "ao_asset_id") + delete(additionalProperties, "ao_asset_id_pt") + delete(additionalProperties, "ao_amount_commitment") + delete(additionalProperties, "ao_amount_blinding_mask") + delete(additionalProperties, "ao_commitment_in_outputs") + delete(additionalProperties, "tx_key_pub") + delete(additionalProperties, "tx_key_sec") + delete(additionalProperties, "tx_pub_key_p") + o.AdditionalProperties = additionalProperties + } + + return err +} + type NullableTxGenerationContextModel struct { value *TxGenerationContextModel isSet bool diff --git a/utils/sdk/client/go/model_tx_pool_performance_model.go b/utils/sdk/client/go/model_tx_pool_performance_model.go index 445df184..291840e6 100644 --- a/utils/sdk/client/go/model_tx_pool_performance_model.go +++ b/utils/sdk/client/go/model_tx_pool_performance_model.go @@ -30,8 +30,11 @@ type TxPoolPerformanceModel struct { UpdateDbTime *int32 `json:"update_db_time,omitempty"` DbCommitTime *int32 `json:"db_commit_time,omitempty"` CheckPostHf4Balance *int32 `json:"check_post_hf4_balance,omitempty"` + AdditionalProperties map[string]interface{} } +type _TxPoolPerformanceModel TxPoolPerformanceModel + // NewTxPoolPerformanceModel instantiates a new TxPoolPerformanceModel object // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments @@ -444,9 +447,45 @@ func (o TxPoolPerformanceModel) ToMap() (map[string]interface{}, error) { if !IsNil(o.CheckPostHf4Balance) { toSerialize["check_post_hf4_balance"] = o.CheckPostHf4Balance } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + return toSerialize, nil } +func (o *TxPoolPerformanceModel) UnmarshalJSON(data []byte) (err error) { + varTxPoolPerformanceModel := _TxPoolPerformanceModel{} + + err = json.Unmarshal(data, &varTxPoolPerformanceModel) + + if err != nil { + return err + } + + *o = TxPoolPerformanceModel(varTxPoolPerformanceModel) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "tx_processing_time") + delete(additionalProperties, "check_inputs_types_supported_time") + delete(additionalProperties, "expiration_validate_time") + delete(additionalProperties, "validate_amount_time") + delete(additionalProperties, "validate_alias_time") + delete(additionalProperties, "check_keyimages_ws_ms_time") + delete(additionalProperties, "check_inputs_time") + delete(additionalProperties, "begin_tx_time") + delete(additionalProperties, "update_db_time") + delete(additionalProperties, "db_commit_time") + delete(additionalProperties, "check_post_hf4_balance") + o.AdditionalProperties = additionalProperties + } + + return err +} + type NullableTxPoolPerformanceModel struct { value *TxPoolPerformanceModel isSet bool diff --git a/utils/sdk/client/go/model_tx_processing_performance_model.go b/utils/sdk/client/go/model_tx_processing_performance_model.go index bd0d8200..1073c2f9 100644 --- a/utils/sdk/client/go/model_tx_processing_performance_model.go +++ b/utils/sdk/client/go/model_tx_processing_performance_model.go @@ -44,8 +44,11 @@ type TxProcessingPerformanceModel struct { TxCheckInputsLoopScanOutputkeysLoopFindTx *int32 `json:"tx_check_inputs_loop_scan_outputkeys_loop_find_tx,omitempty"` TxCheckInputsLoopScanOutputkeysLoopHandleOutput *int32 `json:"tx_check_inputs_loop_scan_outputkeys_loop_handle_output,omitempty"` TxMixinCount *int32 `json:"tx_mixin_count,omitempty"` + AdditionalProperties map[string]interface{} } +type _TxProcessingPerformanceModel TxProcessingPerformanceModel + // NewTxProcessingPerformanceModel instantiates a new TxProcessingPerformanceModel object // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments @@ -948,9 +951,59 @@ func (o TxProcessingPerformanceModel) ToMap() (map[string]interface{}, error) { if !IsNil(o.TxMixinCount) { toSerialize["tx_mixin_count"] = o.TxMixinCount } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + return toSerialize, nil } +func (o *TxProcessingPerformanceModel) UnmarshalJSON(data []byte) (err error) { + varTxProcessingPerformanceModel := _TxProcessingPerformanceModel{} + + err = json.Unmarshal(data, &varTxProcessingPerformanceModel) + + if err != nil { + return err + } + + *o = TxProcessingPerformanceModel(varTxProcessingPerformanceModel) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "tx_check_inputs") + delete(additionalProperties, "tx_add_one_tx") + delete(additionalProperties, "tx_process_extra") + delete(additionalProperties, "tx_process_attachment") + delete(additionalProperties, "tx_process_inputs") + delete(additionalProperties, "tx_push_global_index") + delete(additionalProperties, "tx_check_exist") + delete(additionalProperties, "tx_print_log") + delete(additionalProperties, "tx_prapare_append") + delete(additionalProperties, "tx_append") + delete(additionalProperties, "tx_append_rl_wait") + delete(additionalProperties, "tx_append_is_expired") + delete(additionalProperties, "tx_store_db") + delete(additionalProperties, "tx_check_inputs_prefix_hash") + delete(additionalProperties, "tx_check_inputs_attachment_check") + delete(additionalProperties, "tx_check_inputs_loop") + delete(additionalProperties, "tx_check_inputs_loop_kimage_check") + delete(additionalProperties, "tx_check_inputs_loop_ch_in_val_sig") + delete(additionalProperties, "tx_check_inputs_loop_scan_outputkeys_get_item_size") + delete(additionalProperties, "tx_check_inputs_loop_scan_outputkeys_relative_to_absolute") + delete(additionalProperties, "tx_check_inputs_loop_scan_outputkeys_loop") + delete(additionalProperties, "tx_check_inputs_loop_scan_outputkeys_loop_get_subitem") + delete(additionalProperties, "tx_check_inputs_loop_scan_outputkeys_loop_find_tx") + delete(additionalProperties, "tx_check_inputs_loop_scan_outputkeys_loop_handle_output") + delete(additionalProperties, "tx_mixin_count") + o.AdditionalProperties = additionalProperties + } + + return err +} + type NullableTxProcessingPerformanceModel struct { value *TxProcessingPerformanceModel isSet bool diff --git a/utils/sdk/client/go/model_version_model.go b/utils/sdk/client/go/model_version_model.go index cbd649d5..2a78b757 100644 --- a/utils/sdk/client/go/model_version_model.go +++ b/utils/sdk/client/go/model_version_model.go @@ -24,8 +24,11 @@ type VersionModel struct { Major *string `json:"major,omitempty"` Minor *string `json:"minor,omitempty"` Revision *string `json:"revision,omitempty"` + AdditionalProperties map[string]interface{} } +type _VersionModel VersionModel + // NewVersionModel instantiates a new VersionModel object // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments @@ -228,9 +231,39 @@ func (o VersionModel) ToMap() (map[string]interface{}, error) { if !IsNil(o.Revision) { toSerialize["revision"] = o.Revision } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + return toSerialize, nil } +func (o *VersionModel) UnmarshalJSON(data []byte) (err error) { + varVersionModel := _VersionModel{} + + err = json.Unmarshal(data, &varVersionModel) + + if err != nil { + return err + } + + *o = VersionModel(varVersionModel) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "version") + delete(additionalProperties, "version_long") + delete(additionalProperties, "major") + delete(additionalProperties, "minor") + delete(additionalProperties, "revision") + o.AdditionalProperties = additionalProperties + } + + return err +} + type NullableVersionModel struct { value *VersionModel isSet bool diff --git a/utils/sdk/client/go/test/api_block_test.go b/utils/sdk/client/go/test/api_block_test.go index 4f34e1e5..3a9d7152 100644 --- a/utils/sdk/client/go/test/api_block_test.go +++ b/utils/sdk/client/go/test/api_block_test.go @@ -1,7 +1,7 @@ /* Lethean Blockchain API -Testing BlockAPIService +Testing BlockUtilsSdkClientGoService */ @@ -14,19 +14,19 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "testing" - openapiclient "github.com/letheanVPN/blockchain/lthn" + openapiclient "github.com/letheanVPN/blockchain/utils/sdk/client/go" ) -func Test_lthn_BlockAPIService(t *testing.T) { +func Test_lthn_BlockUtilsSdkClientGoService(t *testing.T) { configuration := openapiclient.NewConfiguration() apiClient := openapiclient.NewAPIClient(configuration) - t.Run("Test BlockAPIService CreateBlockTemplate", func(t *testing.T) { + t.Run("Test BlockUtilsSdkClientGoService CreateBlockTemplate", func(t *testing.T) { t.Skip("skip test") // remove to run test - resp, httpRes, err := apiClient.BlockAPI.CreateBlockTemplate(context.Background()).Execute() + resp, httpRes, err := apiClient.BlockUtilsSdkClientGo.CreateBlockTemplate(context.Background()).Execute() require.Nil(t, err) require.NotNil(t, resp) @@ -34,13 +34,13 @@ func Test_lthn_BlockAPIService(t *testing.T) { }) - t.Run("Test BlockAPIService GetBlock", func(t *testing.T) { + t.Run("Test BlockUtilsSdkClientGoService GetBlock", func(t *testing.T) { t.Skip("skip test") // remove to run test var identifier string - resp, httpRes, err := apiClient.BlockAPI.GetBlock(context.Background(), identifier).Execute() + resp, httpRes, err := apiClient.BlockUtilsSdkClientGo.GetBlock(context.Background(), identifier).Execute() require.Nil(t, err) require.NotNil(t, resp) @@ -48,11 +48,11 @@ func Test_lthn_BlockAPIService(t *testing.T) { }) - t.Run("Test BlockAPIService GetBlocks", func(t *testing.T) { + t.Run("Test BlockUtilsSdkClientGoService GetBlocks", func(t *testing.T) { t.Skip("skip test") // remove to run test - resp, httpRes, err := apiClient.BlockAPI.GetBlocks(context.Background()).Execute() + resp, httpRes, err := apiClient.BlockUtilsSdkClientGo.GetBlocks(context.Background()).Execute() require.Nil(t, err) require.NotNil(t, resp) @@ -60,11 +60,11 @@ func Test_lthn_BlockAPIService(t *testing.T) { }) - t.Run("Test BlockAPIService GetHeight", func(t *testing.T) { + t.Run("Test BlockUtilsSdkClientGoService GetHeight", func(t *testing.T) { t.Skip("skip test") // remove to run test - resp, httpRes, err := apiClient.BlockAPI.GetHeight(context.Background()).Execute() + resp, httpRes, err := apiClient.BlockUtilsSdkClientGo.GetHeight(context.Background()).Execute() require.Nil(t, err) require.NotNil(t, resp) @@ -72,11 +72,11 @@ func Test_lthn_BlockAPIService(t *testing.T) { }) - t.Run("Test BlockAPIService SubmitBlock", func(t *testing.T) { + t.Run("Test BlockUtilsSdkClientGoService SubmitBlock", func(t *testing.T) { t.Skip("skip test") // remove to run test - resp, httpRes, err := apiClient.BlockAPI.SubmitBlock(context.Background()).Execute() + resp, httpRes, err := apiClient.BlockUtilsSdkClientGo.SubmitBlock(context.Background()).Execute() require.Nil(t, err) require.NotNil(t, resp) diff --git a/utils/sdk/client/go/test/api_info_test.go b/utils/sdk/client/go/test/api_info_test.go index 2662cef0..1b9ee6ef 100644 --- a/utils/sdk/client/go/test/api_info_test.go +++ b/utils/sdk/client/go/test/api_info_test.go @@ -1,7 +1,7 @@ /* Lethean Blockchain API -Testing InfoAPIService +Testing InfoUtilsSdkClientGoService */ @@ -14,19 +14,19 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "testing" - openapiclient "github.com/letheanVPN/blockchain/lthn" + openapiclient "github.com/letheanVPN/blockchain/utils/sdk/client/go" ) -func Test_lthn_InfoAPIService(t *testing.T) { +func Test_lthn_InfoUtilsSdkClientGoService(t *testing.T) { configuration := openapiclient.NewConfiguration() apiClient := openapiclient.NewAPIClient(configuration) - t.Run("Test InfoAPIService GetInfo", func(t *testing.T) { + t.Run("Test InfoUtilsSdkClientGoService GetInfo", func(t *testing.T) { t.Skip("skip test") // remove to run test - resp, httpRes, err := apiClient.InfoAPI.GetInfo(context.Background()).Execute() + resp, httpRes, err := apiClient.InfoUtilsSdkClientGo.GetInfo(context.Background()).Execute() require.Nil(t, err) require.NotNil(t, resp) @@ -34,11 +34,11 @@ func Test_lthn_InfoAPIService(t *testing.T) { }) - t.Run("Test InfoAPIService Version", func(t *testing.T) { + t.Run("Test InfoUtilsSdkClientGoService Version", func(t *testing.T) { t.Skip("skip test") // remove to run test - resp, httpRes, err := apiClient.InfoAPI.Version(context.Background()).Execute() + resp, httpRes, err := apiClient.InfoUtilsSdkClientGo.Version(context.Background()).Execute() require.Nil(t, err) require.NotNil(t, resp) diff --git a/utils/sdk/client/java/.github/workflows/maven.yml b/utils/sdk/client/java/.github/workflows/maven.yml new file mode 100644 index 00000000..25db77ed --- /dev/null +++ b/utils/sdk/client/java/.github/workflows/maven.yml @@ -0,0 +1,30 @@ +# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven +# +# This file is auto-generated by OpenAPI Generator (https://openapi-generator.tech) + +name: Java CI with Maven + +on: + push: + branches: [ main, master ] + pull_request: + branches: [ main, master ] + +jobs: + build: + name: Build Lethean Blockchain API + runs-on: ubuntu-latest + strategy: + matrix: + java: [ 17, 21 ] + steps: + - uses: actions/checkout@v4 + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: ${{ matrix.java }} + distribution: 'temurin' + cache: maven + - name: Build with Maven + run: mvn -B package --no-transfer-progress --file pom.xml diff --git a/utils/sdk/client/java/.gitignore b/utils/sdk/client/java/.gitignore new file mode 100644 index 00000000..a530464a --- /dev/null +++ b/utils/sdk/client/java/.gitignore @@ -0,0 +1,21 @@ +*.class + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.ear + +# exclude jar for gradle wrapper +!gradle/wrapper/*.jar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +# build files +**/target +target +.gradle +build diff --git a/utils/sdk/client/java/.openapi-generator-ignore b/utils/sdk/client/java/.openapi-generator-ignore new file mode 100644 index 00000000..def5120f --- /dev/null +++ b/utils/sdk/client/java/.openapi-generator-ignore @@ -0,0 +1,3 @@ +git_push.sh +.travis.yml +README.md diff --git a/utils/sdk/client/java/.openapi-generator/FILES b/utils/sdk/client/java/.openapi-generator/FILES new file mode 100644 index 00000000..2d911bf2 --- /dev/null +++ b/utils/sdk/client/java/.openapi-generator/FILES @@ -0,0 +1,77 @@ +.github/workflows/maven.yml +.gitignore +api/openapi.yaml +build.gradle +build.sbt +docs/BlockApi.md +docs/BlockDetailsModel.md +docs/BlockProcessingPerformanceModel.md +docs/BlockTemplateModel.md +docs/BlockTemplateRequestModel.md +docs/DbStatInfoModel.md +docs/HeightModel.md +docs/InfoApi.md +docs/InfoModel.md +docs/MaintainersInfoModel.md +docs/PerformanceModel.md +docs/PosEntryModel.md +docs/SubmitBlockRequestModel.md +docs/SubmitBlockResponseModel.md +docs/TransactionAttachmentModel.md +docs/TransactionDetailsModel.md +docs/TransactionExtraModel.md +docs/TransactionInputModel.md +docs/TransactionOutputModel.md +docs/TxGenerationContextModel.md +docs/TxPoolPerformanceModel.md +docs/TxProcessingPerformanceModel.md +docs/VersionModel.md +gradle.properties +gradle/wrapper/gradle-wrapper.jar +gradle/wrapper/gradle-wrapper.properties +gradlew +gradlew.bat +pom.xml +settings.gradle +src/main/AndroidManifest.xml +src/main/java/invalidPackageName/ApiCallback.java +src/main/java/invalidPackageName/ApiClient.java +src/main/java/invalidPackageName/ApiException.java +src/main/java/invalidPackageName/ApiResponse.java +src/main/java/invalidPackageName/Configuration.java +src/main/java/invalidPackageName/GzipRequestInterceptor.java +src/main/java/invalidPackageName/JSON.java +src/main/java/invalidPackageName/Pair.java +src/main/java/invalidPackageName/ProgressRequestBody.java +src/main/java/invalidPackageName/ProgressResponseBody.java +src/main/java/invalidPackageName/ServerConfiguration.java +src/main/java/invalidPackageName/ServerVariable.java +src/main/java/invalidPackageName/StringUtil.java +src/main/java/invalidPackageName/auth/ApiKeyAuth.java +src/main/java/invalidPackageName/auth/Authentication.java +src/main/java/invalidPackageName/auth/HttpBasicAuth.java +src/main/java/invalidPackageName/auth/HttpBearerAuth.java +src/main/java/lthn/BlockApi.java +src/main/java/lthn/InfoApi.java +src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java +src/main/java/org/openapitools/client/model/BlockDetailsModel.java +src/main/java/org/openapitools/client/model/BlockProcessingPerformanceModel.java +src/main/java/org/openapitools/client/model/BlockTemplateModel.java +src/main/java/org/openapitools/client/model/BlockTemplateRequestModel.java +src/main/java/org/openapitools/client/model/DbStatInfoModel.java +src/main/java/org/openapitools/client/model/HeightModel.java +src/main/java/org/openapitools/client/model/InfoModel.java +src/main/java/org/openapitools/client/model/MaintainersInfoModel.java +src/main/java/org/openapitools/client/model/PerformanceModel.java +src/main/java/org/openapitools/client/model/PosEntryModel.java +src/main/java/org/openapitools/client/model/SubmitBlockRequestModel.java +src/main/java/org/openapitools/client/model/SubmitBlockResponseModel.java +src/main/java/org/openapitools/client/model/TransactionAttachmentModel.java +src/main/java/org/openapitools/client/model/TransactionDetailsModel.java +src/main/java/org/openapitools/client/model/TransactionExtraModel.java +src/main/java/org/openapitools/client/model/TransactionInputModel.java +src/main/java/org/openapitools/client/model/TransactionOutputModel.java +src/main/java/org/openapitools/client/model/TxGenerationContextModel.java +src/main/java/org/openapitools/client/model/TxPoolPerformanceModel.java +src/main/java/org/openapitools/client/model/TxProcessingPerformanceModel.java +src/main/java/org/openapitools/client/model/VersionModel.java diff --git a/utils/sdk/client/java/.openapi-generator/VERSION b/utils/sdk/client/java/.openapi-generator/VERSION new file mode 100644 index 00000000..971ecb25 --- /dev/null +++ b/utils/sdk/client/java/.openapi-generator/VERSION @@ -0,0 +1 @@ +7.16.0 diff --git a/utils/sdk/client/java/api/openapi.yaml b/utils/sdk/client/java/api/openapi.yaml new file mode 100644 index 00000000..3d925546 --- /dev/null +++ b/utils/sdk/client/java/api/openapi.yaml @@ -0,0 +1,1346 @@ +openapi: 3.0.0 +info: + contact: + name: Lethean + url: https://lt.hn/ + description: OpenAPI for Lethean Blockchain + license: + name: EUPL-1.2 + url: https://joinup.ec.europa.eu/software/page/eupl/licence-eupl + title: Lethean Blockchain API + version: 6.0.1 +servers: +- description: Local Daemon + url: http://127.0.0.1:36943 +- description: Seed Server + url: http://seed.lethean.io:36943 +paths: + /info: + get: + operationId: getInfo + parameters: + - deprecated: false + description: "Possible values: net_time_delta_median, current_network_hashrate_50,\ + \ current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks,\ + \ transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins,\ + \ last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor,\ + \ pos_difficulty, performance, outs_stat, expirations_median." + explode: true + in: query + name: flags + required: false + schema: + type: string + style: form + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/InfoModel" + description: OK + summary: Get detailed information about the blockchain and daemon state + tags: + - Info + x-accepts: + - application/json + /info/version: + get: + description: Returns the current version of the API. + operationId: version + parameters: [] + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/VersionModel" + description: OK + summary: Get API version + tags: + - Info + x-accepts: + - application/json + /block: + get: + operationId: getBlocks + parameters: [] + responses: + "404": + description: text/plain + "400": + description: text/plain + "200": + content: + application/json: + schema: + items: + $ref: "#/components/schemas/BlockDetailsModel" + type: array + description: A list of block objects. + summary: "Get one or more blocks, with optional pagination." + tags: + - Block + x-accepts: + - application/json + /block/template: + post: + operationId: createBlockTemplate + parameters: [] + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/BlockTemplateRequestModel" + required: true + responses: + "500": + description: text/plain + "400": + description: text/plain + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/BlockTemplateModel" + description: OK + summary: Create a block template for mining + tags: + - Block + x-content-type: application/json + x-accepts: + - application/json + /block/submit: + post: + operationId: submitBlock + parameters: [] + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/SubmitBlockRequestModel" + required: true + responses: + "406": + description: text/plain + "400": + description: text/plain + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/SubmitBlockResponseModel" + description: OK + summary: Submit a new block to the network + tags: + - Block + x-content-type: application/json + x-accepts: + - application/json + /block/height: + get: + operationId: getHeight + parameters: [] + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/HeightModel" + description: OK + summary: Get the current blockchain height + tags: + - Block + x-accepts: + - application/json + /block/{identifier}: + get: + operationId: getBlock + parameters: + - deprecated: false + description: The hash (hex string) or height (integer) of the block to retrieve. + explode: false + in: path + name: identifier + required: true + schema: + type: string + style: simple + responses: + "404": + description: text/plain + "400": + description: text/plain + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/BlockDetailsModel" + description: OK + summary: Get a block by its hash or height (ID) + tags: + - Block + x-accepts: + - application/json +components: + schemas: + DbStatInfoModel: + example: + write_tx_count: 4 + tx_count: 8 + map_size: 0 + properties: + tx_count: + type: integer + write_tx_count: + type: integer + map_size: + type: integer + type: object + TxPoolPerformanceModel: + example: + begin_tx_time: 0 + db_commit_time: 2 + validate_amount_time: 3 + update_db_time: 3 + expiration_validate_time: 3 + check_inputs_types_supported_time: 7 + tx_processing_time: 8 + check_keyimages_ws_ms_time: 5 + check_inputs_time: 7 + validate_alias_time: 9 + check_post_hf4_balance: 3 + properties: + tx_processing_time: + type: integer + check_inputs_types_supported_time: + type: integer + expiration_validate_time: + type: integer + validate_amount_time: + type: integer + validate_alias_time: + type: integer + check_keyimages_ws_ms_time: + type: integer + check_inputs_time: + type: integer + begin_tx_time: + type: integer + update_db_time: + type: integer + db_commit_time: + type: integer + check_post_hf4_balance: + type: integer + type: object + MaintainersInfoModel: + example: + mode: 126 + build_no: 503831554 + ver_revision: 190 + ver_major: 37 + ver_minor: 174 + properties: + ver_major: + maximum: 255 + minimum: 0 + type: integer + ver_minor: + maximum: 255 + minimum: 0 + type: integer + ver_revision: + maximum: 255 + minimum: 0 + type: integer + build_no: + maximum: 4294967295 + minimum: 0 + type: integer + mode: + maximum: 255 + minimum: 0 + type: integer + type: object + InfoModel: + example: + current_max_allowed_block_size: 7 + tx_count_in_last_block: 5 + transactions_cnt_per_day: + - 6 + - 6 + grey_peerlist_size: 3 + minimum_fee: 9 + pos_difficulty: pos_difficulty + block_reward: 3 + last_pos_timestamp: 2 + pos_sequence_factor: 6.704019297950036 + pos_block_ts_shift_vs_actual: 6 + current_network_hashrate_50: 8 + last_block_timestamp: 7 + pow_difficulty: 5 + alias_count: 4 + mi: + mode: 126 + build_no: 503831554 + ver_revision: 190 + ver_major: 37 + ver_minor: 174 + pos_allowed: true + last_pow_timestamp: 6 + is_hardfork_active: + - true + - true + height: 0 + tx_pool_size: 1 + performance_data: + tx_pool: + begin_tx_time: 0 + db_commit_time: 2 + validate_amount_time: 3 + update_db_time: 3 + expiration_validate_time: 3 + check_inputs_types_supported_time: 7 + tx_processing_time: 8 + check_keyimages_ws_ms_time: 5 + check_inputs_time: 7 + validate_alias_time: 9 + check_post_hf4_balance: 3 + tx_processing: + tx_process_inputs: 5 + tx_check_inputs_loop: 4 + tx_prapare_append: 4 + tx_check_inputs: 0 + tx_append: 3 + tx_check_exist: 6 + tx_check_inputs_loop_scan_outputkeys_loop_get_subitem: 8 + tx_mixin_count: 5 + tx_append_rl_wait: 0 + tx_check_inputs_loop_kimage_check: 8 + tx_check_inputs_loop_scan_outputkeys_loop_find_tx: 0 + tx_push_global_index: 4 + tx_add_one_tx: 9 + tx_check_inputs_loop_scan_outputkeys_get_item_size: 1 + tx_print_log: 8 + tx_check_inputs_prefix_hash: 8 + tx_append_is_expired: 2 + tx_check_inputs_loop_ch_in_val_sig: 9 + tx_check_inputs_loop_scan_outputkeys_loop_handle_output: 5 + tx_process_extra: 0 + tx_process_attachment: 7 + tx_check_inputs_loop_scan_outputkeys_loop: 9 + tx_store_db: 1 + tx_check_inputs_attachment_check: 6 + tx_check_inputs_loop_scan_outputkeys_relative_to_absolute: 3 + block_processing: + target_calculating_calc: 1 + pos_validate_ki_search: 4 + all_txs_insert_time_5: 3 + etc_stuff_6: 7 + target_calculating_enum_blocks: 4 + target_calculating_time_2: 7 + validate_miner_transaction_time: 4 + verify_multiple_zc_outs_range_proofs_time: 6 + raise_block_core_event: 3 + insert_time_4: 5 + pos_validate_get_out_keys_for_inputs: 7 + block_processing_time_1: 8 + block_processing_time_0: 4 + pos_validate_zvp: 9 + collect_rangeproofs_data_from_tx_time: 0 + longhash_calculating_time_3: 3 + db_stat_info: + write_tx_count: 4 + tx_count: 8 + map_size: 0 + net_time_delta_median: 6 + alt_blocks_count: 5 + incoming_connections_count: 2 + tx_count: 6 + outgoing_connections_count: 5 + transactions_volume_per_day: + - 1 + - 1 + current_blocks_median: 2 + expiration_median_timestamp: 7 + max_net_seen_height: 1 + current_network_hashrate_350: 9 + synchronized_connections_count: 7 + last_block_total_reward: 7 + default_fee: 9 + seconds_for_10_blocks: 6 + pow_sequence_factor: 3.353193347011243 + synchronization_start_height: 1 + last_block_hash: last_block_hash + white_peerlist_size: 9 + total_coins: total_coins + seconds_for_30_blocks: 3 + outs_stat: + key: 0 + offers_count: 0 + pos_diff_total_coins_rate: 0 + daemon_network_state: daemon_network_state + last_block_size: 6 + properties: + height: + type: integer + tx_count: + type: integer + tx_pool_size: + type: integer + alt_blocks_count: + type: integer + outgoing_connections_count: + type: integer + incoming_connections_count: + type: integer + synchronized_connections_count: + type: integer + white_peerlist_size: + type: integer + grey_peerlist_size: + type: integer + current_blocks_median: + type: integer + alias_count: + type: integer + current_max_allowed_block_size: + type: integer + daemon_network_state: + type: string + synchronization_start_height: + type: integer + max_net_seen_height: + type: integer + mi: + $ref: "#/components/schemas/MaintainersInfoModel" + pos_allowed: + type: boolean + pos_difficulty: + type: string + pow_difficulty: + type: integer + default_fee: + type: integer + minimum_fee: + type: integer + is_hardfork_active: + items: + type: boolean + type: array + net_time_delta_median: + format: int64 + type: integer + current_network_hashrate_50: + type: integer + current_network_hashrate_350: + type: integer + seconds_for_10_blocks: + type: integer + seconds_for_30_blocks: + type: integer + transactions_cnt_per_day: + items: + type: integer + type: array + transactions_volume_per_day: + items: + type: integer + type: array + last_pos_timestamp: + type: integer + last_pow_timestamp: + type: integer + total_coins: + type: string + last_block_size: + type: integer + tx_count_in_last_block: + type: integer + pos_sequence_factor: + format: double + type: number + pow_sequence_factor: + format: double + type: number + block_reward: + type: integer + last_block_total_reward: + type: integer + pos_diff_total_coins_rate: + type: integer + last_block_timestamp: + type: integer + last_block_hash: + type: string + pos_block_ts_shift_vs_actual: + format: int64 + type: integer + outs_stat: + additionalProperties: + type: integer + type: object + performance_data: + $ref: "#/components/schemas/PerformanceModel" + offers_count: + type: integer + expiration_median_timestamp: + type: integer + type: object + SubmitBlockResponseModel: + example: + status: status + properties: + status: + type: string + type: object + VersionModel: + example: + version_long: version_long + major: major + minor: minor + version: version + revision: revision + properties: + version: + type: string + version_long: + type: string + major: + type: string + minor: + type: string + revision: + type: string + type: object + TransactionOutputModel: + example: + amount: 5 + pub_keys: + - pub_keys + - pub_keys + is_spent: true + minimum_sigs: 2147483647 + global_index: 9 + properties: + amount: + type: integer + global_index: + type: integer + is_spent: + type: boolean + minimum_sigs: + maximum: 4294967295 + minimum: 0 + type: integer + pub_keys: + items: + type: string + type: array + type: object + TransactionInputModel: + example: + amount: 6 + kimage_or_ms_id: kimage_or_ms_id + htlc_origin: htlc_origin + global_indexes: + - 7 + - 7 + multisig_count: 503831554 + properties: + amount: + type: integer + global_indexes: + items: + type: integer + type: array + htlc_origin: + type: string + kimage_or_ms_id: + type: string + multisig_count: + maximum: 4294967295 + minimum: 0 + type: integer + type: object + PerformanceModel: + example: + tx_pool: + begin_tx_time: 0 + db_commit_time: 2 + validate_amount_time: 3 + update_db_time: 3 + expiration_validate_time: 3 + check_inputs_types_supported_time: 7 + tx_processing_time: 8 + check_keyimages_ws_ms_time: 5 + check_inputs_time: 7 + validate_alias_time: 9 + check_post_hf4_balance: 3 + tx_processing: + tx_process_inputs: 5 + tx_check_inputs_loop: 4 + tx_prapare_append: 4 + tx_check_inputs: 0 + tx_append: 3 + tx_check_exist: 6 + tx_check_inputs_loop_scan_outputkeys_loop_get_subitem: 8 + tx_mixin_count: 5 + tx_append_rl_wait: 0 + tx_check_inputs_loop_kimage_check: 8 + tx_check_inputs_loop_scan_outputkeys_loop_find_tx: 0 + tx_push_global_index: 4 + tx_add_one_tx: 9 + tx_check_inputs_loop_scan_outputkeys_get_item_size: 1 + tx_print_log: 8 + tx_check_inputs_prefix_hash: 8 + tx_append_is_expired: 2 + tx_check_inputs_loop_ch_in_val_sig: 9 + tx_check_inputs_loop_scan_outputkeys_loop_handle_output: 5 + tx_process_extra: 0 + tx_process_attachment: 7 + tx_check_inputs_loop_scan_outputkeys_loop: 9 + tx_store_db: 1 + tx_check_inputs_attachment_check: 6 + tx_check_inputs_loop_scan_outputkeys_relative_to_absolute: 3 + block_processing: + target_calculating_calc: 1 + pos_validate_ki_search: 4 + all_txs_insert_time_5: 3 + etc_stuff_6: 7 + target_calculating_enum_blocks: 4 + target_calculating_time_2: 7 + validate_miner_transaction_time: 4 + verify_multiple_zc_outs_range_proofs_time: 6 + raise_block_core_event: 3 + insert_time_4: 5 + pos_validate_get_out_keys_for_inputs: 7 + block_processing_time_1: 8 + block_processing_time_0: 4 + pos_validate_zvp: 9 + collect_rangeproofs_data_from_tx_time: 0 + longhash_calculating_time_3: 3 + db_stat_info: + write_tx_count: 4 + tx_count: 8 + map_size: 0 + properties: + block_processing: + $ref: "#/components/schemas/BlockProcessingPerformanceModel" + tx_processing: + $ref: "#/components/schemas/TxProcessingPerformanceModel" + tx_pool: + $ref: "#/components/schemas/TxPoolPerformanceModel" + db_stat_info: + $ref: "#/components/schemas/DbStatInfoModel" + type: object + TransactionExtraModel: + example: + details_view: details_view + type: type + short_view: short_view + properties: + type: + type: string + short_view: + type: string + details_view: + type: string + type: object + TxProcessingPerformanceModel: + example: + tx_process_inputs: 5 + tx_check_inputs_loop: 4 + tx_prapare_append: 4 + tx_check_inputs: 0 + tx_append: 3 + tx_check_exist: 6 + tx_check_inputs_loop_scan_outputkeys_loop_get_subitem: 8 + tx_mixin_count: 5 + tx_append_rl_wait: 0 + tx_check_inputs_loop_kimage_check: 8 + tx_check_inputs_loop_scan_outputkeys_loop_find_tx: 0 + tx_push_global_index: 4 + tx_add_one_tx: 9 + tx_check_inputs_loop_scan_outputkeys_get_item_size: 1 + tx_print_log: 8 + tx_check_inputs_prefix_hash: 8 + tx_append_is_expired: 2 + tx_check_inputs_loop_ch_in_val_sig: 9 + tx_check_inputs_loop_scan_outputkeys_loop_handle_output: 5 + tx_process_extra: 0 + tx_process_attachment: 7 + tx_check_inputs_loop_scan_outputkeys_loop: 9 + tx_store_db: 1 + tx_check_inputs_attachment_check: 6 + tx_check_inputs_loop_scan_outputkeys_relative_to_absolute: 3 + properties: + tx_check_inputs: + type: integer + tx_add_one_tx: + type: integer + tx_process_extra: + type: integer + tx_process_attachment: + type: integer + tx_process_inputs: + type: integer + tx_push_global_index: + type: integer + tx_check_exist: + type: integer + tx_print_log: + type: integer + tx_prapare_append: + type: integer + tx_append: + type: integer + tx_append_rl_wait: + type: integer + tx_append_is_expired: + type: integer + tx_store_db: + type: integer + tx_check_inputs_prefix_hash: + type: integer + tx_check_inputs_attachment_check: + type: integer + tx_check_inputs_loop: + type: integer + tx_check_inputs_loop_kimage_check: + type: integer + tx_check_inputs_loop_ch_in_val_sig: + type: integer + tx_check_inputs_loop_scan_outputkeys_get_item_size: + type: integer + tx_check_inputs_loop_scan_outputkeys_relative_to_absolute: + type: integer + tx_check_inputs_loop_scan_outputkeys_loop: + type: integer + tx_check_inputs_loop_scan_outputkeys_loop_get_subitem: + type: integer + tx_check_inputs_loop_scan_outputkeys_loop_find_tx: + type: integer + tx_check_inputs_loop_scan_outputkeys_loop_handle_output: + type: integer + tx_mixin_count: + type: integer + type: object + TxGenerationContextModel: + example: + amount_commitments: + - amount_commitments + - amount_commitments + real_zc_ins_asset_ids: + - real_zc_ins_asset_ids + - real_zc_ins_asset_ids + amount_commitments_sum: amount_commitments_sum + asset_ids: + - asset_ids + - asset_ids + tx_key_sec: tx_key_sec + real_in_asset_id_blinding_mask_x_amount_sum: real_in_asset_id_blinding_mask_x_amount_sum + pseudo_outs_blinded_asset_ids: + - pseudo_outs_blinded_asset_ids + - pseudo_outs_blinded_asset_ids + ao_commitment_in_outputs: true + ao_asset_id_pt: ao_asset_id_pt + zc_input_amounts: + - 6 + - 6 + pseudo_outs_plus_real_out_blinding_masks: + - pseudo_outs_plus_real_out_blinding_masks + - pseudo_outs_plus_real_out_blinding_masks + tx_pub_key_p: tx_pub_key_p + amounts: + - amounts + - amounts + pseudo_out_amount_blinding_masks_sum: pseudo_out_amount_blinding_masks_sum + ao_amount_blinding_mask: ao_amount_blinding_mask + amount_blinding_masks: + - amount_blinding_masks + - amount_blinding_masks + tx_key_pub: tx_key_pub + amount_blinding_masks_sum: amount_blinding_masks_sum + asset_id_blinding_mask_x_amount_sum: asset_id_blinding_mask_x_amount_sum + blinded_asset_ids: + - blinded_asset_ids + - blinded_asset_ids + asset_id_blinding_masks: + - asset_id_blinding_masks + - asset_id_blinding_masks + pseudo_out_amount_commitments_sum: pseudo_out_amount_commitments_sum + ao_asset_id: ao_asset_id + ao_amount_commitment: ao_amount_commitment + properties: + asset_ids: + items: + type: string + type: array + blinded_asset_ids: + items: + type: string + type: array + amount_commitments: + items: + type: string + type: array + asset_id_blinding_masks: + items: + type: string + type: array + amounts: + items: + type: string + type: array + amount_blinding_masks: + items: + type: string + type: array + pseudo_outs_blinded_asset_ids: + items: + type: string + type: array + pseudo_outs_plus_real_out_blinding_masks: + items: + type: string + type: array + real_zc_ins_asset_ids: + items: + type: string + type: array + zc_input_amounts: + items: + type: integer + type: array + pseudo_out_amount_commitments_sum: + type: string + pseudo_out_amount_blinding_masks_sum: + type: string + real_in_asset_id_blinding_mask_x_amount_sum: + type: string + amount_commitments_sum: + type: string + amount_blinding_masks_sum: + type: string + asset_id_blinding_mask_x_amount_sum: + type: string + ao_asset_id: + type: string + ao_asset_id_pt: + type: string + ao_amount_commitment: + type: string + ao_amount_blinding_mask: + type: string + ao_commitment_in_outputs: + type: boolean + tx_key_pub: + type: string + tx_key_sec: + type: string + tx_pub_key_p: + type: string + type: object + HeightModel: + example: + height: 0 + properties: + height: + type: integer + type: object + BlockTemplateModel: + example: + difficulty: difficulty + seed: seed + block_reward_without_fee: 1 + block_reward: 5 + prev_hash: prev_hash + miner_tx_tgc: + amount_commitments: + - amount_commitments + - amount_commitments + real_zc_ins_asset_ids: + - real_zc_ins_asset_ids + - real_zc_ins_asset_ids + amount_commitments_sum: amount_commitments_sum + asset_ids: + - asset_ids + - asset_ids + tx_key_sec: tx_key_sec + real_in_asset_id_blinding_mask_x_amount_sum: real_in_asset_id_blinding_mask_x_amount_sum + pseudo_outs_blinded_asset_ids: + - pseudo_outs_blinded_asset_ids + - pseudo_outs_blinded_asset_ids + ao_commitment_in_outputs: true + ao_asset_id_pt: ao_asset_id_pt + zc_input_amounts: + - 6 + - 6 + pseudo_outs_plus_real_out_blinding_masks: + - pseudo_outs_plus_real_out_blinding_masks + - pseudo_outs_plus_real_out_blinding_masks + tx_pub_key_p: tx_pub_key_p + amounts: + - amounts + - amounts + pseudo_out_amount_blinding_masks_sum: pseudo_out_amount_blinding_masks_sum + ao_amount_blinding_mask: ao_amount_blinding_mask + amount_blinding_masks: + - amount_blinding_masks + - amount_blinding_masks + tx_key_pub: tx_key_pub + amount_blinding_masks_sum: amount_blinding_masks_sum + asset_id_blinding_mask_x_amount_sum: asset_id_blinding_mask_x_amount_sum + blinded_asset_ids: + - blinded_asset_ids + - blinded_asset_ids + asset_id_blinding_masks: + - asset_id_blinding_masks + - asset_id_blinding_masks + pseudo_out_amount_commitments_sum: pseudo_out_amount_commitments_sum + ao_asset_id: ao_asset_id + ao_amount_commitment: ao_amount_commitment + blocktemplate_blob: blocktemplate_blob + height: 0 + txs_fee: 5 + properties: + blocktemplate_blob: + type: string + difficulty: + type: string + height: + type: integer + miner_tx_tgc: + $ref: "#/components/schemas/TxGenerationContextModel" + block_reward_without_fee: + type: integer + block_reward: + type: integer + txs_fee: + type: integer + prev_hash: + type: string + seed: + type: string + type: object + TransactionAttachmentModel: + example: + details_view: details_view + type: type + short_view: short_view + properties: + type: + type: string + short_view: + type: string + details_view: + type: string + type: object + BlockDetailsModel: + example: + miner_text_info: miner_text_info + block_tself_size: 5 + penalty: 7 + cumulative_diff_precise: cumulative_diff_precise + type: 2147483647 + block_cumulative_size: 1 + total_txs_size: 7 + total_fee: 4 + transactions_details: + - amount: 1 + attachments: + - details_view: details_view + type: type + short_view: short_view + - details_view: details_view + type: type + short_view: short_view + object_in_json: object_in_json + fee: 1 + ins: + - amount: 6 + kimage_or_ms_id: kimage_or_ms_id + htlc_origin: htlc_origin + global_indexes: + - 7 + - 7 + multisig_count: 503831554 + - amount: 6 + kimage_or_ms_id: kimage_or_ms_id + htlc_origin: htlc_origin + global_indexes: + - 7 + - 7 + multisig_count: 503831554 + pub_key: pub_key + outs: + - amount: 5 + pub_keys: + - pub_keys + - pub_keys + is_spent: true + minimum_sigs: 2147483647 + global_index: 9 + - amount: 5 + pub_keys: + - pub_keys + - pub_keys + is_spent: true + minimum_sigs: 2147483647 + global_index: 9 + blob: blob + blob_size: 1 + keeper_block: 4 + extra: + - details_view: details_view + type: type + short_view: short_view + - details_view: details_view + type: type + short_view: short_view + id: id + timestamp: 6 + - amount: 1 + attachments: + - details_view: details_view + type: type + short_view: short_view + - details_view: details_view + type: type + short_view: short_view + object_in_json: object_in_json + fee: 1 + ins: + - amount: 6 + kimage_or_ms_id: kimage_or_ms_id + htlc_origin: htlc_origin + global_indexes: + - 7 + - 7 + multisig_count: 503831554 + - amount: 6 + kimage_or_ms_id: kimage_or_ms_id + htlc_origin: htlc_origin + global_indexes: + - 7 + - 7 + multisig_count: 503831554 + pub_key: pub_key + outs: + - amount: 5 + pub_keys: + - pub_keys + - pub_keys + is_spent: true + minimum_sigs: 2147483647 + global_index: 9 + - amount: 5 + pub_keys: + - pub_keys + - pub_keys + is_spent: true + minimum_sigs: 2147483647 + global_index: 9 + blob: blob + blob_size: 1 + keeper_block: 4 + extra: + - details_view: details_view + type: type + short_view: short_view + - details_view: details_view + type: type + short_view: short_view + id: id + timestamp: 6 + id: id + height: 2 + timestamp: 2 + pow_seed: pow_seed + object_in_json: object_in_json + base_reward: 6 + summary_reward: 9 + cumulative_diff_adjusted: cumulative_diff_adjusted + already_generated_coins: already_generated_coins + prev_id: prev_id + actual_timestamp: 0 + difficulty: difficulty + is_orphan: true + this_block_fee_median: 3 + blob: blob + effective_fee_median: 5 + properties: + actual_timestamp: + type: integer + already_generated_coins: + type: string + base_reward: + type: integer + blob: + type: string + block_cumulative_size: + type: integer + block_tself_size: + type: integer + cumulative_diff_adjusted: + type: string + cumulative_diff_precise: + type: string + difficulty: + type: string + effective_fee_median: + type: integer + height: + type: integer + id: + type: string + is_orphan: + type: boolean + miner_text_info: + type: string + object_in_json: + type: string + penalty: + type: integer + pow_seed: + type: string + prev_id: + type: string + summary_reward: + type: integer + this_block_fee_median: + type: integer + timestamp: + type: integer + total_fee: + type: integer + total_txs_size: + type: integer + transactions_details: + items: + $ref: "#/components/schemas/TransactionDetailsModel" + type: array + type: + maximum: 4294967295 + minimum: 0 + type: integer + type: object + PosEntryModel: + example: + amount: 0 + stake_unlock_time: 5 + g_index: 6 + keyimage: keyimage + tx_out_index: 5 + block_timestamp: 1 + wallet_index: 2 + tx_id: tx_id + properties: + amount: + type: integer + g_index: + type: integer + keyimage: + type: string + block_timestamp: + type: integer + stake_unlock_time: + type: integer + tx_id: + type: string + tx_out_index: + type: integer + wallet_index: + type: integer + type: object + TransactionDetailsModel: + example: + amount: 1 + attachments: + - details_view: details_view + type: type + short_view: short_view + - details_view: details_view + type: type + short_view: short_view + object_in_json: object_in_json + fee: 1 + ins: + - amount: 6 + kimage_or_ms_id: kimage_or_ms_id + htlc_origin: htlc_origin + global_indexes: + - 7 + - 7 + multisig_count: 503831554 + - amount: 6 + kimage_or_ms_id: kimage_or_ms_id + htlc_origin: htlc_origin + global_indexes: + - 7 + - 7 + multisig_count: 503831554 + pub_key: pub_key + outs: + - amount: 5 + pub_keys: + - pub_keys + - pub_keys + is_spent: true + minimum_sigs: 2147483647 + global_index: 9 + - amount: 5 + pub_keys: + - pub_keys + - pub_keys + is_spent: true + minimum_sigs: 2147483647 + global_index: 9 + blob: blob + blob_size: 1 + keeper_block: 4 + extra: + - details_view: details_view + type: type + short_view: short_view + - details_view: details_view + type: type + short_view: short_view + id: id + timestamp: 6 + properties: + amount: + type: integer + attachments: + items: + $ref: "#/components/schemas/TransactionAttachmentModel" + type: array + blob: + type: string + blob_size: + type: integer + extra: + items: + $ref: "#/components/schemas/TransactionExtraModel" + type: array + fee: + type: integer + id: + type: string + ins: + items: + $ref: "#/components/schemas/TransactionInputModel" + type: array + keeper_block: + format: int64 + type: integer + object_in_json: + type: string + outs: + items: + $ref: "#/components/schemas/TransactionOutputModel" + type: array + pub_key: + type: string + timestamp: + type: integer + type: object + BlockProcessingPerformanceModel: + example: + target_calculating_calc: 1 + pos_validate_ki_search: 4 + all_txs_insert_time_5: 3 + etc_stuff_6: 7 + target_calculating_enum_blocks: 4 + target_calculating_time_2: 7 + validate_miner_transaction_time: 4 + verify_multiple_zc_outs_range_proofs_time: 6 + raise_block_core_event: 3 + insert_time_4: 5 + pos_validate_get_out_keys_for_inputs: 7 + block_processing_time_1: 8 + block_processing_time_0: 4 + pos_validate_zvp: 9 + collect_rangeproofs_data_from_tx_time: 0 + longhash_calculating_time_3: 3 + properties: + block_processing_time_0: + type: integer + block_processing_time_1: + type: integer + target_calculating_time_2: + type: integer + longhash_calculating_time_3: + type: integer + all_txs_insert_time_5: + type: integer + etc_stuff_6: + type: integer + insert_time_4: + type: integer + raise_block_core_event: + type: integer + validate_miner_transaction_time: + type: integer + collect_rangeproofs_data_from_tx_time: + type: integer + verify_multiple_zc_outs_range_proofs_time: + type: integer + target_calculating_enum_blocks: + type: integer + target_calculating_calc: + type: integer + pos_validate_ki_search: + type: integer + pos_validate_get_out_keys_for_inputs: + type: integer + pos_validate_zvp: + type: integer + type: object + BlockTemplateRequestModel: + example: + miner_address: miner_address + pos_block: true + ex_nonce: ex_nonce + pe: + amount: 0 + stake_unlock_time: 5 + g_index: 6 + keyimage: keyimage + tx_out_index: 5 + block_timestamp: 1 + wallet_index: 2 + tx_id: tx_id + ignore_pow_ts_check: true + stakeholder_address: stakeholder_address + explicit_txs: + - explicit_txs + - explicit_txs + properties: + miner_address: + type: string + stakeholder_address: + type: string + ex_nonce: + type: string + pos_block: + type: boolean + ignore_pow_ts_check: + type: boolean + pe: + $ref: "#/components/schemas/PosEntryModel" + explicit_txs: + items: + type: string + type: array + type: object + SubmitBlockRequestModel: + example: + block_blob: block_blob + properties: + block_blob: + type: string + type: object + diff --git a/utils/sdk/client/java/build.gradle b/utils/sdk/client/java/build.gradle new file mode 100644 index 00000000..557d461b --- /dev/null +++ b/utils/sdk/client/java/build.gradle @@ -0,0 +1,166 @@ +apply plugin: 'idea' +apply plugin: 'eclipse' +apply plugin: 'java' +apply plugin: 'com.diffplug.spotless' + +group = 'letheanVPN' +version = '6.0.1' + +buildscript { + repositories { + mavenCentral() + } + dependencies { + classpath 'com.android.tools.build:gradle:2.3.+' + classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' + classpath 'com.diffplug.spotless:spotless-plugin-gradle:6.11.0' + } +} + +repositories { + mavenCentral() +} +sourceSets { + main.java.srcDirs = ['src/main/java'] +} + +if(hasProperty('target') && target == 'android') { + + apply plugin: 'com.android.library' + apply plugin: 'com.github.dcendents.android-maven' + + android { + compileSdkVersion 25 + buildToolsVersion '25.0.2' + defaultConfig { + minSdkVersion 14 + targetSdkVersion 25 + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + // Rename the aar correctly + libraryVariants.all { variant -> + variant.outputs.each { output -> + def outputFile = output.outputFile + if (outputFile != null && outputFile.name.endsWith('.aar')) { + def fileName = "${project.name}-${variant.baseName}-${version}.aar" + output.outputFile = new File(outputFile.parent, fileName) + } + } + } + + dependencies { + provided "jakarta.annotation:jakarta.annotation-api:$jakarta_annotation_version" + } + } + + afterEvaluate { + android.libraryVariants.all { variant -> + def task = project.tasks.create "jar${variant.name.capitalize()}", Jar + task.description = "Create jar artifact for ${variant.name}" + task.dependsOn variant.javaCompile + task.from variant.javaCompile.destinationDirectory + task.destinationDirectory = project.file("${project.buildDir}/outputs/jar") + task.archiveFileName = "${project.name}-${variant.baseName}-${version}.jar" + artifacts.add('archives', task) + } + } + + task sourcesJar(type: Jar) { + from android.sourceSets.main.java.srcDirs + classifier = 'sources' + } + + artifacts { + archives sourcesJar + } + +} else { + + apply plugin: 'java' + apply plugin: 'maven-publish' + + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + + publishing { + publications { + maven(MavenPublication) { + artifactId = 'lthn' + from components.java + } + } + } + + task execute(type:JavaExec) { + main = System.getProperty('mainClass') + classpath = sourceSets.main.runtimeClasspath + } +} + +ext { + jakarta_annotation_version = "1.3.5" +} + +dependencies { + implementation "com.google.code.findbugs:jsr305:3.0.2" + implementation 'com.squareup.okhttp3:okhttp:4.12.0' + implementation 'com.squareup.okhttp3:logging-interceptor:4.12.0' + implementation 'com.google.code.gson:gson:2.9.1' + implementation 'io.gsonfire:gson-fire:1.9.0' + implementation 'jakarta.ws.rs:jakarta.ws.rs-api:2.1.6' + implementation 'org.openapitools:jackson-databind-nullable:0.2.7' + implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.18.0' + implementation "jakarta.annotation:jakarta.annotation-api:$jakarta_annotation_version" + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.3' + testImplementation 'org.mockito:mockito-core:3.12.4' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.3' +} + +javadoc { + options.tags = [ "http.response.details:a:Http Response Details" ] +} + +// Use spotless plugin to automatically format code, remove unused import, etc +// To apply changes directly to the file, run `gradlew spotlessApply` +// Ref: https://github.com/diffplug/spotless/tree/main/plugin-gradle +spotless { + // comment out below to run spotless as part of the `check` task + enforceCheck false + + format 'misc', { + // define the files (e.g. '*.gradle', '*.md') to apply `misc` to + target '.gitignore' + + // define the steps to apply to those files + trimTrailingWhitespace() + indentWithSpaces() // Takes an integer argument if you don't like 4 + endWithNewline() + } + java { + // don't need to set target, it is inferred from java + + // apply a specific flavor of google-java-format + googleJavaFormat('1.8').aosp().reflowLongStrings() + + removeUnusedImports() + importOrder() + } +} + +test { + // Enable JUnit 5 (Gradle 4.6+). + useJUnitPlatform() + + // Always run tests, even when nothing changed. + dependsOn 'cleanTest' + + // Show test results. + testLogging { + events "passed", "skipped", "failed" + } + +} diff --git a/utils/sdk/client/java/build.sbt b/utils/sdk/client/java/build.sbt new file mode 100644 index 00000000..855a4ddf --- /dev/null +++ b/utils/sdk/client/java/build.sbt @@ -0,0 +1,27 @@ +lazy val root = (project in file(".")). + settings( + organization := "letheanVPN", + name := "lthn", + version := "6.0.1", + scalaVersion := "2.11.12", + scalacOptions ++= Seq("-feature"), + compile / javacOptions ++= Seq("-Xlint:deprecation"), + Compile / packageDoc / publishArtifact := false, + resolvers += Resolver.mavenLocal, + libraryDependencies ++= Seq( + "io.swagger" % "swagger-annotations" % "1.6.5", + "com.squareup.okhttp3" % "okhttp" % "4.12.0", + "com.squareup.okhttp3" % "logging-interceptor" % "4.12.0", + "com.google.code.gson" % "gson" % "2.9.1", + "org.apache.commons" % "commons-lang3" % "3.18.0", + "jakarta.ws.rs" % "jakarta.ws.rs-api" % "2.1.6", + "org.openapitools" % "jackson-databind-nullable" % "0.2.7", + "io.gsonfire" % "gson-fire" % "1.9.0" % "compile", + "jakarta.annotation" % "jakarta.annotation-api" % "1.3.5" % "compile", + "com.google.code.findbugs" % "jsr305" % "3.0.2" % "compile", + "jakarta.annotation" % "jakarta.annotation-api" % "1.3.5" % "compile", + "org.junit.jupiter" % "junit-jupiter-api" % "5.10.3" % "test", + "com.novocode" % "junit-interface" % "0.10" % "test", + "org.mockito" % "mockito-core" % "3.12.4" % "test" + ) + ) diff --git a/utils/sdk/client/java/docs/BlockApi.md b/utils/sdk/client/java/docs/BlockApi.md new file mode 100644 index 00000000..872dee62 --- /dev/null +++ b/utils/sdk/client/java/docs/BlockApi.md @@ -0,0 +1,313 @@ +# BlockApi + +All URIs are relative to *http://127.0.0.1:36943* + +| Method | HTTP request | Description | +|------------- | ------------- | -------------| +| [**createBlockTemplate**](BlockApi.md#createBlockTemplate) | **POST** /block/template | Create a block template for mining | +| [**getBlock**](BlockApi.md#getBlock) | **GET** /block/{identifier} | Get a block by its hash or height (ID) | +| [**getBlocks**](BlockApi.md#getBlocks) | **GET** /block | Get one or more blocks, with optional pagination. | +| [**getHeight**](BlockApi.md#getHeight) | **GET** /block/height | Get the current blockchain height | +| [**submitBlock**](BlockApi.md#submitBlock) | **POST** /block/submit | Submit a new block to the network | + + + +# **createBlockTemplate** +> BlockTemplateModel createBlockTemplate(blockTemplateRequestModel) + +Create a block template for mining + +### Example +```java +// Import classes: +import invalidPackageName.ApiClient; +import invalidPackageName.ApiException; +import invalidPackageName.Configuration; +import invalidPackageName.models.*; +import lthn.BlockApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://127.0.0.1:36943"); + + BlockApi apiInstance = new BlockApi(defaultClient); + BlockTemplateRequestModel blockTemplateRequestModel = new BlockTemplateRequestModel(); // BlockTemplateRequestModel | + try { + BlockTemplateModel result = apiInstance.createBlockTemplate(blockTemplateRequestModel); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling BlockApi#createBlockTemplate"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **blockTemplateRequestModel** | [**BlockTemplateRequestModel**](BlockTemplateRequestModel.md)| | | + +### Return type + +[**BlockTemplateModel**](BlockTemplateModel.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **500** | text/plain | - | +| **400** | text/plain | - | +| **200** | OK | - | + + +# **getBlock** +> BlockDetailsModel getBlock(identifier) + +Get a block by its hash or height (ID) + +### Example +```java +// Import classes: +import invalidPackageName.ApiClient; +import invalidPackageName.ApiException; +import invalidPackageName.Configuration; +import invalidPackageName.models.*; +import lthn.BlockApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://127.0.0.1:36943"); + + BlockApi apiInstance = new BlockApi(defaultClient); + String identifier = "identifier_example"; // String | The hash (hex string) or height (integer) of the block to retrieve. + try { + BlockDetailsModel result = apiInstance.getBlock(identifier); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling BlockApi#getBlock"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **identifier** | **String**| The hash (hex string) or height (integer) of the block to retrieve. | | + +### Return type + +[**BlockDetailsModel**](BlockDetailsModel.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **404** | text/plain | - | +| **400** | text/plain | - | +| **200** | OK | - | + + +# **getBlocks** +> List<BlockDetailsModel> getBlocks() + +Get one or more blocks, with optional pagination. + +### Example +```java +// Import classes: +import invalidPackageName.ApiClient; +import invalidPackageName.ApiException; +import invalidPackageName.Configuration; +import invalidPackageName.models.*; +import lthn.BlockApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://127.0.0.1:36943"); + + BlockApi apiInstance = new BlockApi(defaultClient); + try { + List result = apiInstance.getBlocks(); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling BlockApi#getBlocks"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +[**List<BlockDetailsModel>**](BlockDetailsModel.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **404** | text/plain | - | +| **400** | text/plain | - | +| **200** | A list of block objects. | - | + + +# **getHeight** +> HeightModel getHeight() + +Get the current blockchain height + +### Example +```java +// Import classes: +import invalidPackageName.ApiClient; +import invalidPackageName.ApiException; +import invalidPackageName.Configuration; +import invalidPackageName.models.*; +import lthn.BlockApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://127.0.0.1:36943"); + + BlockApi apiInstance = new BlockApi(defaultClient); + try { + HeightModel result = apiInstance.getHeight(); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling BlockApi#getHeight"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +[**HeightModel**](HeightModel.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | OK | - | + + +# **submitBlock** +> SubmitBlockResponseModel submitBlock(submitBlockRequestModel) + +Submit a new block to the network + +### Example +```java +// Import classes: +import invalidPackageName.ApiClient; +import invalidPackageName.ApiException; +import invalidPackageName.Configuration; +import invalidPackageName.models.*; +import lthn.BlockApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://127.0.0.1:36943"); + + BlockApi apiInstance = new BlockApi(defaultClient); + SubmitBlockRequestModel submitBlockRequestModel = new SubmitBlockRequestModel(); // SubmitBlockRequestModel | + try { + SubmitBlockResponseModel result = apiInstance.submitBlock(submitBlockRequestModel); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling BlockApi#submitBlock"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **submitBlockRequestModel** | [**SubmitBlockRequestModel**](SubmitBlockRequestModel.md)| | | + +### Return type + +[**SubmitBlockResponseModel**](SubmitBlockResponseModel.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **406** | text/plain | - | +| **400** | text/plain | - | +| **200** | OK | - | + diff --git a/utils/sdk/client/java/docs/BlockDetailsModel.md b/utils/sdk/client/java/docs/BlockDetailsModel.md new file mode 100644 index 00000000..80e767f1 --- /dev/null +++ b/utils/sdk/client/java/docs/BlockDetailsModel.md @@ -0,0 +1,37 @@ + + +# BlockDetailsModel + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**actualTimestamp** | **Integer** | | [optional] | +|**alreadyGeneratedCoins** | **String** | | [optional] | +|**baseReward** | **Integer** | | [optional] | +|**blob** | **String** | | [optional] | +|**blockCumulativeSize** | **Integer** | | [optional] | +|**blockTselfSize** | **Integer** | | [optional] | +|**cumulativeDiffAdjusted** | **String** | | [optional] | +|**cumulativeDiffPrecise** | **String** | | [optional] | +|**difficulty** | **String** | | [optional] | +|**effectiveFeeMedian** | **Integer** | | [optional] | +|**height** | **Integer** | | [optional] | +|**id** | **String** | | [optional] | +|**isOrphan** | **Boolean** | | [optional] | +|**minerTextInfo** | **String** | | [optional] | +|**objectInJson** | **String** | | [optional] | +|**penalty** | **Integer** | | [optional] | +|**powSeed** | **String** | | [optional] | +|**prevId** | **String** | | [optional] | +|**summaryReward** | **Integer** | | [optional] | +|**thisBlockFeeMedian** | **Integer** | | [optional] | +|**timestamp** | **Integer** | | [optional] | +|**totalFee** | **Integer** | | [optional] | +|**totalTxsSize** | **Integer** | | [optional] | +|**transactionsDetails** | [**List<TransactionDetailsModel>**](TransactionDetailsModel.md) | | [optional] | +|**type** | **Integer** | | [optional] | + + + diff --git a/utils/sdk/client/java/docs/BlockProcessingPerformanceModel.md b/utils/sdk/client/java/docs/BlockProcessingPerformanceModel.md new file mode 100644 index 00000000..21fa6280 --- /dev/null +++ b/utils/sdk/client/java/docs/BlockProcessingPerformanceModel.md @@ -0,0 +1,28 @@ + + +# BlockProcessingPerformanceModel + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**blockProcessingTime0** | **Integer** | | [optional] | +|**blockProcessingTime1** | **Integer** | | [optional] | +|**targetCalculatingTime2** | **Integer** | | [optional] | +|**longhashCalculatingTime3** | **Integer** | | [optional] | +|**allTxsInsertTime5** | **Integer** | | [optional] | +|**etcStuff6** | **Integer** | | [optional] | +|**insertTime4** | **Integer** | | [optional] | +|**raiseBlockCoreEvent** | **Integer** | | [optional] | +|**validateMinerTransactionTime** | **Integer** | | [optional] | +|**collectRangeproofsDataFromTxTime** | **Integer** | | [optional] | +|**verifyMultipleZcOutsRangeProofsTime** | **Integer** | | [optional] | +|**targetCalculatingEnumBlocks** | **Integer** | | [optional] | +|**targetCalculatingCalc** | **Integer** | | [optional] | +|**posValidateKiSearch** | **Integer** | | [optional] | +|**posValidateGetOutKeysForInputs** | **Integer** | | [optional] | +|**posValidateZvp** | **Integer** | | [optional] | + + + diff --git a/utils/sdk/client/java/docs/BlockTemplateModel.md b/utils/sdk/client/java/docs/BlockTemplateModel.md new file mode 100644 index 00000000..0ec805f9 --- /dev/null +++ b/utils/sdk/client/java/docs/BlockTemplateModel.md @@ -0,0 +1,21 @@ + + +# BlockTemplateModel + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**blocktemplateBlob** | **String** | | [optional] | +|**difficulty** | **String** | | [optional] | +|**height** | **Integer** | | [optional] | +|**minerTxTgc** | [**TxGenerationContextModel**](TxGenerationContextModel.md) | | [optional] | +|**blockRewardWithoutFee** | **Integer** | | [optional] | +|**blockReward** | **Integer** | | [optional] | +|**txsFee** | **Integer** | | [optional] | +|**prevHash** | **String** | | [optional] | +|**seed** | **String** | | [optional] | + + + diff --git a/utils/sdk/client/java/docs/BlockTemplateRequestModel.md b/utils/sdk/client/java/docs/BlockTemplateRequestModel.md new file mode 100644 index 00000000..6b65bb82 --- /dev/null +++ b/utils/sdk/client/java/docs/BlockTemplateRequestModel.md @@ -0,0 +1,19 @@ + + +# BlockTemplateRequestModel + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**minerAddress** | **String** | | [optional] | +|**stakeholderAddress** | **String** | | [optional] | +|**exNonce** | **String** | | [optional] | +|**posBlock** | **Boolean** | | [optional] | +|**ignorePowTsCheck** | **Boolean** | | [optional] | +|**pe** | [**PosEntryModel**](PosEntryModel.md) | | [optional] | +|**explicitTxs** | **List<String>** | | [optional] | + + + diff --git a/utils/sdk/client/java/docs/DbStatInfoModel.md b/utils/sdk/client/java/docs/DbStatInfoModel.md new file mode 100644 index 00000000..2e860e2c --- /dev/null +++ b/utils/sdk/client/java/docs/DbStatInfoModel.md @@ -0,0 +1,15 @@ + + +# DbStatInfoModel + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**txCount** | **Integer** | | [optional] | +|**writeTxCount** | **Integer** | | [optional] | +|**mapSize** | **Integer** | | [optional] | + + + diff --git a/utils/sdk/client/java/docs/HeightModel.md b/utils/sdk/client/java/docs/HeightModel.md new file mode 100644 index 00000000..1080f098 --- /dev/null +++ b/utils/sdk/client/java/docs/HeightModel.md @@ -0,0 +1,13 @@ + + +# HeightModel + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**height** | **Integer** | | [optional] | + + + diff --git a/utils/sdk/client/java/docs/InfoApi.md b/utils/sdk/client/java/docs/InfoApi.md new file mode 100644 index 00000000..9049b330 --- /dev/null +++ b/utils/sdk/client/java/docs/InfoApi.md @@ -0,0 +1,128 @@ +# InfoApi + +All URIs are relative to *http://127.0.0.1:36943* + +| Method | HTTP request | Description | +|------------- | ------------- | -------------| +| [**getInfo**](InfoApi.md#getInfo) | **GET** /info | Get detailed information about the blockchain and daemon state | +| [**version**](InfoApi.md#version) | **GET** /info/version | Get API version | + + + +# **getInfo** +> InfoModel getInfo(flags) + +Get detailed information about the blockchain and daemon state + +### Example +```java +// Import classes: +import invalidPackageName.ApiClient; +import invalidPackageName.ApiException; +import invalidPackageName.Configuration; +import invalidPackageName.models.*; +import lthn.InfoApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://127.0.0.1:36943"); + + InfoApi apiInstance = new InfoApi(defaultClient); + String flags = "flags_example"; // String | Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median. + try { + InfoModel result = apiInstance.getInfo(flags); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling InfoApi#getInfo"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **flags** | **String**| Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median. | [optional] | + +### Return type + +[**InfoModel**](InfoModel.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | OK | - | + + +# **version** +> VersionModel version() + +Get API version + +Returns the current version of the API. + +### Example +```java +// Import classes: +import invalidPackageName.ApiClient; +import invalidPackageName.ApiException; +import invalidPackageName.Configuration; +import invalidPackageName.models.*; +import lthn.InfoApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://127.0.0.1:36943"); + + InfoApi apiInstance = new InfoApi(defaultClient); + try { + VersionModel result = apiInstance.version(); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling InfoApi#version"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +[**VersionModel**](VersionModel.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | OK | - | + diff --git a/utils/sdk/client/java/docs/InfoModel.md b/utils/sdk/client/java/docs/InfoModel.md new file mode 100644 index 00000000..438a5fee --- /dev/null +++ b/utils/sdk/client/java/docs/InfoModel.md @@ -0,0 +1,58 @@ + + +# InfoModel + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**height** | **Integer** | | [optional] | +|**txCount** | **Integer** | | [optional] | +|**txPoolSize** | **Integer** | | [optional] | +|**altBlocksCount** | **Integer** | | [optional] | +|**outgoingConnectionsCount** | **Integer** | | [optional] | +|**incomingConnectionsCount** | **Integer** | | [optional] | +|**synchronizedConnectionsCount** | **Integer** | | [optional] | +|**whitePeerlistSize** | **Integer** | | [optional] | +|**greyPeerlistSize** | **Integer** | | [optional] | +|**currentBlocksMedian** | **Integer** | | [optional] | +|**aliasCount** | **Integer** | | [optional] | +|**currentMaxAllowedBlockSize** | **Integer** | | [optional] | +|**daemonNetworkState** | **String** | | [optional] | +|**synchronizationStartHeight** | **Integer** | | [optional] | +|**maxNetSeenHeight** | **Integer** | | [optional] | +|**mi** | [**MaintainersInfoModel**](MaintainersInfoModel.md) | | [optional] | +|**posAllowed** | **Boolean** | | [optional] | +|**posDifficulty** | **String** | | [optional] | +|**powDifficulty** | **Integer** | | [optional] | +|**defaultFee** | **Integer** | | [optional] | +|**minimumFee** | **Integer** | | [optional] | +|**isHardforkActive** | **List<Boolean>** | | [optional] | +|**netTimeDeltaMedian** | **Long** | | [optional] | +|**currentNetworkHashrate50** | **Integer** | | [optional] | +|**currentNetworkHashrate350** | **Integer** | | [optional] | +|**secondsFor10Blocks** | **Integer** | | [optional] | +|**secondsFor30Blocks** | **Integer** | | [optional] | +|**transactionsCntPerDay** | **List<Integer>** | | [optional] | +|**transactionsVolumePerDay** | **List<Integer>** | | [optional] | +|**lastPosTimestamp** | **Integer** | | [optional] | +|**lastPowTimestamp** | **Integer** | | [optional] | +|**totalCoins** | **String** | | [optional] | +|**lastBlockSize** | **Integer** | | [optional] | +|**txCountInLastBlock** | **Integer** | | [optional] | +|**posSequenceFactor** | **Double** | | [optional] | +|**powSequenceFactor** | **Double** | | [optional] | +|**blockReward** | **Integer** | | [optional] | +|**lastBlockTotalReward** | **Integer** | | [optional] | +|**posDiffTotalCoinsRate** | **Integer** | | [optional] | +|**lastBlockTimestamp** | **Integer** | | [optional] | +|**lastBlockHash** | **String** | | [optional] | +|**posBlockTsShiftVsActual** | **Long** | | [optional] | +|**outsStat** | **Map<String, Integer>** | | [optional] | +|**performanceData** | [**PerformanceModel**](PerformanceModel.md) | | [optional] | +|**offersCount** | **Integer** | | [optional] | +|**expirationMedianTimestamp** | **Integer** | | [optional] | + + + diff --git a/utils/sdk/client/java/docs/MaintainersInfoModel.md b/utils/sdk/client/java/docs/MaintainersInfoModel.md new file mode 100644 index 00000000..78b6efb3 --- /dev/null +++ b/utils/sdk/client/java/docs/MaintainersInfoModel.md @@ -0,0 +1,17 @@ + + +# MaintainersInfoModel + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**verMajor** | **Integer** | | [optional] | +|**verMinor** | **Integer** | | [optional] | +|**verRevision** | **Integer** | | [optional] | +|**buildNo** | **Integer** | | [optional] | +|**mode** | **Integer** | | [optional] | + + + diff --git a/utils/sdk/client/java/docs/PerformanceModel.md b/utils/sdk/client/java/docs/PerformanceModel.md new file mode 100644 index 00000000..caf860bc --- /dev/null +++ b/utils/sdk/client/java/docs/PerformanceModel.md @@ -0,0 +1,16 @@ + + +# PerformanceModel + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**blockProcessing** | [**BlockProcessingPerformanceModel**](BlockProcessingPerformanceModel.md) | | [optional] | +|**txProcessing** | [**TxProcessingPerformanceModel**](TxProcessingPerformanceModel.md) | | [optional] | +|**txPool** | [**TxPoolPerformanceModel**](TxPoolPerformanceModel.md) | | [optional] | +|**dbStatInfo** | [**DbStatInfoModel**](DbStatInfoModel.md) | | [optional] | + + + diff --git a/utils/sdk/client/java/docs/PosEntryModel.md b/utils/sdk/client/java/docs/PosEntryModel.md new file mode 100644 index 00000000..be65be6c --- /dev/null +++ b/utils/sdk/client/java/docs/PosEntryModel.md @@ -0,0 +1,20 @@ + + +# PosEntryModel + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**amount** | **Integer** | | [optional] | +|**gIndex** | **Integer** | | [optional] | +|**keyimage** | **String** | | [optional] | +|**blockTimestamp** | **Integer** | | [optional] | +|**stakeUnlockTime** | **Integer** | | [optional] | +|**txId** | **String** | | [optional] | +|**txOutIndex** | **Integer** | | [optional] | +|**walletIndex** | **Integer** | | [optional] | + + + diff --git a/utils/sdk/client/java/docs/SubmitBlockRequestModel.md b/utils/sdk/client/java/docs/SubmitBlockRequestModel.md new file mode 100644 index 00000000..6a8854e2 --- /dev/null +++ b/utils/sdk/client/java/docs/SubmitBlockRequestModel.md @@ -0,0 +1,13 @@ + + +# SubmitBlockRequestModel + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**blockBlob** | **String** | | [optional] | + + + diff --git a/utils/sdk/client/java/docs/SubmitBlockResponseModel.md b/utils/sdk/client/java/docs/SubmitBlockResponseModel.md new file mode 100644 index 00000000..d52c5a0d --- /dev/null +++ b/utils/sdk/client/java/docs/SubmitBlockResponseModel.md @@ -0,0 +1,13 @@ + + +# SubmitBlockResponseModel + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**status** | **String** | | [optional] | + + + diff --git a/utils/sdk/client/java/docs/TransactionAttachmentModel.md b/utils/sdk/client/java/docs/TransactionAttachmentModel.md new file mode 100644 index 00000000..63418cff --- /dev/null +++ b/utils/sdk/client/java/docs/TransactionAttachmentModel.md @@ -0,0 +1,15 @@ + + +# TransactionAttachmentModel + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**type** | **String** | | [optional] | +|**shortView** | **String** | | [optional] | +|**detailsView** | **String** | | [optional] | + + + diff --git a/utils/sdk/client/java/docs/TransactionDetailsModel.md b/utils/sdk/client/java/docs/TransactionDetailsModel.md new file mode 100644 index 00000000..e98185b9 --- /dev/null +++ b/utils/sdk/client/java/docs/TransactionDetailsModel.md @@ -0,0 +1,25 @@ + + +# TransactionDetailsModel + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**amount** | **Integer** | | [optional] | +|**attachments** | [**List<TransactionAttachmentModel>**](TransactionAttachmentModel.md) | | [optional] | +|**blob** | **String** | | [optional] | +|**blobSize** | **Integer** | | [optional] | +|**extra** | [**List<TransactionExtraModel>**](TransactionExtraModel.md) | | [optional] | +|**fee** | **Integer** | | [optional] | +|**id** | **String** | | [optional] | +|**ins** | [**List<TransactionInputModel>**](TransactionInputModel.md) | | [optional] | +|**keeperBlock** | **Long** | | [optional] | +|**objectInJson** | **String** | | [optional] | +|**outs** | [**List<TransactionOutputModel>**](TransactionOutputModel.md) | | [optional] | +|**pubKey** | **String** | | [optional] | +|**timestamp** | **Integer** | | [optional] | + + + diff --git a/utils/sdk/client/java/docs/TransactionExtraModel.md b/utils/sdk/client/java/docs/TransactionExtraModel.md new file mode 100644 index 00000000..423f278c --- /dev/null +++ b/utils/sdk/client/java/docs/TransactionExtraModel.md @@ -0,0 +1,15 @@ + + +# TransactionExtraModel + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**type** | **String** | | [optional] | +|**shortView** | **String** | | [optional] | +|**detailsView** | **String** | | [optional] | + + + diff --git a/utils/sdk/client/java/docs/TransactionInputModel.md b/utils/sdk/client/java/docs/TransactionInputModel.md new file mode 100644 index 00000000..9b626d04 --- /dev/null +++ b/utils/sdk/client/java/docs/TransactionInputModel.md @@ -0,0 +1,17 @@ + + +# TransactionInputModel + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**amount** | **Integer** | | [optional] | +|**globalIndexes** | **List<Integer>** | | [optional] | +|**htlcOrigin** | **String** | | [optional] | +|**kimageOrMsId** | **String** | | [optional] | +|**multisigCount** | **Integer** | | [optional] | + + + diff --git a/utils/sdk/client/java/docs/TransactionOutputModel.md b/utils/sdk/client/java/docs/TransactionOutputModel.md new file mode 100644 index 00000000..a1826cb0 --- /dev/null +++ b/utils/sdk/client/java/docs/TransactionOutputModel.md @@ -0,0 +1,17 @@ + + +# TransactionOutputModel + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**amount** | **Integer** | | [optional] | +|**globalIndex** | **Integer** | | [optional] | +|**isSpent** | **Boolean** | | [optional] | +|**minimumSigs** | **Integer** | | [optional] | +|**pubKeys** | **List<String>** | | [optional] | + + + diff --git a/utils/sdk/client/java/docs/TxGenerationContextModel.md b/utils/sdk/client/java/docs/TxGenerationContextModel.md new file mode 100644 index 00000000..cc5557da --- /dev/null +++ b/utils/sdk/client/java/docs/TxGenerationContextModel.md @@ -0,0 +1,36 @@ + + +# TxGenerationContextModel + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**assetIds** | **List<String>** | | [optional] | +|**blindedAssetIds** | **List<String>** | | [optional] | +|**amountCommitments** | **List<String>** | | [optional] | +|**assetIdBlindingMasks** | **List<String>** | | [optional] | +|**amounts** | **List<String>** | | [optional] | +|**amountBlindingMasks** | **List<String>** | | [optional] | +|**pseudoOutsBlindedAssetIds** | **List<String>** | | [optional] | +|**pseudoOutsPlusRealOutBlindingMasks** | **List<String>** | | [optional] | +|**realZcInsAssetIds** | **List<String>** | | [optional] | +|**zcInputAmounts** | **List<Integer>** | | [optional] | +|**pseudoOutAmountCommitmentsSum** | **String** | | [optional] | +|**pseudoOutAmountBlindingMasksSum** | **String** | | [optional] | +|**realInAssetIdBlindingMaskXAmountSum** | **String** | | [optional] | +|**amountCommitmentsSum** | **String** | | [optional] | +|**amountBlindingMasksSum** | **String** | | [optional] | +|**assetIdBlindingMaskXAmountSum** | **String** | | [optional] | +|**aoAssetId** | **String** | | [optional] | +|**aoAssetIdPt** | **String** | | [optional] | +|**aoAmountCommitment** | **String** | | [optional] | +|**aoAmountBlindingMask** | **String** | | [optional] | +|**aoCommitmentInOutputs** | **Boolean** | | [optional] | +|**txKeyPub** | **String** | | [optional] | +|**txKeySec** | **String** | | [optional] | +|**txPubKeyP** | **String** | | [optional] | + + + diff --git a/utils/sdk/client/java/docs/TxPoolPerformanceModel.md b/utils/sdk/client/java/docs/TxPoolPerformanceModel.md new file mode 100644 index 00000000..5a497625 --- /dev/null +++ b/utils/sdk/client/java/docs/TxPoolPerformanceModel.md @@ -0,0 +1,23 @@ + + +# TxPoolPerformanceModel + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**txProcessingTime** | **Integer** | | [optional] | +|**checkInputsTypesSupportedTime** | **Integer** | | [optional] | +|**expirationValidateTime** | **Integer** | | [optional] | +|**validateAmountTime** | **Integer** | | [optional] | +|**validateAliasTime** | **Integer** | | [optional] | +|**checkKeyimagesWsMsTime** | **Integer** | | [optional] | +|**checkInputsTime** | **Integer** | | [optional] | +|**beginTxTime** | **Integer** | | [optional] | +|**updateDbTime** | **Integer** | | [optional] | +|**dbCommitTime** | **Integer** | | [optional] | +|**checkPostHf4Balance** | **Integer** | | [optional] | + + + diff --git a/utils/sdk/client/java/docs/TxProcessingPerformanceModel.md b/utils/sdk/client/java/docs/TxProcessingPerformanceModel.md new file mode 100644 index 00000000..b562d1c3 --- /dev/null +++ b/utils/sdk/client/java/docs/TxProcessingPerformanceModel.md @@ -0,0 +1,37 @@ + + +# TxProcessingPerformanceModel + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**txCheckInputs** | **Integer** | | [optional] | +|**txAddOneTx** | **Integer** | | [optional] | +|**txProcessExtra** | **Integer** | | [optional] | +|**txProcessAttachment** | **Integer** | | [optional] | +|**txProcessInputs** | **Integer** | | [optional] | +|**txPushGlobalIndex** | **Integer** | | [optional] | +|**txCheckExist** | **Integer** | | [optional] | +|**txPrintLog** | **Integer** | | [optional] | +|**txPrapareAppend** | **Integer** | | [optional] | +|**txAppend** | **Integer** | | [optional] | +|**txAppendRlWait** | **Integer** | | [optional] | +|**txAppendIsExpired** | **Integer** | | [optional] | +|**txStoreDb** | **Integer** | | [optional] | +|**txCheckInputsPrefixHash** | **Integer** | | [optional] | +|**txCheckInputsAttachmentCheck** | **Integer** | | [optional] | +|**txCheckInputsLoop** | **Integer** | | [optional] | +|**txCheckInputsLoopKimageCheck** | **Integer** | | [optional] | +|**txCheckInputsLoopChInValSig** | **Integer** | | [optional] | +|**txCheckInputsLoopScanOutputkeysGetItemSize** | **Integer** | | [optional] | +|**txCheckInputsLoopScanOutputkeysRelativeToAbsolute** | **Integer** | | [optional] | +|**txCheckInputsLoopScanOutputkeysLoop** | **Integer** | | [optional] | +|**txCheckInputsLoopScanOutputkeysLoopGetSubitem** | **Integer** | | [optional] | +|**txCheckInputsLoopScanOutputkeysLoopFindTx** | **Integer** | | [optional] | +|**txCheckInputsLoopScanOutputkeysLoopHandleOutput** | **Integer** | | [optional] | +|**txMixinCount** | **Integer** | | [optional] | + + + diff --git a/utils/sdk/client/java/docs/VersionModel.md b/utils/sdk/client/java/docs/VersionModel.md new file mode 100644 index 00000000..f5ead7bf --- /dev/null +++ b/utils/sdk/client/java/docs/VersionModel.md @@ -0,0 +1,17 @@ + + +# VersionModel + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**version** | **String** | | [optional] | +|**versionLong** | **String** | | [optional] | +|**major** | **String** | | [optional] | +|**minor** | **String** | | [optional] | +|**revision** | **String** | | [optional] | + + + diff --git a/utils/sdk/client/java/gradle.properties b/utils/sdk/client/java/gradle.properties new file mode 100644 index 00000000..a3408578 --- /dev/null +++ b/utils/sdk/client/java/gradle.properties @@ -0,0 +1,6 @@ +# This file is automatically generated by OpenAPI Generator (https://github.com/openAPITools/openapi-generator). +# To include other gradle properties as part of the code generation process, please use the `gradleProperties` option. +# +# Gradle properties reference: https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties +# For example, uncomment below to build for Android +#target = android diff --git a/utils/sdk/client/java/gradle/wrapper/gradle-wrapper.jar b/utils/sdk/client/java/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e6441136f3d4ba8a0da8d277868979cfbc8ad796 GIT binary patch literal 43453 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 yu?e%!_ptzGB|8GrCfu%p?(_ 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
NnX)EH+Nua)3Y(c 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 '} +case $link in #( +/*) app_path=$link ;; #( +*) app_path=$APP_HOME$link ;; +esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { +echo "$*" +} >&2 + +die () { +echo +echo "$*" +echo +exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( +CYGWIN* ) cygwin=true ;; #( +Darwin* ) darwin=true ;; #( +MSYS* | MINGW* ) msys=true ;; #( +NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then +if [ -x "$JAVA_HOME/jre/sh/java" ] ; then +# IBM's JDK on AIX uses strange locations for the executables +JAVACMD=$JAVA_HOME/jre/sh/java +else +JAVACMD=$JAVA_HOME/bin/java +fi +if [ ! -x "$JAVACMD" ] ; then +die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi +else +JAVACMD=java +if ! command -v java >/dev/null 2>&1 +then +die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then +case $MAX_FD in #( +max*) +# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. +# shellcheck disable=SC2039,SC3045 +MAX_FD=$( ulimit -H -n ) || +warn "Could not query maximum file descriptor limit" +esac +case $MAX_FD in #( +'' | soft) :;; #( +*) +# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. +# shellcheck disable=SC2039,SC3045 +ulimit -n "$MAX_FD" || +warn "Could not set maximum file descriptor limit to $MAX_FD" +esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then +APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) +CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + +JAVACMD=$( cygpath --unix "$JAVACMD" ) + +# Now convert the arguments - kludge to limit ourselves to /bin/sh +for arg do +if +case $arg in #( +-*) false ;; # don't mess with options #( +/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath +[ -e "$t" ] ;; #( +*) false ;; +esac +then +arg=$( cygpath --path --ignore --mixed "$arg" ) +fi +# Roll the args list around exactly as many times as the number of +# args, so each arg winds up back in the position where it started, but +# possibly modified. +# +# NB: a `for` loop captures its iteration list before it begins, so +# changing the positional parameters here affects neither the number of +# iterations, nor the values presented in `arg`. +shift # remove old arg +set -- "$@" "$arg" # push replacement arg +done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ +"-Dorg.gradle.appname=$APP_BASE_NAME" \ +-classpath "$CLASSPATH" \ +org.gradle.wrapper.GradleWrapperMain \ +"$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then +die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( +printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | +xargs -n1 | +sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | +tr '\n' ' ' +)" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/utils/sdk/client/java/gradlew.bat b/utils/sdk/client/java/gradlew.bat new file mode 100644 index 00000000..25da30db --- /dev/null +++ b/utils/sdk/client/java/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/utils/sdk/client/java/pom.xml b/utils/sdk/client/java/pom.xml new file mode 100644 index 00000000..083de649 --- /dev/null +++ b/utils/sdk/client/java/pom.xml @@ -0,0 +1,340 @@ + + 4.0.0 + letheanVPN + lthn + jar + lthn + 6.0.1 + https://github.com/openapitools/openapi-generator + OpenAPI Java + + scm:git:git@github.com:openapitools/openapi-generator.git + scm:git:git@github.com:openapitools/openapi-generator.git + https://github.com/openapitools/openapi-generator + + + + + EUPL-1.2 + https://joinup.ec.europa.eu/software/page/eupl/licence-eupl + repo + + + + + + Lethean Community + support@lt.hn + letheanVPN + https://lt.hn + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + true + 128m + 512m + + -Xlint:all + -J-Xss4m + + + + + org.apache.maven.plugins + maven-enforcer-plugin + 3.4.1 + + + enforce-maven + + enforce + + + + + 2.2.0 + + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.22.2 + + + + loggerPath + conf/log4j.properties + + + -Xms512m -Xmx1500m + methods + 10 + + + + + org.junit.jupiter + junit-jupiter-engine + ${junit-version} + + + + + maven-dependency-plugin + 3.6.1 + + + package + + copy-dependencies + + + ${project.build.directory}/lib + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.3.0 + + + + test-jar + + + + + + + + org.codehaus.mojo + build-helper-maven-plugin + 3.5.0 + + + add_sources + generate-sources + + add-source + + + + src/main/java + + + + + add_test_sources + generate-test-sources + + add-test-source + + + + src/test/java + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.6.3 + + + attach-javadocs + + jar + + + + + none + + + http.response.details + a + Http Response Details: + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.3.0 + + + attach-sources + + jar-no-fork + + + + + + + com.diffplug.spotless + spotless-maven-plugin + ${spotless.version} + + + + + + + .gitignore + + + + + + true + 4 + + + + + + + + + + 1.8 + + true + + + + + + + + + + + + + + sign-artifacts + + + + org.apache.maven.plugins + maven-gpg-plugin + 3.2.1 + + + sign-artifacts + verify + + sign + + + + + + + + + + + + + com.google.code.findbugs + jsr305 + 3.0.2 + + + com.squareup.okhttp3 + okhttp + ${okhttp-version} + + + com.squareup.okhttp3 + logging-interceptor + ${okhttp-version} + + + com.google.code.gson + gson + ${gson-version} + + + io.gsonfire + gson-fire + ${gson-fire-version} + + + org.apache.commons + commons-lang3 + ${commons-lang3-version} + + + jakarta.annotation + jakarta.annotation-api + ${jakarta-annotation-version} + provided + + + org.openapitools + jackson-databind-nullable + ${jackson-databind-nullable-version} + + + jakarta.ws.rs + jakarta.ws.rs-api + ${jakarta.ws.rs-api-version} + + + + org.junit.jupiter + junit-jupiter-engine + ${junit-version} + test + + + org.junit.platform + junit-platform-runner + ${junit-platform-runner.version} + test + + + + 1.8 + ${java.version} + ${java.version} + 1.9.0 + 4.12.0 + 2.10.1 + 3.18.0 + 0.2.7 + 1.3.5 + 2.0.2 + 5.10.3 + 1.10.0 + 2.1.6 + 1.1.1 + UTF-8 + 2.43.0 + + diff --git a/utils/sdk/client/java/settings.gradle b/utils/sdk/client/java/settings.gradle new file mode 100644 index 00000000..9f0a9c57 --- /dev/null +++ b/utils/sdk/client/java/settings.gradle @@ -0,0 +1 @@ +rootProject.name = "lthn" \ No newline at end of file diff --git a/utils/sdk/client/java/src/main/AndroidManifest.xml b/utils/sdk/client/java/src/main/AndroidManifest.xml new file mode 100644 index 00000000..fecb8b40 --- /dev/null +++ b/utils/sdk/client/java/src/main/AndroidManifest.xml @@ -0,0 +1,3 @@ + + + diff --git a/utils/sdk/client/java/src/main/java/invalidPackageName/ApiCallback.java b/utils/sdk/client/java/src/main/java/invalidPackageName/ApiCallback.java new file mode 100644 index 00000000..03fcea48 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/invalidPackageName/ApiCallback.java @@ -0,0 +1,62 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package invalidPackageName; + +import java.io.IOException; + +import java.util.Map; +import java.util.List; + +/** + * Callback for asynchronous API call. + * + * @param The return type + */ +public interface ApiCallback { + /** + * This is called when the API call fails. + * + * @param e The exception causing the failure + * @param statusCode Status code of the response if available, otherwise it would be 0 + * @param responseHeaders Headers of the response if available, otherwise it would be null + */ + void onFailure(ApiException e, int statusCode, Map> responseHeaders); + + /** + * This is called when the API call succeeded. + * + * @param result The result deserialized from response + * @param statusCode Status code of the response + * @param responseHeaders Headers of the response + */ + void onSuccess(T result, int statusCode, Map> responseHeaders); + + /** + * This is called when the API upload processing. + * + * @param bytesWritten bytes Written + * @param contentLength content length of request body + * @param done write end + */ + void onUploadProgress(long bytesWritten, long contentLength, boolean done); + + /** + * This is called when the API download processing. + * + * @param bytesRead bytes Read + * @param contentLength content length of the response + * @param done Read end + */ + void onDownloadProgress(long bytesRead, long contentLength, boolean done); +} diff --git a/utils/sdk/client/java/src/main/java/invalidPackageName/ApiClient.java b/utils/sdk/client/java/src/main/java/invalidPackageName/ApiClient.java new file mode 100644 index 00000000..9501f117 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/invalidPackageName/ApiClient.java @@ -0,0 +1,1592 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package invalidPackageName; + +import okhttp3.*; +import okhttp3.internal.http.HttpMethod; +import okhttp3.internal.tls.OkHostnameVerifier; +import okhttp3.logging.HttpLoggingInterceptor; +import okhttp3.logging.HttpLoggingInterceptor.Level; +import okio.Buffer; +import okio.BufferedSink; +import okio.Okio; + +import javax.net.ssl.*; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.lang.reflect.Type; +import java.net.URI; +import java.net.URLConnection; +import java.net.URLEncoder; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.security.GeneralSecurityException; +import java.security.KeyStore; +import java.security.SecureRandom; +import java.security.cert.Certificate; +import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; +import java.text.DateFormat; +import java.time.LocalDate; +import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.Map.Entry; +import java.util.concurrent.TimeUnit; +import java.util.function.Supplier; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import invalidPackageName.auth.Authentication; +import invalidPackageName.auth.HttpBasicAuth; +import invalidPackageName.auth.HttpBearerAuth; +import invalidPackageName.auth.ApiKeyAuth; + +/** + *

ApiClient class.

+ */ +public class ApiClient { + + protected String basePath = "http://127.0.0.1:36943"; + protected List servers = new ArrayList(Arrays.asList( + new ServerConfiguration( + "http://127.0.0.1:36943", + "Local Daemon", + new HashMap() + ), + new ServerConfiguration( + "http://seed.lethean.io:36943", + "Seed Server", + new HashMap() + ) + )); + protected Integer serverIndex = 0; + protected Map serverVariables = null; + protected boolean debugging = false; + protected Map defaultHeaderMap = new HashMap(); + protected Map defaultCookieMap = new HashMap(); + protected String tempFolderPath = null; + + protected Map authentications; + + protected DateFormat dateFormat; + protected DateFormat datetimeFormat; + protected boolean lenientDatetimeFormat; + protected int dateLength; + + protected InputStream sslCaCert; + protected boolean verifyingSsl; + protected KeyManager[] keyManagers; + + protected OkHttpClient httpClient; + protected JSON json; + + protected HttpLoggingInterceptor loggingInterceptor; + + /** + * Basic constructor for ApiClient + */ + public ApiClient() { + init(); + initHttpClient(); + + // Setup authentications (key: authentication name, value: authentication). + // Prevent the authentications from being modified. + authentications = Collections.unmodifiableMap(authentications); + } + + /** + * Basic constructor with custom OkHttpClient + * + * @param client a {@link okhttp3.OkHttpClient} object + */ + public ApiClient(OkHttpClient client) { + init(); + + httpClient = client; + + // Setup authentications (key: authentication name, value: authentication). + // Prevent the authentications from being modified. + authentications = Collections.unmodifiableMap(authentications); + } + + protected void initHttpClient() { + initHttpClient(Collections.emptyList()); + } + + protected void initHttpClient(List interceptors) { + OkHttpClient.Builder builder = new OkHttpClient.Builder(); + builder.addNetworkInterceptor(getProgressInterceptor()); + for (Interceptor interceptor: interceptors) { + builder.addInterceptor(interceptor); + } + + httpClient = builder.build(); + } + + protected void init() { + verifyingSsl = true; + + json = new JSON(); + + // Set default User-Agent. + setUserAgent("OpenAPI-Generator/6.0.1/java"); + + authentications = new HashMap(); + } + + /** + * Get base path + * + * @return Base path + */ + public String getBasePath() { + return basePath; + } + + /** + * Set base path + * + * @param basePath Base path of the URL (e.g http://127.0.0.1:36943) + * @return An instance of ApiClient + */ + public ApiClient setBasePath(String basePath) { + this.basePath = basePath; + this.serverIndex = null; + return this; + } + + public List getServers() { + return servers; + } + + public ApiClient setServers(List servers) { + this.servers = servers; + return this; + } + + public Integer getServerIndex() { + return serverIndex; + } + + public ApiClient setServerIndex(Integer serverIndex) { + this.serverIndex = serverIndex; + return this; + } + + public Map getServerVariables() { + return serverVariables; + } + + public ApiClient setServerVariables(Map serverVariables) { + this.serverVariables = serverVariables; + return this; + } + + /** + * Get HTTP client + * + * @return An instance of OkHttpClient + */ + public OkHttpClient getHttpClient() { + return httpClient; + } + + /** + * Set HTTP client, which must never be null. + * + * @param newHttpClient An instance of OkHttpClient + * @return ApiClient + * @throws java.lang.NullPointerException when newHttpClient is null + */ + public ApiClient setHttpClient(OkHttpClient newHttpClient) { + this.httpClient = Objects.requireNonNull(newHttpClient, "HttpClient must not be null!"); + return this; + } + + /** + * Get JSON + * + * @return JSON object + */ + public JSON getJSON() { + return json; + } + + /** + * Set JSON + * + * @param json JSON object + * @return Api client + */ + public ApiClient setJSON(JSON json) { + this.json = json; + return this; + } + + /** + * True if isVerifyingSsl flag is on + * + * @return True if isVerifySsl flag is on + */ + public boolean isVerifyingSsl() { + return verifyingSsl; + } + + /** + * Configure whether to verify certificate and hostname when making https requests. + * Default to true. + * NOTE: Do NOT set to false in production code, otherwise you would face multiple types of cryptographic attacks. + * + * @param verifyingSsl True to verify TLS/SSL connection + * @return ApiClient + */ + public ApiClient setVerifyingSsl(boolean verifyingSsl) { + this.verifyingSsl = verifyingSsl; + applySslSettings(); + return this; + } + + /** + * Get SSL CA cert. + * + * @return Input stream to the SSL CA cert + */ + public InputStream getSslCaCert() { + return sslCaCert; + } + + /** + * Configure the CA certificate to be trusted when making https requests. + * Use null to reset to default. + * + * @param sslCaCert input stream for SSL CA cert + * @return ApiClient + */ + public ApiClient setSslCaCert(InputStream sslCaCert) { + this.sslCaCert = sslCaCert; + applySslSettings(); + return this; + } + + /** + *

Getter for the field keyManagers.

+ * + * @return an array of {@link javax.net.ssl.KeyManager} objects + */ + public KeyManager[] getKeyManagers() { + return keyManagers; + } + + /** + * Configure client keys to use for authorization in an SSL session. + * Use null to reset to default. + * + * @param managers The KeyManagers to use + * @return ApiClient + */ + public ApiClient setKeyManagers(KeyManager[] managers) { + this.keyManagers = managers; + applySslSettings(); + return this; + } + + /** + *

Getter for the field dateFormat.

+ * + * @return a {@link java.text.DateFormat} object + */ + public DateFormat getDateFormat() { + return dateFormat; + } + + /** + *

Setter for the field dateFormat.

+ * + * @param dateFormat a {@link java.text.DateFormat} object + * @return a {@link invalidPackageName.ApiClient} object + */ + public ApiClient setDateFormat(DateFormat dateFormat) { + JSON.setDateFormat(dateFormat); + return this; + } + + /** + *

Set SqlDateFormat.

+ * + * @param dateFormat a {@link java.text.DateFormat} object + * @return a {@link invalidPackageName.ApiClient} object + */ + public ApiClient setSqlDateFormat(DateFormat dateFormat) { + JSON.setSqlDateFormat(dateFormat); + return this; + } + + /** + *

Set OffsetDateTimeFormat.

+ * + * @param dateFormat a {@link java.time.format.DateTimeFormatter} object + * @return a {@link invalidPackageName.ApiClient} object + */ + public ApiClient setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { + JSON.setOffsetDateTimeFormat(dateFormat); + return this; + } + + /** + *

Set LocalDateFormat.

+ * + * @param dateFormat a {@link java.time.format.DateTimeFormatter} object + * @return a {@link invalidPackageName.ApiClient} object + */ + public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { + JSON.setLocalDateFormat(dateFormat); + return this; + } + + /** + *

Set LenientOnJson.

+ * + * @param lenientOnJson a boolean + * @return a {@link invalidPackageName.ApiClient} object + */ + public ApiClient setLenientOnJson(boolean lenientOnJson) { + JSON.setLenientOnJson(lenientOnJson); + return this; + } + + /** + * Get authentications (key: authentication name, value: authentication). + * + * @return Map of authentication objects + */ + public Map getAuthentications() { + return authentications; + } + + /** + * Get authentication for the given name. + * + * @param authName The authentication name + * @return The authentication, null if not found + */ + public Authentication getAuthentication(String authName) { + return authentications.get(authName); + } + + + /** + * Helper method to set username for the first HTTP basic authentication. + * + * @param username Username + */ + public void setUsername(String username) { + for (Authentication auth : authentications.values()) { + if (auth instanceof HttpBasicAuth) { + ((HttpBasicAuth) auth).setUsername(username); + return; + } + } + throw new RuntimeException("No HTTP basic authentication configured!"); + } + + /** + * Helper method to set password for the first HTTP basic authentication. + * + * @param password Password + */ + public void setPassword(String password) { + for (Authentication auth : authentications.values()) { + if (auth instanceof HttpBasicAuth) { + ((HttpBasicAuth) auth).setPassword(password); + return; + } + } + throw new RuntimeException("No HTTP basic authentication configured!"); + } + + /** + * Helper method to set API key value for the first API key authentication. + * + * @param apiKey API key + */ + public void setApiKey(String apiKey) { + for (Authentication auth : authentications.values()) { + if (auth instanceof ApiKeyAuth) { + ((ApiKeyAuth) auth).setApiKey(apiKey); + return; + } + } + throw new RuntimeException("No API key authentication configured!"); + } + + /** + * Helper method to set API key prefix for the first API key authentication. + * + * @param apiKeyPrefix API key prefix + */ + public void setApiKeyPrefix(String apiKeyPrefix) { + for (Authentication auth : authentications.values()) { + if (auth instanceof ApiKeyAuth) { + ((ApiKeyAuth) auth).setApiKeyPrefix(apiKeyPrefix); + return; + } + } + throw new RuntimeException("No API key authentication configured!"); + } + + /** + * Helper method to set access token for the first OAuth2 authentication. + * + * @param accessToken Access token + */ + public void setAccessToken(String accessToken) { + throw new RuntimeException("No OAuth2 authentication configured!"); + } + + /** + * Helper method to set credentials for AWSV4 Signature + * + * @param accessKey Access Key + * @param secretKey Secret Key + * @param region Region + * @param service Service to access to + */ + public void setAWS4Configuration(String accessKey, String secretKey, String region, String service) { + throw new RuntimeException("No AWS4 authentication configured!"); + } + + /** + * Helper method to set credentials for AWSV4 Signature + * + * @param accessKey Access Key + * @param secretKey Secret Key + * @param sessionToken Session Token + * @param region Region + * @param service Service to access to + */ + public void setAWS4Configuration(String accessKey, String secretKey, String sessionToken, String region, String service) { + throw new RuntimeException("No AWS4 authentication configured!"); + } + + /** + * Set the User-Agent header's value (by adding to the default header map). + * + * @param userAgent HTTP request's user agent + * @return ApiClient + */ + public ApiClient setUserAgent(String userAgent) { + addDefaultHeader("User-Agent", userAgent); + return this; + } + + /** + * Add a default header. + * + * @param key The header's key + * @param value The header's value + * @return ApiClient + */ + public ApiClient addDefaultHeader(String key, String value) { + defaultHeaderMap.put(key, value); + return this; + } + + /** + * Add a default cookie. + * + * @param key The cookie's key + * @param value The cookie's value + * @return ApiClient + */ + public ApiClient addDefaultCookie(String key, String value) { + defaultCookieMap.put(key, value); + return this; + } + + /** + * Check that whether debugging is enabled for this API client. + * + * @return True if debugging is enabled, false otherwise. + */ + public boolean isDebugging() { + return debugging; + } + + /** + * Enable/disable debugging for this API client. + * + * @param debugging To enable (true) or disable (false) debugging + * @return ApiClient + */ + public ApiClient setDebugging(boolean debugging) { + if (debugging != this.debugging) { + if (debugging) { + loggingInterceptor = new HttpLoggingInterceptor(); + loggingInterceptor.setLevel(Level.BODY); + httpClient = httpClient.newBuilder().addInterceptor(loggingInterceptor).build(); + } else { + final OkHttpClient.Builder builder = httpClient.newBuilder(); + builder.interceptors().remove(loggingInterceptor); + httpClient = builder.build(); + loggingInterceptor = null; + } + } + this.debugging = debugging; + return this; + } + + /** + * The path of temporary folder used to store downloaded files from endpoints + * with file response. The default value is null, i.e. using + * the system's default temporary folder. + * + * @see createTempFile + * @return Temporary folder path + */ + public String getTempFolderPath() { + return tempFolderPath; + } + + /** + * Set the temporary folder path (for downloading files) + * + * @param tempFolderPath Temporary folder path + * @return ApiClient + */ + public ApiClient setTempFolderPath(String tempFolderPath) { + this.tempFolderPath = tempFolderPath; + return this; + } + + /** + * Get connection timeout (in milliseconds). + * + * @return Timeout in milliseconds + */ + public int getConnectTimeout() { + return httpClient.connectTimeoutMillis(); + } + + /** + * Sets the connect timeout (in milliseconds). + * A value of 0 means no timeout, otherwise values must be between 1 and + * {@link java.lang.Integer#MAX_VALUE}. + * + * @param connectionTimeout connection timeout in milliseconds + * @return Api client + */ + public ApiClient setConnectTimeout(int connectionTimeout) { + httpClient = httpClient.newBuilder().connectTimeout(connectionTimeout, TimeUnit.MILLISECONDS).build(); + return this; + } + + /** + * Get read timeout (in milliseconds). + * + * @return Timeout in milliseconds + */ + public int getReadTimeout() { + return httpClient.readTimeoutMillis(); + } + + /** + * Sets the read timeout (in milliseconds). + * A value of 0 means no timeout, otherwise values must be between 1 and + * {@link java.lang.Integer#MAX_VALUE}. + * + * @param readTimeout read timeout in milliseconds + * @return Api client + */ + public ApiClient setReadTimeout(int readTimeout) { + httpClient = httpClient.newBuilder().readTimeout(readTimeout, TimeUnit.MILLISECONDS).build(); + return this; + } + + /** + * Get write timeout (in milliseconds). + * + * @return Timeout in milliseconds + */ + public int getWriteTimeout() { + return httpClient.writeTimeoutMillis(); + } + + /** + * Sets the write timeout (in milliseconds). + * A value of 0 means no timeout, otherwise values must be between 1 and + * {@link java.lang.Integer#MAX_VALUE}. + * + * @param writeTimeout connection timeout in milliseconds + * @return Api client + */ + public ApiClient setWriteTimeout(int writeTimeout) { + httpClient = httpClient.newBuilder().writeTimeout(writeTimeout, TimeUnit.MILLISECONDS).build(); + return this; + } + + + /** + * Format the given parameter object into string. + * + * @param param Parameter + * @return String representation of the parameter + */ + public String parameterToString(Object param) { + if (param == null) { + return ""; + } else if (param instanceof Date || param instanceof OffsetDateTime || param instanceof LocalDate) { + //Serialize to json string and remove the " enclosing characters + String jsonStr = JSON.serialize(param); + return jsonStr.substring(1, jsonStr.length() - 1); + } else if (param instanceof Collection) { + StringBuilder b = new StringBuilder(); + for (Object o : (Collection) param) { + if (b.length() > 0) { + b.append(","); + } + b.append(o); + } + return b.toString(); + } else { + return String.valueOf(param); + } + } + + /** + * Formats the specified query parameter to a list containing a single {@code Pair} object. + * + * Note that {@code value} must not be a collection. + * + * @param name The name of the parameter. + * @param value The value of the parameter. + * @return A list containing a single {@code Pair} object. + */ + public List parameterToPair(String name, Object value) { + List params = new ArrayList(); + + // preconditions + if (name == null || name.isEmpty() || value == null || value instanceof Collection) { + return params; + } + + params.add(new Pair(name, parameterToString(value))); + return params; + } + + /** + * Formats the specified collection query parameters to a list of {@code Pair} objects. + * + * Note that the values of each of the returned Pair objects are percent-encoded. + * + * @param collectionFormat The collection format of the parameter. + * @param name The name of the parameter. + * @param value The value of the parameter. + * @return A list of {@code Pair} objects. + */ + public List parameterToPairs(String collectionFormat, String name, Collection value) { + List params = new ArrayList(); + + // preconditions + if (name == null || name.isEmpty() || value == null || value.isEmpty()) { + return params; + } + + // create the params based on the collection format + if ("multi".equals(collectionFormat)) { + for (Object item : value) { + params.add(new Pair(name, escapeString(parameterToString(item)))); + } + return params; + } + + // collectionFormat is assumed to be "csv" by default + String delimiter = ","; + + // escape all delimiters except commas, which are URI reserved + // characters + if ("ssv".equals(collectionFormat)) { + delimiter = escapeString(" "); + } else if ("tsv".equals(collectionFormat)) { + delimiter = escapeString("\t"); + } else if ("pipes".equals(collectionFormat)) { + delimiter = escapeString("|"); + } + + StringBuilder sb = new StringBuilder(); + for (Object item : value) { + sb.append(delimiter); + sb.append(escapeString(parameterToString(item))); + } + + params.add(new Pair(name, sb.substring(delimiter.length()))); + + return params; + } + + /** + * Formats the specified free-form query parameters to a list of {@code Pair} objects. + * + * @param value The free-form query parameters. + * @return A list of {@code Pair} objects. + */ + public List freeFormParameterToPairs(Object value) { + List params = new ArrayList<>(); + + // preconditions + if (value == null || !(value instanceof Map )) { + return params; + } + + @SuppressWarnings("unchecked") + final Map valuesMap = (Map) value; + + for (Map.Entry entry : valuesMap.entrySet()) { + params.add(new Pair(entry.getKey(), parameterToString(entry.getValue()))); + } + + return params; + } + + + /** + * Formats the specified collection path parameter to a string value. + * + * @param collectionFormat The collection format of the parameter. + * @param value The value of the parameter. + * @return String representation of the parameter + */ + public String collectionPathParameterToString(String collectionFormat, Collection value) { + // create the value based on the collection format + if ("multi".equals(collectionFormat)) { + // not valid for path params + return parameterToString(value); + } + + // collectionFormat is assumed to be "csv" by default + String delimiter = ","; + + if ("ssv".equals(collectionFormat)) { + delimiter = " "; + } else if ("tsv".equals(collectionFormat)) { + delimiter = "\t"; + } else if ("pipes".equals(collectionFormat)) { + delimiter = "|"; + } + + StringBuilder sb = new StringBuilder() ; + for (Object item : value) { + sb.append(delimiter); + sb.append(parameterToString(item)); + } + + return sb.substring(delimiter.length()); + } + + /** + * Sanitize filename by removing path. + * e.g. ../../sun.gif becomes sun.gif + * + * @param filename The filename to be sanitized + * @return The sanitized filename + */ + public String sanitizeFilename(String filename) { + return filename.replaceFirst("^.*[/\\\\]", ""); + } + + /** + * Check if the given MIME is a JSON MIME. + * JSON MIME examples: + * application/json + * application/json; charset=UTF8 + * APPLICATION/JSON + * application/vnd.company+json + * "* / *" is also default to JSON + * @param mime MIME (Multipurpose Internet Mail Extensions) + * @return True if the given MIME is JSON, false otherwise. + */ + public boolean isJsonMime(String mime) { + String jsonMime = "(?i)^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$"; + return mime != null && (mime.matches(jsonMime) || mime.equals("*/*")); + } + + /** + * Select the Accept header's value from the given accepts array: + * if JSON exists in the given array, use it; + * otherwise use all of them (joining into a string) + * + * @param accepts The accepts array to select from + * @return The Accept header to use. If the given array is empty, + * null will be returned (not to set the Accept header explicitly). + */ + public String selectHeaderAccept(String[] accepts) { + if (accepts.length == 0) { + return null; + } + for (String accept : accepts) { + if (isJsonMime(accept)) { + return accept; + } + } + return StringUtil.join(accepts, ","); + } + + /** + * Select the Content-Type header's value from the given array: + * if JSON exists in the given array, use it; + * otherwise use the first one of the array. + * + * @param contentTypes The Content-Type array to select from + * @return The Content-Type header to use. If the given array is empty, + * returns null. If it matches "any", JSON will be used. + */ + public String selectHeaderContentType(String[] contentTypes) { + if (contentTypes.length == 0) { + return null; + } + + if (contentTypes[0].equals("*/*")) { + return "application/json"; + } + + for (String contentType : contentTypes) { + if (isJsonMime(contentType)) { + return contentType; + } + } + + return contentTypes[0]; + } + + /** + * Escape the given string to be used as URL query value. + * + * @param str String to be escaped + * @return Escaped string + */ + public String escapeString(String str) { + try { + return URLEncoder.encode(str, "utf8").replaceAll("\\+", "%20"); + } catch (UnsupportedEncodingException e) { + return str; + } + } + + /** + * Deserialize response body to Java object, according to the return type and + * the Content-Type response header. + * + * @param Type + * @param response HTTP response + * @param returnType The type of the Java object + * @return The deserialized Java object + * @throws invalidPackageName.ApiException If fail to deserialize response body, i.e. cannot read response body + * or the Content-Type of the response is not supported. + */ + @SuppressWarnings("unchecked") + public T deserialize(Response response, Type returnType) throws ApiException { + if (response == null || returnType == null) { + return null; + } + + if ("byte[]".equals(returnType.toString())) { + // Handle binary response (byte array). + try { + return (T) response.body().bytes(); + } catch (IOException e) { + throw new ApiException(e); + } + } else if (returnType.equals(File.class)) { + // Handle file downloading. + return (T) downloadFileFromResponse(response); + } + + ResponseBody respBody = response.body(); + if (respBody == null) { + return null; + } + + String contentType = response.headers().get("Content-Type"); + if (contentType == null) { + // ensuring a default content type + contentType = "application/json"; + } + try { + if (isJsonMime(contentType)) { + return JSON.deserialize(respBody.byteStream(), returnType); + } else if (returnType.equals(String.class)) { + String respBodyString = respBody.string(); + if (respBodyString.isEmpty()) { + return null; + } + // Expecting string, return the raw response body. + return (T) respBodyString; + } else { + throw new ApiException( + "Content type \"" + contentType + "\" is not supported for type: " + returnType, + response.code(), + response.headers().toMultimap(), + response.body().string()); + } + } catch (IOException e) { + throw new ApiException(e); + } + } + + /** + * Serialize the given Java object into request body according to the object's + * class and the request Content-Type. + * + * @param obj The Java object + * @param contentType The request Content-Type + * @return The serialized request body + * @throws invalidPackageName.ApiException If fail to serialize the given object + */ + public RequestBody serialize(Object obj, String contentType) throws ApiException { + if (obj instanceof byte[]) { + // Binary (byte array) body parameter support. + return RequestBody.create((byte[]) obj, MediaType.parse(contentType)); + } else if (obj instanceof File) { + // File body parameter support. + return RequestBody.create((File) obj, MediaType.parse(contentType)); + } else if ("text/plain".equals(contentType) && obj instanceof String) { + return RequestBody.create((String) obj, MediaType.parse(contentType)); + } else if (isJsonMime(contentType)) { + String content; + if (obj != null) { + content = JSON.serialize(obj); + } else { + content = null; + } + return RequestBody.create(content, MediaType.parse(contentType)); + } else if (obj instanceof String) { + return RequestBody.create((String) obj, MediaType.parse(contentType)); + } else { + throw new ApiException("Content type \"" + contentType + "\" is not supported"); + } + } + + /** + * Download file from the given response. + * + * @param response An instance of the Response object + * @throws invalidPackageName.ApiException If fail to read file content from response and write to disk + * @return Downloaded file + */ + public File downloadFileFromResponse(Response response) throws ApiException { + try { + File file = prepareDownloadFile(response); + BufferedSink sink = Okio.buffer(Okio.sink(file)); + sink.writeAll(response.body().source()); + sink.close(); + return file; + } catch (IOException e) { + throw new ApiException(e); + } + } + + /** + * Prepare file for download + * + * @param response An instance of the Response object + * @return Prepared file for the download + * @throws java.io.IOException If fail to prepare file for download + */ + public File prepareDownloadFile(Response response) throws IOException { + String filename = null; + String contentDisposition = response.header("Content-Disposition"); + if (contentDisposition != null && !"".equals(contentDisposition)) { + // Get filename from the Content-Disposition header. + Pattern pattern = Pattern.compile("filename=['\"]?([^'\"\\s]+)['\"]?"); + Matcher matcher = pattern.matcher(contentDisposition); + if (matcher.find()) { + filename = sanitizeFilename(matcher.group(1)); + } + } + + String prefix = null; + String suffix = null; + if (filename == null) { + prefix = "download-"; + suffix = ""; + } else { + int pos = filename.lastIndexOf("."); + if (pos == -1) { + prefix = filename + "-"; + } else { + prefix = filename.substring(0, pos) + "-"; + suffix = filename.substring(pos); + } + // Files.createTempFile requires the prefix to be at least three characters long + if (prefix.length() < 3) + prefix = "download-"; + } + + if (tempFolderPath == null) + return Files.createTempFile(prefix, suffix).toFile(); + else + return Files.createTempFile(Paths.get(tempFolderPath), prefix, suffix).toFile(); + } + + /** + * {@link #execute(Call, Type)} + * + * @param Type + * @param call An instance of the Call object + * @return ApiResponse<T> + * @throws invalidPackageName.ApiException If fail to execute the call + */ + public ApiResponse execute(Call call) throws ApiException { + return execute(call, null); + } + + /** + * Execute HTTP call and deserialize the HTTP response body into the given return type. + * + * @param returnType The return type used to deserialize HTTP response body + * @param The return type corresponding to (same with) returnType + * @param call Call + * @return ApiResponse object containing response status, headers and + * data, which is a Java object deserialized from response body and would be null + * when returnType is null. + * @throws invalidPackageName.ApiException If fail to execute the call + */ + public ApiResponse execute(Call call, Type returnType) throws ApiException { + try { + Response response = call.execute(); + T data = handleResponse(response, returnType); + return new ApiResponse(response.code(), response.headers().toMultimap(), data); + } catch (IOException e) { + throw new ApiException(e); + } + } + + /** + * {@link #executeAsync(Call, Type, ApiCallback)} + * + * @param Type + * @param call An instance of the Call object + * @param callback ApiCallback<T> + */ + public void executeAsync(Call call, ApiCallback callback) { + executeAsync(call, null, callback); + } + + /** + * Execute HTTP call asynchronously. + * + * @param Type + * @param call The callback to be executed when the API call finishes + * @param returnType Return type + * @param callback ApiCallback + * @see #execute(Call, Type) + */ + @SuppressWarnings("unchecked") + public void executeAsync(Call call, final Type returnType, final ApiCallback callback) { + call.enqueue(new Callback() { + @Override + public void onFailure(Call call, IOException e) { + callback.onFailure(new ApiException(e), 0, null); + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + T result; + try { + result = (T) handleResponse(response, returnType); + } catch (ApiException e) { + callback.onFailure(e, response.code(), response.headers().toMultimap()); + return; + } catch (Exception e) { + callback.onFailure(new ApiException(e), response.code(), response.headers().toMultimap()); + return; + } + callback.onSuccess(result, response.code(), response.headers().toMultimap()); + } + }); + } + + /** + * Handle the given response, return the deserialized object when the response is successful. + * + * @param Type + * @param response Response + * @param returnType Return type + * @return Type + * @throws invalidPackageName.ApiException If the response has an unsuccessful status code or + * fail to deserialize the response body + */ + public T handleResponse(Response response, Type returnType) throws ApiException { + if (response.isSuccessful()) { + if (returnType == null || response.code() == 204) { + // returning null if the returnType is not defined, + // or the status code is 204 (No Content) + if (response.body() != null) { + try { + response.body().close(); + } catch (Exception e) { + throw new ApiException(response.message(), e, response.code(), response.headers().toMultimap()); + } + } + return null; + } else { + return deserialize(response, returnType); + } + } else { + String respBody = null; + if (response.body() != null) { + try { + respBody = response.body().string(); + } catch (IOException e) { + throw new ApiException(response.message(), e, response.code(), response.headers().toMultimap()); + } + } + throw new ApiException(response.message(), response.code(), response.headers().toMultimap(), respBody); + } + } + + /** + * Build HTTP call with the given options. + * + * @param baseUrl The base URL + * @param path The sub-path of the HTTP URL + * @param method The request method, one of "GET", "HEAD", "OPTIONS", "POST", "PUT", "PATCH" and "DELETE" + * @param queryParams The query parameters + * @param collectionQueryParams The collection query parameters + * @param body The request body object + * @param headerParams The header parameters + * @param cookieParams The cookie parameters + * @param formParams The form parameters + * @param authNames The authentications to apply + * @param callback Callback for upload/download progress + * @return The HTTP call + * @throws invalidPackageName.ApiException If fail to serialize the request body object + */ + public Call buildCall(String baseUrl, String path, String method, List queryParams, List collectionQueryParams, Object body, Map headerParams, Map cookieParams, Map formParams, String[] authNames, ApiCallback callback) throws ApiException { + Request request = buildRequest(baseUrl, path, method, queryParams, collectionQueryParams, body, headerParams, cookieParams, formParams, authNames, callback); + + return httpClient.newCall(request); + } + + /** + * Build an HTTP request with the given options. + * + * @param baseUrl The base URL + * @param path The sub-path of the HTTP URL + * @param method The request method, one of "GET", "HEAD", "OPTIONS", "POST", "PUT", "PATCH" and "DELETE" + * @param queryParams The query parameters + * @param collectionQueryParams The collection query parameters + * @param body The request body object + * @param headerParams The header parameters + * @param cookieParams The cookie parameters + * @param formParams The form parameters + * @param authNames The authentications to apply + * @param callback Callback for upload/download progress + * @return The HTTP request + * @throws invalidPackageName.ApiException If fail to serialize the request body object + */ + public Request buildRequest(String baseUrl, String path, String method, List queryParams, List collectionQueryParams, Object body, Map headerParams, Map cookieParams, Map formParams, String[] authNames, ApiCallback callback) throws ApiException { + final String url = buildUrl(baseUrl, path, queryParams, collectionQueryParams); + + // prepare HTTP request body + RequestBody reqBody; + String contentType = headerParams.get("Content-Type"); + String contentTypePure = contentType; + if (contentTypePure != null && contentTypePure.contains(";")) { + contentTypePure = contentType.substring(0, contentType.indexOf(";")); + } + if (!HttpMethod.permitsRequestBody(method)) { + reqBody = null; + } else if ("application/x-www-form-urlencoded".equals(contentTypePure)) { + reqBody = buildRequestBodyFormEncoding(formParams); + } else if ("multipart/form-data".equals(contentTypePure)) { + reqBody = buildRequestBodyMultipart(formParams); + } else if (body == null) { + if ("DELETE".equals(method)) { + // allow calling DELETE without sending a request body + reqBody = null; + } else { + // use an empty request body (for POST, PUT and PATCH) + reqBody = RequestBody.create("", contentType == null ? null : MediaType.parse(contentType)); + } + } else { + reqBody = serialize(body, contentType); + } + + List updatedQueryParams = new ArrayList<>(queryParams); + + // update parameters with authentication settings + updateParamsForAuth(authNames, updatedQueryParams, headerParams, cookieParams, requestBodyToString(reqBody), method, URI.create(url)); + + final Request.Builder reqBuilder = new Request.Builder().url(buildUrl(baseUrl, path, updatedQueryParams, collectionQueryParams)); + processHeaderParams(headerParams, reqBuilder); + processCookieParams(cookieParams, reqBuilder); + + // Associate callback with request (if not null) so interceptor can + // access it when creating ProgressResponseBody + reqBuilder.tag(callback); + + Request request = null; + + if (callback != null && reqBody != null) { + ProgressRequestBody progressRequestBody = new ProgressRequestBody(reqBody, callback); + request = reqBuilder.method(method, progressRequestBody).build(); + } else { + request = reqBuilder.method(method, reqBody).build(); + } + + return request; + } + + /** + * Build full URL by concatenating base path, the given sub path and query parameters. + * + * @param baseUrl The base URL + * @param path The sub path + * @param queryParams The query parameters + * @param collectionQueryParams The collection query parameters + * @return The full URL + */ + public String buildUrl(String baseUrl, String path, List queryParams, List collectionQueryParams) { + final StringBuilder url = new StringBuilder(); + if (baseUrl != null) { + url.append(baseUrl).append(path); + } else { + String baseURL; + if (serverIndex != null) { + if (serverIndex < 0 || serverIndex >= servers.size()) { + throw new ArrayIndexOutOfBoundsException(String.format( + Locale.ROOT, + "Invalid index %d when selecting the host settings. Must be less than %d", serverIndex, servers.size() + )); + } + baseURL = servers.get(serverIndex).URL(serverVariables); + } else { + baseURL = basePath; + } + url.append(baseURL).append(path); + } + + if (queryParams != null && !queryParams.isEmpty()) { + // support (constant) query string in `path`, e.g. "/posts?draft=1" + String prefix = path.contains("?") ? "&" : "?"; + for (Pair param : queryParams) { + if (param.getValue() != null) { + if (prefix != null) { + url.append(prefix); + prefix = null; + } else { + url.append("&"); + } + String value = parameterToString(param.getValue()); + url.append(escapeString(param.getName())).append("=").append(escapeString(value)); + } + } + } + + if (collectionQueryParams != null && !collectionQueryParams.isEmpty()) { + String prefix = url.toString().contains("?") ? "&" : "?"; + for (Pair param : collectionQueryParams) { + if (param.getValue() != null) { + if (prefix != null) { + url.append(prefix); + prefix = null; + } else { + url.append("&"); + } + String value = parameterToString(param.getValue()); + // collection query parameter value already escaped as part of parameterToPairs + url.append(escapeString(param.getName())).append("=").append(value); + } + } + } + + return url.toString(); + } + + /** + * Set header parameters to the request builder, including default headers. + * + * @param headerParams Header parameters in the form of Map + * @param reqBuilder Request.Builder + */ + public void processHeaderParams(Map headerParams, Request.Builder reqBuilder) { + for (Entry param : headerParams.entrySet()) { + reqBuilder.header(param.getKey(), parameterToString(param.getValue())); + } + for (Entry header : defaultHeaderMap.entrySet()) { + if (!headerParams.containsKey(header.getKey())) { + reqBuilder.header(header.getKey(), parameterToString(header.getValue())); + } + } + } + + /** + * Set cookie parameters to the request builder, including default cookies. + * + * @param cookieParams Cookie parameters in the form of Map + * @param reqBuilder Request.Builder + */ + public void processCookieParams(Map cookieParams, Request.Builder reqBuilder) { + for (Entry param : cookieParams.entrySet()) { + reqBuilder.addHeader("Cookie", String.format(Locale.ROOT, "%s=%s", param.getKey(), param.getValue())); + } + for (Entry param : defaultCookieMap.entrySet()) { + if (!cookieParams.containsKey(param.getKey())) { + reqBuilder.addHeader("Cookie", String.format(Locale.ROOT, "%s=%s", param.getKey(), param.getValue())); + } + } + } + + /** + * Update query and header parameters based on authentication settings. + * + * @param authNames The authentications to apply + * @param queryParams List of query parameters + * @param headerParams Map of header parameters + * @param cookieParams Map of cookie parameters + * @param payload HTTP request body + * @param method HTTP method + * @param uri URI + * @throws invalidPackageName.ApiException If fails to update the parameters + */ + public void updateParamsForAuth(String[] authNames, List queryParams, Map headerParams, + Map cookieParams, String payload, String method, URI uri) throws ApiException { + for (String authName : authNames) { + Authentication auth = authentications.get(authName); + if (auth == null) { + throw new RuntimeException("Authentication undefined: " + authName); + } + auth.applyToParams(queryParams, headerParams, cookieParams, payload, method, uri); + } + } + + /** + * Build a form-encoding request body with the given form parameters. + * + * @param formParams Form parameters in the form of Map + * @return RequestBody + */ + public RequestBody buildRequestBodyFormEncoding(Map formParams) { + okhttp3.FormBody.Builder formBuilder = new okhttp3.FormBody.Builder(); + for (Entry param : formParams.entrySet()) { + formBuilder.add(param.getKey(), parameterToString(param.getValue())); + } + return formBuilder.build(); + } + + /** + * Build a multipart (file uploading) request body with the given form parameters, + * which could contain text fields and file fields. + * + * @param formParams Form parameters in the form of Map + * @return RequestBody + */ + public RequestBody buildRequestBodyMultipart(Map formParams) { + MultipartBody.Builder mpBuilder = new MultipartBody.Builder().setType(MultipartBody.FORM); + for (Entry param : formParams.entrySet()) { + if (param.getValue() instanceof File) { + File file = (File) param.getValue(); + addPartToMultiPartBuilder(mpBuilder, param.getKey(), file); + } else if (param.getValue() instanceof List) { + List list = (List) param.getValue(); + for (Object item: list) { + if (item instanceof File) { + addPartToMultiPartBuilder(mpBuilder, param.getKey(), (File) item); + } else { + addPartToMultiPartBuilder(mpBuilder, param.getKey(), param.getValue()); + } + } + } else { + addPartToMultiPartBuilder(mpBuilder, param.getKey(), param.getValue()); + } + } + return mpBuilder.build(); + } + + /** + * Guess Content-Type header from the given file (defaults to "application/octet-stream"). + * + * @param file The given file + * @return The guessed Content-Type + */ + public String guessContentTypeFromFile(File file) { + String contentType = URLConnection.guessContentTypeFromName(file.getName()); + if (contentType == null) { + return "application/octet-stream"; + } else { + return contentType; + } + } + + /** + * Add a Content-Disposition Header for the given key and file to the MultipartBody Builder. + * + * @param mpBuilder MultipartBody.Builder + * @param key The key of the Header element + * @param file The file to add to the Header + */ + protected void addPartToMultiPartBuilder(MultipartBody.Builder mpBuilder, String key, File file) { + Headers partHeaders = Headers.of("Content-Disposition", "form-data; name=\"" + key + "\"; filename=\"" + file.getName() + "\""); + MediaType mediaType = MediaType.parse(guessContentTypeFromFile(file)); + mpBuilder.addPart(partHeaders, RequestBody.create(file, mediaType)); + } + + /** + * Add a Content-Disposition Header for the given key and complex object to the MultipartBody Builder. + * + * @param mpBuilder MultipartBody.Builder + * @param key The key of the Header element + * @param obj The complex object to add to the Header + */ + protected void addPartToMultiPartBuilder(MultipartBody.Builder mpBuilder, String key, Object obj) { + RequestBody requestBody; + if (obj instanceof String) { + requestBody = RequestBody.create((String) obj, MediaType.parse("text/plain")); + } else { + String content; + if (obj != null) { + content = JSON.serialize(obj); + } else { + content = null; + } + requestBody = RequestBody.create(content, MediaType.parse("application/json")); + } + + Headers partHeaders = Headers.of("Content-Disposition", "form-data; name=\"" + key + "\""); + mpBuilder.addPart(partHeaders, requestBody); + } + + /** + * Get network interceptor to add it to the httpClient to track download progress for + * async requests. + */ + protected Interceptor getProgressInterceptor() { + return new Interceptor() { + @Override + public Response intercept(Interceptor.Chain chain) throws IOException { + final Request request = chain.request(); + final Response originalResponse = chain.proceed(request); + if (request.tag() instanceof ApiCallback) { + final ApiCallback callback = (ApiCallback) request.tag(); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), callback)) + .build(); + } + return originalResponse; + } + }; + } + + /** + * Apply SSL related settings to httpClient according to the current values of + * verifyingSsl and sslCaCert. + */ + protected void applySslSettings() { + try { + TrustManager[] trustManagers; + HostnameVerifier hostnameVerifier; + if (!verifyingSsl) { + trustManagers = new TrustManager[]{ + new X509TrustManager() { + @Override + public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { + } + + @Override + public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { + } + + @Override + public java.security.cert.X509Certificate[] getAcceptedIssuers() { + return new java.security.cert.X509Certificate[]{}; + } + } + }; + hostnameVerifier = new HostnameVerifier() { + @Override + public boolean verify(String hostname, SSLSession session) { + return true; + } + }; + } else { + TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + + if (sslCaCert == null) { + trustManagerFactory.init((KeyStore) null); + } else { + char[] password = null; // Any password will work. + CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); + Collection certificates = certificateFactory.generateCertificates(sslCaCert); + if (certificates.isEmpty()) { + throw new IllegalArgumentException("expected non-empty set of trusted certificates"); + } + KeyStore caKeyStore = newEmptyKeyStore(password); + int index = 0; + for (Certificate certificate : certificates) { + String certificateAlias = "ca" + (index++); + caKeyStore.setCertificateEntry(certificateAlias, certificate); + } + trustManagerFactory.init(caKeyStore); + } + trustManagers = trustManagerFactory.getTrustManagers(); + hostnameVerifier = OkHostnameVerifier.INSTANCE; + } + + SSLContext sslContext = SSLContext.getInstance("TLS"); + sslContext.init(keyManagers, trustManagers, new SecureRandom()); + httpClient = httpClient.newBuilder() + .sslSocketFactory(sslContext.getSocketFactory(), (X509TrustManager) trustManagers[0]) + .hostnameVerifier(hostnameVerifier) + .build(); + } catch (GeneralSecurityException e) { + throw new RuntimeException(e); + } + } + + protected KeyStore newEmptyKeyStore(char[] password) throws GeneralSecurityException { + try { + KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); + keyStore.load(null, password); + return keyStore; + } catch (IOException e) { + throw new AssertionError(e); + } + } + + /** + * Convert the HTTP request body to a string. + * + * @param requestBody The HTTP request object + * @return The string representation of the HTTP request body + * @throws invalidPackageName.ApiException If fail to serialize the request body object into a string + */ + protected String requestBodyToString(RequestBody requestBody) throws ApiException { + if (requestBody != null) { + try { + final Buffer buffer = new Buffer(); + requestBody.writeTo(buffer); + return buffer.readUtf8(); + } catch (final IOException e) { + throw new ApiException(e); + } + } + + // empty http request body + return ""; + } +} diff --git a/utils/sdk/client/java/src/main/java/invalidPackageName/ApiException.java b/utils/sdk/client/java/src/main/java/invalidPackageName/ApiException.java new file mode 100644 index 00000000..efa0adf0 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/invalidPackageName/ApiException.java @@ -0,0 +1,168 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package invalidPackageName; + +import java.util.Map; +import java.util.List; +import java.util.Locale; + + +/** + *

ApiException class.

+ */ +@SuppressWarnings("serial") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class ApiException extends Exception { + private static final long serialVersionUID = 1L; + + private int code = 0; + private Map> responseHeaders = null; + private String responseBody = null; + + /** + *

Constructor for ApiException.

+ */ + public ApiException() {} + + /** + *

Constructor for ApiException.

+ * + * @param throwable a {@link java.lang.Throwable} object + */ + public ApiException(Throwable throwable) { + super(throwable); + } + + /** + *

Constructor for ApiException.

+ * + * @param message the error message + */ + public ApiException(String message) { + super(message); + } + + /** + *

Constructor for ApiException.

+ * + * @param message the error message + * @param throwable a {@link java.lang.Throwable} object + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ + public ApiException(String message, Throwable throwable, int code, Map> responseHeaders, String responseBody) { + super(message, throwable); + this.code = code; + this.responseHeaders = responseHeaders; + this.responseBody = responseBody; + } + + /** + *

Constructor for ApiException.

+ * + * @param message the error message + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ + public ApiException(String message, int code, Map> responseHeaders, String responseBody) { + this(message, (Throwable) null, code, responseHeaders, responseBody); + } + + /** + *

Constructor for ApiException.

+ * + * @param message the error message + * @param throwable a {@link java.lang.Throwable} object + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + */ + public ApiException(String message, Throwable throwable, int code, Map> responseHeaders) { + this(message, throwable, code, responseHeaders, null); + } + + /** + *

Constructor for ApiException.

+ * + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ + public ApiException(int code, Map> responseHeaders, String responseBody) { + this("Response Code: " + code + " Response Body: " + responseBody, (Throwable) null, code, responseHeaders, responseBody); + } + + /** + *

Constructor for ApiException.

+ * + * @param code HTTP status code + * @param message a {@link java.lang.String} object + */ + public ApiException(int code, String message) { + super(message); + this.code = code; + } + + /** + *

Constructor for ApiException.

+ * + * @param code HTTP status code + * @param message the error message + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ + public ApiException(int code, String message, Map> responseHeaders, String responseBody) { + this(code, message); + this.responseHeaders = responseHeaders; + this.responseBody = responseBody; + } + + /** + * Get the HTTP status code. + * + * @return HTTP status code + */ + public int getCode() { + return code; + } + + /** + * Get the HTTP response headers. + * + * @return A map of list of string + */ + public Map> getResponseHeaders() { + return responseHeaders; + } + + /** + * Get the HTTP response body. + * + * @return Response body in the form of string + */ + public String getResponseBody() { + return responseBody; + } + + /** + * Get the exception message including HTTP response data. + * + * @return The exception message + */ + public String getMessage() { + return String.format(Locale.ROOT, "Message: %s%nHTTP response code: %s%nHTTP response body: %s%nHTTP response headers: %s", + super.getMessage(), this.getCode(), this.getResponseBody(), this.getResponseHeaders()); + } +} diff --git a/utils/sdk/client/java/src/main/java/invalidPackageName/ApiResponse.java b/utils/sdk/client/java/src/main/java/invalidPackageName/ApiResponse.java new file mode 100644 index 00000000..a2982a72 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/invalidPackageName/ApiResponse.java @@ -0,0 +1,76 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package invalidPackageName; + +import java.util.List; +import java.util.Map; + +/** + * API response returned by API call. + */ +public class ApiResponse { + final private int statusCode; + final private Map> headers; + final private T data; + + /** + *

Constructor for ApiResponse.

+ * + * @param statusCode The status code of HTTP response + * @param headers The headers of HTTP response + */ + public ApiResponse(int statusCode, Map> headers) { + this(statusCode, headers, null); + } + + /** + *

Constructor for ApiResponse.

+ * + * @param statusCode The status code of HTTP response + * @param headers The headers of HTTP response + * @param data The object deserialized from response bod + */ + public ApiResponse(int statusCode, Map> headers, T data) { + this.statusCode = statusCode; + this.headers = headers; + this.data = data; + } + + /** + *

Get the status code.

+ * + * @return the status code + */ + public int getStatusCode() { + return statusCode; + } + + /** + *

Get the headers.

+ * + * @return a {@link java.util.Map} of headers + */ + public Map> getHeaders() { + return headers; + } + + /** + *

Get the data.

+ * + * @return the data + */ + public T getData() { + return data; + } +} diff --git a/utils/sdk/client/java/src/main/java/invalidPackageName/Configuration.java b/utils/sdk/client/java/src/main/java/invalidPackageName/Configuration.java new file mode 100644 index 00000000..41433308 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/invalidPackageName/Configuration.java @@ -0,0 +1,63 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package invalidPackageName; + +import java.util.Objects; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Supplier; + +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class Configuration { + public static final String VERSION = "6.0.1"; + + private static final AtomicReference defaultApiClient = new AtomicReference<>(); + private static volatile Supplier apiClientFactory = ApiClient::new; + + /** + * Get the default API client, which would be used when creating API instances without providing an API client. + * + * @return Default API client + */ + public static ApiClient getDefaultApiClient() { + ApiClient client = defaultApiClient.get(); + if (client == null) { + client = defaultApiClient.updateAndGet(val -> { + if (val != null) { // changed by another thread + return val; + } + return apiClientFactory.get(); + }); + } + return client; + } + + /** + * Set the default API client, which would be used when creating API instances without providing an API client. + * + * @param apiClient API client + */ + public static void setDefaultApiClient(ApiClient apiClient) { + defaultApiClient.set(apiClient); + } + + /** + * set the callback used to create new ApiClient objects + */ + public static void setApiClientFactory(Supplier factory) { + apiClientFactory = Objects.requireNonNull(factory); + } + + private Configuration() { + } +} \ No newline at end of file diff --git a/utils/sdk/client/java/src/main/java/invalidPackageName/GzipRequestInterceptor.java b/utils/sdk/client/java/src/main/java/invalidPackageName/GzipRequestInterceptor.java new file mode 100644 index 00000000..2601e5ba --- /dev/null +++ b/utils/sdk/client/java/src/main/java/invalidPackageName/GzipRequestInterceptor.java @@ -0,0 +1,85 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package invalidPackageName; + +import okhttp3.*; +import okio.Buffer; +import okio.BufferedSink; +import okio.GzipSink; +import okio.Okio; + +import java.io.IOException; + +/** + * Encodes request bodies using gzip. + * + * Taken from https://github.com/square/okhttp/issues/350 + */ +class GzipRequestInterceptor implements Interceptor { + @Override + public Response intercept(Chain chain) throws IOException { + Request originalRequest = chain.request(); + if (originalRequest.body() == null || originalRequest.header("Content-Encoding") != null) { + return chain.proceed(originalRequest); + } + + Request compressedRequest = originalRequest.newBuilder() + .header("Content-Encoding", "gzip") + .method(originalRequest.method(), forceContentLength(gzip(originalRequest.body()))) + .build(); + return chain.proceed(compressedRequest); + } + + private RequestBody forceContentLength(final RequestBody requestBody) throws IOException { + final Buffer buffer = new Buffer(); + requestBody.writeTo(buffer); + return new RequestBody() { + @Override + public MediaType contentType() { + return requestBody.contentType(); + } + + @Override + public long contentLength() { + return buffer.size(); + } + + @Override + public void writeTo(BufferedSink sink) throws IOException { + sink.write(buffer.snapshot()); + } + }; + } + + private RequestBody gzip(final RequestBody body) { + return new RequestBody() { + @Override + public MediaType contentType() { + return body.contentType(); + } + + @Override + public long contentLength() { + return -1; // We don't know the compressed length in advance! + } + + @Override + public void writeTo(BufferedSink sink) throws IOException { + BufferedSink gzipSink = Okio.buffer(new GzipSink(sink)); + body.writeTo(gzipSink); + gzipSink.close(); + } + }; + } +} diff --git a/utils/sdk/client/java/src/main/java/invalidPackageName/JSON.java b/utils/sdk/client/java/src/main/java/invalidPackageName/JSON.java new file mode 100644 index 00000000..283f18b9 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/invalidPackageName/JSON.java @@ -0,0 +1,446 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package invalidPackageName; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapter; +import com.google.gson.internal.bind.util.ISO8601Utils; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import com.google.gson.JsonElement; +import io.gsonfire.GsonFireBuilder; +import io.gsonfire.TypeSelector; + +import okio.ByteString; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.StringReader; +import java.lang.reflect.Type; +import java.nio.charset.StandardCharsets; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.ParsePosition; +import java.time.LocalDate; +import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Date; +import java.util.Locale; +import java.util.Map; +import java.util.HashMap; + +/* + * A JSON utility class + * + * NOTE: in the future, this class may be converted to static, which may break + * backward-compatibility + */ +public class JSON { + private static Gson gson; + private static boolean isLenientOnJson = false; + private static DateTypeAdapter dateTypeAdapter = new DateTypeAdapter(); + private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter(); + private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(); + private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter(); + private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter(); + + @SuppressWarnings("unchecked") + public static GsonBuilder createGson() { + GsonFireBuilder fireBuilder = new GsonFireBuilder() + ; + GsonBuilder builder = fireBuilder.createGsonBuilder(); + return builder; + } + + private static String getDiscriminatorValue(JsonElement readElement, String discriminatorField) { + JsonElement element = readElement.getAsJsonObject().get(discriminatorField); + if (null == element) { + throw new IllegalArgumentException("missing discriminator field: <" + discriminatorField + ">"); + } + return element.getAsString(); + } + + /** + * Returns the Java class that implements the OpenAPI schema for the specified discriminator value. + * + * @param classByDiscriminatorValue The map of discriminator values to Java classes. + * @param discriminatorValue The value of the OpenAPI discriminator in the input data. + * @return The Java class that implements the OpenAPI schema + */ + private static Class getClassByDiscriminator(Map classByDiscriminatorValue, String discriminatorValue) { + Class clazz = (Class) classByDiscriminatorValue.get(discriminatorValue); + if (null == clazz) { + throw new IllegalArgumentException("cannot determine model class of name: <" + discriminatorValue + ">"); + } + return clazz; + } + + static { + GsonBuilder gsonBuilder = createGson(); + gsonBuilder.registerTypeAdapter(Date.class, dateTypeAdapter); + gsonBuilder.registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter); + gsonBuilder.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter); + gsonBuilder.registerTypeAdapter(LocalDate.class, localDateTypeAdapter); + gsonBuilder.registerTypeAdapter(byte[].class, byteArrayAdapter); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.BlockDetailsModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.BlockProcessingPerformanceModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.BlockTemplateModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.BlockTemplateRequestModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.DbStatInfoModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.HeightModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.InfoModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.MaintainersInfoModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.PerformanceModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.PosEntryModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.SubmitBlockRequestModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.SubmitBlockResponseModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.TransactionAttachmentModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.TransactionDetailsModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.TransactionExtraModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.TransactionInputModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.TransactionOutputModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.TxGenerationContextModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.TxPoolPerformanceModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.TxProcessingPerformanceModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.VersionModel.CustomTypeAdapterFactory()); + gson = gsonBuilder.create(); + } + + /** + * Get Gson. + * + * @return Gson + */ + public static Gson getGson() { + return gson; + } + + /** + * Set Gson. + * + * @param gson Gson + */ + public static void setGson(Gson gson) { + JSON.gson = gson; + } + + public static void setLenientOnJson(boolean lenientOnJson) { + isLenientOnJson = lenientOnJson; + } + + /** + * Serialize the given Java object into JSON string. + * + * @param obj Object + * @return String representation of the JSON + */ + public static String serialize(Object obj) { + return gson.toJson(obj); + } + + /** + * Deserialize the given JSON string to Java object. + * + * @param Type + * @param body The JSON string + * @param returnType The type to deserialize into + * @return The deserialized Java object + */ + @SuppressWarnings("unchecked") + public static T deserialize(String body, Type returnType) { + try { + if (isLenientOnJson) { + JsonReader jsonReader = new JsonReader(new StringReader(body)); + // see https://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/stream/JsonReader.html#setLenient(boolean) + jsonReader.setLenient(true); + return gson.fromJson(jsonReader, returnType); + } else { + return gson.fromJson(body, returnType); + } + } catch (JsonParseException e) { + // Fallback processing when failed to parse JSON form response body: + // return the response body string directly for the String return type; + if (returnType.equals(String.class)) { + return (T) body; + } else { + throw (e); + } + } + } + + /** + * Deserialize the given JSON InputStream to a Java object. + * + * @param Type + * @param inputStream The JSON InputStream + * @param returnType The type to deserialize into + * @return The deserialized Java object + */ + @SuppressWarnings("unchecked") + public static T deserialize(InputStream inputStream, Type returnType) throws IOException { + try (InputStreamReader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8)) { + if (isLenientOnJson) { + // see https://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/stream/JsonReader.html#setLenient(boolean) + JsonReader jsonReader = new JsonReader(reader); + jsonReader.setLenient(true); + return gson.fromJson(jsonReader, returnType); + } else { + return gson.fromJson(reader, returnType); + } + } + } + + /** + * Gson TypeAdapter for Byte Array type + */ + public static class ByteArrayAdapter extends TypeAdapter { + + @Override + public void write(JsonWriter out, byte[] value) throws IOException { + if (value == null) { + out.nullValue(); + } else { + out.value(ByteString.of(value).base64()); + } + } + + @Override + public byte[] read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String bytesAsBase64 = in.nextString(); + ByteString byteString = ByteString.decodeBase64(bytesAsBase64); + return byteString.toByteArray(); + } + } + } + + /** + * Gson TypeAdapter for JSR310 OffsetDateTime type + */ + public static class OffsetDateTimeTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public OffsetDateTimeTypeAdapter() { + this(DateTimeFormatter.ISO_OFFSET_DATE_TIME); + } + + public OffsetDateTimeTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, OffsetDateTime date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public OffsetDateTime read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + if (date.endsWith("+0000")) { + date = date.substring(0, date.length()-5) + "Z"; + } + return OffsetDateTime.parse(date, formatter); + } + } + } + + /** + * Gson TypeAdapter for JSR310 LocalDate type + */ + public static class LocalDateTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public LocalDateTypeAdapter() { + this(DateTimeFormatter.ISO_LOCAL_DATE); + } + + public LocalDateTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, LocalDate date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public LocalDate read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + return LocalDate.parse(date, formatter); + } + } + } + + public static void setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { + offsetDateTimeTypeAdapter.setFormat(dateFormat); + } + + public static void setLocalDateFormat(DateTimeFormatter dateFormat) { + localDateTypeAdapter.setFormat(dateFormat); + } + + /** + * Gson TypeAdapter for java.sql.Date type + * If the dateFormat is null, a simple "yyyy-MM-dd" format will be used + * (more efficient than SimpleDateFormat). + */ + public static class SqlDateTypeAdapter extends TypeAdapter { + + private DateFormat dateFormat; + + public SqlDateTypeAdapter() {} + + public SqlDateTypeAdapter(DateFormat dateFormat) { + this.dateFormat = dateFormat; + } + + public void setFormat(DateFormat dateFormat) { + this.dateFormat = dateFormat; + } + + @Override + public void write(JsonWriter out, java.sql.Date date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + String value; + if (dateFormat != null) { + value = dateFormat.format(date); + } else { + value = date.toString(); + } + out.value(value); + } + } + + @Override + public java.sql.Date read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + if (dateFormat != null) { + return new java.sql.Date(dateFormat.parse(date).getTime()); + } + return new java.sql.Date(ISO8601Utils.parse(date, new ParsePosition(0)).getTime()); + } catch (ParseException e) { + throw new JsonParseException(e); + } + } + } + } + + /** + * Gson TypeAdapter for java.util.Date type + * If the dateFormat is null, ISO8601Utils will be used. + */ + public static class DateTypeAdapter extends TypeAdapter { + + private DateFormat dateFormat; + + public DateTypeAdapter() {} + + public DateTypeAdapter(DateFormat dateFormat) { + this.dateFormat = dateFormat; + } + + public void setFormat(DateFormat dateFormat) { + this.dateFormat = dateFormat; + } + + @Override + public void write(JsonWriter out, Date date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + String value; + if (dateFormat != null) { + value = dateFormat.format(date); + } else { + value = ISO8601Utils.format(date, true); + } + out.value(value); + } + } + + @Override + public Date read(JsonReader in) throws IOException { + try { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + if (dateFormat != null) { + return dateFormat.parse(date); + } + return ISO8601Utils.parse(date, new ParsePosition(0)); + } catch (ParseException e) { + throw new JsonParseException(e); + } + } + } catch (IllegalArgumentException e) { + throw new JsonParseException(e); + } + } + } + + public static void setDateFormat(DateFormat dateFormat) { + dateTypeAdapter.setFormat(dateFormat); + } + + public static void setSqlDateFormat(DateFormat dateFormat) { + sqlDateTypeAdapter.setFormat(dateFormat); + } +} diff --git a/utils/sdk/client/java/src/main/java/invalidPackageName/Pair.java b/utils/sdk/client/java/src/main/java/invalidPackageName/Pair.java new file mode 100644 index 00000000..7aff7ba5 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/invalidPackageName/Pair.java @@ -0,0 +1,37 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package invalidPackageName; + +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class Pair { + private final String name; + private final String value; + + public Pair(String name, String value) { + this.name = isValidString(name) ? name : ""; + this.value = isValidString(value) ? value : ""; + } + + public String getName() { + return this.name; + } + + public String getValue() { + return this.value; + } + + private static boolean isValidString(String arg) { + return arg != null; + } +} diff --git a/utils/sdk/client/java/src/main/java/invalidPackageName/ProgressRequestBody.java b/utils/sdk/client/java/src/main/java/invalidPackageName/ProgressRequestBody.java new file mode 100644 index 00000000..017534b1 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/invalidPackageName/ProgressRequestBody.java @@ -0,0 +1,73 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package invalidPackageName; + +import okhttp3.MediaType; +import okhttp3.RequestBody; + +import java.io.IOException; + +import okio.Buffer; +import okio.BufferedSink; +import okio.ForwardingSink; +import okio.Okio; +import okio.Sink; + +public class ProgressRequestBody extends RequestBody { + + private final RequestBody requestBody; + + private final ApiCallback callback; + + public ProgressRequestBody(RequestBody requestBody, ApiCallback callback) { + this.requestBody = requestBody; + this.callback = callback; + } + + @Override + public MediaType contentType() { + return requestBody.contentType(); + } + + @Override + public long contentLength() throws IOException { + return requestBody.contentLength(); + } + + @Override + public void writeTo(BufferedSink sink) throws IOException { + BufferedSink bufferedSink = Okio.buffer(sink(sink)); + requestBody.writeTo(bufferedSink); + bufferedSink.flush(); + } + + private Sink sink(Sink sink) { + return new ForwardingSink(sink) { + + long bytesWritten = 0L; + long contentLength = 0L; + + @Override + public void write(Buffer source, long byteCount) throws IOException { + super.write(source, byteCount); + if (contentLength == 0) { + contentLength = contentLength(); + } + + bytesWritten += byteCount; + callback.onUploadProgress(bytesWritten, contentLength, bytesWritten == contentLength); + } + }; + } +} diff --git a/utils/sdk/client/java/src/main/java/invalidPackageName/ProgressResponseBody.java b/utils/sdk/client/java/src/main/java/invalidPackageName/ProgressResponseBody.java new file mode 100644 index 00000000..dda8e80a --- /dev/null +++ b/utils/sdk/client/java/src/main/java/invalidPackageName/ProgressResponseBody.java @@ -0,0 +1,70 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package invalidPackageName; + +import okhttp3.MediaType; +import okhttp3.ResponseBody; + +import java.io.IOException; + +import okio.Buffer; +import okio.BufferedSource; +import okio.ForwardingSource; +import okio.Okio; +import okio.Source; + +public class ProgressResponseBody extends ResponseBody { + + private final ResponseBody responseBody; + private final ApiCallback callback; + private BufferedSource bufferedSource; + + public ProgressResponseBody(ResponseBody responseBody, ApiCallback callback) { + this.responseBody = responseBody; + this.callback = callback; + } + + @Override + public MediaType contentType() { + return responseBody.contentType(); + } + + @Override + public long contentLength() { + return responseBody.contentLength(); + } + + @Override + public BufferedSource source() { + if (bufferedSource == null) { + bufferedSource = Okio.buffer(source(responseBody.source())); + } + return bufferedSource; + } + + private Source source(Source source) { + return new ForwardingSource(source) { + long totalBytesRead = 0L; + + @Override + public long read(Buffer sink, long byteCount) throws IOException { + long bytesRead = super.read(sink, byteCount); + // read() returns the number of bytes read, or -1 if this source is exhausted. + totalBytesRead += bytesRead != -1 ? bytesRead : 0; + callback.onDownloadProgress(totalBytesRead, responseBody.contentLength(), bytesRead == -1); + return bytesRead; + } + }; + } +} diff --git a/utils/sdk/client/java/src/main/java/invalidPackageName/ServerConfiguration.java b/utils/sdk/client/java/src/main/java/invalidPackageName/ServerConfiguration.java new file mode 100644 index 00000000..49a1823e --- /dev/null +++ b/utils/sdk/client/java/src/main/java/invalidPackageName/ServerConfiguration.java @@ -0,0 +1,72 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package invalidPackageName; + +import java.util.Map; + +/** + * Representing a Server configuration. + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class ServerConfiguration { + public String URL; + public String description; + public Map variables; + + /** + * @param URL A URL to the target host. + * @param description A description of the host designated by the URL. + * @param variables A map between a variable name and its value. The value is used for substitution in the server's URL template. + */ + public ServerConfiguration(String URL, String description, Map variables) { + this.URL = URL; + this.description = description; + this.variables = variables; + } + + /** + * Format URL template using given variables. + * + * @param variables A map between a variable name and its value. + * @return Formatted URL. + */ + public String URL(Map variables) { + String url = this.URL; + + // go through variables and replace placeholders + for (Map.Entry variable: this.variables.entrySet()) { + String name = variable.getKey(); + ServerVariable serverVariable = variable.getValue(); + String value = serverVariable.defaultValue; + + if (variables != null && variables.containsKey(name)) { + value = variables.get(name); + if (serverVariable.enumValues.size() > 0 && !serverVariable.enumValues.contains(value)) { + throw new IllegalArgumentException("The variable " + name + " in the server URL has invalid value " + value + "."); + } + } + url = url.replace("{" + name + "}", value); + } + return url; + } + + /** + * Format URL template using default server variables. + * + * @return Formatted URL. + */ + public String URL() { + return URL(null); + } +} diff --git a/utils/sdk/client/java/src/main/java/invalidPackageName/ServerVariable.java b/utils/sdk/client/java/src/main/java/invalidPackageName/ServerVariable.java new file mode 100644 index 00000000..c1c27ffe --- /dev/null +++ b/utils/sdk/client/java/src/main/java/invalidPackageName/ServerVariable.java @@ -0,0 +1,37 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package invalidPackageName; + +import java.util.HashSet; + +/** + * Representing a Server Variable for server URL template substitution. + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class ServerVariable { + public String description; + public String defaultValue; + public HashSet enumValues = null; + + /** + * @param description A description for the server variable. + * @param defaultValue The default value to use for substitution. + * @param enumValues An enumeration of string values to be used if the substitution options are from a limited set. + */ + public ServerVariable(String description, String defaultValue, HashSet enumValues) { + this.description = description; + this.defaultValue = defaultValue; + this.enumValues = enumValues; + } +} diff --git a/utils/sdk/client/java/src/main/java/invalidPackageName/StringUtil.java b/utils/sdk/client/java/src/main/java/invalidPackageName/StringUtil.java new file mode 100644 index 00000000..e395bb59 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/invalidPackageName/StringUtil.java @@ -0,0 +1,83 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package invalidPackageName; + +import java.util.Collection; +import java.util.Iterator; + +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class StringUtil { + /** + * Check if the given array contains the given value (with case-insensitive comparison). + * + * @param array The array + * @param value The value to search + * @return true if the array contains the value + */ + public static boolean containsIgnoreCase(String[] array, String value) { + for (String str : array) { + if (value == null && str == null) { + return true; + } + if (value != null && value.equalsIgnoreCase(str)) { + return true; + } + } + return false; + } + + /** + * Join an array of strings with the given separator. + *

+ * Note: This might be replaced by utility method from commons-lang or guava someday + * if one of those libraries is added as dependency. + *

+ * + * @param array The array of strings + * @param separator The separator + * @return the resulting string + */ + public static String join(String[] array, String separator) { + int len = array.length; + if (len == 0) { + return ""; + } + + StringBuilder out = new StringBuilder(); + out.append(array[0]); + for (int i = 1; i < len; i++) { + out.append(separator).append(array[i]); + } + return out.toString(); + } + + /** + * Join a list of strings with the given separator. + * + * @param list The list of strings + * @param separator The separator + * @return the resulting string + */ + public static String join(Collection list, String separator) { + Iterator iterator = list.iterator(); + StringBuilder out = new StringBuilder(); + if (iterator.hasNext()) { + out.append(iterator.next()); + } + while (iterator.hasNext()) { + out.append(separator).append(iterator.next()); + } + return out.toString(); + } +} diff --git a/utils/sdk/client/java/src/main/java/invalidPackageName/auth/ApiKeyAuth.java b/utils/sdk/client/java/src/main/java/invalidPackageName/auth/ApiKeyAuth.java new file mode 100644 index 00000000..7a86627f --- /dev/null +++ b/utils/sdk/client/java/src/main/java/invalidPackageName/auth/ApiKeyAuth.java @@ -0,0 +1,80 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package invalidPackageName.auth; + +import invalidPackageName.ApiException; +import invalidPackageName.Pair; + +import java.net.URI; +import java.util.Map; +import java.util.List; + +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class ApiKeyAuth implements Authentication { + private final String location; + private final String paramName; + + private String apiKey; + private String apiKeyPrefix; + + public ApiKeyAuth(String location, String paramName) { + this.location = location; + this.paramName = paramName; + } + + public String getLocation() { + return location; + } + + public String getParamName() { + return paramName; + } + + public String getApiKey() { + return apiKey; + } + + public void setApiKey(String apiKey) { + this.apiKey = apiKey; + } + + public String getApiKeyPrefix() { + return apiKeyPrefix; + } + + public void setApiKeyPrefix(String apiKeyPrefix) { + this.apiKeyPrefix = apiKeyPrefix; + } + + @Override + public void applyToParams(List queryParams, Map headerParams, Map cookieParams, + String payload, String method, URI uri) throws ApiException { + if (apiKey == null) { + return; + } + String value; + if (apiKeyPrefix != null) { + value = apiKeyPrefix + " " + apiKey; + } else { + value = apiKey; + } + if ("query".equals(location)) { + queryParams.add(new Pair(paramName, value)); + } else if ("header".equals(location)) { + headerParams.put(paramName, value); + } else if ("cookie".equals(location)) { + cookieParams.put(paramName, value); + } + } +} diff --git a/utils/sdk/client/java/src/main/java/invalidPackageName/auth/Authentication.java b/utils/sdk/client/java/src/main/java/invalidPackageName/auth/Authentication.java new file mode 100644 index 00000000..7db9dcf9 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/invalidPackageName/auth/Authentication.java @@ -0,0 +1,37 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package invalidPackageName.auth; + +import invalidPackageName.Pair; +import invalidPackageName.ApiException; + +import java.net.URI; +import java.util.Map; +import java.util.List; + +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public interface Authentication { + /** + * Apply authentication settings to header and query params. + * + * @param queryParams List of query parameters + * @param headerParams Map of header parameters + * @param cookieParams Map of cookie parameters + * @param payload HTTP request body + * @param method HTTP method + * @param uri URI + * @throws ApiException if failed to update the parameters + */ + void applyToParams(List queryParams, Map headerParams, Map cookieParams, String payload, String method, URI uri) throws ApiException; +} diff --git a/utils/sdk/client/java/src/main/java/invalidPackageName/auth/HttpBasicAuth.java b/utils/sdk/client/java/src/main/java/invalidPackageName/auth/HttpBasicAuth.java new file mode 100644 index 00000000..eb8d81a5 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/invalidPackageName/auth/HttpBasicAuth.java @@ -0,0 +1,55 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package invalidPackageName.auth; + +import invalidPackageName.Pair; +import invalidPackageName.ApiException; + +import okhttp3.Credentials; + +import java.net.URI; +import java.util.Map; +import java.util.List; + +public class HttpBasicAuth implements Authentication { + private String username; + private String password; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + @Override + public void applyToParams(List queryParams, Map headerParams, Map cookieParams, + String payload, String method, URI uri) throws ApiException { + if (username == null && password == null) { + return; + } + headerParams.put("Authorization", Credentials.basic( + username == null ? "" : username, + password == null ? "" : password)); + } +} diff --git a/utils/sdk/client/java/src/main/java/invalidPackageName/auth/HttpBearerAuth.java b/utils/sdk/client/java/src/main/java/invalidPackageName/auth/HttpBearerAuth.java new file mode 100644 index 00000000..ff90ba05 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/invalidPackageName/auth/HttpBearerAuth.java @@ -0,0 +1,75 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package invalidPackageName.auth; + +import invalidPackageName.ApiException; +import invalidPackageName.Pair; + +import java.net.URI; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.Supplier; + +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class HttpBearerAuth implements Authentication { + private final String scheme; + private Supplier tokenSupplier; + + public HttpBearerAuth(String scheme) { + this.scheme = scheme; + } + + /** + * Gets the token, which together with the scheme, will be sent as the value of the Authorization header. + * + * @return The bearer token + */ + public String getBearerToken() { + return tokenSupplier.get(); + } + + /** + * Sets the token, which together with the scheme, will be sent as the value of the Authorization header. + * + * @param bearerToken The bearer token to send in the Authorization header + */ + public void setBearerToken(String bearerToken) { + this.tokenSupplier = () -> bearerToken; + } + + /** + * Sets the supplier of tokens, which together with the scheme, will be sent as the value of the Authorization header. + * + * @param tokenSupplier The supplier of bearer tokens to send in the Authorization header + */ + public void setBearerToken(Supplier tokenSupplier) { + this.tokenSupplier = tokenSupplier; + } + + @Override + public void applyToParams(List queryParams, Map headerParams, Map cookieParams, + String payload, String method, URI uri) throws ApiException { + String bearerToken = Optional.ofNullable(tokenSupplier).map(Supplier::get).orElse(null); + if (bearerToken == null) { + return; + } + + headerParams.put("Authorization", (scheme != null ? upperCaseBearer(scheme) + " " : "") + bearerToken); + } + + private static String upperCaseBearer(String scheme) { + return ("bearer".equalsIgnoreCase(scheme)) ? "Bearer" : scheme; + } +} diff --git a/utils/sdk/client/java/src/main/java/lthn/BlockApi.java b/utils/sdk/client/java/src/main/java/lthn/BlockApi.java new file mode 100644 index 00000000..8cf77f2d --- /dev/null +++ b/utils/sdk/client/java/src/main/java/lthn/BlockApi.java @@ -0,0 +1,727 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package lthn; + +import invalidPackageName.ApiCallback; +import invalidPackageName.ApiClient; +import invalidPackageName.ApiException; +import invalidPackageName.ApiResponse; +import invalidPackageName.Configuration; +import invalidPackageName.Pair; +import invalidPackageName.ProgressRequestBody; +import invalidPackageName.ProgressResponseBody; + +import com.google.gson.reflect.TypeToken; + +import java.io.IOException; + + +import org.openapitools.client.model.BlockDetailsModel; +import org.openapitools.client.model.BlockTemplateModel; +import org.openapitools.client.model.BlockTemplateRequestModel; +import org.openapitools.client.model.HeightModel; +import org.openapitools.client.model.SubmitBlockRequestModel; +import org.openapitools.client.model.SubmitBlockResponseModel; + +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class BlockApi { + private ApiClient localVarApiClient; + private int localHostIndex; + private String localCustomBaseUrl; + + public BlockApi() { + this(Configuration.getDefaultApiClient()); + } + + public BlockApi(ApiClient apiClient) { + this.localVarApiClient = apiClient; + } + + public ApiClient getApiClient() { + return localVarApiClient; + } + + public void setApiClient(ApiClient apiClient) { + this.localVarApiClient = apiClient; + } + + public int getHostIndex() { + return localHostIndex; + } + + public void setHostIndex(int hostIndex) { + this.localHostIndex = hostIndex; + } + + public String getCustomBaseUrl() { + return localCustomBaseUrl; + } + + public void setCustomBaseUrl(String customBaseUrl) { + this.localCustomBaseUrl = customBaseUrl; + } + + /** + * Build call for createBlockTemplate + * @param blockTemplateRequestModel (required) + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
500 text/plain -
400 text/plain -
200 OK -
+ */ + public okhttp3.Call createBlockTemplateCall(@javax.annotation.Nonnull BlockTemplateRequestModel blockTemplateRequestModel, final ApiCallback _callback) throws ApiException { + String basePath = null; + // Operation Servers + String[] localBasePaths = new String[] { }; + + // Determine Base Path to Use + if (localCustomBaseUrl != null){ + basePath = localCustomBaseUrl; + } else if ( localBasePaths.length > 0 ) { + basePath = localBasePaths[localHostIndex]; + } else { + basePath = null; + } + + Object localVarPostBody = blockTemplateRequestModel; + + // create path and map variables + String localVarPath = "/block/template"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] { }; + return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call createBlockTemplateValidateBeforeCall(@javax.annotation.Nonnull BlockTemplateRequestModel blockTemplateRequestModel, final ApiCallback _callback) throws ApiException { + // verify the required parameter 'blockTemplateRequestModel' is set + if (blockTemplateRequestModel == null) { + throw new ApiException("Missing the required parameter 'blockTemplateRequestModel' when calling createBlockTemplate(Async)"); + } + + return createBlockTemplateCall(blockTemplateRequestModel, _callback); + + } + + /** + * Create a block template for mining + * + * @param blockTemplateRequestModel (required) + * @return BlockTemplateModel + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
500 text/plain -
400 text/plain -
200 OK -
+ */ + public BlockTemplateModel createBlockTemplate(@javax.annotation.Nonnull BlockTemplateRequestModel blockTemplateRequestModel) throws ApiException { + ApiResponse localVarResp = createBlockTemplateWithHttpInfo(blockTemplateRequestModel); + return localVarResp.getData(); + } + + /** + * Create a block template for mining + * + * @param blockTemplateRequestModel (required) + * @return ApiResponse<BlockTemplateModel> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
500 text/plain -
400 text/plain -
200 OK -
+ */ + public ApiResponse createBlockTemplateWithHttpInfo(@javax.annotation.Nonnull BlockTemplateRequestModel blockTemplateRequestModel) throws ApiException { + okhttp3.Call localVarCall = createBlockTemplateValidateBeforeCall(blockTemplateRequestModel, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * Create a block template for mining (asynchronously) + * + * @param blockTemplateRequestModel (required) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
500 text/plain -
400 text/plain -
200 OK -
+ */ + public okhttp3.Call createBlockTemplateAsync(@javax.annotation.Nonnull BlockTemplateRequestModel blockTemplateRequestModel, final ApiCallback _callback) throws ApiException { + + okhttp3.Call localVarCall = createBlockTemplateValidateBeforeCall(blockTemplateRequestModel, _callback); + Type localVarReturnType = new TypeToken(){}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } + /** + * Build call for getBlock + * @param identifier The hash (hex string) or height (integer) of the block to retrieve. (required) + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
404 text/plain -
400 text/plain -
200 OK -
+ */ + public okhttp3.Call getBlockCall(@javax.annotation.Nonnull String identifier, final ApiCallback _callback) throws ApiException { + String basePath = null; + // Operation Servers + String[] localBasePaths = new String[] { }; + + // Determine Base Path to Use + if (localCustomBaseUrl != null){ + basePath = localCustomBaseUrl; + } else if ( localBasePaths.length > 0 ) { + basePath = localBasePaths[localHostIndex]; + } else { + basePath = null; + } + + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/block/{identifier}" + .replace("{" + "identifier" + "}", localVarApiClient.escapeString(identifier.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = { + }; + final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] { }; + return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call getBlockValidateBeforeCall(@javax.annotation.Nonnull String identifier, final ApiCallback _callback) throws ApiException { + // verify the required parameter 'identifier' is set + if (identifier == null) { + throw new ApiException("Missing the required parameter 'identifier' when calling getBlock(Async)"); + } + + return getBlockCall(identifier, _callback); + + } + + /** + * Get a block by its hash or height (ID) + * + * @param identifier The hash (hex string) or height (integer) of the block to retrieve. (required) + * @return BlockDetailsModel + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
404 text/plain -
400 text/plain -
200 OK -
+ */ + public BlockDetailsModel getBlock(@javax.annotation.Nonnull String identifier) throws ApiException { + ApiResponse localVarResp = getBlockWithHttpInfo(identifier); + return localVarResp.getData(); + } + + /** + * Get a block by its hash or height (ID) + * + * @param identifier The hash (hex string) or height (integer) of the block to retrieve. (required) + * @return ApiResponse<BlockDetailsModel> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
404 text/plain -
400 text/plain -
200 OK -
+ */ + public ApiResponse getBlockWithHttpInfo(@javax.annotation.Nonnull String identifier) throws ApiException { + okhttp3.Call localVarCall = getBlockValidateBeforeCall(identifier, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * Get a block by its hash or height (ID) (asynchronously) + * + * @param identifier The hash (hex string) or height (integer) of the block to retrieve. (required) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
404 text/plain -
400 text/plain -
200 OK -
+ */ + public okhttp3.Call getBlockAsync(@javax.annotation.Nonnull String identifier, final ApiCallback _callback) throws ApiException { + + okhttp3.Call localVarCall = getBlockValidateBeforeCall(identifier, _callback); + Type localVarReturnType = new TypeToken(){}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } + /** + * Build call for getBlocks + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
404 text/plain -
400 text/plain -
200 A list of block objects. -
+ */ + public okhttp3.Call getBlocksCall(final ApiCallback _callback) throws ApiException { + String basePath = null; + // Operation Servers + String[] localBasePaths = new String[] { }; + + // Determine Base Path to Use + if (localCustomBaseUrl != null){ + basePath = localCustomBaseUrl; + } else if ( localBasePaths.length > 0 ) { + basePath = localBasePaths[localHostIndex]; + } else { + basePath = null; + } + + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/block"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = { + }; + final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] { }; + return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call getBlocksValidateBeforeCall(final ApiCallback _callback) throws ApiException { + return getBlocksCall(_callback); + + } + + /** + * Get one or more blocks, with optional pagination. + * + * @return List<BlockDetailsModel> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
404 text/plain -
400 text/plain -
200 A list of block objects. -
+ */ + public List getBlocks() throws ApiException { + ApiResponse> localVarResp = getBlocksWithHttpInfo(); + return localVarResp.getData(); + } + + /** + * Get one or more blocks, with optional pagination. + * + * @return ApiResponse<List<BlockDetailsModel>> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
404 text/plain -
400 text/plain -
200 A list of block objects. -
+ */ + public ApiResponse> getBlocksWithHttpInfo() throws ApiException { + okhttp3.Call localVarCall = getBlocksValidateBeforeCall(null); + Type localVarReturnType = new TypeToken>(){}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * Get one or more blocks, with optional pagination. (asynchronously) + * + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
404 text/plain -
400 text/plain -
200 A list of block objects. -
+ */ + public okhttp3.Call getBlocksAsync(final ApiCallback> _callback) throws ApiException { + + okhttp3.Call localVarCall = getBlocksValidateBeforeCall(_callback); + Type localVarReturnType = new TypeToken>(){}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } + /** + * Build call for getHeight + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public okhttp3.Call getHeightCall(final ApiCallback _callback) throws ApiException { + String basePath = null; + // Operation Servers + String[] localBasePaths = new String[] { }; + + // Determine Base Path to Use + if (localCustomBaseUrl != null){ + basePath = localCustomBaseUrl; + } else if ( localBasePaths.length > 0 ) { + basePath = localBasePaths[localHostIndex]; + } else { + basePath = null; + } + + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/block/height"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = { + }; + final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] { }; + return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call getHeightValidateBeforeCall(final ApiCallback _callback) throws ApiException { + return getHeightCall(_callback); + + } + + /** + * Get the current blockchain height + * + * @return HeightModel + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public HeightModel getHeight() throws ApiException { + ApiResponse localVarResp = getHeightWithHttpInfo(); + return localVarResp.getData(); + } + + /** + * Get the current blockchain height + * + * @return ApiResponse<HeightModel> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public ApiResponse getHeightWithHttpInfo() throws ApiException { + okhttp3.Call localVarCall = getHeightValidateBeforeCall(null); + Type localVarReturnType = new TypeToken(){}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * Get the current blockchain height (asynchronously) + * + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public okhttp3.Call getHeightAsync(final ApiCallback _callback) throws ApiException { + + okhttp3.Call localVarCall = getHeightValidateBeforeCall(_callback); + Type localVarReturnType = new TypeToken(){}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } + /** + * Build call for submitBlock + * @param submitBlockRequestModel (required) + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
406 text/plain -
400 text/plain -
200 OK -
+ */ + public okhttp3.Call submitBlockCall(@javax.annotation.Nonnull SubmitBlockRequestModel submitBlockRequestModel, final ApiCallback _callback) throws ApiException { + String basePath = null; + // Operation Servers + String[] localBasePaths = new String[] { }; + + // Determine Base Path to Use + if (localCustomBaseUrl != null){ + basePath = localCustomBaseUrl; + } else if ( localBasePaths.length > 0 ) { + basePath = localBasePaths[localHostIndex]; + } else { + basePath = null; + } + + Object localVarPostBody = submitBlockRequestModel; + + // create path and map variables + String localVarPath = "/block/submit"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] { }; + return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call submitBlockValidateBeforeCall(@javax.annotation.Nonnull SubmitBlockRequestModel submitBlockRequestModel, final ApiCallback _callback) throws ApiException { + // verify the required parameter 'submitBlockRequestModel' is set + if (submitBlockRequestModel == null) { + throw new ApiException("Missing the required parameter 'submitBlockRequestModel' when calling submitBlock(Async)"); + } + + return submitBlockCall(submitBlockRequestModel, _callback); + + } + + /** + * Submit a new block to the network + * + * @param submitBlockRequestModel (required) + * @return SubmitBlockResponseModel + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
406 text/plain -
400 text/plain -
200 OK -
+ */ + public SubmitBlockResponseModel submitBlock(@javax.annotation.Nonnull SubmitBlockRequestModel submitBlockRequestModel) throws ApiException { + ApiResponse localVarResp = submitBlockWithHttpInfo(submitBlockRequestModel); + return localVarResp.getData(); + } + + /** + * Submit a new block to the network + * + * @param submitBlockRequestModel (required) + * @return ApiResponse<SubmitBlockResponseModel> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
406 text/plain -
400 text/plain -
200 OK -
+ */ + public ApiResponse submitBlockWithHttpInfo(@javax.annotation.Nonnull SubmitBlockRequestModel submitBlockRequestModel) throws ApiException { + okhttp3.Call localVarCall = submitBlockValidateBeforeCall(submitBlockRequestModel, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * Submit a new block to the network (asynchronously) + * + * @param submitBlockRequestModel (required) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
406 text/plain -
400 text/plain -
200 OK -
+ */ + public okhttp3.Call submitBlockAsync(@javax.annotation.Nonnull SubmitBlockRequestModel submitBlockRequestModel, final ApiCallback _callback) throws ApiException { + + okhttp3.Call localVarCall = submitBlockValidateBeforeCall(submitBlockRequestModel, _callback); + Type localVarReturnType = new TypeToken(){}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } +} diff --git a/utils/sdk/client/java/src/main/java/lthn/InfoApi.java b/utils/sdk/client/java/src/main/java/lthn/InfoApi.java new file mode 100644 index 00000000..dec1ccb5 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/lthn/InfoApi.java @@ -0,0 +1,318 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package lthn; + +import invalidPackageName.ApiCallback; +import invalidPackageName.ApiClient; +import invalidPackageName.ApiException; +import invalidPackageName.ApiResponse; +import invalidPackageName.Configuration; +import invalidPackageName.Pair; +import invalidPackageName.ProgressRequestBody; +import invalidPackageName.ProgressResponseBody; + +import com.google.gson.reflect.TypeToken; + +import java.io.IOException; + + +import org.openapitools.client.model.InfoModel; +import org.openapitools.client.model.VersionModel; + +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class InfoApi { + private ApiClient localVarApiClient; + private int localHostIndex; + private String localCustomBaseUrl; + + public InfoApi() { + this(Configuration.getDefaultApiClient()); + } + + public InfoApi(ApiClient apiClient) { + this.localVarApiClient = apiClient; + } + + public ApiClient getApiClient() { + return localVarApiClient; + } + + public void setApiClient(ApiClient apiClient) { + this.localVarApiClient = apiClient; + } + + public int getHostIndex() { + return localHostIndex; + } + + public void setHostIndex(int hostIndex) { + this.localHostIndex = hostIndex; + } + + public String getCustomBaseUrl() { + return localCustomBaseUrl; + } + + public void setCustomBaseUrl(String customBaseUrl) { + this.localCustomBaseUrl = customBaseUrl; + } + + /** + * Build call for getInfo + * @param flags Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median. (optional) + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public okhttp3.Call getInfoCall(@javax.annotation.Nullable String flags, final ApiCallback _callback) throws ApiException { + String basePath = null; + // Operation Servers + String[] localBasePaths = new String[] { }; + + // Determine Base Path to Use + if (localCustomBaseUrl != null){ + basePath = localCustomBaseUrl; + } else if ( localBasePaths.length > 0 ) { + basePath = localBasePaths[localHostIndex]; + } else { + basePath = null; + } + + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/info"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + if (flags != null) { + localVarQueryParams.addAll(localVarApiClient.parameterToPair("flags", flags)); + } + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = { + }; + final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] { }; + return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call getInfoValidateBeforeCall(@javax.annotation.Nullable String flags, final ApiCallback _callback) throws ApiException { + return getInfoCall(flags, _callback); + + } + + /** + * Get detailed information about the blockchain and daemon state + * + * @param flags Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median. (optional) + * @return InfoModel + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public InfoModel getInfo(@javax.annotation.Nullable String flags) throws ApiException { + ApiResponse localVarResp = getInfoWithHttpInfo(flags); + return localVarResp.getData(); + } + + /** + * Get detailed information about the blockchain and daemon state + * + * @param flags Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median. (optional) + * @return ApiResponse<InfoModel> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public ApiResponse getInfoWithHttpInfo(@javax.annotation.Nullable String flags) throws ApiException { + okhttp3.Call localVarCall = getInfoValidateBeforeCall(flags, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * Get detailed information about the blockchain and daemon state (asynchronously) + * + * @param flags Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median. (optional) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public okhttp3.Call getInfoAsync(@javax.annotation.Nullable String flags, final ApiCallback _callback) throws ApiException { + + okhttp3.Call localVarCall = getInfoValidateBeforeCall(flags, _callback); + Type localVarReturnType = new TypeToken(){}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } + /** + * Build call for version + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public okhttp3.Call versionCall(final ApiCallback _callback) throws ApiException { + String basePath = null; + // Operation Servers + String[] localBasePaths = new String[] { }; + + // Determine Base Path to Use + if (localCustomBaseUrl != null){ + basePath = localCustomBaseUrl; + } else if ( localBasePaths.length > 0 ) { + basePath = localBasePaths[localHostIndex]; + } else { + basePath = null; + } + + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/info/version"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = { + }; + final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] { }; + return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call versionValidateBeforeCall(final ApiCallback _callback) throws ApiException { + return versionCall(_callback); + + } + + /** + * Get API version + * Returns the current version of the API. + * @return VersionModel + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public VersionModel version() throws ApiException { + ApiResponse localVarResp = versionWithHttpInfo(); + return localVarResp.getData(); + } + + /** + * Get API version + * Returns the current version of the API. + * @return ApiResponse<VersionModel> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public ApiResponse versionWithHttpInfo() throws ApiException { + okhttp3.Call localVarCall = versionValidateBeforeCall(null); + Type localVarReturnType = new TypeToken(){}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * Get API version (asynchronously) + * Returns the current version of the API. + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public okhttp3.Call versionAsync(final ApiCallback _callback) throws ApiException { + + okhttp3.Call localVarCall = versionValidateBeforeCall(_callback); + Type localVarReturnType = new TypeToken(){}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } +} diff --git a/utils/sdk/client/java/src/main/java/org/lthn/ApiCallback.java b/utils/sdk/client/java/src/main/java/org/lthn/ApiCallback.java new file mode 100644 index 00000000..2aeedc6f --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/lthn/ApiCallback.java @@ -0,0 +1,62 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.lthn; + +import java.io.IOException; + +import java.util.Map; +import java.util.List; + +/** + * Callback for asynchronous API call. + * + * @param The return type + */ +public interface ApiCallback { + /** + * This is called when the API call fails. + * + * @param e The exception causing the failure + * @param statusCode Status code of the response if available, otherwise it would be 0 + * @param responseHeaders Headers of the response if available, otherwise it would be null + */ + void onFailure(ApiException e, int statusCode, Map> responseHeaders); + + /** + * This is called when the API call succeeded. + * + * @param result The result deserialized from response + * @param statusCode Status code of the response + * @param responseHeaders Headers of the response + */ + void onSuccess(T result, int statusCode, Map> responseHeaders); + + /** + * This is called when the API upload processing. + * + * @param bytesWritten bytes Written + * @param contentLength content length of request body + * @param done write end + */ + void onUploadProgress(long bytesWritten, long contentLength, boolean done); + + /** + * This is called when the API download processing. + * + * @param bytesRead bytes Read + * @param contentLength content length of the response + * @param done Read end + */ + void onDownloadProgress(long bytesRead, long contentLength, boolean done); +} diff --git a/utils/sdk/client/java/src/main/java/org/lthn/ApiClient.java b/utils/sdk/client/java/src/main/java/org/lthn/ApiClient.java new file mode 100644 index 00000000..8b9d4fe1 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/lthn/ApiClient.java @@ -0,0 +1,1592 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.lthn; + +import okhttp3.*; +import okhttp3.internal.http.HttpMethod; +import okhttp3.internal.tls.OkHostnameVerifier; +import okhttp3.logging.HttpLoggingInterceptor; +import okhttp3.logging.HttpLoggingInterceptor.Level; +import okio.Buffer; +import okio.BufferedSink; +import okio.Okio; + +import javax.net.ssl.*; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.lang.reflect.Type; +import java.net.URI; +import java.net.URLConnection; +import java.net.URLEncoder; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.security.GeneralSecurityException; +import java.security.KeyStore; +import java.security.SecureRandom; +import java.security.cert.Certificate; +import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; +import java.text.DateFormat; +import java.time.LocalDate; +import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.Map.Entry; +import java.util.concurrent.TimeUnit; +import java.util.function.Supplier; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.lthn.auth.Authentication; +import org.lthn.auth.HttpBasicAuth; +import org.lthn.auth.HttpBearerAuth; +import org.lthn.auth.ApiKeyAuth; + +/** + *

ApiClient class.

+ */ +public class ApiClient { + + protected String basePath = "http://127.0.0.1:36943"; + protected List servers = new ArrayList(Arrays.asList( + new ServerConfiguration( + "http://127.0.0.1:36943", + "Local Daemon", + new HashMap() + ), + new ServerConfiguration( + "http://seed.lethean.io:36943", + "Seed Server", + new HashMap() + ) + )); + protected Integer serverIndex = 0; + protected Map serverVariables = null; + protected boolean debugging = false; + protected Map defaultHeaderMap = new HashMap(); + protected Map defaultCookieMap = new HashMap(); + protected String tempFolderPath = null; + + protected Map authentications; + + protected DateFormat dateFormat; + protected DateFormat datetimeFormat; + protected boolean lenientDatetimeFormat; + protected int dateLength; + + protected InputStream sslCaCert; + protected boolean verifyingSsl; + protected KeyManager[] keyManagers; + + protected OkHttpClient httpClient; + protected JSON json; + + protected HttpLoggingInterceptor loggingInterceptor; + + /** + * Basic constructor for ApiClient + */ + public ApiClient() { + init(); + initHttpClient(); + + // Setup authentications (key: authentication name, value: authentication). + // Prevent the authentications from being modified. + authentications = Collections.unmodifiableMap(authentications); + } + + /** + * Basic constructor with custom OkHttpClient + * + * @param client a {@link okhttp3.OkHttpClient} object + */ + public ApiClient(OkHttpClient client) { + init(); + + httpClient = client; + + // Setup authentications (key: authentication name, value: authentication). + // Prevent the authentications from being modified. + authentications = Collections.unmodifiableMap(authentications); + } + + protected void initHttpClient() { + initHttpClient(Collections.emptyList()); + } + + protected void initHttpClient(List interceptors) { + OkHttpClient.Builder builder = new OkHttpClient.Builder(); + builder.addNetworkInterceptor(getProgressInterceptor()); + for (Interceptor interceptor: interceptors) { + builder.addInterceptor(interceptor); + } + + httpClient = builder.build(); + } + + protected void init() { + verifyingSsl = true; + + json = new JSON(); + + // Set default User-Agent. + setUserAgent("OpenAPI-Generator/6.0.1/java"); + + authentications = new HashMap(); + } + + /** + * Get base path + * + * @return Base path + */ + public String getBasePath() { + return basePath; + } + + /** + * Set base path + * + * @param basePath Base path of the URL (e.g http://127.0.0.1:36943) + * @return An instance of ApiClient + */ + public ApiClient setBasePath(String basePath) { + this.basePath = basePath; + this.serverIndex = null; + return this; + } + + public List getServers() { + return servers; + } + + public ApiClient setServers(List servers) { + this.servers = servers; + return this; + } + + public Integer getServerIndex() { + return serverIndex; + } + + public ApiClient setServerIndex(Integer serverIndex) { + this.serverIndex = serverIndex; + return this; + } + + public Map getServerVariables() { + return serverVariables; + } + + public ApiClient setServerVariables(Map serverVariables) { + this.serverVariables = serverVariables; + return this; + } + + /** + * Get HTTP client + * + * @return An instance of OkHttpClient + */ + public OkHttpClient getHttpClient() { + return httpClient; + } + + /** + * Set HTTP client, which must never be null. + * + * @param newHttpClient An instance of OkHttpClient + * @return ApiClient + * @throws java.lang.NullPointerException when newHttpClient is null + */ + public ApiClient setHttpClient(OkHttpClient newHttpClient) { + this.httpClient = Objects.requireNonNull(newHttpClient, "HttpClient must not be null!"); + return this; + } + + /** + * Get JSON + * + * @return JSON object + */ + public JSON getJSON() { + return json; + } + + /** + * Set JSON + * + * @param json JSON object + * @return Api client + */ + public ApiClient setJSON(JSON json) { + this.json = json; + return this; + } + + /** + * True if isVerifyingSsl flag is on + * + * @return True if isVerifySsl flag is on + */ + public boolean isVerifyingSsl() { + return verifyingSsl; + } + + /** + * Configure whether to verify certificate and hostname when making https requests. + * Default to true. + * NOTE: Do NOT set to false in production code, otherwise you would face multiple types of cryptographic attacks. + * + * @param verifyingSsl True to verify TLS/SSL connection + * @return ApiClient + */ + public ApiClient setVerifyingSsl(boolean verifyingSsl) { + this.verifyingSsl = verifyingSsl; + applySslSettings(); + return this; + } + + /** + * Get SSL CA cert. + * + * @return Input stream to the SSL CA cert + */ + public InputStream getSslCaCert() { + return sslCaCert; + } + + /** + * Configure the CA certificate to be trusted when making https requests. + * Use null to reset to default. + * + * @param sslCaCert input stream for SSL CA cert + * @return ApiClient + */ + public ApiClient setSslCaCert(InputStream sslCaCert) { + this.sslCaCert = sslCaCert; + applySslSettings(); + return this; + } + + /** + *

Getter for the field keyManagers.

+ * + * @return an array of {@link javax.net.ssl.KeyManager} objects + */ + public KeyManager[] getKeyManagers() { + return keyManagers; + } + + /** + * Configure client keys to use for authorization in an SSL session. + * Use null to reset to default. + * + * @param managers The KeyManagers to use + * @return ApiClient + */ + public ApiClient setKeyManagers(KeyManager[] managers) { + this.keyManagers = managers; + applySslSettings(); + return this; + } + + /** + *

Getter for the field dateFormat.

+ * + * @return a {@link java.text.DateFormat} object + */ + public DateFormat getDateFormat() { + return dateFormat; + } + + /** + *

Setter for the field dateFormat.

+ * + * @param dateFormat a {@link java.text.DateFormat} object + * @return a {@link org.lthn.ApiClient} object + */ + public ApiClient setDateFormat(DateFormat dateFormat) { + JSON.setDateFormat(dateFormat); + return this; + } + + /** + *

Set SqlDateFormat.

+ * + * @param dateFormat a {@link java.text.DateFormat} object + * @return a {@link org.lthn.ApiClient} object + */ + public ApiClient setSqlDateFormat(DateFormat dateFormat) { + JSON.setSqlDateFormat(dateFormat); + return this; + } + + /** + *

Set OffsetDateTimeFormat.

+ * + * @param dateFormat a {@link java.time.format.DateTimeFormatter} object + * @return a {@link org.lthn.ApiClient} object + */ + public ApiClient setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { + JSON.setOffsetDateTimeFormat(dateFormat); + return this; + } + + /** + *

Set LocalDateFormat.

+ * + * @param dateFormat a {@link java.time.format.DateTimeFormatter} object + * @return a {@link org.lthn.ApiClient} object + */ + public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { + JSON.setLocalDateFormat(dateFormat); + return this; + } + + /** + *

Set LenientOnJson.

+ * + * @param lenientOnJson a boolean + * @return a {@link org.lthn.ApiClient} object + */ + public ApiClient setLenientOnJson(boolean lenientOnJson) { + JSON.setLenientOnJson(lenientOnJson); + return this; + } + + /** + * Get authentications (key: authentication name, value: authentication). + * + * @return Map of authentication objects + */ + public Map getAuthentications() { + return authentications; + } + + /** + * Get authentication for the given name. + * + * @param authName The authentication name + * @return The authentication, null if not found + */ + public Authentication getAuthentication(String authName) { + return authentications.get(authName); + } + + + /** + * Helper method to set username for the first HTTP basic authentication. + * + * @param username Username + */ + public void setUsername(String username) { + for (Authentication auth : authentications.values()) { + if (auth instanceof HttpBasicAuth) { + ((HttpBasicAuth) auth).setUsername(username); + return; + } + } + throw new RuntimeException("No HTTP basic authentication configured!"); + } + + /** + * Helper method to set password for the first HTTP basic authentication. + * + * @param password Password + */ + public void setPassword(String password) { + for (Authentication auth : authentications.values()) { + if (auth instanceof HttpBasicAuth) { + ((HttpBasicAuth) auth).setPassword(password); + return; + } + } + throw new RuntimeException("No HTTP basic authentication configured!"); + } + + /** + * Helper method to set API key value for the first API key authentication. + * + * @param apiKey API key + */ + public void setApiKey(String apiKey) { + for (Authentication auth : authentications.values()) { + if (auth instanceof ApiKeyAuth) { + ((ApiKeyAuth) auth).setApiKey(apiKey); + return; + } + } + throw new RuntimeException("No API key authentication configured!"); + } + + /** + * Helper method to set API key prefix for the first API key authentication. + * + * @param apiKeyPrefix API key prefix + */ + public void setApiKeyPrefix(String apiKeyPrefix) { + for (Authentication auth : authentications.values()) { + if (auth instanceof ApiKeyAuth) { + ((ApiKeyAuth) auth).setApiKeyPrefix(apiKeyPrefix); + return; + } + } + throw new RuntimeException("No API key authentication configured!"); + } + + /** + * Helper method to set access token for the first OAuth2 authentication. + * + * @param accessToken Access token + */ + public void setAccessToken(String accessToken) { + throw new RuntimeException("No OAuth2 authentication configured!"); + } + + /** + * Helper method to set credentials for AWSV4 Signature + * + * @param accessKey Access Key + * @param secretKey Secret Key + * @param region Region + * @param service Service to access to + */ + public void setAWS4Configuration(String accessKey, String secretKey, String region, String service) { + throw new RuntimeException("No AWS4 authentication configured!"); + } + + /** + * Helper method to set credentials for AWSV4 Signature + * + * @param accessKey Access Key + * @param secretKey Secret Key + * @param sessionToken Session Token + * @param region Region + * @param service Service to access to + */ + public void setAWS4Configuration(String accessKey, String secretKey, String sessionToken, String region, String service) { + throw new RuntimeException("No AWS4 authentication configured!"); + } + + /** + * Set the User-Agent header's value (by adding to the default header map). + * + * @param userAgent HTTP request's user agent + * @return ApiClient + */ + public ApiClient setUserAgent(String userAgent) { + addDefaultHeader("User-Agent", userAgent); + return this; + } + + /** + * Add a default header. + * + * @param key The header's key + * @param value The header's value + * @return ApiClient + */ + public ApiClient addDefaultHeader(String key, String value) { + defaultHeaderMap.put(key, value); + return this; + } + + /** + * Add a default cookie. + * + * @param key The cookie's key + * @param value The cookie's value + * @return ApiClient + */ + public ApiClient addDefaultCookie(String key, String value) { + defaultCookieMap.put(key, value); + return this; + } + + /** + * Check that whether debugging is enabled for this API client. + * + * @return True if debugging is enabled, false otherwise. + */ + public boolean isDebugging() { + return debugging; + } + + /** + * Enable/disable debugging for this API client. + * + * @param debugging To enable (true) or disable (false) debugging + * @return ApiClient + */ + public ApiClient setDebugging(boolean debugging) { + if (debugging != this.debugging) { + if (debugging) { + loggingInterceptor = new HttpLoggingInterceptor(); + loggingInterceptor.setLevel(Level.BODY); + httpClient = httpClient.newBuilder().addInterceptor(loggingInterceptor).build(); + } else { + final OkHttpClient.Builder builder = httpClient.newBuilder(); + builder.interceptors().remove(loggingInterceptor); + httpClient = builder.build(); + loggingInterceptor = null; + } + } + this.debugging = debugging; + return this; + } + + /** + * The path of temporary folder used to store downloaded files from endpoints + * with file response. The default value is null, i.e. using + * the system's default temporary folder. + * + * @see createTempFile + * @return Temporary folder path + */ + public String getTempFolderPath() { + return tempFolderPath; + } + + /** + * Set the temporary folder path (for downloading files) + * + * @param tempFolderPath Temporary folder path + * @return ApiClient + */ + public ApiClient setTempFolderPath(String tempFolderPath) { + this.tempFolderPath = tempFolderPath; + return this; + } + + /** + * Get connection timeout (in milliseconds). + * + * @return Timeout in milliseconds + */ + public int getConnectTimeout() { + return httpClient.connectTimeoutMillis(); + } + + /** + * Sets the connect timeout (in milliseconds). + * A value of 0 means no timeout, otherwise values must be between 1 and + * {@link java.lang.Integer#MAX_VALUE}. + * + * @param connectionTimeout connection timeout in milliseconds + * @return Api client + */ + public ApiClient setConnectTimeout(int connectionTimeout) { + httpClient = httpClient.newBuilder().connectTimeout(connectionTimeout, TimeUnit.MILLISECONDS).build(); + return this; + } + + /** + * Get read timeout (in milliseconds). + * + * @return Timeout in milliseconds + */ + public int getReadTimeout() { + return httpClient.readTimeoutMillis(); + } + + /** + * Sets the read timeout (in milliseconds). + * A value of 0 means no timeout, otherwise values must be between 1 and + * {@link java.lang.Integer#MAX_VALUE}. + * + * @param readTimeout read timeout in milliseconds + * @return Api client + */ + public ApiClient setReadTimeout(int readTimeout) { + httpClient = httpClient.newBuilder().readTimeout(readTimeout, TimeUnit.MILLISECONDS).build(); + return this; + } + + /** + * Get write timeout (in milliseconds). + * + * @return Timeout in milliseconds + */ + public int getWriteTimeout() { + return httpClient.writeTimeoutMillis(); + } + + /** + * Sets the write timeout (in milliseconds). + * A value of 0 means no timeout, otherwise values must be between 1 and + * {@link java.lang.Integer#MAX_VALUE}. + * + * @param writeTimeout connection timeout in milliseconds + * @return Api client + */ + public ApiClient setWriteTimeout(int writeTimeout) { + httpClient = httpClient.newBuilder().writeTimeout(writeTimeout, TimeUnit.MILLISECONDS).build(); + return this; + } + + + /** + * Format the given parameter object into string. + * + * @param param Parameter + * @return String representation of the parameter + */ + public String parameterToString(Object param) { + if (param == null) { + return ""; + } else if (param instanceof Date || param instanceof OffsetDateTime || param instanceof LocalDate) { + //Serialize to json string and remove the " enclosing characters + String jsonStr = JSON.serialize(param); + return jsonStr.substring(1, jsonStr.length() - 1); + } else if (param instanceof Collection) { + StringBuilder b = new StringBuilder(); + for (Object o : (Collection) param) { + if (b.length() > 0) { + b.append(","); + } + b.append(o); + } + return b.toString(); + } else { + return String.valueOf(param); + } + } + + /** + * Formats the specified query parameter to a list containing a single {@code Pair} object. + * + * Note that {@code value} must not be a collection. + * + * @param name The name of the parameter. + * @param value The value of the parameter. + * @return A list containing a single {@code Pair} object. + */ + public List parameterToPair(String name, Object value) { + List params = new ArrayList(); + + // preconditions + if (name == null || name.isEmpty() || value == null || value instanceof Collection) { + return params; + } + + params.add(new Pair(name, parameterToString(value))); + return params; + } + + /** + * Formats the specified collection query parameters to a list of {@code Pair} objects. + * + * Note that the values of each of the returned Pair objects are percent-encoded. + * + * @param collectionFormat The collection format of the parameter. + * @param name The name of the parameter. + * @param value The value of the parameter. + * @return A list of {@code Pair} objects. + */ + public List parameterToPairs(String collectionFormat, String name, Collection value) { + List params = new ArrayList(); + + // preconditions + if (name == null || name.isEmpty() || value == null || value.isEmpty()) { + return params; + } + + // create the params based on the collection format + if ("multi".equals(collectionFormat)) { + for (Object item : value) { + params.add(new Pair(name, escapeString(parameterToString(item)))); + } + return params; + } + + // collectionFormat is assumed to be "csv" by default + String delimiter = ","; + + // escape all delimiters except commas, which are URI reserved + // characters + if ("ssv".equals(collectionFormat)) { + delimiter = escapeString(" "); + } else if ("tsv".equals(collectionFormat)) { + delimiter = escapeString("\t"); + } else if ("pipes".equals(collectionFormat)) { + delimiter = escapeString("|"); + } + + StringBuilder sb = new StringBuilder(); + for (Object item : value) { + sb.append(delimiter); + sb.append(escapeString(parameterToString(item))); + } + + params.add(new Pair(name, sb.substring(delimiter.length()))); + + return params; + } + + /** + * Formats the specified free-form query parameters to a list of {@code Pair} objects. + * + * @param value The free-form query parameters. + * @return A list of {@code Pair} objects. + */ + public List freeFormParameterToPairs(Object value) { + List params = new ArrayList<>(); + + // preconditions + if (value == null || !(value instanceof Map )) { + return params; + } + + @SuppressWarnings("unchecked") + final Map valuesMap = (Map) value; + + for (Map.Entry entry : valuesMap.entrySet()) { + params.add(new Pair(entry.getKey(), parameterToString(entry.getValue()))); + } + + return params; + } + + + /** + * Formats the specified collection path parameter to a string value. + * + * @param collectionFormat The collection format of the parameter. + * @param value The value of the parameter. + * @return String representation of the parameter + */ + public String collectionPathParameterToString(String collectionFormat, Collection value) { + // create the value based on the collection format + if ("multi".equals(collectionFormat)) { + // not valid for path params + return parameterToString(value); + } + + // collectionFormat is assumed to be "csv" by default + String delimiter = ","; + + if ("ssv".equals(collectionFormat)) { + delimiter = " "; + } else if ("tsv".equals(collectionFormat)) { + delimiter = "\t"; + } else if ("pipes".equals(collectionFormat)) { + delimiter = "|"; + } + + StringBuilder sb = new StringBuilder() ; + for (Object item : value) { + sb.append(delimiter); + sb.append(parameterToString(item)); + } + + return sb.substring(delimiter.length()); + } + + /** + * Sanitize filename by removing path. + * e.g. ../../sun.gif becomes sun.gif + * + * @param filename The filename to be sanitized + * @return The sanitized filename + */ + public String sanitizeFilename(String filename) { + return filename.replaceFirst("^.*[/\\\\]", ""); + } + + /** + * Check if the given MIME is a JSON MIME. + * JSON MIME examples: + * application/json + * application/json; charset=UTF8 + * APPLICATION/JSON + * application/vnd.company+json + * "* / *" is also default to JSON + * @param mime MIME (Multipurpose Internet Mail Extensions) + * @return True if the given MIME is JSON, false otherwise. + */ + public boolean isJsonMime(String mime) { + String jsonMime = "(?i)^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$"; + return mime != null && (mime.matches(jsonMime) || mime.equals("*/*")); + } + + /** + * Select the Accept header's value from the given accepts array: + * if JSON exists in the given array, use it; + * otherwise use all of them (joining into a string) + * + * @param accepts The accepts array to select from + * @return The Accept header to use. If the given array is empty, + * null will be returned (not to set the Accept header explicitly). + */ + public String selectHeaderAccept(String[] accepts) { + if (accepts.length == 0) { + return null; + } + for (String accept : accepts) { + if (isJsonMime(accept)) { + return accept; + } + } + return StringUtil.join(accepts, ","); + } + + /** + * Select the Content-Type header's value from the given array: + * if JSON exists in the given array, use it; + * otherwise use the first one of the array. + * + * @param contentTypes The Content-Type array to select from + * @return The Content-Type header to use. If the given array is empty, + * returns null. If it matches "any", JSON will be used. + */ + public String selectHeaderContentType(String[] contentTypes) { + if (contentTypes.length == 0) { + return null; + } + + if (contentTypes[0].equals("*/*")) { + return "application/json"; + } + + for (String contentType : contentTypes) { + if (isJsonMime(contentType)) { + return contentType; + } + } + + return contentTypes[0]; + } + + /** + * Escape the given string to be used as URL query value. + * + * @param str String to be escaped + * @return Escaped string + */ + public String escapeString(String str) { + try { + return URLEncoder.encode(str, "utf8").replaceAll("\\+", "%20"); + } catch (UnsupportedEncodingException e) { + return str; + } + } + + /** + * Deserialize response body to Java object, according to the return type and + * the Content-Type response header. + * + * @param Type + * @param response HTTP response + * @param returnType The type of the Java object + * @return The deserialized Java object + * @throws org.lthn.ApiException If fail to deserialize response body, i.e. cannot read response body + * or the Content-Type of the response is not supported. + */ + @SuppressWarnings("unchecked") + public T deserialize(Response response, Type returnType) throws ApiException { + if (response == null || returnType == null) { + return null; + } + + if ("byte[]".equals(returnType.toString())) { + // Handle binary response (byte array). + try { + return (T) response.body().bytes(); + } catch (IOException e) { + throw new ApiException(e); + } + } else if (returnType.equals(File.class)) { + // Handle file downloading. + return (T) downloadFileFromResponse(response); + } + + ResponseBody respBody = response.body(); + if (respBody == null) { + return null; + } + + String contentType = response.headers().get("Content-Type"); + if (contentType == null) { + // ensuring a default content type + contentType = "application/json"; + } + try { + if (isJsonMime(contentType)) { + return JSON.deserialize(respBody.byteStream(), returnType); + } else if (returnType.equals(String.class)) { + String respBodyString = respBody.string(); + if (respBodyString.isEmpty()) { + return null; + } + // Expecting string, return the raw response body. + return (T) respBodyString; + } else { + throw new ApiException( + "Content type \"" + contentType + "\" is not supported for type: " + returnType, + response.code(), + response.headers().toMultimap(), + response.body().string()); + } + } catch (IOException e) { + throw new ApiException(e); + } + } + + /** + * Serialize the given Java object into request body according to the object's + * class and the request Content-Type. + * + * @param obj The Java object + * @param contentType The request Content-Type + * @return The serialized request body + * @throws org.lthn.ApiException If fail to serialize the given object + */ + public RequestBody serialize(Object obj, String contentType) throws ApiException { + if (obj instanceof byte[]) { + // Binary (byte array) body parameter support. + return RequestBody.create((byte[]) obj, MediaType.parse(contentType)); + } else if (obj instanceof File) { + // File body parameter support. + return RequestBody.create((File) obj, MediaType.parse(contentType)); + } else if ("text/plain".equals(contentType) && obj instanceof String) { + return RequestBody.create((String) obj, MediaType.parse(contentType)); + } else if (isJsonMime(contentType)) { + String content; + if (obj != null) { + content = JSON.serialize(obj); + } else { + content = null; + } + return RequestBody.create(content, MediaType.parse(contentType)); + } else if (obj instanceof String) { + return RequestBody.create((String) obj, MediaType.parse(contentType)); + } else { + throw new ApiException("Content type \"" + contentType + "\" is not supported"); + } + } + + /** + * Download file from the given response. + * + * @param response An instance of the Response object + * @throws org.lthn.ApiException If fail to read file content from response and write to disk + * @return Downloaded file + */ + public File downloadFileFromResponse(Response response) throws ApiException { + try { + File file = prepareDownloadFile(response); + BufferedSink sink = Okio.buffer(Okio.sink(file)); + sink.writeAll(response.body().source()); + sink.close(); + return file; + } catch (IOException e) { + throw new ApiException(e); + } + } + + /** + * Prepare file for download + * + * @param response An instance of the Response object + * @return Prepared file for the download + * @throws java.io.IOException If fail to prepare file for download + */ + public File prepareDownloadFile(Response response) throws IOException { + String filename = null; + String contentDisposition = response.header("Content-Disposition"); + if (contentDisposition != null && !"".equals(contentDisposition)) { + // Get filename from the Content-Disposition header. + Pattern pattern = Pattern.compile("filename=['\"]?([^'\"\\s]+)['\"]?"); + Matcher matcher = pattern.matcher(contentDisposition); + if (matcher.find()) { + filename = sanitizeFilename(matcher.group(1)); + } + } + + String prefix = null; + String suffix = null; + if (filename == null) { + prefix = "download-"; + suffix = ""; + } else { + int pos = filename.lastIndexOf("."); + if (pos == -1) { + prefix = filename + "-"; + } else { + prefix = filename.substring(0, pos) + "-"; + suffix = filename.substring(pos); + } + // Files.createTempFile requires the prefix to be at least three characters long + if (prefix.length() < 3) + prefix = "download-"; + } + + if (tempFolderPath == null) + return Files.createTempFile(prefix, suffix).toFile(); + else + return Files.createTempFile(Paths.get(tempFolderPath), prefix, suffix).toFile(); + } + + /** + * {@link #execute(Call, Type)} + * + * @param Type + * @param call An instance of the Call object + * @return ApiResponse<T> + * @throws org.lthn.ApiException If fail to execute the call + */ + public ApiResponse execute(Call call) throws ApiException { + return execute(call, null); + } + + /** + * Execute HTTP call and deserialize the HTTP response body into the given return type. + * + * @param returnType The return type used to deserialize HTTP response body + * @param The return type corresponding to (same with) returnType + * @param call Call + * @return ApiResponse object containing response status, headers and + * data, which is a Java object deserialized from response body and would be null + * when returnType is null. + * @throws org.lthn.ApiException If fail to execute the call + */ + public ApiResponse execute(Call call, Type returnType) throws ApiException { + try { + Response response = call.execute(); + T data = handleResponse(response, returnType); + return new ApiResponse(response.code(), response.headers().toMultimap(), data); + } catch (IOException e) { + throw new ApiException(e); + } + } + + /** + * {@link #executeAsync(Call, Type, ApiCallback)} + * + * @param Type + * @param call An instance of the Call object + * @param callback ApiCallback<T> + */ + public void executeAsync(Call call, ApiCallback callback) { + executeAsync(call, null, callback); + } + + /** + * Execute HTTP call asynchronously. + * + * @param Type + * @param call The callback to be executed when the API call finishes + * @param returnType Return type + * @param callback ApiCallback + * @see #execute(Call, Type) + */ + @SuppressWarnings("unchecked") + public void executeAsync(Call call, final Type returnType, final ApiCallback callback) { + call.enqueue(new Callback() { + @Override + public void onFailure(Call call, IOException e) { + callback.onFailure(new ApiException(e), 0, null); + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + T result; + try { + result = (T) handleResponse(response, returnType); + } catch (ApiException e) { + callback.onFailure(e, response.code(), response.headers().toMultimap()); + return; + } catch (Exception e) { + callback.onFailure(new ApiException(e), response.code(), response.headers().toMultimap()); + return; + } + callback.onSuccess(result, response.code(), response.headers().toMultimap()); + } + }); + } + + /** + * Handle the given response, return the deserialized object when the response is successful. + * + * @param Type + * @param response Response + * @param returnType Return type + * @return Type + * @throws org.lthn.ApiException If the response has an unsuccessful status code or + * fail to deserialize the response body + */ + public T handleResponse(Response response, Type returnType) throws ApiException { + if (response.isSuccessful()) { + if (returnType == null || response.code() == 204) { + // returning null if the returnType is not defined, + // or the status code is 204 (No Content) + if (response.body() != null) { + try { + response.body().close(); + } catch (Exception e) { + throw new ApiException(response.message(), e, response.code(), response.headers().toMultimap()); + } + } + return null; + } else { + return deserialize(response, returnType); + } + } else { + String respBody = null; + if (response.body() != null) { + try { + respBody = response.body().string(); + } catch (IOException e) { + throw new ApiException(response.message(), e, response.code(), response.headers().toMultimap()); + } + } + throw new ApiException(response.message(), response.code(), response.headers().toMultimap(), respBody); + } + } + + /** + * Build HTTP call with the given options. + * + * @param baseUrl The base URL + * @param path The sub-path of the HTTP URL + * @param method The request method, one of "GET", "HEAD", "OPTIONS", "POST", "PUT", "PATCH" and "DELETE" + * @param queryParams The query parameters + * @param collectionQueryParams The collection query parameters + * @param body The request body object + * @param headerParams The header parameters + * @param cookieParams The cookie parameters + * @param formParams The form parameters + * @param authNames The authentications to apply + * @param callback Callback for upload/download progress + * @return The HTTP call + * @throws org.lthn.ApiException If fail to serialize the request body object + */ + public Call buildCall(String baseUrl, String path, String method, List queryParams, List collectionQueryParams, Object body, Map headerParams, Map cookieParams, Map formParams, String[] authNames, ApiCallback callback) throws ApiException { + Request request = buildRequest(baseUrl, path, method, queryParams, collectionQueryParams, body, headerParams, cookieParams, formParams, authNames, callback); + + return httpClient.newCall(request); + } + + /** + * Build an HTTP request with the given options. + * + * @param baseUrl The base URL + * @param path The sub-path of the HTTP URL + * @param method The request method, one of "GET", "HEAD", "OPTIONS", "POST", "PUT", "PATCH" and "DELETE" + * @param queryParams The query parameters + * @param collectionQueryParams The collection query parameters + * @param body The request body object + * @param headerParams The header parameters + * @param cookieParams The cookie parameters + * @param formParams The form parameters + * @param authNames The authentications to apply + * @param callback Callback for upload/download progress + * @return The HTTP request + * @throws org.lthn.ApiException If fail to serialize the request body object + */ + public Request buildRequest(String baseUrl, String path, String method, List queryParams, List collectionQueryParams, Object body, Map headerParams, Map cookieParams, Map formParams, String[] authNames, ApiCallback callback) throws ApiException { + final String url = buildUrl(baseUrl, path, queryParams, collectionQueryParams); + + // prepare HTTP request body + RequestBody reqBody; + String contentType = headerParams.get("Content-Type"); + String contentTypePure = contentType; + if (contentTypePure != null && contentTypePure.contains(";")) { + contentTypePure = contentType.substring(0, contentType.indexOf(";")); + } + if (!HttpMethod.permitsRequestBody(method)) { + reqBody = null; + } else if ("application/x-www-form-urlencoded".equals(contentTypePure)) { + reqBody = buildRequestBodyFormEncoding(formParams); + } else if ("multipart/form-data".equals(contentTypePure)) { + reqBody = buildRequestBodyMultipart(formParams); + } else if (body == null) { + if ("DELETE".equals(method)) { + // allow calling DELETE without sending a request body + reqBody = null; + } else { + // use an empty request body (for POST, PUT and PATCH) + reqBody = RequestBody.create("", contentType == null ? null : MediaType.parse(contentType)); + } + } else { + reqBody = serialize(body, contentType); + } + + List updatedQueryParams = new ArrayList<>(queryParams); + + // update parameters with authentication settings + updateParamsForAuth(authNames, updatedQueryParams, headerParams, cookieParams, requestBodyToString(reqBody), method, URI.create(url)); + + final Request.Builder reqBuilder = new Request.Builder().url(buildUrl(baseUrl, path, updatedQueryParams, collectionQueryParams)); + processHeaderParams(headerParams, reqBuilder); + processCookieParams(cookieParams, reqBuilder); + + // Associate callback with request (if not null) so interceptor can + // access it when creating ProgressResponseBody + reqBuilder.tag(callback); + + Request request = null; + + if (callback != null && reqBody != null) { + ProgressRequestBody progressRequestBody = new ProgressRequestBody(reqBody, callback); + request = reqBuilder.method(method, progressRequestBody).build(); + } else { + request = reqBuilder.method(method, reqBody).build(); + } + + return request; + } + + /** + * Build full URL by concatenating base path, the given sub path and query parameters. + * + * @param baseUrl The base URL + * @param path The sub path + * @param queryParams The query parameters + * @param collectionQueryParams The collection query parameters + * @return The full URL + */ + public String buildUrl(String baseUrl, String path, List queryParams, List collectionQueryParams) { + final StringBuilder url = new StringBuilder(); + if (baseUrl != null) { + url.append(baseUrl).append(path); + } else { + String baseURL; + if (serverIndex != null) { + if (serverIndex < 0 || serverIndex >= servers.size()) { + throw new ArrayIndexOutOfBoundsException(String.format( + Locale.ROOT, + "Invalid index %d when selecting the host settings. Must be less than %d", serverIndex, servers.size() + )); + } + baseURL = servers.get(serverIndex).URL(serverVariables); + } else { + baseURL = basePath; + } + url.append(baseURL).append(path); + } + + if (queryParams != null && !queryParams.isEmpty()) { + // support (constant) query string in `path`, e.g. "/posts?draft=1" + String prefix = path.contains("?") ? "&" : "?"; + for (Pair param : queryParams) { + if (param.getValue() != null) { + if (prefix != null) { + url.append(prefix); + prefix = null; + } else { + url.append("&"); + } + String value = parameterToString(param.getValue()); + url.append(escapeString(param.getName())).append("=").append(escapeString(value)); + } + } + } + + if (collectionQueryParams != null && !collectionQueryParams.isEmpty()) { + String prefix = url.toString().contains("?") ? "&" : "?"; + for (Pair param : collectionQueryParams) { + if (param.getValue() != null) { + if (prefix != null) { + url.append(prefix); + prefix = null; + } else { + url.append("&"); + } + String value = parameterToString(param.getValue()); + // collection query parameter value already escaped as part of parameterToPairs + url.append(escapeString(param.getName())).append("=").append(value); + } + } + } + + return url.toString(); + } + + /** + * Set header parameters to the request builder, including default headers. + * + * @param headerParams Header parameters in the form of Map + * @param reqBuilder Request.Builder + */ + public void processHeaderParams(Map headerParams, Request.Builder reqBuilder) { + for (Entry param : headerParams.entrySet()) { + reqBuilder.header(param.getKey(), parameterToString(param.getValue())); + } + for (Entry header : defaultHeaderMap.entrySet()) { + if (!headerParams.containsKey(header.getKey())) { + reqBuilder.header(header.getKey(), parameterToString(header.getValue())); + } + } + } + + /** + * Set cookie parameters to the request builder, including default cookies. + * + * @param cookieParams Cookie parameters in the form of Map + * @param reqBuilder Request.Builder + */ + public void processCookieParams(Map cookieParams, Request.Builder reqBuilder) { + for (Entry param : cookieParams.entrySet()) { + reqBuilder.addHeader("Cookie", String.format(Locale.ROOT, "%s=%s", param.getKey(), param.getValue())); + } + for (Entry param : defaultCookieMap.entrySet()) { + if (!cookieParams.containsKey(param.getKey())) { + reqBuilder.addHeader("Cookie", String.format(Locale.ROOT, "%s=%s", param.getKey(), param.getValue())); + } + } + } + + /** + * Update query and header parameters based on authentication settings. + * + * @param authNames The authentications to apply + * @param queryParams List of query parameters + * @param headerParams Map of header parameters + * @param cookieParams Map of cookie parameters + * @param payload HTTP request body + * @param method HTTP method + * @param uri URI + * @throws org.lthn.ApiException If fails to update the parameters + */ + public void updateParamsForAuth(String[] authNames, List queryParams, Map headerParams, + Map cookieParams, String payload, String method, URI uri) throws ApiException { + for (String authName : authNames) { + Authentication auth = authentications.get(authName); + if (auth == null) { + throw new RuntimeException("Authentication undefined: " + authName); + } + auth.applyToParams(queryParams, headerParams, cookieParams, payload, method, uri); + } + } + + /** + * Build a form-encoding request body with the given form parameters. + * + * @param formParams Form parameters in the form of Map + * @return RequestBody + */ + public RequestBody buildRequestBodyFormEncoding(Map formParams) { + okhttp3.FormBody.Builder formBuilder = new okhttp3.FormBody.Builder(); + for (Entry param : formParams.entrySet()) { + formBuilder.add(param.getKey(), parameterToString(param.getValue())); + } + return formBuilder.build(); + } + + /** + * Build a multipart (file uploading) request body with the given form parameters, + * which could contain text fields and file fields. + * + * @param formParams Form parameters in the form of Map + * @return RequestBody + */ + public RequestBody buildRequestBodyMultipart(Map formParams) { + MultipartBody.Builder mpBuilder = new MultipartBody.Builder().setType(MultipartBody.FORM); + for (Entry param : formParams.entrySet()) { + if (param.getValue() instanceof File) { + File file = (File) param.getValue(); + addPartToMultiPartBuilder(mpBuilder, param.getKey(), file); + } else if (param.getValue() instanceof List) { + List list = (List) param.getValue(); + for (Object item: list) { + if (item instanceof File) { + addPartToMultiPartBuilder(mpBuilder, param.getKey(), (File) item); + } else { + addPartToMultiPartBuilder(mpBuilder, param.getKey(), param.getValue()); + } + } + } else { + addPartToMultiPartBuilder(mpBuilder, param.getKey(), param.getValue()); + } + } + return mpBuilder.build(); + } + + /** + * Guess Content-Type header from the given file (defaults to "application/octet-stream"). + * + * @param file The given file + * @return The guessed Content-Type + */ + public String guessContentTypeFromFile(File file) { + String contentType = URLConnection.guessContentTypeFromName(file.getName()); + if (contentType == null) { + return "application/octet-stream"; + } else { + return contentType; + } + } + + /** + * Add a Content-Disposition Header for the given key and file to the MultipartBody Builder. + * + * @param mpBuilder MultipartBody.Builder + * @param key The key of the Header element + * @param file The file to add to the Header + */ + protected void addPartToMultiPartBuilder(MultipartBody.Builder mpBuilder, String key, File file) { + Headers partHeaders = Headers.of("Content-Disposition", "form-data; name=\"" + key + "\"; filename=\"" + file.getName() + "\""); + MediaType mediaType = MediaType.parse(guessContentTypeFromFile(file)); + mpBuilder.addPart(partHeaders, RequestBody.create(file, mediaType)); + } + + /** + * Add a Content-Disposition Header for the given key and complex object to the MultipartBody Builder. + * + * @param mpBuilder MultipartBody.Builder + * @param key The key of the Header element + * @param obj The complex object to add to the Header + */ + protected void addPartToMultiPartBuilder(MultipartBody.Builder mpBuilder, String key, Object obj) { + RequestBody requestBody; + if (obj instanceof String) { + requestBody = RequestBody.create((String) obj, MediaType.parse("text/plain")); + } else { + String content; + if (obj != null) { + content = JSON.serialize(obj); + } else { + content = null; + } + requestBody = RequestBody.create(content, MediaType.parse("application/json")); + } + + Headers partHeaders = Headers.of("Content-Disposition", "form-data; name=\"" + key + "\""); + mpBuilder.addPart(partHeaders, requestBody); + } + + /** + * Get network interceptor to add it to the httpClient to track download progress for + * async requests. + */ + protected Interceptor getProgressInterceptor() { + return new Interceptor() { + @Override + public Response intercept(Interceptor.Chain chain) throws IOException { + final Request request = chain.request(); + final Response originalResponse = chain.proceed(request); + if (request.tag() instanceof ApiCallback) { + final ApiCallback callback = (ApiCallback) request.tag(); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), callback)) + .build(); + } + return originalResponse; + } + }; + } + + /** + * Apply SSL related settings to httpClient according to the current values of + * verifyingSsl and sslCaCert. + */ + protected void applySslSettings() { + try { + TrustManager[] trustManagers; + HostnameVerifier hostnameVerifier; + if (!verifyingSsl) { + trustManagers = new TrustManager[]{ + new X509TrustManager() { + @Override + public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { + } + + @Override + public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { + } + + @Override + public java.security.cert.X509Certificate[] getAcceptedIssuers() { + return new java.security.cert.X509Certificate[]{}; + } + } + }; + hostnameVerifier = new HostnameVerifier() { + @Override + public boolean verify(String hostname, SSLSession session) { + return true; + } + }; + } else { + TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + + if (sslCaCert == null) { + trustManagerFactory.init((KeyStore) null); + } else { + char[] password = null; // Any password will work. + CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); + Collection certificates = certificateFactory.generateCertificates(sslCaCert); + if (certificates.isEmpty()) { + throw new IllegalArgumentException("expected non-empty set of trusted certificates"); + } + KeyStore caKeyStore = newEmptyKeyStore(password); + int index = 0; + for (Certificate certificate : certificates) { + String certificateAlias = "ca" + (index++); + caKeyStore.setCertificateEntry(certificateAlias, certificate); + } + trustManagerFactory.init(caKeyStore); + } + trustManagers = trustManagerFactory.getTrustManagers(); + hostnameVerifier = OkHostnameVerifier.INSTANCE; + } + + SSLContext sslContext = SSLContext.getInstance("TLS"); + sslContext.init(keyManagers, trustManagers, new SecureRandom()); + httpClient = httpClient.newBuilder() + .sslSocketFactory(sslContext.getSocketFactory(), (X509TrustManager) trustManagers[0]) + .hostnameVerifier(hostnameVerifier) + .build(); + } catch (GeneralSecurityException e) { + throw new RuntimeException(e); + } + } + + protected KeyStore newEmptyKeyStore(char[] password) throws GeneralSecurityException { + try { + KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); + keyStore.load(null, password); + return keyStore; + } catch (IOException e) { + throw new AssertionError(e); + } + } + + /** + * Convert the HTTP request body to a string. + * + * @param requestBody The HTTP request object + * @return The string representation of the HTTP request body + * @throws org.lthn.ApiException If fail to serialize the request body object into a string + */ + protected String requestBodyToString(RequestBody requestBody) throws ApiException { + if (requestBody != null) { + try { + final Buffer buffer = new Buffer(); + requestBody.writeTo(buffer); + return buffer.readUtf8(); + } catch (final IOException e) { + throw new ApiException(e); + } + } + + // empty http request body + return ""; + } +} diff --git a/utils/sdk/client/java/src/main/java/org/lthn/ApiException.java b/utils/sdk/client/java/src/main/java/org/lthn/ApiException.java new file mode 100644 index 00000000..cb1ad3ae --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/lthn/ApiException.java @@ -0,0 +1,168 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.lthn; + +import java.util.Map; +import java.util.List; +import java.util.Locale; + + +/** + *

ApiException class.

+ */ +@SuppressWarnings("serial") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:31:48.909623+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class ApiException extends Exception { + private static final long serialVersionUID = 1L; + + private int code = 0; + private Map> responseHeaders = null; + private String responseBody = null; + + /** + *

Constructor for ApiException.

+ */ + public ApiException() {} + + /** + *

Constructor for ApiException.

+ * + * @param throwable a {@link java.lang.Throwable} object + */ + public ApiException(Throwable throwable) { + super(throwable); + } + + /** + *

Constructor for ApiException.

+ * + * @param message the error message + */ + public ApiException(String message) { + super(message); + } + + /** + *

Constructor for ApiException.

+ * + * @param message the error message + * @param throwable a {@link java.lang.Throwable} object + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ + public ApiException(String message, Throwable throwable, int code, Map> responseHeaders, String responseBody) { + super(message, throwable); + this.code = code; + this.responseHeaders = responseHeaders; + this.responseBody = responseBody; + } + + /** + *

Constructor for ApiException.

+ * + * @param message the error message + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ + public ApiException(String message, int code, Map> responseHeaders, String responseBody) { + this(message, (Throwable) null, code, responseHeaders, responseBody); + } + + /** + *

Constructor for ApiException.

+ * + * @param message the error message + * @param throwable a {@link java.lang.Throwable} object + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + */ + public ApiException(String message, Throwable throwable, int code, Map> responseHeaders) { + this(message, throwable, code, responseHeaders, null); + } + + /** + *

Constructor for ApiException.

+ * + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ + public ApiException(int code, Map> responseHeaders, String responseBody) { + this("Response Code: " + code + " Response Body: " + responseBody, (Throwable) null, code, responseHeaders, responseBody); + } + + /** + *

Constructor for ApiException.

+ * + * @param code HTTP status code + * @param message a {@link java.lang.String} object + */ + public ApiException(int code, String message) { + super(message); + this.code = code; + } + + /** + *

Constructor for ApiException.

+ * + * @param code HTTP status code + * @param message the error message + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ + public ApiException(int code, String message, Map> responseHeaders, String responseBody) { + this(code, message); + this.responseHeaders = responseHeaders; + this.responseBody = responseBody; + } + + /** + * Get the HTTP status code. + * + * @return HTTP status code + */ + public int getCode() { + return code; + } + + /** + * Get the HTTP response headers. + * + * @return A map of list of string + */ + public Map> getResponseHeaders() { + return responseHeaders; + } + + /** + * Get the HTTP response body. + * + * @return Response body in the form of string + */ + public String getResponseBody() { + return responseBody; + } + + /** + * Get the exception message including HTTP response data. + * + * @return The exception message + */ + public String getMessage() { + return String.format(Locale.ROOT, "Message: %s%nHTTP response code: %s%nHTTP response body: %s%nHTTP response headers: %s", + super.getMessage(), this.getCode(), this.getResponseBody(), this.getResponseHeaders()); + } +} diff --git a/utils/sdk/client/java/src/main/java/org/lthn/ApiResponse.java b/utils/sdk/client/java/src/main/java/org/lthn/ApiResponse.java new file mode 100644 index 00000000..9c465cb7 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/lthn/ApiResponse.java @@ -0,0 +1,76 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.lthn; + +import java.util.List; +import java.util.Map; + +/** + * API response returned by API call. + */ +public class ApiResponse { + final private int statusCode; + final private Map> headers; + final private T data; + + /** + *

Constructor for ApiResponse.

+ * + * @param statusCode The status code of HTTP response + * @param headers The headers of HTTP response + */ + public ApiResponse(int statusCode, Map> headers) { + this(statusCode, headers, null); + } + + /** + *

Constructor for ApiResponse.

+ * + * @param statusCode The status code of HTTP response + * @param headers The headers of HTTP response + * @param data The object deserialized from response bod + */ + public ApiResponse(int statusCode, Map> headers, T data) { + this.statusCode = statusCode; + this.headers = headers; + this.data = data; + } + + /** + *

Get the status code.

+ * + * @return the status code + */ + public int getStatusCode() { + return statusCode; + } + + /** + *

Get the headers.

+ * + * @return a {@link java.util.Map} of headers + */ + public Map> getHeaders() { + return headers; + } + + /** + *

Get the data.

+ * + * @return the data + */ + public T getData() { + return data; + } +} diff --git a/utils/sdk/client/java/src/main/java/org/lthn/Configuration.java b/utils/sdk/client/java/src/main/java/org/lthn/Configuration.java new file mode 100644 index 00000000..0043f426 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/lthn/Configuration.java @@ -0,0 +1,63 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.lthn; + +import java.util.Objects; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Supplier; + +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:31:48.909623+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class Configuration { + public static final String VERSION = "6.0.1"; + + private static final AtomicReference defaultApiClient = new AtomicReference<>(); + private static volatile Supplier apiClientFactory = ApiClient::new; + + /** + * Get the default API client, which would be used when creating API instances without providing an API client. + * + * @return Default API client + */ + public static ApiClient getDefaultApiClient() { + ApiClient client = defaultApiClient.get(); + if (client == null) { + client = defaultApiClient.updateAndGet(val -> { + if (val != null) { // changed by another thread + return val; + } + return apiClientFactory.get(); + }); + } + return client; + } + + /** + * Set the default API client, which would be used when creating API instances without providing an API client. + * + * @param apiClient API client + */ + public static void setDefaultApiClient(ApiClient apiClient) { + defaultApiClient.set(apiClient); + } + + /** + * set the callback used to create new ApiClient objects + */ + public static void setApiClientFactory(Supplier factory) { + apiClientFactory = Objects.requireNonNull(factory); + } + + private Configuration() { + } +} \ No newline at end of file diff --git a/utils/sdk/client/java/src/main/java/org/lthn/GzipRequestInterceptor.java b/utils/sdk/client/java/src/main/java/org/lthn/GzipRequestInterceptor.java new file mode 100644 index 00000000..24b540dc --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/lthn/GzipRequestInterceptor.java @@ -0,0 +1,85 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.lthn; + +import okhttp3.*; +import okio.Buffer; +import okio.BufferedSink; +import okio.GzipSink; +import okio.Okio; + +import java.io.IOException; + +/** + * Encodes request bodies using gzip. + * + * Taken from https://github.com/square/okhttp/issues/350 + */ +class GzipRequestInterceptor implements Interceptor { + @Override + public Response intercept(Chain chain) throws IOException { + Request originalRequest = chain.request(); + if (originalRequest.body() == null || originalRequest.header("Content-Encoding") != null) { + return chain.proceed(originalRequest); + } + + Request compressedRequest = originalRequest.newBuilder() + .header("Content-Encoding", "gzip") + .method(originalRequest.method(), forceContentLength(gzip(originalRequest.body()))) + .build(); + return chain.proceed(compressedRequest); + } + + private RequestBody forceContentLength(final RequestBody requestBody) throws IOException { + final Buffer buffer = new Buffer(); + requestBody.writeTo(buffer); + return new RequestBody() { + @Override + public MediaType contentType() { + return requestBody.contentType(); + } + + @Override + public long contentLength() { + return buffer.size(); + } + + @Override + public void writeTo(BufferedSink sink) throws IOException { + sink.write(buffer.snapshot()); + } + }; + } + + private RequestBody gzip(final RequestBody body) { + return new RequestBody() { + @Override + public MediaType contentType() { + return body.contentType(); + } + + @Override + public long contentLength() { + return -1; // We don't know the compressed length in advance! + } + + @Override + public void writeTo(BufferedSink sink) throws IOException { + BufferedSink gzipSink = Okio.buffer(new GzipSink(sink)); + body.writeTo(gzipSink); + gzipSink.close(); + } + }; + } +} diff --git a/utils/sdk/client/java/src/main/java/org/lthn/JSON.java b/utils/sdk/client/java/src/main/java/org/lthn/JSON.java new file mode 100644 index 00000000..ea097389 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/lthn/JSON.java @@ -0,0 +1,446 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.lthn; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapter; +import com.google.gson.internal.bind.util.ISO8601Utils; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import com.google.gson.JsonElement; +import io.gsonfire.GsonFireBuilder; +import io.gsonfire.TypeSelector; + +import okio.ByteString; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.StringReader; +import java.lang.reflect.Type; +import java.nio.charset.StandardCharsets; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.ParsePosition; +import java.time.LocalDate; +import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Date; +import java.util.Locale; +import java.util.Map; +import java.util.HashMap; + +/* + * A JSON utility class + * + * NOTE: in the future, this class may be converted to static, which may break + * backward-compatibility + */ +public class JSON { + private static Gson gson; + private static boolean isLenientOnJson = false; + private static DateTypeAdapter dateTypeAdapter = new DateTypeAdapter(); + private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter(); + private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(); + private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter(); + private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter(); + + @SuppressWarnings("unchecked") + public static GsonBuilder createGson() { + GsonFireBuilder fireBuilder = new GsonFireBuilder() + ; + GsonBuilder builder = fireBuilder.createGsonBuilder(); + return builder; + } + + private static String getDiscriminatorValue(JsonElement readElement, String discriminatorField) { + JsonElement element = readElement.getAsJsonObject().get(discriminatorField); + if (null == element) { + throw new IllegalArgumentException("missing discriminator field: <" + discriminatorField + ">"); + } + return element.getAsString(); + } + + /** + * Returns the Java class that implements the OpenAPI schema for the specified discriminator value. + * + * @param classByDiscriminatorValue The map of discriminator values to Java classes. + * @param discriminatorValue The value of the OpenAPI discriminator in the input data. + * @return The Java class that implements the OpenAPI schema + */ + private static Class getClassByDiscriminator(Map classByDiscriminatorValue, String discriminatorValue) { + Class clazz = (Class) classByDiscriminatorValue.get(discriminatorValue); + if (null == clazz) { + throw new IllegalArgumentException("cannot determine model class of name: <" + discriminatorValue + ">"); + } + return clazz; + } + + static { + GsonBuilder gsonBuilder = createGson(); + gsonBuilder.registerTypeAdapter(Date.class, dateTypeAdapter); + gsonBuilder.registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter); + gsonBuilder.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter); + gsonBuilder.registerTypeAdapter(LocalDate.class, localDateTypeAdapter); + gsonBuilder.registerTypeAdapter(byte[].class, byteArrayAdapter); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.BlockDetailsModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.BlockProcessingPerformanceModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.BlockTemplateModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.BlockTemplateRequestModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.DbStatInfoModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.HeightModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.InfoModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.MaintainersInfoModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.PerformanceModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.PosEntryModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.SubmitBlockRequestModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.SubmitBlockResponseModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.TransactionAttachmentModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.TransactionDetailsModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.TransactionExtraModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.TransactionInputModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.TransactionOutputModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.TxGenerationContextModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.TxPoolPerformanceModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.TxProcessingPerformanceModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.VersionModel.CustomTypeAdapterFactory()); + gson = gsonBuilder.create(); + } + + /** + * Get Gson. + * + * @return Gson + */ + public static Gson getGson() { + return gson; + } + + /** + * Set Gson. + * + * @param gson Gson + */ + public static void setGson(Gson gson) { + JSON.gson = gson; + } + + public static void setLenientOnJson(boolean lenientOnJson) { + isLenientOnJson = lenientOnJson; + } + + /** + * Serialize the given Java object into JSON string. + * + * @param obj Object + * @return String representation of the JSON + */ + public static String serialize(Object obj) { + return gson.toJson(obj); + } + + /** + * Deserialize the given JSON string to Java object. + * + * @param Type + * @param body The JSON string + * @param returnType The type to deserialize into + * @return The deserialized Java object + */ + @SuppressWarnings("unchecked") + public static T deserialize(String body, Type returnType) { + try { + if (isLenientOnJson) { + JsonReader jsonReader = new JsonReader(new StringReader(body)); + // see https://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/stream/JsonReader.html#setLenient(boolean) + jsonReader.setLenient(true); + return gson.fromJson(jsonReader, returnType); + } else { + return gson.fromJson(body, returnType); + } + } catch (JsonParseException e) { + // Fallback processing when failed to parse JSON form response body: + // return the response body string directly for the String return type; + if (returnType.equals(String.class)) { + return (T) body; + } else { + throw (e); + } + } + } + + /** + * Deserialize the given JSON InputStream to a Java object. + * + * @param Type + * @param inputStream The JSON InputStream + * @param returnType The type to deserialize into + * @return The deserialized Java object + */ + @SuppressWarnings("unchecked") + public static T deserialize(InputStream inputStream, Type returnType) throws IOException { + try (InputStreamReader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8)) { + if (isLenientOnJson) { + // see https://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/stream/JsonReader.html#setLenient(boolean) + JsonReader jsonReader = new JsonReader(reader); + jsonReader.setLenient(true); + return gson.fromJson(jsonReader, returnType); + } else { + return gson.fromJson(reader, returnType); + } + } + } + + /** + * Gson TypeAdapter for Byte Array type + */ + public static class ByteArrayAdapter extends TypeAdapter { + + @Override + public void write(JsonWriter out, byte[] value) throws IOException { + if (value == null) { + out.nullValue(); + } else { + out.value(ByteString.of(value).base64()); + } + } + + @Override + public byte[] read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String bytesAsBase64 = in.nextString(); + ByteString byteString = ByteString.decodeBase64(bytesAsBase64); + return byteString.toByteArray(); + } + } + } + + /** + * Gson TypeAdapter for JSR310 OffsetDateTime type + */ + public static class OffsetDateTimeTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public OffsetDateTimeTypeAdapter() { + this(DateTimeFormatter.ISO_OFFSET_DATE_TIME); + } + + public OffsetDateTimeTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, OffsetDateTime date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public OffsetDateTime read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + if (date.endsWith("+0000")) { + date = date.substring(0, date.length()-5) + "Z"; + } + return OffsetDateTime.parse(date, formatter); + } + } + } + + /** + * Gson TypeAdapter for JSR310 LocalDate type + */ + public static class LocalDateTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public LocalDateTypeAdapter() { + this(DateTimeFormatter.ISO_LOCAL_DATE); + } + + public LocalDateTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, LocalDate date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public LocalDate read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + return LocalDate.parse(date, formatter); + } + } + } + + public static void setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { + offsetDateTimeTypeAdapter.setFormat(dateFormat); + } + + public static void setLocalDateFormat(DateTimeFormatter dateFormat) { + localDateTypeAdapter.setFormat(dateFormat); + } + + /** + * Gson TypeAdapter for java.sql.Date type + * If the dateFormat is null, a simple "yyyy-MM-dd" format will be used + * (more efficient than SimpleDateFormat). + */ + public static class SqlDateTypeAdapter extends TypeAdapter { + + private DateFormat dateFormat; + + public SqlDateTypeAdapter() {} + + public SqlDateTypeAdapter(DateFormat dateFormat) { + this.dateFormat = dateFormat; + } + + public void setFormat(DateFormat dateFormat) { + this.dateFormat = dateFormat; + } + + @Override + public void write(JsonWriter out, java.sql.Date date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + String value; + if (dateFormat != null) { + value = dateFormat.format(date); + } else { + value = date.toString(); + } + out.value(value); + } + } + + @Override + public java.sql.Date read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + if (dateFormat != null) { + return new java.sql.Date(dateFormat.parse(date).getTime()); + } + return new java.sql.Date(ISO8601Utils.parse(date, new ParsePosition(0)).getTime()); + } catch (ParseException e) { + throw new JsonParseException(e); + } + } + } + } + + /** + * Gson TypeAdapter for java.util.Date type + * If the dateFormat is null, ISO8601Utils will be used. + */ + public static class DateTypeAdapter extends TypeAdapter { + + private DateFormat dateFormat; + + public DateTypeAdapter() {} + + public DateTypeAdapter(DateFormat dateFormat) { + this.dateFormat = dateFormat; + } + + public void setFormat(DateFormat dateFormat) { + this.dateFormat = dateFormat; + } + + @Override + public void write(JsonWriter out, Date date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + String value; + if (dateFormat != null) { + value = dateFormat.format(date); + } else { + value = ISO8601Utils.format(date, true); + } + out.value(value); + } + } + + @Override + public Date read(JsonReader in) throws IOException { + try { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + if (dateFormat != null) { + return dateFormat.parse(date); + } + return ISO8601Utils.parse(date, new ParsePosition(0)); + } catch (ParseException e) { + throw new JsonParseException(e); + } + } + } catch (IllegalArgumentException e) { + throw new JsonParseException(e); + } + } + } + + public static void setDateFormat(DateFormat dateFormat) { + dateTypeAdapter.setFormat(dateFormat); + } + + public static void setSqlDateFormat(DateFormat dateFormat) { + sqlDateTypeAdapter.setFormat(dateFormat); + } +} diff --git a/utils/sdk/client/java/src/main/java/org/lthn/Pair.java b/utils/sdk/client/java/src/main/java/org/lthn/Pair.java new file mode 100644 index 00000000..085be9a1 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/lthn/Pair.java @@ -0,0 +1,37 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.lthn; + +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:31:48.909623+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class Pair { + private final String name; + private final String value; + + public Pair(String name, String value) { + this.name = isValidString(name) ? name : ""; + this.value = isValidString(value) ? value : ""; + } + + public String getName() { + return this.name; + } + + public String getValue() { + return this.value; + } + + private static boolean isValidString(String arg) { + return arg != null; + } +} diff --git a/utils/sdk/client/java/src/main/java/org/lthn/ProgressRequestBody.java b/utils/sdk/client/java/src/main/java/org/lthn/ProgressRequestBody.java new file mode 100644 index 00000000..7a9320e4 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/lthn/ProgressRequestBody.java @@ -0,0 +1,73 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.lthn; + +import okhttp3.MediaType; +import okhttp3.RequestBody; + +import java.io.IOException; + +import okio.Buffer; +import okio.BufferedSink; +import okio.ForwardingSink; +import okio.Okio; +import okio.Sink; + +public class ProgressRequestBody extends RequestBody { + + private final RequestBody requestBody; + + private final ApiCallback callback; + + public ProgressRequestBody(RequestBody requestBody, ApiCallback callback) { + this.requestBody = requestBody; + this.callback = callback; + } + + @Override + public MediaType contentType() { + return requestBody.contentType(); + } + + @Override + public long contentLength() throws IOException { + return requestBody.contentLength(); + } + + @Override + public void writeTo(BufferedSink sink) throws IOException { + BufferedSink bufferedSink = Okio.buffer(sink(sink)); + requestBody.writeTo(bufferedSink); + bufferedSink.flush(); + } + + private Sink sink(Sink sink) { + return new ForwardingSink(sink) { + + long bytesWritten = 0L; + long contentLength = 0L; + + @Override + public void write(Buffer source, long byteCount) throws IOException { + super.write(source, byteCount); + if (contentLength == 0) { + contentLength = contentLength(); + } + + bytesWritten += byteCount; + callback.onUploadProgress(bytesWritten, contentLength, bytesWritten == contentLength); + } + }; + } +} diff --git a/utils/sdk/client/java/src/main/java/org/lthn/ProgressResponseBody.java b/utils/sdk/client/java/src/main/java/org/lthn/ProgressResponseBody.java new file mode 100644 index 00000000..74a82c5b --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/lthn/ProgressResponseBody.java @@ -0,0 +1,70 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.lthn; + +import okhttp3.MediaType; +import okhttp3.ResponseBody; + +import java.io.IOException; + +import okio.Buffer; +import okio.BufferedSource; +import okio.ForwardingSource; +import okio.Okio; +import okio.Source; + +public class ProgressResponseBody extends ResponseBody { + + private final ResponseBody responseBody; + private final ApiCallback callback; + private BufferedSource bufferedSource; + + public ProgressResponseBody(ResponseBody responseBody, ApiCallback callback) { + this.responseBody = responseBody; + this.callback = callback; + } + + @Override + public MediaType contentType() { + return responseBody.contentType(); + } + + @Override + public long contentLength() { + return responseBody.contentLength(); + } + + @Override + public BufferedSource source() { + if (bufferedSource == null) { + bufferedSource = Okio.buffer(source(responseBody.source())); + } + return bufferedSource; + } + + private Source source(Source source) { + return new ForwardingSource(source) { + long totalBytesRead = 0L; + + @Override + public long read(Buffer sink, long byteCount) throws IOException { + long bytesRead = super.read(sink, byteCount); + // read() returns the number of bytes read, or -1 if this source is exhausted. + totalBytesRead += bytesRead != -1 ? bytesRead : 0; + callback.onDownloadProgress(totalBytesRead, responseBody.contentLength(), bytesRead == -1); + return bytesRead; + } + }; + } +} diff --git a/utils/sdk/client/java/src/main/java/org/lthn/ServerConfiguration.java b/utils/sdk/client/java/src/main/java/org/lthn/ServerConfiguration.java new file mode 100644 index 00000000..c3729842 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/lthn/ServerConfiguration.java @@ -0,0 +1,72 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.lthn; + +import java.util.Map; + +/** + * Representing a Server configuration. + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:31:48.909623+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class ServerConfiguration { + public String URL; + public String description; + public Map variables; + + /** + * @param URL A URL to the target host. + * @param description A description of the host designated by the URL. + * @param variables A map between a variable name and its value. The value is used for substitution in the server's URL template. + */ + public ServerConfiguration(String URL, String description, Map variables) { + this.URL = URL; + this.description = description; + this.variables = variables; + } + + /** + * Format URL template using given variables. + * + * @param variables A map between a variable name and its value. + * @return Formatted URL. + */ + public String URL(Map variables) { + String url = this.URL; + + // go through variables and replace placeholders + for (Map.Entry variable: this.variables.entrySet()) { + String name = variable.getKey(); + ServerVariable serverVariable = variable.getValue(); + String value = serverVariable.defaultValue; + + if (variables != null && variables.containsKey(name)) { + value = variables.get(name); + if (serverVariable.enumValues.size() > 0 && !serverVariable.enumValues.contains(value)) { + throw new IllegalArgumentException("The variable " + name + " in the server URL has invalid value " + value + "."); + } + } + url = url.replace("{" + name + "}", value); + } + return url; + } + + /** + * Format URL template using default server variables. + * + * @return Formatted URL. + */ + public String URL() { + return URL(null); + } +} diff --git a/utils/sdk/client/java/src/main/java/org/lthn/ServerVariable.java b/utils/sdk/client/java/src/main/java/org/lthn/ServerVariable.java new file mode 100644 index 00000000..b6d6a830 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/lthn/ServerVariable.java @@ -0,0 +1,37 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.lthn; + +import java.util.HashSet; + +/** + * Representing a Server Variable for server URL template substitution. + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:31:48.909623+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class ServerVariable { + public String description; + public String defaultValue; + public HashSet enumValues = null; + + /** + * @param description A description for the server variable. + * @param defaultValue The default value to use for substitution. + * @param enumValues An enumeration of string values to be used if the substitution options are from a limited set. + */ + public ServerVariable(String description, String defaultValue, HashSet enumValues) { + this.description = description; + this.defaultValue = defaultValue; + this.enumValues = enumValues; + } +} diff --git a/utils/sdk/client/java/src/main/java/org/lthn/StringUtil.java b/utils/sdk/client/java/src/main/java/org/lthn/StringUtil.java new file mode 100644 index 00000000..ecb088b3 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/lthn/StringUtil.java @@ -0,0 +1,83 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.lthn; + +import java.util.Collection; +import java.util.Iterator; + +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:31:48.909623+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class StringUtil { + /** + * Check if the given array contains the given value (with case-insensitive comparison). + * + * @param array The array + * @param value The value to search + * @return true if the array contains the value + */ + public static boolean containsIgnoreCase(String[] array, String value) { + for (String str : array) { + if (value == null && str == null) { + return true; + } + if (value != null && value.equalsIgnoreCase(str)) { + return true; + } + } + return false; + } + + /** + * Join an array of strings with the given separator. + *

+ * Note: This might be replaced by utility method from commons-lang or guava someday + * if one of those libraries is added as dependency. + *

+ * + * @param array The array of strings + * @param separator The separator + * @return the resulting string + */ + public static String join(String[] array, String separator) { + int len = array.length; + if (len == 0) { + return ""; + } + + StringBuilder out = new StringBuilder(); + out.append(array[0]); + for (int i = 1; i < len; i++) { + out.append(separator).append(array[i]); + } + return out.toString(); + } + + /** + * Join a list of strings with the given separator. + * + * @param list The list of strings + * @param separator The separator + * @return the resulting string + */ + public static String join(Collection list, String separator) { + Iterator iterator = list.iterator(); + StringBuilder out = new StringBuilder(); + if (iterator.hasNext()) { + out.append(iterator.next()); + } + while (iterator.hasNext()) { + out.append(separator).append(iterator.next()); + } + return out.toString(); + } +} diff --git a/utils/sdk/client/java/src/main/java/org/lthn/api/BlockApi.java b/utils/sdk/client/java/src/main/java/org/lthn/api/BlockApi.java new file mode 100644 index 00000000..12ef5d59 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/lthn/api/BlockApi.java @@ -0,0 +1,727 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.lthn.api; + +import org.lthn.ApiCallback; +import org.lthn.ApiClient; +import org.lthn.ApiException; +import org.lthn.ApiResponse; +import org.lthn.Configuration; +import org.lthn.Pair; +import org.lthn.ProgressRequestBody; +import org.lthn.ProgressResponseBody; + +import com.google.gson.reflect.TypeToken; + +import java.io.IOException; + + +import org.openapitools.client.model.BlockDetailsModel; +import org.openapitools.client.model.BlockTemplateModel; +import org.openapitools.client.model.BlockTemplateRequestModel; +import org.openapitools.client.model.HeightModel; +import org.openapitools.client.model.SubmitBlockRequestModel; +import org.openapitools.client.model.SubmitBlockResponseModel; + +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class BlockApi { + private ApiClient localVarApiClient; + private int localHostIndex; + private String localCustomBaseUrl; + + public BlockApi() { + this(Configuration.getDefaultApiClient()); + } + + public BlockApi(ApiClient apiClient) { + this.localVarApiClient = apiClient; + } + + public ApiClient getApiClient() { + return localVarApiClient; + } + + public void setApiClient(ApiClient apiClient) { + this.localVarApiClient = apiClient; + } + + public int getHostIndex() { + return localHostIndex; + } + + public void setHostIndex(int hostIndex) { + this.localHostIndex = hostIndex; + } + + public String getCustomBaseUrl() { + return localCustomBaseUrl; + } + + public void setCustomBaseUrl(String customBaseUrl) { + this.localCustomBaseUrl = customBaseUrl; + } + + /** + * Build call for createBlockTemplate + * @param blockTemplateRequestModel (required) + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
500 text/plain -
400 text/plain -
200 OK -
+ */ + public okhttp3.Call createBlockTemplateCall(@javax.annotation.Nonnull BlockTemplateRequestModel blockTemplateRequestModel, final ApiCallback _callback) throws ApiException { + String basePath = null; + // Operation Servers + String[] localBasePaths = new String[] { }; + + // Determine Base Path to Use + if (localCustomBaseUrl != null){ + basePath = localCustomBaseUrl; + } else if ( localBasePaths.length > 0 ) { + basePath = localBasePaths[localHostIndex]; + } else { + basePath = null; + } + + Object localVarPostBody = blockTemplateRequestModel; + + // create path and map variables + String localVarPath = "/block/template"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] { }; + return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call createBlockTemplateValidateBeforeCall(@javax.annotation.Nonnull BlockTemplateRequestModel blockTemplateRequestModel, final ApiCallback _callback) throws ApiException { + // verify the required parameter 'blockTemplateRequestModel' is set + if (blockTemplateRequestModel == null) { + throw new ApiException("Missing the required parameter 'blockTemplateRequestModel' when calling createBlockTemplate(Async)"); + } + + return createBlockTemplateCall(blockTemplateRequestModel, _callback); + + } + + /** + * Create a block template for mining + * + * @param blockTemplateRequestModel (required) + * @return BlockTemplateModel + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
500 text/plain -
400 text/plain -
200 OK -
+ */ + public BlockTemplateModel createBlockTemplate(@javax.annotation.Nonnull BlockTemplateRequestModel blockTemplateRequestModel) throws ApiException { + ApiResponse localVarResp = createBlockTemplateWithHttpInfo(blockTemplateRequestModel); + return localVarResp.getData(); + } + + /** + * Create a block template for mining + * + * @param blockTemplateRequestModel (required) + * @return ApiResponse<BlockTemplateModel> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
500 text/plain -
400 text/plain -
200 OK -
+ */ + public ApiResponse createBlockTemplateWithHttpInfo(@javax.annotation.Nonnull BlockTemplateRequestModel blockTemplateRequestModel) throws ApiException { + okhttp3.Call localVarCall = createBlockTemplateValidateBeforeCall(blockTemplateRequestModel, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * Create a block template for mining (asynchronously) + * + * @param blockTemplateRequestModel (required) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
500 text/plain -
400 text/plain -
200 OK -
+ */ + public okhttp3.Call createBlockTemplateAsync(@javax.annotation.Nonnull BlockTemplateRequestModel blockTemplateRequestModel, final ApiCallback _callback) throws ApiException { + + okhttp3.Call localVarCall = createBlockTemplateValidateBeforeCall(blockTemplateRequestModel, _callback); + Type localVarReturnType = new TypeToken(){}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } + /** + * Build call for getBlock + * @param identifier The hash (hex string) or height (integer) of the block to retrieve. (required) + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
404 text/plain -
400 text/plain -
200 OK -
+ */ + public okhttp3.Call getBlockCall(@javax.annotation.Nonnull String identifier, final ApiCallback _callback) throws ApiException { + String basePath = null; + // Operation Servers + String[] localBasePaths = new String[] { }; + + // Determine Base Path to Use + if (localCustomBaseUrl != null){ + basePath = localCustomBaseUrl; + } else if ( localBasePaths.length > 0 ) { + basePath = localBasePaths[localHostIndex]; + } else { + basePath = null; + } + + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/block/{identifier}" + .replace("{" + "identifier" + "}", localVarApiClient.escapeString(identifier.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = { + }; + final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] { }; + return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call getBlockValidateBeforeCall(@javax.annotation.Nonnull String identifier, final ApiCallback _callback) throws ApiException { + // verify the required parameter 'identifier' is set + if (identifier == null) { + throw new ApiException("Missing the required parameter 'identifier' when calling getBlock(Async)"); + } + + return getBlockCall(identifier, _callback); + + } + + /** + * Get a block by its hash or height (ID) + * + * @param identifier The hash (hex string) or height (integer) of the block to retrieve. (required) + * @return BlockDetailsModel + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
404 text/plain -
400 text/plain -
200 OK -
+ */ + public BlockDetailsModel getBlock(@javax.annotation.Nonnull String identifier) throws ApiException { + ApiResponse localVarResp = getBlockWithHttpInfo(identifier); + return localVarResp.getData(); + } + + /** + * Get a block by its hash or height (ID) + * + * @param identifier The hash (hex string) or height (integer) of the block to retrieve. (required) + * @return ApiResponse<BlockDetailsModel> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
404 text/plain -
400 text/plain -
200 OK -
+ */ + public ApiResponse getBlockWithHttpInfo(@javax.annotation.Nonnull String identifier) throws ApiException { + okhttp3.Call localVarCall = getBlockValidateBeforeCall(identifier, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * Get a block by its hash or height (ID) (asynchronously) + * + * @param identifier The hash (hex string) or height (integer) of the block to retrieve. (required) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
404 text/plain -
400 text/plain -
200 OK -
+ */ + public okhttp3.Call getBlockAsync(@javax.annotation.Nonnull String identifier, final ApiCallback _callback) throws ApiException { + + okhttp3.Call localVarCall = getBlockValidateBeforeCall(identifier, _callback); + Type localVarReturnType = new TypeToken(){}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } + /** + * Build call for getBlocks + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
404 text/plain -
400 text/plain -
200 A list of block objects. -
+ */ + public okhttp3.Call getBlocksCall(final ApiCallback _callback) throws ApiException { + String basePath = null; + // Operation Servers + String[] localBasePaths = new String[] { }; + + // Determine Base Path to Use + if (localCustomBaseUrl != null){ + basePath = localCustomBaseUrl; + } else if ( localBasePaths.length > 0 ) { + basePath = localBasePaths[localHostIndex]; + } else { + basePath = null; + } + + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/block"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = { + }; + final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] { }; + return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call getBlocksValidateBeforeCall(final ApiCallback _callback) throws ApiException { + return getBlocksCall(_callback); + + } + + /** + * Get one or more blocks, with optional pagination. + * + * @return List<BlockDetailsModel> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
404 text/plain -
400 text/plain -
200 A list of block objects. -
+ */ + public List getBlocks() throws ApiException { + ApiResponse> localVarResp = getBlocksWithHttpInfo(); + return localVarResp.getData(); + } + + /** + * Get one or more blocks, with optional pagination. + * + * @return ApiResponse<List<BlockDetailsModel>> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
404 text/plain -
400 text/plain -
200 A list of block objects. -
+ */ + public ApiResponse> getBlocksWithHttpInfo() throws ApiException { + okhttp3.Call localVarCall = getBlocksValidateBeforeCall(null); + Type localVarReturnType = new TypeToken>(){}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * Get one or more blocks, with optional pagination. (asynchronously) + * + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
404 text/plain -
400 text/plain -
200 A list of block objects. -
+ */ + public okhttp3.Call getBlocksAsync(final ApiCallback> _callback) throws ApiException { + + okhttp3.Call localVarCall = getBlocksValidateBeforeCall(_callback); + Type localVarReturnType = new TypeToken>(){}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } + /** + * Build call for getHeight + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public okhttp3.Call getHeightCall(final ApiCallback _callback) throws ApiException { + String basePath = null; + // Operation Servers + String[] localBasePaths = new String[] { }; + + // Determine Base Path to Use + if (localCustomBaseUrl != null){ + basePath = localCustomBaseUrl; + } else if ( localBasePaths.length > 0 ) { + basePath = localBasePaths[localHostIndex]; + } else { + basePath = null; + } + + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/block/height"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = { + }; + final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] { }; + return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call getHeightValidateBeforeCall(final ApiCallback _callback) throws ApiException { + return getHeightCall(_callback); + + } + + /** + * Get the current blockchain height + * + * @return HeightModel + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public HeightModel getHeight() throws ApiException { + ApiResponse localVarResp = getHeightWithHttpInfo(); + return localVarResp.getData(); + } + + /** + * Get the current blockchain height + * + * @return ApiResponse<HeightModel> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public ApiResponse getHeightWithHttpInfo() throws ApiException { + okhttp3.Call localVarCall = getHeightValidateBeforeCall(null); + Type localVarReturnType = new TypeToken(){}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * Get the current blockchain height (asynchronously) + * + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public okhttp3.Call getHeightAsync(final ApiCallback _callback) throws ApiException { + + okhttp3.Call localVarCall = getHeightValidateBeforeCall(_callback); + Type localVarReturnType = new TypeToken(){}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } + /** + * Build call for submitBlock + * @param submitBlockRequestModel (required) + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
406 text/plain -
400 text/plain -
200 OK -
+ */ + public okhttp3.Call submitBlockCall(@javax.annotation.Nonnull SubmitBlockRequestModel submitBlockRequestModel, final ApiCallback _callback) throws ApiException { + String basePath = null; + // Operation Servers + String[] localBasePaths = new String[] { }; + + // Determine Base Path to Use + if (localCustomBaseUrl != null){ + basePath = localCustomBaseUrl; + } else if ( localBasePaths.length > 0 ) { + basePath = localBasePaths[localHostIndex]; + } else { + basePath = null; + } + + Object localVarPostBody = submitBlockRequestModel; + + // create path and map variables + String localVarPath = "/block/submit"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] { }; + return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call submitBlockValidateBeforeCall(@javax.annotation.Nonnull SubmitBlockRequestModel submitBlockRequestModel, final ApiCallback _callback) throws ApiException { + // verify the required parameter 'submitBlockRequestModel' is set + if (submitBlockRequestModel == null) { + throw new ApiException("Missing the required parameter 'submitBlockRequestModel' when calling submitBlock(Async)"); + } + + return submitBlockCall(submitBlockRequestModel, _callback); + + } + + /** + * Submit a new block to the network + * + * @param submitBlockRequestModel (required) + * @return SubmitBlockResponseModel + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
406 text/plain -
400 text/plain -
200 OK -
+ */ + public SubmitBlockResponseModel submitBlock(@javax.annotation.Nonnull SubmitBlockRequestModel submitBlockRequestModel) throws ApiException { + ApiResponse localVarResp = submitBlockWithHttpInfo(submitBlockRequestModel); + return localVarResp.getData(); + } + + /** + * Submit a new block to the network + * + * @param submitBlockRequestModel (required) + * @return ApiResponse<SubmitBlockResponseModel> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
406 text/plain -
400 text/plain -
200 OK -
+ */ + public ApiResponse submitBlockWithHttpInfo(@javax.annotation.Nonnull SubmitBlockRequestModel submitBlockRequestModel) throws ApiException { + okhttp3.Call localVarCall = submitBlockValidateBeforeCall(submitBlockRequestModel, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * Submit a new block to the network (asynchronously) + * + * @param submitBlockRequestModel (required) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
406 text/plain -
400 text/plain -
200 OK -
+ */ + public okhttp3.Call submitBlockAsync(@javax.annotation.Nonnull SubmitBlockRequestModel submitBlockRequestModel, final ApiCallback _callback) throws ApiException { + + okhttp3.Call localVarCall = submitBlockValidateBeforeCall(submitBlockRequestModel, _callback); + Type localVarReturnType = new TypeToken(){}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } +} diff --git a/utils/sdk/client/java/src/main/java/org/lthn/api/InfoApi.java b/utils/sdk/client/java/src/main/java/org/lthn/api/InfoApi.java new file mode 100644 index 00000000..6af5e781 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/lthn/api/InfoApi.java @@ -0,0 +1,318 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.lthn.api; + +import org.lthn.ApiCallback; +import org.lthn.ApiClient; +import org.lthn.ApiException; +import org.lthn.ApiResponse; +import org.lthn.Configuration; +import org.lthn.Pair; +import org.lthn.ProgressRequestBody; +import org.lthn.ProgressResponseBody; + +import com.google.gson.reflect.TypeToken; + +import java.io.IOException; + + +import org.openapitools.client.model.InfoModel; +import org.openapitools.client.model.VersionModel; + +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class InfoApi { + private ApiClient localVarApiClient; + private int localHostIndex; + private String localCustomBaseUrl; + + public InfoApi() { + this(Configuration.getDefaultApiClient()); + } + + public InfoApi(ApiClient apiClient) { + this.localVarApiClient = apiClient; + } + + public ApiClient getApiClient() { + return localVarApiClient; + } + + public void setApiClient(ApiClient apiClient) { + this.localVarApiClient = apiClient; + } + + public int getHostIndex() { + return localHostIndex; + } + + public void setHostIndex(int hostIndex) { + this.localHostIndex = hostIndex; + } + + public String getCustomBaseUrl() { + return localCustomBaseUrl; + } + + public void setCustomBaseUrl(String customBaseUrl) { + this.localCustomBaseUrl = customBaseUrl; + } + + /** + * Build call for getInfo + * @param flags Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median. (optional) + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public okhttp3.Call getInfoCall(@javax.annotation.Nullable String flags, final ApiCallback _callback) throws ApiException { + String basePath = null; + // Operation Servers + String[] localBasePaths = new String[] { }; + + // Determine Base Path to Use + if (localCustomBaseUrl != null){ + basePath = localCustomBaseUrl; + } else if ( localBasePaths.length > 0 ) { + basePath = localBasePaths[localHostIndex]; + } else { + basePath = null; + } + + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/info"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + if (flags != null) { + localVarQueryParams.addAll(localVarApiClient.parameterToPair("flags", flags)); + } + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = { + }; + final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] { }; + return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call getInfoValidateBeforeCall(@javax.annotation.Nullable String flags, final ApiCallback _callback) throws ApiException { + return getInfoCall(flags, _callback); + + } + + /** + * Get detailed information about the blockchain and daemon state + * + * @param flags Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median. (optional) + * @return InfoModel + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public InfoModel getInfo(@javax.annotation.Nullable String flags) throws ApiException { + ApiResponse localVarResp = getInfoWithHttpInfo(flags); + return localVarResp.getData(); + } + + /** + * Get detailed information about the blockchain and daemon state + * + * @param flags Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median. (optional) + * @return ApiResponse<InfoModel> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public ApiResponse getInfoWithHttpInfo(@javax.annotation.Nullable String flags) throws ApiException { + okhttp3.Call localVarCall = getInfoValidateBeforeCall(flags, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * Get detailed information about the blockchain and daemon state (asynchronously) + * + * @param flags Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median. (optional) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public okhttp3.Call getInfoAsync(@javax.annotation.Nullable String flags, final ApiCallback _callback) throws ApiException { + + okhttp3.Call localVarCall = getInfoValidateBeforeCall(flags, _callback); + Type localVarReturnType = new TypeToken(){}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } + /** + * Build call for version + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public okhttp3.Call versionCall(final ApiCallback _callback) throws ApiException { + String basePath = null; + // Operation Servers + String[] localBasePaths = new String[] { }; + + // Determine Base Path to Use + if (localCustomBaseUrl != null){ + basePath = localCustomBaseUrl; + } else if ( localBasePaths.length > 0 ) { + basePath = localBasePaths[localHostIndex]; + } else { + basePath = null; + } + + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/info/version"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = { + }; + final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] { }; + return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call versionValidateBeforeCall(final ApiCallback _callback) throws ApiException { + return versionCall(_callback); + + } + + /** + * Get API version + * Returns the current version of the API. + * @return VersionModel + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public VersionModel version() throws ApiException { + ApiResponse localVarResp = versionWithHttpInfo(); + return localVarResp.getData(); + } + + /** + * Get API version + * Returns the current version of the API. + * @return ApiResponse<VersionModel> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public ApiResponse versionWithHttpInfo() throws ApiException { + okhttp3.Call localVarCall = versionValidateBeforeCall(null); + Type localVarReturnType = new TypeToken(){}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * Get API version (asynchronously) + * Returns the current version of the API. + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public okhttp3.Call versionAsync(final ApiCallback _callback) throws ApiException { + + okhttp3.Call localVarCall = versionValidateBeforeCall(_callback); + Type localVarReturnType = new TypeToken(){}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } +} diff --git a/utils/sdk/client/java/src/main/java/org/lthn/auth/ApiKeyAuth.java b/utils/sdk/client/java/src/main/java/org/lthn/auth/ApiKeyAuth.java new file mode 100644 index 00000000..f03fced2 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/lthn/auth/ApiKeyAuth.java @@ -0,0 +1,80 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.lthn.auth; + +import org.lthn.ApiException; +import org.lthn.Pair; + +import java.net.URI; +import java.util.Map; +import java.util.List; + +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:31:48.909623+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class ApiKeyAuth implements Authentication { + private final String location; + private final String paramName; + + private String apiKey; + private String apiKeyPrefix; + + public ApiKeyAuth(String location, String paramName) { + this.location = location; + this.paramName = paramName; + } + + public String getLocation() { + return location; + } + + public String getParamName() { + return paramName; + } + + public String getApiKey() { + return apiKey; + } + + public void setApiKey(String apiKey) { + this.apiKey = apiKey; + } + + public String getApiKeyPrefix() { + return apiKeyPrefix; + } + + public void setApiKeyPrefix(String apiKeyPrefix) { + this.apiKeyPrefix = apiKeyPrefix; + } + + @Override + public void applyToParams(List queryParams, Map headerParams, Map cookieParams, + String payload, String method, URI uri) throws ApiException { + if (apiKey == null) { + return; + } + String value; + if (apiKeyPrefix != null) { + value = apiKeyPrefix + " " + apiKey; + } else { + value = apiKey; + } + if ("query".equals(location)) { + queryParams.add(new Pair(paramName, value)); + } else if ("header".equals(location)) { + headerParams.put(paramName, value); + } else if ("cookie".equals(location)) { + cookieParams.put(paramName, value); + } + } +} diff --git a/utils/sdk/client/java/src/main/java/org/lthn/auth/Authentication.java b/utils/sdk/client/java/src/main/java/org/lthn/auth/Authentication.java new file mode 100644 index 00000000..9dcc53ca --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/lthn/auth/Authentication.java @@ -0,0 +1,37 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.lthn.auth; + +import org.lthn.Pair; +import org.lthn.ApiException; + +import java.net.URI; +import java.util.Map; +import java.util.List; + +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:31:48.909623+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public interface Authentication { + /** + * Apply authentication settings to header and query params. + * + * @param queryParams List of query parameters + * @param headerParams Map of header parameters + * @param cookieParams Map of cookie parameters + * @param payload HTTP request body + * @param method HTTP method + * @param uri URI + * @throws ApiException if failed to update the parameters + */ + void applyToParams(List queryParams, Map headerParams, Map cookieParams, String payload, String method, URI uri) throws ApiException; +} diff --git a/utils/sdk/client/java/src/main/java/org/lthn/auth/HttpBasicAuth.java b/utils/sdk/client/java/src/main/java/org/lthn/auth/HttpBasicAuth.java new file mode 100644 index 00000000..f3b8744b --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/lthn/auth/HttpBasicAuth.java @@ -0,0 +1,55 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.lthn.auth; + +import org.lthn.Pair; +import org.lthn.ApiException; + +import okhttp3.Credentials; + +import java.net.URI; +import java.util.Map; +import java.util.List; + +public class HttpBasicAuth implements Authentication { + private String username; + private String password; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + @Override + public void applyToParams(List queryParams, Map headerParams, Map cookieParams, + String payload, String method, URI uri) throws ApiException { + if (username == null && password == null) { + return; + } + headerParams.put("Authorization", Credentials.basic( + username == null ? "" : username, + password == null ? "" : password)); + } +} diff --git a/utils/sdk/client/java/src/main/java/org/lthn/auth/HttpBearerAuth.java b/utils/sdk/client/java/src/main/java/org/lthn/auth/HttpBearerAuth.java new file mode 100644 index 00000000..06d19598 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/lthn/auth/HttpBearerAuth.java @@ -0,0 +1,75 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.lthn.auth; + +import org.lthn.ApiException; +import org.lthn.Pair; + +import java.net.URI; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.Supplier; + +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:31:48.909623+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class HttpBearerAuth implements Authentication { + private final String scheme; + private Supplier tokenSupplier; + + public HttpBearerAuth(String scheme) { + this.scheme = scheme; + } + + /** + * Gets the token, which together with the scheme, will be sent as the value of the Authorization header. + * + * @return The bearer token + */ + public String getBearerToken() { + return tokenSupplier.get(); + } + + /** + * Sets the token, which together with the scheme, will be sent as the value of the Authorization header. + * + * @param bearerToken The bearer token to send in the Authorization header + */ + public void setBearerToken(String bearerToken) { + this.tokenSupplier = () -> bearerToken; + } + + /** + * Sets the supplier of tokens, which together with the scheme, will be sent as the value of the Authorization header. + * + * @param tokenSupplier The supplier of bearer tokens to send in the Authorization header + */ + public void setBearerToken(Supplier tokenSupplier) { + this.tokenSupplier = tokenSupplier; + } + + @Override + public void applyToParams(List queryParams, Map headerParams, Map cookieParams, + String payload, String method, URI uri) throws ApiException { + String bearerToken = Optional.ofNullable(tokenSupplier).map(Supplier::get).orElse(null); + if (bearerToken == null) { + return; + } + + headerParams.put("Authorization", (scheme != null ? upperCaseBearer(scheme) + " " : "") + bearerToken); + } + + private static String upperCaseBearer(String scheme) { + return ("bearer".equalsIgnoreCase(scheme)) ? "Bearer" : scheme; + } +} diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/ApiCallback.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/ApiCallback.java new file mode 100644 index 00000000..87e9d25a --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/ApiCallback.java @@ -0,0 +1,62 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client; + +import java.io.IOException; + +import java.util.Map; +import java.util.List; + +/** + * Callback for asynchronous API call. + * + * @param The return type + */ +public interface ApiCallback { + /** + * This is called when the API call fails. + * + * @param e The exception causing the failure + * @param statusCode Status code of the response if available, otherwise it would be 0 + * @param responseHeaders Headers of the response if available, otherwise it would be null + */ + void onFailure(ApiException e, int statusCode, Map> responseHeaders); + + /** + * This is called when the API call succeeded. + * + * @param result The result deserialized from response + * @param statusCode Status code of the response + * @param responseHeaders Headers of the response + */ + void onSuccess(T result, int statusCode, Map> responseHeaders); + + /** + * This is called when the API upload processing. + * + * @param bytesWritten bytes Written + * @param contentLength content length of request body + * @param done write end + */ + void onUploadProgress(long bytesWritten, long contentLength, boolean done); + + /** + * This is called when the API download processing. + * + * @param bytesRead bytes Read + * @param contentLength content length of the response + * @param done Read end + */ + void onDownloadProgress(long bytesRead, long contentLength, boolean done); +} diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/ApiClient.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/ApiClient.java new file mode 100644 index 00000000..4905eb18 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/ApiClient.java @@ -0,0 +1,1592 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client; + +import okhttp3.*; +import okhttp3.internal.http.HttpMethod; +import okhttp3.internal.tls.OkHostnameVerifier; +import okhttp3.logging.HttpLoggingInterceptor; +import okhttp3.logging.HttpLoggingInterceptor.Level; +import okio.Buffer; +import okio.BufferedSink; +import okio.Okio; + +import javax.net.ssl.*; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.lang.reflect.Type; +import java.net.URI; +import java.net.URLConnection; +import java.net.URLEncoder; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.security.GeneralSecurityException; +import java.security.KeyStore; +import java.security.SecureRandom; +import java.security.cert.Certificate; +import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; +import java.text.DateFormat; +import java.time.LocalDate; +import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.Map.Entry; +import java.util.concurrent.TimeUnit; +import java.util.function.Supplier; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.openapitools.client.auth.Authentication; +import org.openapitools.client.auth.HttpBasicAuth; +import org.openapitools.client.auth.HttpBearerAuth; +import org.openapitools.client.auth.ApiKeyAuth; + +/** + *

ApiClient class.

+ */ +public class ApiClient { + + protected String basePath = "http://127.0.0.1:36943"; + protected List servers = new ArrayList(Arrays.asList( + new ServerConfiguration( + "http://127.0.0.1:36943", + "Local Daemon", + new HashMap() + ), + new ServerConfiguration( + "http://seed.lethean.io:36943", + "Seed Server", + new HashMap() + ) + )); + protected Integer serverIndex = 0; + protected Map serverVariables = null; + protected boolean debugging = false; + protected Map defaultHeaderMap = new HashMap(); + protected Map defaultCookieMap = new HashMap(); + protected String tempFolderPath = null; + + protected Map authentications; + + protected DateFormat dateFormat; + protected DateFormat datetimeFormat; + protected boolean lenientDatetimeFormat; + protected int dateLength; + + protected InputStream sslCaCert; + protected boolean verifyingSsl; + protected KeyManager[] keyManagers; + + protected OkHttpClient httpClient; + protected JSON json; + + protected HttpLoggingInterceptor loggingInterceptor; + + /** + * Basic constructor for ApiClient + */ + public ApiClient() { + init(); + initHttpClient(); + + // Setup authentications (key: authentication name, value: authentication). + // Prevent the authentications from being modified. + authentications = Collections.unmodifiableMap(authentications); + } + + /** + * Basic constructor with custom OkHttpClient + * + * @param client a {@link okhttp3.OkHttpClient} object + */ + public ApiClient(OkHttpClient client) { + init(); + + httpClient = client; + + // Setup authentications (key: authentication name, value: authentication). + // Prevent the authentications from being modified. + authentications = Collections.unmodifiableMap(authentications); + } + + protected void initHttpClient() { + initHttpClient(Collections.emptyList()); + } + + protected void initHttpClient(List interceptors) { + OkHttpClient.Builder builder = new OkHttpClient.Builder(); + builder.addNetworkInterceptor(getProgressInterceptor()); + for (Interceptor interceptor: interceptors) { + builder.addInterceptor(interceptor); + } + + httpClient = builder.build(); + } + + protected void init() { + verifyingSsl = true; + + json = new JSON(); + + // Set default User-Agent. + setUserAgent("OpenAPI-Generator/6.0.1/java"); + + authentications = new HashMap(); + } + + /** + * Get base path + * + * @return Base path + */ + public String getBasePath() { + return basePath; + } + + /** + * Set base path + * + * @param basePath Base path of the URL (e.g http://127.0.0.1:36943) + * @return An instance of ApiClient + */ + public ApiClient setBasePath(String basePath) { + this.basePath = basePath; + this.serverIndex = null; + return this; + } + + public List getServers() { + return servers; + } + + public ApiClient setServers(List servers) { + this.servers = servers; + return this; + } + + public Integer getServerIndex() { + return serverIndex; + } + + public ApiClient setServerIndex(Integer serverIndex) { + this.serverIndex = serverIndex; + return this; + } + + public Map getServerVariables() { + return serverVariables; + } + + public ApiClient setServerVariables(Map serverVariables) { + this.serverVariables = serverVariables; + return this; + } + + /** + * Get HTTP client + * + * @return An instance of OkHttpClient + */ + public OkHttpClient getHttpClient() { + return httpClient; + } + + /** + * Set HTTP client, which must never be null. + * + * @param newHttpClient An instance of OkHttpClient + * @return ApiClient + * @throws java.lang.NullPointerException when newHttpClient is null + */ + public ApiClient setHttpClient(OkHttpClient newHttpClient) { + this.httpClient = Objects.requireNonNull(newHttpClient, "HttpClient must not be null!"); + return this; + } + + /** + * Get JSON + * + * @return JSON object + */ + public JSON getJSON() { + return json; + } + + /** + * Set JSON + * + * @param json JSON object + * @return Api client + */ + public ApiClient setJSON(JSON json) { + this.json = json; + return this; + } + + /** + * True if isVerifyingSsl flag is on + * + * @return True if isVerifySsl flag is on + */ + public boolean isVerifyingSsl() { + return verifyingSsl; + } + + /** + * Configure whether to verify certificate and hostname when making https requests. + * Default to true. + * NOTE: Do NOT set to false in production code, otherwise you would face multiple types of cryptographic attacks. + * + * @param verifyingSsl True to verify TLS/SSL connection + * @return ApiClient + */ + public ApiClient setVerifyingSsl(boolean verifyingSsl) { + this.verifyingSsl = verifyingSsl; + applySslSettings(); + return this; + } + + /** + * Get SSL CA cert. + * + * @return Input stream to the SSL CA cert + */ + public InputStream getSslCaCert() { + return sslCaCert; + } + + /** + * Configure the CA certificate to be trusted when making https requests. + * Use null to reset to default. + * + * @param sslCaCert input stream for SSL CA cert + * @return ApiClient + */ + public ApiClient setSslCaCert(InputStream sslCaCert) { + this.sslCaCert = sslCaCert; + applySslSettings(); + return this; + } + + /** + *

Getter for the field keyManagers.

+ * + * @return an array of {@link javax.net.ssl.KeyManager} objects + */ + public KeyManager[] getKeyManagers() { + return keyManagers; + } + + /** + * Configure client keys to use for authorization in an SSL session. + * Use null to reset to default. + * + * @param managers The KeyManagers to use + * @return ApiClient + */ + public ApiClient setKeyManagers(KeyManager[] managers) { + this.keyManagers = managers; + applySslSettings(); + return this; + } + + /** + *

Getter for the field dateFormat.

+ * + * @return a {@link java.text.DateFormat} object + */ + public DateFormat getDateFormat() { + return dateFormat; + } + + /** + *

Setter for the field dateFormat.

+ * + * @param dateFormat a {@link java.text.DateFormat} object + * @return a {@link org.openapitools.client.ApiClient} object + */ + public ApiClient setDateFormat(DateFormat dateFormat) { + JSON.setDateFormat(dateFormat); + return this; + } + + /** + *

Set SqlDateFormat.

+ * + * @param dateFormat a {@link java.text.DateFormat} object + * @return a {@link org.openapitools.client.ApiClient} object + */ + public ApiClient setSqlDateFormat(DateFormat dateFormat) { + JSON.setSqlDateFormat(dateFormat); + return this; + } + + /** + *

Set OffsetDateTimeFormat.

+ * + * @param dateFormat a {@link java.time.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ + public ApiClient setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { + JSON.setOffsetDateTimeFormat(dateFormat); + return this; + } + + /** + *

Set LocalDateFormat.

+ * + * @param dateFormat a {@link java.time.format.DateTimeFormatter} object + * @return a {@link org.openapitools.client.ApiClient} object + */ + public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { + JSON.setLocalDateFormat(dateFormat); + return this; + } + + /** + *

Set LenientOnJson.

+ * + * @param lenientOnJson a boolean + * @return a {@link org.openapitools.client.ApiClient} object + */ + public ApiClient setLenientOnJson(boolean lenientOnJson) { + JSON.setLenientOnJson(lenientOnJson); + return this; + } + + /** + * Get authentications (key: authentication name, value: authentication). + * + * @return Map of authentication objects + */ + public Map getAuthentications() { + return authentications; + } + + /** + * Get authentication for the given name. + * + * @param authName The authentication name + * @return The authentication, null if not found + */ + public Authentication getAuthentication(String authName) { + return authentications.get(authName); + } + + + /** + * Helper method to set username for the first HTTP basic authentication. + * + * @param username Username + */ + public void setUsername(String username) { + for (Authentication auth : authentications.values()) { + if (auth instanceof HttpBasicAuth) { + ((HttpBasicAuth) auth).setUsername(username); + return; + } + } + throw new RuntimeException("No HTTP basic authentication configured!"); + } + + /** + * Helper method to set password for the first HTTP basic authentication. + * + * @param password Password + */ + public void setPassword(String password) { + for (Authentication auth : authentications.values()) { + if (auth instanceof HttpBasicAuth) { + ((HttpBasicAuth) auth).setPassword(password); + return; + } + } + throw new RuntimeException("No HTTP basic authentication configured!"); + } + + /** + * Helper method to set API key value for the first API key authentication. + * + * @param apiKey API key + */ + public void setApiKey(String apiKey) { + for (Authentication auth : authentications.values()) { + if (auth instanceof ApiKeyAuth) { + ((ApiKeyAuth) auth).setApiKey(apiKey); + return; + } + } + throw new RuntimeException("No API key authentication configured!"); + } + + /** + * Helper method to set API key prefix for the first API key authentication. + * + * @param apiKeyPrefix API key prefix + */ + public void setApiKeyPrefix(String apiKeyPrefix) { + for (Authentication auth : authentications.values()) { + if (auth instanceof ApiKeyAuth) { + ((ApiKeyAuth) auth).setApiKeyPrefix(apiKeyPrefix); + return; + } + } + throw new RuntimeException("No API key authentication configured!"); + } + + /** + * Helper method to set access token for the first OAuth2 authentication. + * + * @param accessToken Access token + */ + public void setAccessToken(String accessToken) { + throw new RuntimeException("No OAuth2 authentication configured!"); + } + + /** + * Helper method to set credentials for AWSV4 Signature + * + * @param accessKey Access Key + * @param secretKey Secret Key + * @param region Region + * @param service Service to access to + */ + public void setAWS4Configuration(String accessKey, String secretKey, String region, String service) { + throw new RuntimeException("No AWS4 authentication configured!"); + } + + /** + * Helper method to set credentials for AWSV4 Signature + * + * @param accessKey Access Key + * @param secretKey Secret Key + * @param sessionToken Session Token + * @param region Region + * @param service Service to access to + */ + public void setAWS4Configuration(String accessKey, String secretKey, String sessionToken, String region, String service) { + throw new RuntimeException("No AWS4 authentication configured!"); + } + + /** + * Set the User-Agent header's value (by adding to the default header map). + * + * @param userAgent HTTP request's user agent + * @return ApiClient + */ + public ApiClient setUserAgent(String userAgent) { + addDefaultHeader("User-Agent", userAgent); + return this; + } + + /** + * Add a default header. + * + * @param key The header's key + * @param value The header's value + * @return ApiClient + */ + public ApiClient addDefaultHeader(String key, String value) { + defaultHeaderMap.put(key, value); + return this; + } + + /** + * Add a default cookie. + * + * @param key The cookie's key + * @param value The cookie's value + * @return ApiClient + */ + public ApiClient addDefaultCookie(String key, String value) { + defaultCookieMap.put(key, value); + return this; + } + + /** + * Check that whether debugging is enabled for this API client. + * + * @return True if debugging is enabled, false otherwise. + */ + public boolean isDebugging() { + return debugging; + } + + /** + * Enable/disable debugging for this API client. + * + * @param debugging To enable (true) or disable (false) debugging + * @return ApiClient + */ + public ApiClient setDebugging(boolean debugging) { + if (debugging != this.debugging) { + if (debugging) { + loggingInterceptor = new HttpLoggingInterceptor(); + loggingInterceptor.setLevel(Level.BODY); + httpClient = httpClient.newBuilder().addInterceptor(loggingInterceptor).build(); + } else { + final OkHttpClient.Builder builder = httpClient.newBuilder(); + builder.interceptors().remove(loggingInterceptor); + httpClient = builder.build(); + loggingInterceptor = null; + } + } + this.debugging = debugging; + return this; + } + + /** + * The path of temporary folder used to store downloaded files from endpoints + * with file response. The default value is null, i.e. using + * the system's default temporary folder. + * + * @see createTempFile + * @return Temporary folder path + */ + public String getTempFolderPath() { + return tempFolderPath; + } + + /** + * Set the temporary folder path (for downloading files) + * + * @param tempFolderPath Temporary folder path + * @return ApiClient + */ + public ApiClient setTempFolderPath(String tempFolderPath) { + this.tempFolderPath = tempFolderPath; + return this; + } + + /** + * Get connection timeout (in milliseconds). + * + * @return Timeout in milliseconds + */ + public int getConnectTimeout() { + return httpClient.connectTimeoutMillis(); + } + + /** + * Sets the connect timeout (in milliseconds). + * A value of 0 means no timeout, otherwise values must be between 1 and + * {@link java.lang.Integer#MAX_VALUE}. + * + * @param connectionTimeout connection timeout in milliseconds + * @return Api client + */ + public ApiClient setConnectTimeout(int connectionTimeout) { + httpClient = httpClient.newBuilder().connectTimeout(connectionTimeout, TimeUnit.MILLISECONDS).build(); + return this; + } + + /** + * Get read timeout (in milliseconds). + * + * @return Timeout in milliseconds + */ + public int getReadTimeout() { + return httpClient.readTimeoutMillis(); + } + + /** + * Sets the read timeout (in milliseconds). + * A value of 0 means no timeout, otherwise values must be between 1 and + * {@link java.lang.Integer#MAX_VALUE}. + * + * @param readTimeout read timeout in milliseconds + * @return Api client + */ + public ApiClient setReadTimeout(int readTimeout) { + httpClient = httpClient.newBuilder().readTimeout(readTimeout, TimeUnit.MILLISECONDS).build(); + return this; + } + + /** + * Get write timeout (in milliseconds). + * + * @return Timeout in milliseconds + */ + public int getWriteTimeout() { + return httpClient.writeTimeoutMillis(); + } + + /** + * Sets the write timeout (in milliseconds). + * A value of 0 means no timeout, otherwise values must be between 1 and + * {@link java.lang.Integer#MAX_VALUE}. + * + * @param writeTimeout connection timeout in milliseconds + * @return Api client + */ + public ApiClient setWriteTimeout(int writeTimeout) { + httpClient = httpClient.newBuilder().writeTimeout(writeTimeout, TimeUnit.MILLISECONDS).build(); + return this; + } + + + /** + * Format the given parameter object into string. + * + * @param param Parameter + * @return String representation of the parameter + */ + public String parameterToString(Object param) { + if (param == null) { + return ""; + } else if (param instanceof Date || param instanceof OffsetDateTime || param instanceof LocalDate) { + //Serialize to json string and remove the " enclosing characters + String jsonStr = JSON.serialize(param); + return jsonStr.substring(1, jsonStr.length() - 1); + } else if (param instanceof Collection) { + StringBuilder b = new StringBuilder(); + for (Object o : (Collection) param) { + if (b.length() > 0) { + b.append(","); + } + b.append(o); + } + return b.toString(); + } else { + return String.valueOf(param); + } + } + + /** + * Formats the specified query parameter to a list containing a single {@code Pair} object. + * + * Note that {@code value} must not be a collection. + * + * @param name The name of the parameter. + * @param value The value of the parameter. + * @return A list containing a single {@code Pair} object. + */ + public List parameterToPair(String name, Object value) { + List params = new ArrayList(); + + // preconditions + if (name == null || name.isEmpty() || value == null || value instanceof Collection) { + return params; + } + + params.add(new Pair(name, parameterToString(value))); + return params; + } + + /** + * Formats the specified collection query parameters to a list of {@code Pair} objects. + * + * Note that the values of each of the returned Pair objects are percent-encoded. + * + * @param collectionFormat The collection format of the parameter. + * @param name The name of the parameter. + * @param value The value of the parameter. + * @return A list of {@code Pair} objects. + */ + public List parameterToPairs(String collectionFormat, String name, Collection value) { + List params = new ArrayList(); + + // preconditions + if (name == null || name.isEmpty() || value == null || value.isEmpty()) { + return params; + } + + // create the params based on the collection format + if ("multi".equals(collectionFormat)) { + for (Object item : value) { + params.add(new Pair(name, escapeString(parameterToString(item)))); + } + return params; + } + + // collectionFormat is assumed to be "csv" by default + String delimiter = ","; + + // escape all delimiters except commas, which are URI reserved + // characters + if ("ssv".equals(collectionFormat)) { + delimiter = escapeString(" "); + } else if ("tsv".equals(collectionFormat)) { + delimiter = escapeString("\t"); + } else if ("pipes".equals(collectionFormat)) { + delimiter = escapeString("|"); + } + + StringBuilder sb = new StringBuilder(); + for (Object item : value) { + sb.append(delimiter); + sb.append(escapeString(parameterToString(item))); + } + + params.add(new Pair(name, sb.substring(delimiter.length()))); + + return params; + } + + /** + * Formats the specified free-form query parameters to a list of {@code Pair} objects. + * + * @param value The free-form query parameters. + * @return A list of {@code Pair} objects. + */ + public List freeFormParameterToPairs(Object value) { + List params = new ArrayList<>(); + + // preconditions + if (value == null || !(value instanceof Map )) { + return params; + } + + @SuppressWarnings("unchecked") + final Map valuesMap = (Map) value; + + for (Map.Entry entry : valuesMap.entrySet()) { + params.add(new Pair(entry.getKey(), parameterToString(entry.getValue()))); + } + + return params; + } + + + /** + * Formats the specified collection path parameter to a string value. + * + * @param collectionFormat The collection format of the parameter. + * @param value The value of the parameter. + * @return String representation of the parameter + */ + public String collectionPathParameterToString(String collectionFormat, Collection value) { + // create the value based on the collection format + if ("multi".equals(collectionFormat)) { + // not valid for path params + return parameterToString(value); + } + + // collectionFormat is assumed to be "csv" by default + String delimiter = ","; + + if ("ssv".equals(collectionFormat)) { + delimiter = " "; + } else if ("tsv".equals(collectionFormat)) { + delimiter = "\t"; + } else if ("pipes".equals(collectionFormat)) { + delimiter = "|"; + } + + StringBuilder sb = new StringBuilder() ; + for (Object item : value) { + sb.append(delimiter); + sb.append(parameterToString(item)); + } + + return sb.substring(delimiter.length()); + } + + /** + * Sanitize filename by removing path. + * e.g. ../../sun.gif becomes sun.gif + * + * @param filename The filename to be sanitized + * @return The sanitized filename + */ + public String sanitizeFilename(String filename) { + return filename.replaceFirst("^.*[/\\\\]", ""); + } + + /** + * Check if the given MIME is a JSON MIME. + * JSON MIME examples: + * application/json + * application/json; charset=UTF8 + * APPLICATION/JSON + * application/vnd.company+json + * "* / *" is also default to JSON + * @param mime MIME (Multipurpose Internet Mail Extensions) + * @return True if the given MIME is JSON, false otherwise. + */ + public boolean isJsonMime(String mime) { + String jsonMime = "(?i)^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$"; + return mime != null && (mime.matches(jsonMime) || mime.equals("*/*")); + } + + /** + * Select the Accept header's value from the given accepts array: + * if JSON exists in the given array, use it; + * otherwise use all of them (joining into a string) + * + * @param accepts The accepts array to select from + * @return The Accept header to use. If the given array is empty, + * null will be returned (not to set the Accept header explicitly). + */ + public String selectHeaderAccept(String[] accepts) { + if (accepts.length == 0) { + return null; + } + for (String accept : accepts) { + if (isJsonMime(accept)) { + return accept; + } + } + return StringUtil.join(accepts, ","); + } + + /** + * Select the Content-Type header's value from the given array: + * if JSON exists in the given array, use it; + * otherwise use the first one of the array. + * + * @param contentTypes The Content-Type array to select from + * @return The Content-Type header to use. If the given array is empty, + * returns null. If it matches "any", JSON will be used. + */ + public String selectHeaderContentType(String[] contentTypes) { + if (contentTypes.length == 0) { + return null; + } + + if (contentTypes[0].equals("*/*")) { + return "application/json"; + } + + for (String contentType : contentTypes) { + if (isJsonMime(contentType)) { + return contentType; + } + } + + return contentTypes[0]; + } + + /** + * Escape the given string to be used as URL query value. + * + * @param str String to be escaped + * @return Escaped string + */ + public String escapeString(String str) { + try { + return URLEncoder.encode(str, "utf8").replaceAll("\\+", "%20"); + } catch (UnsupportedEncodingException e) { + return str; + } + } + + /** + * Deserialize response body to Java object, according to the return type and + * the Content-Type response header. + * + * @param Type + * @param response HTTP response + * @param returnType The type of the Java object + * @return The deserialized Java object + * @throws org.openapitools.client.ApiException If fail to deserialize response body, i.e. cannot read response body + * or the Content-Type of the response is not supported. + */ + @SuppressWarnings("unchecked") + public T deserialize(Response response, Type returnType) throws ApiException { + if (response == null || returnType == null) { + return null; + } + + if ("byte[]".equals(returnType.toString())) { + // Handle binary response (byte array). + try { + return (T) response.body().bytes(); + } catch (IOException e) { + throw new ApiException(e); + } + } else if (returnType.equals(File.class)) { + // Handle file downloading. + return (T) downloadFileFromResponse(response); + } + + ResponseBody respBody = response.body(); + if (respBody == null) { + return null; + } + + String contentType = response.headers().get("Content-Type"); + if (contentType == null) { + // ensuring a default content type + contentType = "application/json"; + } + try { + if (isJsonMime(contentType)) { + return JSON.deserialize(respBody.byteStream(), returnType); + } else if (returnType.equals(String.class)) { + String respBodyString = respBody.string(); + if (respBodyString.isEmpty()) { + return null; + } + // Expecting string, return the raw response body. + return (T) respBodyString; + } else { + throw new ApiException( + "Content type \"" + contentType + "\" is not supported for type: " + returnType, + response.code(), + response.headers().toMultimap(), + response.body().string()); + } + } catch (IOException e) { + throw new ApiException(e); + } + } + + /** + * Serialize the given Java object into request body according to the object's + * class and the request Content-Type. + * + * @param obj The Java object + * @param contentType The request Content-Type + * @return The serialized request body + * @throws org.openapitools.client.ApiException If fail to serialize the given object + */ + public RequestBody serialize(Object obj, String contentType) throws ApiException { + if (obj instanceof byte[]) { + // Binary (byte array) body parameter support. + return RequestBody.create((byte[]) obj, MediaType.parse(contentType)); + } else if (obj instanceof File) { + // File body parameter support. + return RequestBody.create((File) obj, MediaType.parse(contentType)); + } else if ("text/plain".equals(contentType) && obj instanceof String) { + return RequestBody.create((String) obj, MediaType.parse(contentType)); + } else if (isJsonMime(contentType)) { + String content; + if (obj != null) { + content = JSON.serialize(obj); + } else { + content = null; + } + return RequestBody.create(content, MediaType.parse(contentType)); + } else if (obj instanceof String) { + return RequestBody.create((String) obj, MediaType.parse(contentType)); + } else { + throw new ApiException("Content type \"" + contentType + "\" is not supported"); + } + } + + /** + * Download file from the given response. + * + * @param response An instance of the Response object + * @throws org.openapitools.client.ApiException If fail to read file content from response and write to disk + * @return Downloaded file + */ + public File downloadFileFromResponse(Response response) throws ApiException { + try { + File file = prepareDownloadFile(response); + BufferedSink sink = Okio.buffer(Okio.sink(file)); + sink.writeAll(response.body().source()); + sink.close(); + return file; + } catch (IOException e) { + throw new ApiException(e); + } + } + + /** + * Prepare file for download + * + * @param response An instance of the Response object + * @return Prepared file for the download + * @throws java.io.IOException If fail to prepare file for download + */ + public File prepareDownloadFile(Response response) throws IOException { + String filename = null; + String contentDisposition = response.header("Content-Disposition"); + if (contentDisposition != null && !"".equals(contentDisposition)) { + // Get filename from the Content-Disposition header. + Pattern pattern = Pattern.compile("filename=['\"]?([^'\"\\s]+)['\"]?"); + Matcher matcher = pattern.matcher(contentDisposition); + if (matcher.find()) { + filename = sanitizeFilename(matcher.group(1)); + } + } + + String prefix = null; + String suffix = null; + if (filename == null) { + prefix = "download-"; + suffix = ""; + } else { + int pos = filename.lastIndexOf("."); + if (pos == -1) { + prefix = filename + "-"; + } else { + prefix = filename.substring(0, pos) + "-"; + suffix = filename.substring(pos); + } + // Files.createTempFile requires the prefix to be at least three characters long + if (prefix.length() < 3) + prefix = "download-"; + } + + if (tempFolderPath == null) + return Files.createTempFile(prefix, suffix).toFile(); + else + return Files.createTempFile(Paths.get(tempFolderPath), prefix, suffix).toFile(); + } + + /** + * {@link #execute(Call, Type)} + * + * @param Type + * @param call An instance of the Call object + * @return ApiResponse<T> + * @throws org.openapitools.client.ApiException If fail to execute the call + */ + public ApiResponse execute(Call call) throws ApiException { + return execute(call, null); + } + + /** + * Execute HTTP call and deserialize the HTTP response body into the given return type. + * + * @param returnType The return type used to deserialize HTTP response body + * @param The return type corresponding to (same with) returnType + * @param call Call + * @return ApiResponse object containing response status, headers and + * data, which is a Java object deserialized from response body and would be null + * when returnType is null. + * @throws org.openapitools.client.ApiException If fail to execute the call + */ + public ApiResponse execute(Call call, Type returnType) throws ApiException { + try { + Response response = call.execute(); + T data = handleResponse(response, returnType); + return new ApiResponse(response.code(), response.headers().toMultimap(), data); + } catch (IOException e) { + throw new ApiException(e); + } + } + + /** + * {@link #executeAsync(Call, Type, ApiCallback)} + * + * @param Type + * @param call An instance of the Call object + * @param callback ApiCallback<T> + */ + public void executeAsync(Call call, ApiCallback callback) { + executeAsync(call, null, callback); + } + + /** + * Execute HTTP call asynchronously. + * + * @param Type + * @param call The callback to be executed when the API call finishes + * @param returnType Return type + * @param callback ApiCallback + * @see #execute(Call, Type) + */ + @SuppressWarnings("unchecked") + public void executeAsync(Call call, final Type returnType, final ApiCallback callback) { + call.enqueue(new Callback() { + @Override + public void onFailure(Call call, IOException e) { + callback.onFailure(new ApiException(e), 0, null); + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + T result; + try { + result = (T) handleResponse(response, returnType); + } catch (ApiException e) { + callback.onFailure(e, response.code(), response.headers().toMultimap()); + return; + } catch (Exception e) { + callback.onFailure(new ApiException(e), response.code(), response.headers().toMultimap()); + return; + } + callback.onSuccess(result, response.code(), response.headers().toMultimap()); + } + }); + } + + /** + * Handle the given response, return the deserialized object when the response is successful. + * + * @param Type + * @param response Response + * @param returnType Return type + * @return Type + * @throws org.openapitools.client.ApiException If the response has an unsuccessful status code or + * fail to deserialize the response body + */ + public T handleResponse(Response response, Type returnType) throws ApiException { + if (response.isSuccessful()) { + if (returnType == null || response.code() == 204) { + // returning null if the returnType is not defined, + // or the status code is 204 (No Content) + if (response.body() != null) { + try { + response.body().close(); + } catch (Exception e) { + throw new ApiException(response.message(), e, response.code(), response.headers().toMultimap()); + } + } + return null; + } else { + return deserialize(response, returnType); + } + } else { + String respBody = null; + if (response.body() != null) { + try { + respBody = response.body().string(); + } catch (IOException e) { + throw new ApiException(response.message(), e, response.code(), response.headers().toMultimap()); + } + } + throw new ApiException(response.message(), response.code(), response.headers().toMultimap(), respBody); + } + } + + /** + * Build HTTP call with the given options. + * + * @param baseUrl The base URL + * @param path The sub-path of the HTTP URL + * @param method The request method, one of "GET", "HEAD", "OPTIONS", "POST", "PUT", "PATCH" and "DELETE" + * @param queryParams The query parameters + * @param collectionQueryParams The collection query parameters + * @param body The request body object + * @param headerParams The header parameters + * @param cookieParams The cookie parameters + * @param formParams The form parameters + * @param authNames The authentications to apply + * @param callback Callback for upload/download progress + * @return The HTTP call + * @throws org.openapitools.client.ApiException If fail to serialize the request body object + */ + public Call buildCall(String baseUrl, String path, String method, List queryParams, List collectionQueryParams, Object body, Map headerParams, Map cookieParams, Map formParams, String[] authNames, ApiCallback callback) throws ApiException { + Request request = buildRequest(baseUrl, path, method, queryParams, collectionQueryParams, body, headerParams, cookieParams, formParams, authNames, callback); + + return httpClient.newCall(request); + } + + /** + * Build an HTTP request with the given options. + * + * @param baseUrl The base URL + * @param path The sub-path of the HTTP URL + * @param method The request method, one of "GET", "HEAD", "OPTIONS", "POST", "PUT", "PATCH" and "DELETE" + * @param queryParams The query parameters + * @param collectionQueryParams The collection query parameters + * @param body The request body object + * @param headerParams The header parameters + * @param cookieParams The cookie parameters + * @param formParams The form parameters + * @param authNames The authentications to apply + * @param callback Callback for upload/download progress + * @return The HTTP request + * @throws org.openapitools.client.ApiException If fail to serialize the request body object + */ + public Request buildRequest(String baseUrl, String path, String method, List queryParams, List collectionQueryParams, Object body, Map headerParams, Map cookieParams, Map formParams, String[] authNames, ApiCallback callback) throws ApiException { + final String url = buildUrl(baseUrl, path, queryParams, collectionQueryParams); + + // prepare HTTP request body + RequestBody reqBody; + String contentType = headerParams.get("Content-Type"); + String contentTypePure = contentType; + if (contentTypePure != null && contentTypePure.contains(";")) { + contentTypePure = contentType.substring(0, contentType.indexOf(";")); + } + if (!HttpMethod.permitsRequestBody(method)) { + reqBody = null; + } else if ("application/x-www-form-urlencoded".equals(contentTypePure)) { + reqBody = buildRequestBodyFormEncoding(formParams); + } else if ("multipart/form-data".equals(contentTypePure)) { + reqBody = buildRequestBodyMultipart(formParams); + } else if (body == null) { + if ("DELETE".equals(method)) { + // allow calling DELETE without sending a request body + reqBody = null; + } else { + // use an empty request body (for POST, PUT and PATCH) + reqBody = RequestBody.create("", contentType == null ? null : MediaType.parse(contentType)); + } + } else { + reqBody = serialize(body, contentType); + } + + List updatedQueryParams = new ArrayList<>(queryParams); + + // update parameters with authentication settings + updateParamsForAuth(authNames, updatedQueryParams, headerParams, cookieParams, requestBodyToString(reqBody), method, URI.create(url)); + + final Request.Builder reqBuilder = new Request.Builder().url(buildUrl(baseUrl, path, updatedQueryParams, collectionQueryParams)); + processHeaderParams(headerParams, reqBuilder); + processCookieParams(cookieParams, reqBuilder); + + // Associate callback with request (if not null) so interceptor can + // access it when creating ProgressResponseBody + reqBuilder.tag(callback); + + Request request = null; + + if (callback != null && reqBody != null) { + ProgressRequestBody progressRequestBody = new ProgressRequestBody(reqBody, callback); + request = reqBuilder.method(method, progressRequestBody).build(); + } else { + request = reqBuilder.method(method, reqBody).build(); + } + + return request; + } + + /** + * Build full URL by concatenating base path, the given sub path and query parameters. + * + * @param baseUrl The base URL + * @param path The sub path + * @param queryParams The query parameters + * @param collectionQueryParams The collection query parameters + * @return The full URL + */ + public String buildUrl(String baseUrl, String path, List queryParams, List collectionQueryParams) { + final StringBuilder url = new StringBuilder(); + if (baseUrl != null) { + url.append(baseUrl).append(path); + } else { + String baseURL; + if (serverIndex != null) { + if (serverIndex < 0 || serverIndex >= servers.size()) { + throw new ArrayIndexOutOfBoundsException(String.format( + Locale.ROOT, + "Invalid index %d when selecting the host settings. Must be less than %d", serverIndex, servers.size() + )); + } + baseURL = servers.get(serverIndex).URL(serverVariables); + } else { + baseURL = basePath; + } + url.append(baseURL).append(path); + } + + if (queryParams != null && !queryParams.isEmpty()) { + // support (constant) query string in `path`, e.g. "/posts?draft=1" + String prefix = path.contains("?") ? "&" : "?"; + for (Pair param : queryParams) { + if (param.getValue() != null) { + if (prefix != null) { + url.append(prefix); + prefix = null; + } else { + url.append("&"); + } + String value = parameterToString(param.getValue()); + url.append(escapeString(param.getName())).append("=").append(escapeString(value)); + } + } + } + + if (collectionQueryParams != null && !collectionQueryParams.isEmpty()) { + String prefix = url.toString().contains("?") ? "&" : "?"; + for (Pair param : collectionQueryParams) { + if (param.getValue() != null) { + if (prefix != null) { + url.append(prefix); + prefix = null; + } else { + url.append("&"); + } + String value = parameterToString(param.getValue()); + // collection query parameter value already escaped as part of parameterToPairs + url.append(escapeString(param.getName())).append("=").append(value); + } + } + } + + return url.toString(); + } + + /** + * Set header parameters to the request builder, including default headers. + * + * @param headerParams Header parameters in the form of Map + * @param reqBuilder Request.Builder + */ + public void processHeaderParams(Map headerParams, Request.Builder reqBuilder) { + for (Entry param : headerParams.entrySet()) { + reqBuilder.header(param.getKey(), parameterToString(param.getValue())); + } + for (Entry header : defaultHeaderMap.entrySet()) { + if (!headerParams.containsKey(header.getKey())) { + reqBuilder.header(header.getKey(), parameterToString(header.getValue())); + } + } + } + + /** + * Set cookie parameters to the request builder, including default cookies. + * + * @param cookieParams Cookie parameters in the form of Map + * @param reqBuilder Request.Builder + */ + public void processCookieParams(Map cookieParams, Request.Builder reqBuilder) { + for (Entry param : cookieParams.entrySet()) { + reqBuilder.addHeader("Cookie", String.format(Locale.ROOT, "%s=%s", param.getKey(), param.getValue())); + } + for (Entry param : defaultCookieMap.entrySet()) { + if (!cookieParams.containsKey(param.getKey())) { + reqBuilder.addHeader("Cookie", String.format(Locale.ROOT, "%s=%s", param.getKey(), param.getValue())); + } + } + } + + /** + * Update query and header parameters based on authentication settings. + * + * @param authNames The authentications to apply + * @param queryParams List of query parameters + * @param headerParams Map of header parameters + * @param cookieParams Map of cookie parameters + * @param payload HTTP request body + * @param method HTTP method + * @param uri URI + * @throws org.openapitools.client.ApiException If fails to update the parameters + */ + public void updateParamsForAuth(String[] authNames, List queryParams, Map headerParams, + Map cookieParams, String payload, String method, URI uri) throws ApiException { + for (String authName : authNames) { + Authentication auth = authentications.get(authName); + if (auth == null) { + throw new RuntimeException("Authentication undefined: " + authName); + } + auth.applyToParams(queryParams, headerParams, cookieParams, payload, method, uri); + } + } + + /** + * Build a form-encoding request body with the given form parameters. + * + * @param formParams Form parameters in the form of Map + * @return RequestBody + */ + public RequestBody buildRequestBodyFormEncoding(Map formParams) { + okhttp3.FormBody.Builder formBuilder = new okhttp3.FormBody.Builder(); + for (Entry param : formParams.entrySet()) { + formBuilder.add(param.getKey(), parameterToString(param.getValue())); + } + return formBuilder.build(); + } + + /** + * Build a multipart (file uploading) request body with the given form parameters, + * which could contain text fields and file fields. + * + * @param formParams Form parameters in the form of Map + * @return RequestBody + */ + public RequestBody buildRequestBodyMultipart(Map formParams) { + MultipartBody.Builder mpBuilder = new MultipartBody.Builder().setType(MultipartBody.FORM); + for (Entry param : formParams.entrySet()) { + if (param.getValue() instanceof File) { + File file = (File) param.getValue(); + addPartToMultiPartBuilder(mpBuilder, param.getKey(), file); + } else if (param.getValue() instanceof List) { + List list = (List) param.getValue(); + for (Object item: list) { + if (item instanceof File) { + addPartToMultiPartBuilder(mpBuilder, param.getKey(), (File) item); + } else { + addPartToMultiPartBuilder(mpBuilder, param.getKey(), param.getValue()); + } + } + } else { + addPartToMultiPartBuilder(mpBuilder, param.getKey(), param.getValue()); + } + } + return mpBuilder.build(); + } + + /** + * Guess Content-Type header from the given file (defaults to "application/octet-stream"). + * + * @param file The given file + * @return The guessed Content-Type + */ + public String guessContentTypeFromFile(File file) { + String contentType = URLConnection.guessContentTypeFromName(file.getName()); + if (contentType == null) { + return "application/octet-stream"; + } else { + return contentType; + } + } + + /** + * Add a Content-Disposition Header for the given key and file to the MultipartBody Builder. + * + * @param mpBuilder MultipartBody.Builder + * @param key The key of the Header element + * @param file The file to add to the Header + */ + protected void addPartToMultiPartBuilder(MultipartBody.Builder mpBuilder, String key, File file) { + Headers partHeaders = Headers.of("Content-Disposition", "form-data; name=\"" + key + "\"; filename=\"" + file.getName() + "\""); + MediaType mediaType = MediaType.parse(guessContentTypeFromFile(file)); + mpBuilder.addPart(partHeaders, RequestBody.create(file, mediaType)); + } + + /** + * Add a Content-Disposition Header for the given key and complex object to the MultipartBody Builder. + * + * @param mpBuilder MultipartBody.Builder + * @param key The key of the Header element + * @param obj The complex object to add to the Header + */ + protected void addPartToMultiPartBuilder(MultipartBody.Builder mpBuilder, String key, Object obj) { + RequestBody requestBody; + if (obj instanceof String) { + requestBody = RequestBody.create((String) obj, MediaType.parse("text/plain")); + } else { + String content; + if (obj != null) { + content = JSON.serialize(obj); + } else { + content = null; + } + requestBody = RequestBody.create(content, MediaType.parse("application/json")); + } + + Headers partHeaders = Headers.of("Content-Disposition", "form-data; name=\"" + key + "\""); + mpBuilder.addPart(partHeaders, requestBody); + } + + /** + * Get network interceptor to add it to the httpClient to track download progress for + * async requests. + */ + protected Interceptor getProgressInterceptor() { + return new Interceptor() { + @Override + public Response intercept(Interceptor.Chain chain) throws IOException { + final Request request = chain.request(); + final Response originalResponse = chain.proceed(request); + if (request.tag() instanceof ApiCallback) { + final ApiCallback callback = (ApiCallback) request.tag(); + return originalResponse.newBuilder() + .body(new ProgressResponseBody(originalResponse.body(), callback)) + .build(); + } + return originalResponse; + } + }; + } + + /** + * Apply SSL related settings to httpClient according to the current values of + * verifyingSsl and sslCaCert. + */ + protected void applySslSettings() { + try { + TrustManager[] trustManagers; + HostnameVerifier hostnameVerifier; + if (!verifyingSsl) { + trustManagers = new TrustManager[]{ + new X509TrustManager() { + @Override + public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { + } + + @Override + public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { + } + + @Override + public java.security.cert.X509Certificate[] getAcceptedIssuers() { + return new java.security.cert.X509Certificate[]{}; + } + } + }; + hostnameVerifier = new HostnameVerifier() { + @Override + public boolean verify(String hostname, SSLSession session) { + return true; + } + }; + } else { + TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + + if (sslCaCert == null) { + trustManagerFactory.init((KeyStore) null); + } else { + char[] password = null; // Any password will work. + CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); + Collection certificates = certificateFactory.generateCertificates(sslCaCert); + if (certificates.isEmpty()) { + throw new IllegalArgumentException("expected non-empty set of trusted certificates"); + } + KeyStore caKeyStore = newEmptyKeyStore(password); + int index = 0; + for (Certificate certificate : certificates) { + String certificateAlias = "ca" + (index++); + caKeyStore.setCertificateEntry(certificateAlias, certificate); + } + trustManagerFactory.init(caKeyStore); + } + trustManagers = trustManagerFactory.getTrustManagers(); + hostnameVerifier = OkHostnameVerifier.INSTANCE; + } + + SSLContext sslContext = SSLContext.getInstance("TLS"); + sslContext.init(keyManagers, trustManagers, new SecureRandom()); + httpClient = httpClient.newBuilder() + .sslSocketFactory(sslContext.getSocketFactory(), (X509TrustManager) trustManagers[0]) + .hostnameVerifier(hostnameVerifier) + .build(); + } catch (GeneralSecurityException e) { + throw new RuntimeException(e); + } + } + + protected KeyStore newEmptyKeyStore(char[] password) throws GeneralSecurityException { + try { + KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); + keyStore.load(null, password); + return keyStore; + } catch (IOException e) { + throw new AssertionError(e); + } + } + + /** + * Convert the HTTP request body to a string. + * + * @param requestBody The HTTP request object + * @return The string representation of the HTTP request body + * @throws org.openapitools.client.ApiException If fail to serialize the request body object into a string + */ + protected String requestBodyToString(RequestBody requestBody) throws ApiException { + if (requestBody != null) { + try { + final Buffer buffer = new Buffer(); + requestBody.writeTo(buffer); + return buffer.readUtf8(); + } catch (final IOException e) { + throw new ApiException(e); + } + } + + // empty http request body + return ""; + } +} diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/ApiException.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/ApiException.java new file mode 100644 index 00000000..9bbc1a99 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/ApiException.java @@ -0,0 +1,168 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client; + +import java.util.Map; +import java.util.List; +import java.util.Locale; + + +/** + *

ApiException class.

+ */ +@SuppressWarnings("serial") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:17:29.381548+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class ApiException extends Exception { + private static final long serialVersionUID = 1L; + + private int code = 0; + private Map> responseHeaders = null; + private String responseBody = null; + + /** + *

Constructor for ApiException.

+ */ + public ApiException() {} + + /** + *

Constructor for ApiException.

+ * + * @param throwable a {@link java.lang.Throwable} object + */ + public ApiException(Throwable throwable) { + super(throwable); + } + + /** + *

Constructor for ApiException.

+ * + * @param message the error message + */ + public ApiException(String message) { + super(message); + } + + /** + *

Constructor for ApiException.

+ * + * @param message the error message + * @param throwable a {@link java.lang.Throwable} object + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ + public ApiException(String message, Throwable throwable, int code, Map> responseHeaders, String responseBody) { + super(message, throwable); + this.code = code; + this.responseHeaders = responseHeaders; + this.responseBody = responseBody; + } + + /** + *

Constructor for ApiException.

+ * + * @param message the error message + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ + public ApiException(String message, int code, Map> responseHeaders, String responseBody) { + this(message, (Throwable) null, code, responseHeaders, responseBody); + } + + /** + *

Constructor for ApiException.

+ * + * @param message the error message + * @param throwable a {@link java.lang.Throwable} object + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + */ + public ApiException(String message, Throwable throwable, int code, Map> responseHeaders) { + this(message, throwable, code, responseHeaders, null); + } + + /** + *

Constructor for ApiException.

+ * + * @param code HTTP status code + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ + public ApiException(int code, Map> responseHeaders, String responseBody) { + this("Response Code: " + code + " Response Body: " + responseBody, (Throwable) null, code, responseHeaders, responseBody); + } + + /** + *

Constructor for ApiException.

+ * + * @param code HTTP status code + * @param message a {@link java.lang.String} object + */ + public ApiException(int code, String message) { + super(message); + this.code = code; + } + + /** + *

Constructor for ApiException.

+ * + * @param code HTTP status code + * @param message the error message + * @param responseHeaders a {@link java.util.Map} of HTTP response headers + * @param responseBody the response body + */ + public ApiException(int code, String message, Map> responseHeaders, String responseBody) { + this(code, message); + this.responseHeaders = responseHeaders; + this.responseBody = responseBody; + } + + /** + * Get the HTTP status code. + * + * @return HTTP status code + */ + public int getCode() { + return code; + } + + /** + * Get the HTTP response headers. + * + * @return A map of list of string + */ + public Map> getResponseHeaders() { + return responseHeaders; + } + + /** + * Get the HTTP response body. + * + * @return Response body in the form of string + */ + public String getResponseBody() { + return responseBody; + } + + /** + * Get the exception message including HTTP response data. + * + * @return The exception message + */ + public String getMessage() { + return String.format(Locale.ROOT, "Message: %s%nHTTP response code: %s%nHTTP response body: %s%nHTTP response headers: %s", + super.getMessage(), this.getCode(), this.getResponseBody(), this.getResponseHeaders()); + } +} diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/ApiResponse.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/ApiResponse.java new file mode 100644 index 00000000..33e5bdf0 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/ApiResponse.java @@ -0,0 +1,76 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client; + +import java.util.List; +import java.util.Map; + +/** + * API response returned by API call. + */ +public class ApiResponse { + final private int statusCode; + final private Map> headers; + final private T data; + + /** + *

Constructor for ApiResponse.

+ * + * @param statusCode The status code of HTTP response + * @param headers The headers of HTTP response + */ + public ApiResponse(int statusCode, Map> headers) { + this(statusCode, headers, null); + } + + /** + *

Constructor for ApiResponse.

+ * + * @param statusCode The status code of HTTP response + * @param headers The headers of HTTP response + * @param data The object deserialized from response bod + */ + public ApiResponse(int statusCode, Map> headers, T data) { + this.statusCode = statusCode; + this.headers = headers; + this.data = data; + } + + /** + *

Get the status code.

+ * + * @return the status code + */ + public int getStatusCode() { + return statusCode; + } + + /** + *

Get the headers.

+ * + * @return a {@link java.util.Map} of headers + */ + public Map> getHeaders() { + return headers; + } + + /** + *

Get the data.

+ * + * @return the data + */ + public T getData() { + return data; + } +} diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/Configuration.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/Configuration.java new file mode 100644 index 00000000..ea06f1bb --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/Configuration.java @@ -0,0 +1,63 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client; + +import java.util.Objects; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Supplier; + +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:17:29.381548+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class Configuration { + public static final String VERSION = "6.0.1"; + + private static final AtomicReference defaultApiClient = new AtomicReference<>(); + private static volatile Supplier apiClientFactory = ApiClient::new; + + /** + * Get the default API client, which would be used when creating API instances without providing an API client. + * + * @return Default API client + */ + public static ApiClient getDefaultApiClient() { + ApiClient client = defaultApiClient.get(); + if (client == null) { + client = defaultApiClient.updateAndGet(val -> { + if (val != null) { // changed by another thread + return val; + } + return apiClientFactory.get(); + }); + } + return client; + } + + /** + * Set the default API client, which would be used when creating API instances without providing an API client. + * + * @param apiClient API client + */ + public static void setDefaultApiClient(ApiClient apiClient) { + defaultApiClient.set(apiClient); + } + + /** + * set the callback used to create new ApiClient objects + */ + public static void setApiClientFactory(Supplier factory) { + apiClientFactory = Objects.requireNonNull(factory); + } + + private Configuration() { + } +} \ No newline at end of file diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/GzipRequestInterceptor.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/GzipRequestInterceptor.java new file mode 100644 index 00000000..578bce6b --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/GzipRequestInterceptor.java @@ -0,0 +1,85 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client; + +import okhttp3.*; +import okio.Buffer; +import okio.BufferedSink; +import okio.GzipSink; +import okio.Okio; + +import java.io.IOException; + +/** + * Encodes request bodies using gzip. + * + * Taken from https://github.com/square/okhttp/issues/350 + */ +class GzipRequestInterceptor implements Interceptor { + @Override + public Response intercept(Chain chain) throws IOException { + Request originalRequest = chain.request(); + if (originalRequest.body() == null || originalRequest.header("Content-Encoding") != null) { + return chain.proceed(originalRequest); + } + + Request compressedRequest = originalRequest.newBuilder() + .header("Content-Encoding", "gzip") + .method(originalRequest.method(), forceContentLength(gzip(originalRequest.body()))) + .build(); + return chain.proceed(compressedRequest); + } + + private RequestBody forceContentLength(final RequestBody requestBody) throws IOException { + final Buffer buffer = new Buffer(); + requestBody.writeTo(buffer); + return new RequestBody() { + @Override + public MediaType contentType() { + return requestBody.contentType(); + } + + @Override + public long contentLength() { + return buffer.size(); + } + + @Override + public void writeTo(BufferedSink sink) throws IOException { + sink.write(buffer.snapshot()); + } + }; + } + + private RequestBody gzip(final RequestBody body) { + return new RequestBody() { + @Override + public MediaType contentType() { + return body.contentType(); + } + + @Override + public long contentLength() { + return -1; // We don't know the compressed length in advance! + } + + @Override + public void writeTo(BufferedSink sink) throws IOException { + BufferedSink gzipSink = Okio.buffer(new GzipSink(sink)); + body.writeTo(gzipSink); + gzipSink.close(); + } + }; + } +} diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/JSON.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/JSON.java new file mode 100644 index 00000000..dd71f137 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/JSON.java @@ -0,0 +1,446 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapter; +import com.google.gson.internal.bind.util.ISO8601Utils; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import com.google.gson.JsonElement; +import io.gsonfire.GsonFireBuilder; +import io.gsonfire.TypeSelector; + +import okio.ByteString; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.StringReader; +import java.lang.reflect.Type; +import java.nio.charset.StandardCharsets; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.ParsePosition; +import java.time.LocalDate; +import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Date; +import java.util.Locale; +import java.util.Map; +import java.util.HashMap; + +/* + * A JSON utility class + * + * NOTE: in the future, this class may be converted to static, which may break + * backward-compatibility + */ +public class JSON { + private static Gson gson; + private static boolean isLenientOnJson = false; + private static DateTypeAdapter dateTypeAdapter = new DateTypeAdapter(); + private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter(); + private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(); + private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter(); + private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter(); + + @SuppressWarnings("unchecked") + public static GsonBuilder createGson() { + GsonFireBuilder fireBuilder = new GsonFireBuilder() + ; + GsonBuilder builder = fireBuilder.createGsonBuilder(); + return builder; + } + + private static String getDiscriminatorValue(JsonElement readElement, String discriminatorField) { + JsonElement element = readElement.getAsJsonObject().get(discriminatorField); + if (null == element) { + throw new IllegalArgumentException("missing discriminator field: <" + discriminatorField + ">"); + } + return element.getAsString(); + } + + /** + * Returns the Java class that implements the OpenAPI schema for the specified discriminator value. + * + * @param classByDiscriminatorValue The map of discriminator values to Java classes. + * @param discriminatorValue The value of the OpenAPI discriminator in the input data. + * @return The Java class that implements the OpenAPI schema + */ + private static Class getClassByDiscriminator(Map classByDiscriminatorValue, String discriminatorValue) { + Class clazz = (Class) classByDiscriminatorValue.get(discriminatorValue); + if (null == clazz) { + throw new IllegalArgumentException("cannot determine model class of name: <" + discriminatorValue + ">"); + } + return clazz; + } + + static { + GsonBuilder gsonBuilder = createGson(); + gsonBuilder.registerTypeAdapter(Date.class, dateTypeAdapter); + gsonBuilder.registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter); + gsonBuilder.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter); + gsonBuilder.registerTypeAdapter(LocalDate.class, localDateTypeAdapter); + gsonBuilder.registerTypeAdapter(byte[].class, byteArrayAdapter); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.BlockDetailsModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.BlockProcessingPerformanceModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.BlockTemplateModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.BlockTemplateRequestModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.DbStatInfoModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.HeightModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.InfoModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.MaintainersInfoModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.PerformanceModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.PosEntryModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.SubmitBlockRequestModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.SubmitBlockResponseModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.TransactionAttachmentModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.TransactionDetailsModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.TransactionExtraModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.TransactionInputModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.TransactionOutputModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.TxGenerationContextModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.TxPoolPerformanceModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.TxProcessingPerformanceModel.CustomTypeAdapterFactory()); + gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.VersionModel.CustomTypeAdapterFactory()); + gson = gsonBuilder.create(); + } + + /** + * Get Gson. + * + * @return Gson + */ + public static Gson getGson() { + return gson; + } + + /** + * Set Gson. + * + * @param gson Gson + */ + public static void setGson(Gson gson) { + JSON.gson = gson; + } + + public static void setLenientOnJson(boolean lenientOnJson) { + isLenientOnJson = lenientOnJson; + } + + /** + * Serialize the given Java object into JSON string. + * + * @param obj Object + * @return String representation of the JSON + */ + public static String serialize(Object obj) { + return gson.toJson(obj); + } + + /** + * Deserialize the given JSON string to Java object. + * + * @param Type + * @param body The JSON string + * @param returnType The type to deserialize into + * @return The deserialized Java object + */ + @SuppressWarnings("unchecked") + public static T deserialize(String body, Type returnType) { + try { + if (isLenientOnJson) { + JsonReader jsonReader = new JsonReader(new StringReader(body)); + // see https://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/stream/JsonReader.html#setLenient(boolean) + jsonReader.setLenient(true); + return gson.fromJson(jsonReader, returnType); + } else { + return gson.fromJson(body, returnType); + } + } catch (JsonParseException e) { + // Fallback processing when failed to parse JSON form response body: + // return the response body string directly for the String return type; + if (returnType.equals(String.class)) { + return (T) body; + } else { + throw (e); + } + } + } + + /** + * Deserialize the given JSON InputStream to a Java object. + * + * @param Type + * @param inputStream The JSON InputStream + * @param returnType The type to deserialize into + * @return The deserialized Java object + */ + @SuppressWarnings("unchecked") + public static T deserialize(InputStream inputStream, Type returnType) throws IOException { + try (InputStreamReader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8)) { + if (isLenientOnJson) { + // see https://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/stream/JsonReader.html#setLenient(boolean) + JsonReader jsonReader = new JsonReader(reader); + jsonReader.setLenient(true); + return gson.fromJson(jsonReader, returnType); + } else { + return gson.fromJson(reader, returnType); + } + } + } + + /** + * Gson TypeAdapter for Byte Array type + */ + public static class ByteArrayAdapter extends TypeAdapter { + + @Override + public void write(JsonWriter out, byte[] value) throws IOException { + if (value == null) { + out.nullValue(); + } else { + out.value(ByteString.of(value).base64()); + } + } + + @Override + public byte[] read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String bytesAsBase64 = in.nextString(); + ByteString byteString = ByteString.decodeBase64(bytesAsBase64); + return byteString.toByteArray(); + } + } + } + + /** + * Gson TypeAdapter for JSR310 OffsetDateTime type + */ + public static class OffsetDateTimeTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public OffsetDateTimeTypeAdapter() { + this(DateTimeFormatter.ISO_OFFSET_DATE_TIME); + } + + public OffsetDateTimeTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, OffsetDateTime date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public OffsetDateTime read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + if (date.endsWith("+0000")) { + date = date.substring(0, date.length()-5) + "Z"; + } + return OffsetDateTime.parse(date, formatter); + } + } + } + + /** + * Gson TypeAdapter for JSR310 LocalDate type + */ + public static class LocalDateTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public LocalDateTypeAdapter() { + this(DateTimeFormatter.ISO_LOCAL_DATE); + } + + public LocalDateTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, LocalDate date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public LocalDate read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + return LocalDate.parse(date, formatter); + } + } + } + + public static void setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { + offsetDateTimeTypeAdapter.setFormat(dateFormat); + } + + public static void setLocalDateFormat(DateTimeFormatter dateFormat) { + localDateTypeAdapter.setFormat(dateFormat); + } + + /** + * Gson TypeAdapter for java.sql.Date type + * If the dateFormat is null, a simple "yyyy-MM-dd" format will be used + * (more efficient than SimpleDateFormat). + */ + public static class SqlDateTypeAdapter extends TypeAdapter { + + private DateFormat dateFormat; + + public SqlDateTypeAdapter() {} + + public SqlDateTypeAdapter(DateFormat dateFormat) { + this.dateFormat = dateFormat; + } + + public void setFormat(DateFormat dateFormat) { + this.dateFormat = dateFormat; + } + + @Override + public void write(JsonWriter out, java.sql.Date date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + String value; + if (dateFormat != null) { + value = dateFormat.format(date); + } else { + value = date.toString(); + } + out.value(value); + } + } + + @Override + public java.sql.Date read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + if (dateFormat != null) { + return new java.sql.Date(dateFormat.parse(date).getTime()); + } + return new java.sql.Date(ISO8601Utils.parse(date, new ParsePosition(0)).getTime()); + } catch (ParseException e) { + throw new JsonParseException(e); + } + } + } + } + + /** + * Gson TypeAdapter for java.util.Date type + * If the dateFormat is null, ISO8601Utils will be used. + */ + public static class DateTypeAdapter extends TypeAdapter { + + private DateFormat dateFormat; + + public DateTypeAdapter() {} + + public DateTypeAdapter(DateFormat dateFormat) { + this.dateFormat = dateFormat; + } + + public void setFormat(DateFormat dateFormat) { + this.dateFormat = dateFormat; + } + + @Override + public void write(JsonWriter out, Date date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + String value; + if (dateFormat != null) { + value = dateFormat.format(date); + } else { + value = ISO8601Utils.format(date, true); + } + out.value(value); + } + } + + @Override + public Date read(JsonReader in) throws IOException { + try { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + try { + if (dateFormat != null) { + return dateFormat.parse(date); + } + return ISO8601Utils.parse(date, new ParsePosition(0)); + } catch (ParseException e) { + throw new JsonParseException(e); + } + } + } catch (IllegalArgumentException e) { + throw new JsonParseException(e); + } + } + } + + public static void setDateFormat(DateFormat dateFormat) { + dateTypeAdapter.setFormat(dateFormat); + } + + public static void setSqlDateFormat(DateFormat dateFormat) { + sqlDateTypeAdapter.setFormat(dateFormat); + } +} diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/Pair.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/Pair.java new file mode 100644 index 00000000..f1d44191 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/Pair.java @@ -0,0 +1,37 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client; + +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:17:29.381548+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class Pair { + private final String name; + private final String value; + + public Pair(String name, String value) { + this.name = isValidString(name) ? name : ""; + this.value = isValidString(value) ? value : ""; + } + + public String getName() { + return this.name; + } + + public String getValue() { + return this.value; + } + + private static boolean isValidString(String arg) { + return arg != null; + } +} diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/ProgressRequestBody.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/ProgressRequestBody.java new file mode 100644 index 00000000..d933bacc --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/ProgressRequestBody.java @@ -0,0 +1,73 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client; + +import okhttp3.MediaType; +import okhttp3.RequestBody; + +import java.io.IOException; + +import okio.Buffer; +import okio.BufferedSink; +import okio.ForwardingSink; +import okio.Okio; +import okio.Sink; + +public class ProgressRequestBody extends RequestBody { + + private final RequestBody requestBody; + + private final ApiCallback callback; + + public ProgressRequestBody(RequestBody requestBody, ApiCallback callback) { + this.requestBody = requestBody; + this.callback = callback; + } + + @Override + public MediaType contentType() { + return requestBody.contentType(); + } + + @Override + public long contentLength() throws IOException { + return requestBody.contentLength(); + } + + @Override + public void writeTo(BufferedSink sink) throws IOException { + BufferedSink bufferedSink = Okio.buffer(sink(sink)); + requestBody.writeTo(bufferedSink); + bufferedSink.flush(); + } + + private Sink sink(Sink sink) { + return new ForwardingSink(sink) { + + long bytesWritten = 0L; + long contentLength = 0L; + + @Override + public void write(Buffer source, long byteCount) throws IOException { + super.write(source, byteCount); + if (contentLength == 0) { + contentLength = contentLength(); + } + + bytesWritten += byteCount; + callback.onUploadProgress(bytesWritten, contentLength, bytesWritten == contentLength); + } + }; + } +} diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/ProgressResponseBody.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/ProgressResponseBody.java new file mode 100644 index 00000000..3e991aab --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/ProgressResponseBody.java @@ -0,0 +1,70 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client; + +import okhttp3.MediaType; +import okhttp3.ResponseBody; + +import java.io.IOException; + +import okio.Buffer; +import okio.BufferedSource; +import okio.ForwardingSource; +import okio.Okio; +import okio.Source; + +public class ProgressResponseBody extends ResponseBody { + + private final ResponseBody responseBody; + private final ApiCallback callback; + private BufferedSource bufferedSource; + + public ProgressResponseBody(ResponseBody responseBody, ApiCallback callback) { + this.responseBody = responseBody; + this.callback = callback; + } + + @Override + public MediaType contentType() { + return responseBody.contentType(); + } + + @Override + public long contentLength() { + return responseBody.contentLength(); + } + + @Override + public BufferedSource source() { + if (bufferedSource == null) { + bufferedSource = Okio.buffer(source(responseBody.source())); + } + return bufferedSource; + } + + private Source source(Source source) { + return new ForwardingSource(source) { + long totalBytesRead = 0L; + + @Override + public long read(Buffer sink, long byteCount) throws IOException { + long bytesRead = super.read(sink, byteCount); + // read() returns the number of bytes read, or -1 if this source is exhausted. + totalBytesRead += bytesRead != -1 ? bytesRead : 0; + callback.onDownloadProgress(totalBytesRead, responseBody.contentLength(), bytesRead == -1); + return bytesRead; + } + }; + } +} diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/ServerConfiguration.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/ServerConfiguration.java new file mode 100644 index 00000000..2934ac3f --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/ServerConfiguration.java @@ -0,0 +1,72 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client; + +import java.util.Map; + +/** + * Representing a Server configuration. + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:17:29.381548+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class ServerConfiguration { + public String URL; + public String description; + public Map variables; + + /** + * @param URL A URL to the target host. + * @param description A description of the host designated by the URL. + * @param variables A map between a variable name and its value. The value is used for substitution in the server's URL template. + */ + public ServerConfiguration(String URL, String description, Map variables) { + this.URL = URL; + this.description = description; + this.variables = variables; + } + + /** + * Format URL template using given variables. + * + * @param variables A map between a variable name and its value. + * @return Formatted URL. + */ + public String URL(Map variables) { + String url = this.URL; + + // go through variables and replace placeholders + for (Map.Entry variable: this.variables.entrySet()) { + String name = variable.getKey(); + ServerVariable serverVariable = variable.getValue(); + String value = serverVariable.defaultValue; + + if (variables != null && variables.containsKey(name)) { + value = variables.get(name); + if (serverVariable.enumValues.size() > 0 && !serverVariable.enumValues.contains(value)) { + throw new IllegalArgumentException("The variable " + name + " in the server URL has invalid value " + value + "."); + } + } + url = url.replace("{" + name + "}", value); + } + return url; + } + + /** + * Format URL template using default server variables. + * + * @return Formatted URL. + */ + public String URL() { + return URL(null); + } +} diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/ServerVariable.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/ServerVariable.java new file mode 100644 index 00000000..9e06d679 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/ServerVariable.java @@ -0,0 +1,37 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client; + +import java.util.HashSet; + +/** + * Representing a Server Variable for server URL template substitution. + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:17:29.381548+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class ServerVariable { + public String description; + public String defaultValue; + public HashSet enumValues = null; + + /** + * @param description A description for the server variable. + * @param defaultValue The default value to use for substitution. + * @param enumValues An enumeration of string values to be used if the substitution options are from a limited set. + */ + public ServerVariable(String description, String defaultValue, HashSet enumValues) { + this.description = description; + this.defaultValue = defaultValue; + this.enumValues = enumValues; + } +} diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/StringUtil.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/StringUtil.java new file mode 100644 index 00000000..b3350b42 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/StringUtil.java @@ -0,0 +1,83 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client; + +import java.util.Collection; +import java.util.Iterator; + +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:17:29.381548+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class StringUtil { + /** + * Check if the given array contains the given value (with case-insensitive comparison). + * + * @param array The array + * @param value The value to search + * @return true if the array contains the value + */ + public static boolean containsIgnoreCase(String[] array, String value) { + for (String str : array) { + if (value == null && str == null) { + return true; + } + if (value != null && value.equalsIgnoreCase(str)) { + return true; + } + } + return false; + } + + /** + * Join an array of strings with the given separator. + *

+ * Note: This might be replaced by utility method from commons-lang or guava someday + * if one of those libraries is added as dependency. + *

+ * + * @param array The array of strings + * @param separator The separator + * @return the resulting string + */ + public static String join(String[] array, String separator) { + int len = array.length; + if (len == 0) { + return ""; + } + + StringBuilder out = new StringBuilder(); + out.append(array[0]); + for (int i = 1; i < len; i++) { + out.append(separator).append(array[i]); + } + return out.toString(); + } + + /** + * Join a list of strings with the given separator. + * + * @param list The list of strings + * @param separator The separator + * @return the resulting string + */ + public static String join(Collection list, String separator) { + Iterator iterator = list.iterator(); + StringBuilder out = new StringBuilder(); + if (iterator.hasNext()) { + out.append(iterator.next()); + } + while (iterator.hasNext()) { + out.append(separator).append(iterator.next()); + } + return out.toString(); + } +} diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/api/BlockApi.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/api/BlockApi.java new file mode 100644 index 00000000..1fe1468d --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/api/BlockApi.java @@ -0,0 +1,727 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.api; + +import org.openapitools.client.ApiCallback; +import org.openapitools.client.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.ApiResponse; +import org.openapitools.client.Configuration; +import org.openapitools.client.Pair; +import org.openapitools.client.ProgressRequestBody; +import org.openapitools.client.ProgressResponseBody; + +import com.google.gson.reflect.TypeToken; + +import java.io.IOException; + + +import org.openapitools.client.model.BlockDetailsModel; +import org.openapitools.client.model.BlockTemplateModel; +import org.openapitools.client.model.BlockTemplateRequestModel; +import org.openapitools.client.model.HeightModel; +import org.openapitools.client.model.SubmitBlockRequestModel; +import org.openapitools.client.model.SubmitBlockResponseModel; + +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class BlockApi { + private ApiClient localVarApiClient; + private int localHostIndex; + private String localCustomBaseUrl; + + public BlockApi() { + this(Configuration.getDefaultApiClient()); + } + + public BlockApi(ApiClient apiClient) { + this.localVarApiClient = apiClient; + } + + public ApiClient getApiClient() { + return localVarApiClient; + } + + public void setApiClient(ApiClient apiClient) { + this.localVarApiClient = apiClient; + } + + public int getHostIndex() { + return localHostIndex; + } + + public void setHostIndex(int hostIndex) { + this.localHostIndex = hostIndex; + } + + public String getCustomBaseUrl() { + return localCustomBaseUrl; + } + + public void setCustomBaseUrl(String customBaseUrl) { + this.localCustomBaseUrl = customBaseUrl; + } + + /** + * Build call for createBlockTemplate + * @param blockTemplateRequestModel (required) + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
500 text/plain -
400 text/plain -
200 OK -
+ */ + public okhttp3.Call createBlockTemplateCall(@javax.annotation.Nonnull BlockTemplateRequestModel blockTemplateRequestModel, final ApiCallback _callback) throws ApiException { + String basePath = null; + // Operation Servers + String[] localBasePaths = new String[] { }; + + // Determine Base Path to Use + if (localCustomBaseUrl != null){ + basePath = localCustomBaseUrl; + } else if ( localBasePaths.length > 0 ) { + basePath = localBasePaths[localHostIndex]; + } else { + basePath = null; + } + + Object localVarPostBody = blockTemplateRequestModel; + + // create path and map variables + String localVarPath = "/block/template"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] { }; + return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call createBlockTemplateValidateBeforeCall(@javax.annotation.Nonnull BlockTemplateRequestModel blockTemplateRequestModel, final ApiCallback _callback) throws ApiException { + // verify the required parameter 'blockTemplateRequestModel' is set + if (blockTemplateRequestModel == null) { + throw new ApiException("Missing the required parameter 'blockTemplateRequestModel' when calling createBlockTemplate(Async)"); + } + + return createBlockTemplateCall(blockTemplateRequestModel, _callback); + + } + + /** + * Create a block template for mining + * + * @param blockTemplateRequestModel (required) + * @return BlockTemplateModel + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
500 text/plain -
400 text/plain -
200 OK -
+ */ + public BlockTemplateModel createBlockTemplate(@javax.annotation.Nonnull BlockTemplateRequestModel blockTemplateRequestModel) throws ApiException { + ApiResponse localVarResp = createBlockTemplateWithHttpInfo(blockTemplateRequestModel); + return localVarResp.getData(); + } + + /** + * Create a block template for mining + * + * @param blockTemplateRequestModel (required) + * @return ApiResponse<BlockTemplateModel> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
500 text/plain -
400 text/plain -
200 OK -
+ */ + public ApiResponse createBlockTemplateWithHttpInfo(@javax.annotation.Nonnull BlockTemplateRequestModel blockTemplateRequestModel) throws ApiException { + okhttp3.Call localVarCall = createBlockTemplateValidateBeforeCall(blockTemplateRequestModel, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * Create a block template for mining (asynchronously) + * + * @param blockTemplateRequestModel (required) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
500 text/plain -
400 text/plain -
200 OK -
+ */ + public okhttp3.Call createBlockTemplateAsync(@javax.annotation.Nonnull BlockTemplateRequestModel blockTemplateRequestModel, final ApiCallback _callback) throws ApiException { + + okhttp3.Call localVarCall = createBlockTemplateValidateBeforeCall(blockTemplateRequestModel, _callback); + Type localVarReturnType = new TypeToken(){}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } + /** + * Build call for getBlock + * @param identifier The hash (hex string) or height (integer) of the block to retrieve. (required) + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
404 text/plain -
400 text/plain -
200 OK -
+ */ + public okhttp3.Call getBlockCall(@javax.annotation.Nonnull String identifier, final ApiCallback _callback) throws ApiException { + String basePath = null; + // Operation Servers + String[] localBasePaths = new String[] { }; + + // Determine Base Path to Use + if (localCustomBaseUrl != null){ + basePath = localCustomBaseUrl; + } else if ( localBasePaths.length > 0 ) { + basePath = localBasePaths[localHostIndex]; + } else { + basePath = null; + } + + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/block/{identifier}" + .replace("{" + "identifier" + "}", localVarApiClient.escapeString(identifier.toString())); + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = { + }; + final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] { }; + return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call getBlockValidateBeforeCall(@javax.annotation.Nonnull String identifier, final ApiCallback _callback) throws ApiException { + // verify the required parameter 'identifier' is set + if (identifier == null) { + throw new ApiException("Missing the required parameter 'identifier' when calling getBlock(Async)"); + } + + return getBlockCall(identifier, _callback); + + } + + /** + * Get a block by its hash or height (ID) + * + * @param identifier The hash (hex string) or height (integer) of the block to retrieve. (required) + * @return BlockDetailsModel + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
404 text/plain -
400 text/plain -
200 OK -
+ */ + public BlockDetailsModel getBlock(@javax.annotation.Nonnull String identifier) throws ApiException { + ApiResponse localVarResp = getBlockWithHttpInfo(identifier); + return localVarResp.getData(); + } + + /** + * Get a block by its hash or height (ID) + * + * @param identifier The hash (hex string) or height (integer) of the block to retrieve. (required) + * @return ApiResponse<BlockDetailsModel> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
404 text/plain -
400 text/plain -
200 OK -
+ */ + public ApiResponse getBlockWithHttpInfo(@javax.annotation.Nonnull String identifier) throws ApiException { + okhttp3.Call localVarCall = getBlockValidateBeforeCall(identifier, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * Get a block by its hash or height (ID) (asynchronously) + * + * @param identifier The hash (hex string) or height (integer) of the block to retrieve. (required) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
404 text/plain -
400 text/plain -
200 OK -
+ */ + public okhttp3.Call getBlockAsync(@javax.annotation.Nonnull String identifier, final ApiCallback _callback) throws ApiException { + + okhttp3.Call localVarCall = getBlockValidateBeforeCall(identifier, _callback); + Type localVarReturnType = new TypeToken(){}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } + /** + * Build call for getBlocks + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
404 text/plain -
400 text/plain -
200 A list of block objects. -
+ */ + public okhttp3.Call getBlocksCall(final ApiCallback _callback) throws ApiException { + String basePath = null; + // Operation Servers + String[] localBasePaths = new String[] { }; + + // Determine Base Path to Use + if (localCustomBaseUrl != null){ + basePath = localCustomBaseUrl; + } else if ( localBasePaths.length > 0 ) { + basePath = localBasePaths[localHostIndex]; + } else { + basePath = null; + } + + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/block"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = { + }; + final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] { }; + return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call getBlocksValidateBeforeCall(final ApiCallback _callback) throws ApiException { + return getBlocksCall(_callback); + + } + + /** + * Get one or more blocks, with optional pagination. + * + * @return List<BlockDetailsModel> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
404 text/plain -
400 text/plain -
200 A list of block objects. -
+ */ + public List getBlocks() throws ApiException { + ApiResponse> localVarResp = getBlocksWithHttpInfo(); + return localVarResp.getData(); + } + + /** + * Get one or more blocks, with optional pagination. + * + * @return ApiResponse<List<BlockDetailsModel>> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
404 text/plain -
400 text/plain -
200 A list of block objects. -
+ */ + public ApiResponse> getBlocksWithHttpInfo() throws ApiException { + okhttp3.Call localVarCall = getBlocksValidateBeforeCall(null); + Type localVarReturnType = new TypeToken>(){}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * Get one or more blocks, with optional pagination. (asynchronously) + * + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
404 text/plain -
400 text/plain -
200 A list of block objects. -
+ */ + public okhttp3.Call getBlocksAsync(final ApiCallback> _callback) throws ApiException { + + okhttp3.Call localVarCall = getBlocksValidateBeforeCall(_callback); + Type localVarReturnType = new TypeToken>(){}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } + /** + * Build call for getHeight + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public okhttp3.Call getHeightCall(final ApiCallback _callback) throws ApiException { + String basePath = null; + // Operation Servers + String[] localBasePaths = new String[] { }; + + // Determine Base Path to Use + if (localCustomBaseUrl != null){ + basePath = localCustomBaseUrl; + } else if ( localBasePaths.length > 0 ) { + basePath = localBasePaths[localHostIndex]; + } else { + basePath = null; + } + + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/block/height"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = { + }; + final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] { }; + return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call getHeightValidateBeforeCall(final ApiCallback _callback) throws ApiException { + return getHeightCall(_callback); + + } + + /** + * Get the current blockchain height + * + * @return HeightModel + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public HeightModel getHeight() throws ApiException { + ApiResponse localVarResp = getHeightWithHttpInfo(); + return localVarResp.getData(); + } + + /** + * Get the current blockchain height + * + * @return ApiResponse<HeightModel> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public ApiResponse getHeightWithHttpInfo() throws ApiException { + okhttp3.Call localVarCall = getHeightValidateBeforeCall(null); + Type localVarReturnType = new TypeToken(){}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * Get the current blockchain height (asynchronously) + * + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public okhttp3.Call getHeightAsync(final ApiCallback _callback) throws ApiException { + + okhttp3.Call localVarCall = getHeightValidateBeforeCall(_callback); + Type localVarReturnType = new TypeToken(){}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } + /** + * Build call for submitBlock + * @param submitBlockRequestModel (required) + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
406 text/plain -
400 text/plain -
200 OK -
+ */ + public okhttp3.Call submitBlockCall(@javax.annotation.Nonnull SubmitBlockRequestModel submitBlockRequestModel, final ApiCallback _callback) throws ApiException { + String basePath = null; + // Operation Servers + String[] localBasePaths = new String[] { }; + + // Determine Base Path to Use + if (localCustomBaseUrl != null){ + basePath = localCustomBaseUrl; + } else if ( localBasePaths.length > 0 ) { + basePath = localBasePaths[localHostIndex]; + } else { + basePath = null; + } + + Object localVarPostBody = submitBlockRequestModel; + + // create path and map variables + String localVarPath = "/block/submit"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = { + "application/json" + }; + final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] { }; + return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call submitBlockValidateBeforeCall(@javax.annotation.Nonnull SubmitBlockRequestModel submitBlockRequestModel, final ApiCallback _callback) throws ApiException { + // verify the required parameter 'submitBlockRequestModel' is set + if (submitBlockRequestModel == null) { + throw new ApiException("Missing the required parameter 'submitBlockRequestModel' when calling submitBlock(Async)"); + } + + return submitBlockCall(submitBlockRequestModel, _callback); + + } + + /** + * Submit a new block to the network + * + * @param submitBlockRequestModel (required) + * @return SubmitBlockResponseModel + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
406 text/plain -
400 text/plain -
200 OK -
+ */ + public SubmitBlockResponseModel submitBlock(@javax.annotation.Nonnull SubmitBlockRequestModel submitBlockRequestModel) throws ApiException { + ApiResponse localVarResp = submitBlockWithHttpInfo(submitBlockRequestModel); + return localVarResp.getData(); + } + + /** + * Submit a new block to the network + * + * @param submitBlockRequestModel (required) + * @return ApiResponse<SubmitBlockResponseModel> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
406 text/plain -
400 text/plain -
200 OK -
+ */ + public ApiResponse submitBlockWithHttpInfo(@javax.annotation.Nonnull SubmitBlockRequestModel submitBlockRequestModel) throws ApiException { + okhttp3.Call localVarCall = submitBlockValidateBeforeCall(submitBlockRequestModel, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * Submit a new block to the network (asynchronously) + * + * @param submitBlockRequestModel (required) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @http.response.details + + + + + + +
Response Details
Status Code Description Response Headers
406 text/plain -
400 text/plain -
200 OK -
+ */ + public okhttp3.Call submitBlockAsync(@javax.annotation.Nonnull SubmitBlockRequestModel submitBlockRequestModel, final ApiCallback _callback) throws ApiException { + + okhttp3.Call localVarCall = submitBlockValidateBeforeCall(submitBlockRequestModel, _callback); + Type localVarReturnType = new TypeToken(){}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } +} diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/api/InfoApi.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/api/InfoApi.java new file mode 100644 index 00000000..6596aa15 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/api/InfoApi.java @@ -0,0 +1,318 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.api; + +import org.openapitools.client.ApiCallback; +import org.openapitools.client.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.ApiResponse; +import org.openapitools.client.Configuration; +import org.openapitools.client.Pair; +import org.openapitools.client.ProgressRequestBody; +import org.openapitools.client.ProgressResponseBody; + +import com.google.gson.reflect.TypeToken; + +import java.io.IOException; + + +import org.openapitools.client.model.InfoModel; +import org.openapitools.client.model.VersionModel; + +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class InfoApi { + private ApiClient localVarApiClient; + private int localHostIndex; + private String localCustomBaseUrl; + + public InfoApi() { + this(Configuration.getDefaultApiClient()); + } + + public InfoApi(ApiClient apiClient) { + this.localVarApiClient = apiClient; + } + + public ApiClient getApiClient() { + return localVarApiClient; + } + + public void setApiClient(ApiClient apiClient) { + this.localVarApiClient = apiClient; + } + + public int getHostIndex() { + return localHostIndex; + } + + public void setHostIndex(int hostIndex) { + this.localHostIndex = hostIndex; + } + + public String getCustomBaseUrl() { + return localCustomBaseUrl; + } + + public void setCustomBaseUrl(String customBaseUrl) { + this.localCustomBaseUrl = customBaseUrl; + } + + /** + * Build call for getInfo + * @param flags Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median. (optional) + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public okhttp3.Call getInfoCall(@javax.annotation.Nullable String flags, final ApiCallback _callback) throws ApiException { + String basePath = null; + // Operation Servers + String[] localBasePaths = new String[] { }; + + // Determine Base Path to Use + if (localCustomBaseUrl != null){ + basePath = localCustomBaseUrl; + } else if ( localBasePaths.length > 0 ) { + basePath = localBasePaths[localHostIndex]; + } else { + basePath = null; + } + + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/info"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + if (flags != null) { + localVarQueryParams.addAll(localVarApiClient.parameterToPair("flags", flags)); + } + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = { + }; + final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] { }; + return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call getInfoValidateBeforeCall(@javax.annotation.Nullable String flags, final ApiCallback _callback) throws ApiException { + return getInfoCall(flags, _callback); + + } + + /** + * Get detailed information about the blockchain and daemon state + * + * @param flags Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median. (optional) + * @return InfoModel + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public InfoModel getInfo(@javax.annotation.Nullable String flags) throws ApiException { + ApiResponse localVarResp = getInfoWithHttpInfo(flags); + return localVarResp.getData(); + } + + /** + * Get detailed information about the blockchain and daemon state + * + * @param flags Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median. (optional) + * @return ApiResponse<InfoModel> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public ApiResponse getInfoWithHttpInfo(@javax.annotation.Nullable String flags) throws ApiException { + okhttp3.Call localVarCall = getInfoValidateBeforeCall(flags, null); + Type localVarReturnType = new TypeToken(){}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * Get detailed information about the blockchain and daemon state (asynchronously) + * + * @param flags Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median. (optional) + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public okhttp3.Call getInfoAsync(@javax.annotation.Nullable String flags, final ApiCallback _callback) throws ApiException { + + okhttp3.Call localVarCall = getInfoValidateBeforeCall(flags, _callback); + Type localVarReturnType = new TypeToken(){}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } + /** + * Build call for version + * @param _callback Callback for upload/download progress + * @return Call to execute + * @throws ApiException If fail to serialize the request body object + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public okhttp3.Call versionCall(final ApiCallback _callback) throws ApiException { + String basePath = null; + // Operation Servers + String[] localBasePaths = new String[] { }; + + // Determine Base Path to Use + if (localCustomBaseUrl != null){ + basePath = localCustomBaseUrl; + } else if ( localBasePaths.length > 0 ) { + basePath = localBasePaths[localHostIndex]; + } else { + basePath = null; + } + + Object localVarPostBody = null; + + // create path and map variables + String localVarPath = "/info/version"; + + List localVarQueryParams = new ArrayList(); + List localVarCollectionQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + Map localVarCookieParams = new HashMap(); + Map localVarFormParams = new HashMap(); + + final String[] localVarAccepts = { + "application/json" + }; + final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = { + }; + final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes); + if (localVarContentType != null) { + localVarHeaderParams.put("Content-Type", localVarContentType); + } + + String[] localVarAuthNames = new String[] { }; + return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); + } + + @SuppressWarnings("rawtypes") + private okhttp3.Call versionValidateBeforeCall(final ApiCallback _callback) throws ApiException { + return versionCall(_callback); + + } + + /** + * Get API version + * Returns the current version of the API. + * @return VersionModel + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public VersionModel version() throws ApiException { + ApiResponse localVarResp = versionWithHttpInfo(); + return localVarResp.getData(); + } + + /** + * Get API version + * Returns the current version of the API. + * @return ApiResponse<VersionModel> + * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public ApiResponse versionWithHttpInfo() throws ApiException { + okhttp3.Call localVarCall = versionValidateBeforeCall(null); + Type localVarReturnType = new TypeToken(){}.getType(); + return localVarApiClient.execute(localVarCall, localVarReturnType); + } + + /** + * Get API version (asynchronously) + * Returns the current version of the API. + * @param _callback The callback to be executed when the API call finishes + * @return The request call + * @throws ApiException If fail to process the API call, e.g. serializing the request body object + * @http.response.details + + + + +
Response Details
Status Code Description Response Headers
200 OK -
+ */ + public okhttp3.Call versionAsync(final ApiCallback _callback) throws ApiException { + + okhttp3.Call localVarCall = versionValidateBeforeCall(_callback); + Type localVarReturnType = new TypeToken(){}.getType(); + localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); + return localVarCall; + } +} diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/auth/ApiKeyAuth.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/auth/ApiKeyAuth.java new file mode 100644 index 00000000..fe8f8307 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/auth/ApiKeyAuth.java @@ -0,0 +1,80 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.auth; + +import org.openapitools.client.ApiException; +import org.openapitools.client.Pair; + +import java.net.URI; +import java.util.Map; +import java.util.List; + +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:17:29.381548+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class ApiKeyAuth implements Authentication { + private final String location; + private final String paramName; + + private String apiKey; + private String apiKeyPrefix; + + public ApiKeyAuth(String location, String paramName) { + this.location = location; + this.paramName = paramName; + } + + public String getLocation() { + return location; + } + + public String getParamName() { + return paramName; + } + + public String getApiKey() { + return apiKey; + } + + public void setApiKey(String apiKey) { + this.apiKey = apiKey; + } + + public String getApiKeyPrefix() { + return apiKeyPrefix; + } + + public void setApiKeyPrefix(String apiKeyPrefix) { + this.apiKeyPrefix = apiKeyPrefix; + } + + @Override + public void applyToParams(List queryParams, Map headerParams, Map cookieParams, + String payload, String method, URI uri) throws ApiException { + if (apiKey == null) { + return; + } + String value; + if (apiKeyPrefix != null) { + value = apiKeyPrefix + " " + apiKey; + } else { + value = apiKey; + } + if ("query".equals(location)) { + queryParams.add(new Pair(paramName, value)); + } else if ("header".equals(location)) { + headerParams.put(paramName, value); + } else if ("cookie".equals(location)) { + cookieParams.put(paramName, value); + } + } +} diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/auth/Authentication.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/auth/Authentication.java new file mode 100644 index 00000000..e26548b4 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/auth/Authentication.java @@ -0,0 +1,37 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.auth; + +import org.openapitools.client.Pair; +import org.openapitools.client.ApiException; + +import java.net.URI; +import java.util.Map; +import java.util.List; + +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:17:29.381548+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public interface Authentication { + /** + * Apply authentication settings to header and query params. + * + * @param queryParams List of query parameters + * @param headerParams Map of header parameters + * @param cookieParams Map of cookie parameters + * @param payload HTTP request body + * @param method HTTP method + * @param uri URI + * @throws ApiException if failed to update the parameters + */ + void applyToParams(List queryParams, Map headerParams, Map cookieParams, String payload, String method, URI uri) throws ApiException; +} diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java new file mode 100644 index 00000000..9dc4c161 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java @@ -0,0 +1,55 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.auth; + +import org.openapitools.client.Pair; +import org.openapitools.client.ApiException; + +import okhttp3.Credentials; + +import java.net.URI; +import java.util.Map; +import java.util.List; + +public class HttpBasicAuth implements Authentication { + private String username; + private String password; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + @Override + public void applyToParams(List queryParams, Map headerParams, Map cookieParams, + String payload, String method, URI uri) throws ApiException { + if (username == null && password == null) { + return; + } + headerParams.put("Authorization", Credentials.basic( + username == null ? "" : username, + password == null ? "" : password)); + } +} diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/auth/HttpBearerAuth.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/auth/HttpBearerAuth.java new file mode 100644 index 00000000..6519f827 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/auth/HttpBearerAuth.java @@ -0,0 +1,75 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.auth; + +import org.openapitools.client.ApiException; +import org.openapitools.client.Pair; + +import java.net.URI; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.Supplier; + +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:17:29.381548+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class HttpBearerAuth implements Authentication { + private final String scheme; + private Supplier tokenSupplier; + + public HttpBearerAuth(String scheme) { + this.scheme = scheme; + } + + /** + * Gets the token, which together with the scheme, will be sent as the value of the Authorization header. + * + * @return The bearer token + */ + public String getBearerToken() { + return tokenSupplier.get(); + } + + /** + * Sets the token, which together with the scheme, will be sent as the value of the Authorization header. + * + * @param bearerToken The bearer token to send in the Authorization header + */ + public void setBearerToken(String bearerToken) { + this.tokenSupplier = () -> bearerToken; + } + + /** + * Sets the supplier of tokens, which together with the scheme, will be sent as the value of the Authorization header. + * + * @param tokenSupplier The supplier of bearer tokens to send in the Authorization header + */ + public void setBearerToken(Supplier tokenSupplier) { + this.tokenSupplier = tokenSupplier; + } + + @Override + public void applyToParams(List queryParams, Map headerParams, Map cookieParams, + String payload, String method, URI uri) throws ApiException { + String bearerToken = Optional.ofNullable(tokenSupplier).map(Supplier::get).orElse(null); + if (bearerToken == null) { + return; + } + + headerParams.put("Authorization", (scheme != null ? upperCaseBearer(scheme) + " " : "") + bearerToken); + } + + private static String upperCaseBearer(String scheme) { + return ("bearer".equalsIgnoreCase(scheme)) ? "Bearer" : scheme; + } +} diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java new file mode 100644 index 00000000..87c49961 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java @@ -0,0 +1,146 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import invalidPackageName.ApiException; +import java.util.Objects; +import java.lang.reflect.Type; +import java.util.Map; + +/** + * Abstract class for oneOf,anyOf schemas defined in OpenAPI spec + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public abstract class AbstractOpenApiSchema { + + // store the actual instance of the schema/object + private Object instance; + + // is nullable + private Boolean isNullable; + + // schema type (e.g. oneOf, anyOf) + private final String schemaType; + + public AbstractOpenApiSchema(String schemaType, Boolean isNullable) { + this.schemaType = schemaType; + this.isNullable = isNullable; + } + + /** + * Get the list of oneOf/anyOf composed schemas allowed to be stored in this object + * + * @return an instance of the actual schema/object + */ + public abstract Map> getSchemas(); + + /** + * Get the actual instance + * + * @return an instance of the actual schema/object + */ + //@JsonValue + public Object getActualInstance() {return instance;} + + /** + * Set the actual instance + * + * @param instance the actual instance of the schema/object + */ + public void setActualInstance(Object instance) {this.instance = instance;} + + /** + * Get the instant recursively when the schemas defined in oneOf/anyof happen to be oneOf/anyOf schema as well + * + * @return an instance of the actual schema/object + */ + public Object getActualInstanceRecursively() { + return getActualInstanceRecursively(this); + } + + private Object getActualInstanceRecursively(AbstractOpenApiSchema object) { + if (object.getActualInstance() == null) { + return null; + } else if (object.getActualInstance() instanceof AbstractOpenApiSchema) { + return getActualInstanceRecursively((AbstractOpenApiSchema)object.getActualInstance()); + } else { + return object.getActualInstance(); + } + } + + /** + * Get the schema type (e.g. anyOf, oneOf) + * + * @return the schema type + */ + public String getSchemaType() { + return schemaType; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ").append(getClass()).append(" {\n"); + sb.append(" instance: ").append(toIndentedString(instance)).append("\n"); + sb.append(" isNullable: ").append(toIndentedString(isNullable)).append("\n"); + sb.append(" schemaType: ").append(toIndentedString(schemaType)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + AbstractOpenApiSchema a = (AbstractOpenApiSchema) o; + return Objects.equals(this.instance, a.instance) && + Objects.equals(this.isNullable, a.isNullable) && + Objects.equals(this.schemaType, a.schemaType); + } + + @Override + public int hashCode() { + return Objects.hash(instance, isNullable, schemaType); + } + + /** + * Is nullable + * + * @return true if it's nullable + */ + public Boolean isNullable() { + if (Boolean.TRUE.equals(isNullable)) { + return Boolean.TRUE; + } else { + return Boolean.FALSE; + } + } + + + +} diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/model/BlockDetailsModel.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/BlockDetailsModel.java new file mode 100644 index 00000000..77b15bbd --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/BlockDetailsModel.java @@ -0,0 +1,885 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Locale; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import org.openapitools.client.model.TransactionDetailsModel; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Locale; + +import invalidPackageName.JSON; + +/** + * BlockDetailsModel + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class BlockDetailsModel { + public static final String SERIALIZED_NAME_ACTUAL_TIMESTAMP = "actual_timestamp"; + @SerializedName(SERIALIZED_NAME_ACTUAL_TIMESTAMP) + @javax.annotation.Nullable + private Integer actualTimestamp; + + public static final String SERIALIZED_NAME_ALREADY_GENERATED_COINS = "already_generated_coins"; + @SerializedName(SERIALIZED_NAME_ALREADY_GENERATED_COINS) + @javax.annotation.Nullable + private String alreadyGeneratedCoins; + + public static final String SERIALIZED_NAME_BASE_REWARD = "base_reward"; + @SerializedName(SERIALIZED_NAME_BASE_REWARD) + @javax.annotation.Nullable + private Integer baseReward; + + public static final String SERIALIZED_NAME_BLOB = "blob"; + @SerializedName(SERIALIZED_NAME_BLOB) + @javax.annotation.Nullable + private String blob; + + public static final String SERIALIZED_NAME_BLOCK_CUMULATIVE_SIZE = "block_cumulative_size"; + @SerializedName(SERIALIZED_NAME_BLOCK_CUMULATIVE_SIZE) + @javax.annotation.Nullable + private Integer blockCumulativeSize; + + public static final String SERIALIZED_NAME_BLOCK_TSELF_SIZE = "block_tself_size"; + @SerializedName(SERIALIZED_NAME_BLOCK_TSELF_SIZE) + @javax.annotation.Nullable + private Integer blockTselfSize; + + public static final String SERIALIZED_NAME_CUMULATIVE_DIFF_ADJUSTED = "cumulative_diff_adjusted"; + @SerializedName(SERIALIZED_NAME_CUMULATIVE_DIFF_ADJUSTED) + @javax.annotation.Nullable + private String cumulativeDiffAdjusted; + + public static final String SERIALIZED_NAME_CUMULATIVE_DIFF_PRECISE = "cumulative_diff_precise"; + @SerializedName(SERIALIZED_NAME_CUMULATIVE_DIFF_PRECISE) + @javax.annotation.Nullable + private String cumulativeDiffPrecise; + + public static final String SERIALIZED_NAME_DIFFICULTY = "difficulty"; + @SerializedName(SERIALIZED_NAME_DIFFICULTY) + @javax.annotation.Nullable + private String difficulty; + + public static final String SERIALIZED_NAME_EFFECTIVE_FEE_MEDIAN = "effective_fee_median"; + @SerializedName(SERIALIZED_NAME_EFFECTIVE_FEE_MEDIAN) + @javax.annotation.Nullable + private Integer effectiveFeeMedian; + + public static final String SERIALIZED_NAME_HEIGHT = "height"; + @SerializedName(SERIALIZED_NAME_HEIGHT) + @javax.annotation.Nullable + private Integer height; + + public static final String SERIALIZED_NAME_ID = "id"; + @SerializedName(SERIALIZED_NAME_ID) + @javax.annotation.Nullable + private String id; + + public static final String SERIALIZED_NAME_IS_ORPHAN = "is_orphan"; + @SerializedName(SERIALIZED_NAME_IS_ORPHAN) + @javax.annotation.Nullable + private Boolean isOrphan; + + public static final String SERIALIZED_NAME_MINER_TEXT_INFO = "miner_text_info"; + @SerializedName(SERIALIZED_NAME_MINER_TEXT_INFO) + @javax.annotation.Nullable + private String minerTextInfo; + + public static final String SERIALIZED_NAME_OBJECT_IN_JSON = "object_in_json"; + @SerializedName(SERIALIZED_NAME_OBJECT_IN_JSON) + @javax.annotation.Nullable + private String objectInJson; + + public static final String SERIALIZED_NAME_PENALTY = "penalty"; + @SerializedName(SERIALIZED_NAME_PENALTY) + @javax.annotation.Nullable + private Integer penalty; + + public static final String SERIALIZED_NAME_POW_SEED = "pow_seed"; + @SerializedName(SERIALIZED_NAME_POW_SEED) + @javax.annotation.Nullable + private String powSeed; + + public static final String SERIALIZED_NAME_PREV_ID = "prev_id"; + @SerializedName(SERIALIZED_NAME_PREV_ID) + @javax.annotation.Nullable + private String prevId; + + public static final String SERIALIZED_NAME_SUMMARY_REWARD = "summary_reward"; + @SerializedName(SERIALIZED_NAME_SUMMARY_REWARD) + @javax.annotation.Nullable + private Integer summaryReward; + + public static final String SERIALIZED_NAME_THIS_BLOCK_FEE_MEDIAN = "this_block_fee_median"; + @SerializedName(SERIALIZED_NAME_THIS_BLOCK_FEE_MEDIAN) + @javax.annotation.Nullable + private Integer thisBlockFeeMedian; + + public static final String SERIALIZED_NAME_TIMESTAMP = "timestamp"; + @SerializedName(SERIALIZED_NAME_TIMESTAMP) + @javax.annotation.Nullable + private Integer timestamp; + + public static final String SERIALIZED_NAME_TOTAL_FEE = "total_fee"; + @SerializedName(SERIALIZED_NAME_TOTAL_FEE) + @javax.annotation.Nullable + private Integer totalFee; + + public static final String SERIALIZED_NAME_TOTAL_TXS_SIZE = "total_txs_size"; + @SerializedName(SERIALIZED_NAME_TOTAL_TXS_SIZE) + @javax.annotation.Nullable + private Integer totalTxsSize; + + public static final String SERIALIZED_NAME_TRANSACTIONS_DETAILS = "transactions_details"; + @SerializedName(SERIALIZED_NAME_TRANSACTIONS_DETAILS) + @javax.annotation.Nullable + private List transactionsDetails = new ArrayList<>(); + + public static final String SERIALIZED_NAME_TYPE = "type"; + @SerializedName(SERIALIZED_NAME_TYPE) + @javax.annotation.Nullable + private Integer type; + + public BlockDetailsModel() { + } + + public BlockDetailsModel actualTimestamp(@javax.annotation.Nullable Integer actualTimestamp) { + this.actualTimestamp = actualTimestamp; + return this; + } + + /** + * Get actualTimestamp + * @return actualTimestamp + */ + @javax.annotation.Nullable + public Integer getActualTimestamp() { + return actualTimestamp; + } + + public void setActualTimestamp(@javax.annotation.Nullable Integer actualTimestamp) { + this.actualTimestamp = actualTimestamp; + } + + + public BlockDetailsModel alreadyGeneratedCoins(@javax.annotation.Nullable String alreadyGeneratedCoins) { + this.alreadyGeneratedCoins = alreadyGeneratedCoins; + return this; + } + + /** + * Get alreadyGeneratedCoins + * @return alreadyGeneratedCoins + */ + @javax.annotation.Nullable + public String getAlreadyGeneratedCoins() { + return alreadyGeneratedCoins; + } + + public void setAlreadyGeneratedCoins(@javax.annotation.Nullable String alreadyGeneratedCoins) { + this.alreadyGeneratedCoins = alreadyGeneratedCoins; + } + + + public BlockDetailsModel baseReward(@javax.annotation.Nullable Integer baseReward) { + this.baseReward = baseReward; + return this; + } + + /** + * Get baseReward + * @return baseReward + */ + @javax.annotation.Nullable + public Integer getBaseReward() { + return baseReward; + } + + public void setBaseReward(@javax.annotation.Nullable Integer baseReward) { + this.baseReward = baseReward; + } + + + public BlockDetailsModel blob(@javax.annotation.Nullable String blob) { + this.blob = blob; + return this; + } + + /** + * Get blob + * @return blob + */ + @javax.annotation.Nullable + public String getBlob() { + return blob; + } + + public void setBlob(@javax.annotation.Nullable String blob) { + this.blob = blob; + } + + + public BlockDetailsModel blockCumulativeSize(@javax.annotation.Nullable Integer blockCumulativeSize) { + this.blockCumulativeSize = blockCumulativeSize; + return this; + } + + /** + * Get blockCumulativeSize + * @return blockCumulativeSize + */ + @javax.annotation.Nullable + public Integer getBlockCumulativeSize() { + return blockCumulativeSize; + } + + public void setBlockCumulativeSize(@javax.annotation.Nullable Integer blockCumulativeSize) { + this.blockCumulativeSize = blockCumulativeSize; + } + + + public BlockDetailsModel blockTselfSize(@javax.annotation.Nullable Integer blockTselfSize) { + this.blockTselfSize = blockTselfSize; + return this; + } + + /** + * Get blockTselfSize + * @return blockTselfSize + */ + @javax.annotation.Nullable + public Integer getBlockTselfSize() { + return blockTselfSize; + } + + public void setBlockTselfSize(@javax.annotation.Nullable Integer blockTselfSize) { + this.blockTselfSize = blockTselfSize; + } + + + public BlockDetailsModel cumulativeDiffAdjusted(@javax.annotation.Nullable String cumulativeDiffAdjusted) { + this.cumulativeDiffAdjusted = cumulativeDiffAdjusted; + return this; + } + + /** + * Get cumulativeDiffAdjusted + * @return cumulativeDiffAdjusted + */ + @javax.annotation.Nullable + public String getCumulativeDiffAdjusted() { + return cumulativeDiffAdjusted; + } + + public void setCumulativeDiffAdjusted(@javax.annotation.Nullable String cumulativeDiffAdjusted) { + this.cumulativeDiffAdjusted = cumulativeDiffAdjusted; + } + + + public BlockDetailsModel cumulativeDiffPrecise(@javax.annotation.Nullable String cumulativeDiffPrecise) { + this.cumulativeDiffPrecise = cumulativeDiffPrecise; + return this; + } + + /** + * Get cumulativeDiffPrecise + * @return cumulativeDiffPrecise + */ + @javax.annotation.Nullable + public String getCumulativeDiffPrecise() { + return cumulativeDiffPrecise; + } + + public void setCumulativeDiffPrecise(@javax.annotation.Nullable String cumulativeDiffPrecise) { + this.cumulativeDiffPrecise = cumulativeDiffPrecise; + } + + + public BlockDetailsModel difficulty(@javax.annotation.Nullable String difficulty) { + this.difficulty = difficulty; + return this; + } + + /** + * Get difficulty + * @return difficulty + */ + @javax.annotation.Nullable + public String getDifficulty() { + return difficulty; + } + + public void setDifficulty(@javax.annotation.Nullable String difficulty) { + this.difficulty = difficulty; + } + + + public BlockDetailsModel effectiveFeeMedian(@javax.annotation.Nullable Integer effectiveFeeMedian) { + this.effectiveFeeMedian = effectiveFeeMedian; + return this; + } + + /** + * Get effectiveFeeMedian + * @return effectiveFeeMedian + */ + @javax.annotation.Nullable + public Integer getEffectiveFeeMedian() { + return effectiveFeeMedian; + } + + public void setEffectiveFeeMedian(@javax.annotation.Nullable Integer effectiveFeeMedian) { + this.effectiveFeeMedian = effectiveFeeMedian; + } + + + public BlockDetailsModel height(@javax.annotation.Nullable Integer height) { + this.height = height; + return this; + } + + /** + * Get height + * @return height + */ + @javax.annotation.Nullable + public Integer getHeight() { + return height; + } + + public void setHeight(@javax.annotation.Nullable Integer height) { + this.height = height; + } + + + public BlockDetailsModel id(@javax.annotation.Nullable String id) { + this.id = id; + return this; + } + + /** + * Get id + * @return id + */ + @javax.annotation.Nullable + public String getId() { + return id; + } + + public void setId(@javax.annotation.Nullable String id) { + this.id = id; + } + + + public BlockDetailsModel isOrphan(@javax.annotation.Nullable Boolean isOrphan) { + this.isOrphan = isOrphan; + return this; + } + + /** + * Get isOrphan + * @return isOrphan + */ + @javax.annotation.Nullable + public Boolean getIsOrphan() { + return isOrphan; + } + + public void setIsOrphan(@javax.annotation.Nullable Boolean isOrphan) { + this.isOrphan = isOrphan; + } + + + public BlockDetailsModel minerTextInfo(@javax.annotation.Nullable String minerTextInfo) { + this.minerTextInfo = minerTextInfo; + return this; + } + + /** + * Get minerTextInfo + * @return minerTextInfo + */ + @javax.annotation.Nullable + public String getMinerTextInfo() { + return minerTextInfo; + } + + public void setMinerTextInfo(@javax.annotation.Nullable String minerTextInfo) { + this.minerTextInfo = minerTextInfo; + } + + + public BlockDetailsModel objectInJson(@javax.annotation.Nullable String objectInJson) { + this.objectInJson = objectInJson; + return this; + } + + /** + * Get objectInJson + * @return objectInJson + */ + @javax.annotation.Nullable + public String getObjectInJson() { + return objectInJson; + } + + public void setObjectInJson(@javax.annotation.Nullable String objectInJson) { + this.objectInJson = objectInJson; + } + + + public BlockDetailsModel penalty(@javax.annotation.Nullable Integer penalty) { + this.penalty = penalty; + return this; + } + + /** + * Get penalty + * @return penalty + */ + @javax.annotation.Nullable + public Integer getPenalty() { + return penalty; + } + + public void setPenalty(@javax.annotation.Nullable Integer penalty) { + this.penalty = penalty; + } + + + public BlockDetailsModel powSeed(@javax.annotation.Nullable String powSeed) { + this.powSeed = powSeed; + return this; + } + + /** + * Get powSeed + * @return powSeed + */ + @javax.annotation.Nullable + public String getPowSeed() { + return powSeed; + } + + public void setPowSeed(@javax.annotation.Nullable String powSeed) { + this.powSeed = powSeed; + } + + + public BlockDetailsModel prevId(@javax.annotation.Nullable String prevId) { + this.prevId = prevId; + return this; + } + + /** + * Get prevId + * @return prevId + */ + @javax.annotation.Nullable + public String getPrevId() { + return prevId; + } + + public void setPrevId(@javax.annotation.Nullable String prevId) { + this.prevId = prevId; + } + + + public BlockDetailsModel summaryReward(@javax.annotation.Nullable Integer summaryReward) { + this.summaryReward = summaryReward; + return this; + } + + /** + * Get summaryReward + * @return summaryReward + */ + @javax.annotation.Nullable + public Integer getSummaryReward() { + return summaryReward; + } + + public void setSummaryReward(@javax.annotation.Nullable Integer summaryReward) { + this.summaryReward = summaryReward; + } + + + public BlockDetailsModel thisBlockFeeMedian(@javax.annotation.Nullable Integer thisBlockFeeMedian) { + this.thisBlockFeeMedian = thisBlockFeeMedian; + return this; + } + + /** + * Get thisBlockFeeMedian + * @return thisBlockFeeMedian + */ + @javax.annotation.Nullable + public Integer getThisBlockFeeMedian() { + return thisBlockFeeMedian; + } + + public void setThisBlockFeeMedian(@javax.annotation.Nullable Integer thisBlockFeeMedian) { + this.thisBlockFeeMedian = thisBlockFeeMedian; + } + + + public BlockDetailsModel timestamp(@javax.annotation.Nullable Integer timestamp) { + this.timestamp = timestamp; + return this; + } + + /** + * Get timestamp + * @return timestamp + */ + @javax.annotation.Nullable + public Integer getTimestamp() { + return timestamp; + } + + public void setTimestamp(@javax.annotation.Nullable Integer timestamp) { + this.timestamp = timestamp; + } + + + public BlockDetailsModel totalFee(@javax.annotation.Nullable Integer totalFee) { + this.totalFee = totalFee; + return this; + } + + /** + * Get totalFee + * @return totalFee + */ + @javax.annotation.Nullable + public Integer getTotalFee() { + return totalFee; + } + + public void setTotalFee(@javax.annotation.Nullable Integer totalFee) { + this.totalFee = totalFee; + } + + + public BlockDetailsModel totalTxsSize(@javax.annotation.Nullable Integer totalTxsSize) { + this.totalTxsSize = totalTxsSize; + return this; + } + + /** + * Get totalTxsSize + * @return totalTxsSize + */ + @javax.annotation.Nullable + public Integer getTotalTxsSize() { + return totalTxsSize; + } + + public void setTotalTxsSize(@javax.annotation.Nullable Integer totalTxsSize) { + this.totalTxsSize = totalTxsSize; + } + + + public BlockDetailsModel transactionsDetails(@javax.annotation.Nullable List transactionsDetails) { + this.transactionsDetails = transactionsDetails; + return this; + } + + public BlockDetailsModel addTransactionsDetailsItem(TransactionDetailsModel transactionsDetailsItem) { + if (this.transactionsDetails == null) { + this.transactionsDetails = new ArrayList<>(); + } + this.transactionsDetails.add(transactionsDetailsItem); + return this; + } + + /** + * Get transactionsDetails + * @return transactionsDetails + */ + @javax.annotation.Nullable + public List getTransactionsDetails() { + return transactionsDetails; + } + + public void setTransactionsDetails(@javax.annotation.Nullable List transactionsDetails) { + this.transactionsDetails = transactionsDetails; + } + + + public BlockDetailsModel type(@javax.annotation.Nullable Integer type) { + this.type = type; + return this; + } + + /** + * Get type + * minimum: 0 + * maximum: 4294967295 + * @return type + */ + @javax.annotation.Nullable + public Integer getType() { + return type; + } + + public void setType(@javax.annotation.Nullable Integer type) { + this.type = type; + } + + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + BlockDetailsModel blockDetailsModel = (BlockDetailsModel) o; + return Objects.equals(this.actualTimestamp, blockDetailsModel.actualTimestamp) && + Objects.equals(this.alreadyGeneratedCoins, blockDetailsModel.alreadyGeneratedCoins) && + Objects.equals(this.baseReward, blockDetailsModel.baseReward) && + Objects.equals(this.blob, blockDetailsModel.blob) && + Objects.equals(this.blockCumulativeSize, blockDetailsModel.blockCumulativeSize) && + Objects.equals(this.blockTselfSize, blockDetailsModel.blockTselfSize) && + Objects.equals(this.cumulativeDiffAdjusted, blockDetailsModel.cumulativeDiffAdjusted) && + Objects.equals(this.cumulativeDiffPrecise, blockDetailsModel.cumulativeDiffPrecise) && + Objects.equals(this.difficulty, blockDetailsModel.difficulty) && + Objects.equals(this.effectiveFeeMedian, blockDetailsModel.effectiveFeeMedian) && + Objects.equals(this.height, blockDetailsModel.height) && + Objects.equals(this.id, blockDetailsModel.id) && + Objects.equals(this.isOrphan, blockDetailsModel.isOrphan) && + Objects.equals(this.minerTextInfo, blockDetailsModel.minerTextInfo) && + Objects.equals(this.objectInJson, blockDetailsModel.objectInJson) && + Objects.equals(this.penalty, blockDetailsModel.penalty) && + Objects.equals(this.powSeed, blockDetailsModel.powSeed) && + Objects.equals(this.prevId, blockDetailsModel.prevId) && + Objects.equals(this.summaryReward, blockDetailsModel.summaryReward) && + Objects.equals(this.thisBlockFeeMedian, blockDetailsModel.thisBlockFeeMedian) && + Objects.equals(this.timestamp, blockDetailsModel.timestamp) && + Objects.equals(this.totalFee, blockDetailsModel.totalFee) && + Objects.equals(this.totalTxsSize, blockDetailsModel.totalTxsSize) && + Objects.equals(this.transactionsDetails, blockDetailsModel.transactionsDetails) && + Objects.equals(this.type, blockDetailsModel.type); + } + + @Override + public int hashCode() { + return Objects.hash(actualTimestamp, alreadyGeneratedCoins, baseReward, blob, blockCumulativeSize, blockTselfSize, cumulativeDiffAdjusted, cumulativeDiffPrecise, difficulty, effectiveFeeMedian, height, id, isOrphan, minerTextInfo, objectInJson, penalty, powSeed, prevId, summaryReward, thisBlockFeeMedian, timestamp, totalFee, totalTxsSize, transactionsDetails, type); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class BlockDetailsModel {\n"); + sb.append(" actualTimestamp: ").append(toIndentedString(actualTimestamp)).append("\n"); + sb.append(" alreadyGeneratedCoins: ").append(toIndentedString(alreadyGeneratedCoins)).append("\n"); + sb.append(" baseReward: ").append(toIndentedString(baseReward)).append("\n"); + sb.append(" blob: ").append(toIndentedString(blob)).append("\n"); + sb.append(" blockCumulativeSize: ").append(toIndentedString(blockCumulativeSize)).append("\n"); + sb.append(" blockTselfSize: ").append(toIndentedString(blockTselfSize)).append("\n"); + sb.append(" cumulativeDiffAdjusted: ").append(toIndentedString(cumulativeDiffAdjusted)).append("\n"); + sb.append(" cumulativeDiffPrecise: ").append(toIndentedString(cumulativeDiffPrecise)).append("\n"); + sb.append(" difficulty: ").append(toIndentedString(difficulty)).append("\n"); + sb.append(" effectiveFeeMedian: ").append(toIndentedString(effectiveFeeMedian)).append("\n"); + sb.append(" height: ").append(toIndentedString(height)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" isOrphan: ").append(toIndentedString(isOrphan)).append("\n"); + sb.append(" minerTextInfo: ").append(toIndentedString(minerTextInfo)).append("\n"); + sb.append(" objectInJson: ").append(toIndentedString(objectInJson)).append("\n"); + sb.append(" penalty: ").append(toIndentedString(penalty)).append("\n"); + sb.append(" powSeed: ").append(toIndentedString(powSeed)).append("\n"); + sb.append(" prevId: ").append(toIndentedString(prevId)).append("\n"); + sb.append(" summaryReward: ").append(toIndentedString(summaryReward)).append("\n"); + sb.append(" thisBlockFeeMedian: ").append(toIndentedString(thisBlockFeeMedian)).append("\n"); + sb.append(" timestamp: ").append(toIndentedString(timestamp)).append("\n"); + sb.append(" totalFee: ").append(toIndentedString(totalFee)).append("\n"); + sb.append(" totalTxsSize: ").append(toIndentedString(totalTxsSize)).append("\n"); + sb.append(" transactionsDetails: ").append(toIndentedString(transactionsDetails)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + + public static HashSet openapiFields; + public static HashSet openapiRequiredFields; + + static { + // a set of all properties/fields (JSON key names) + openapiFields = new HashSet(Arrays.asList("actual_timestamp", "already_generated_coins", "base_reward", "blob", "block_cumulative_size", "block_tself_size", "cumulative_diff_adjusted", "cumulative_diff_precise", "difficulty", "effective_fee_median", "height", "id", "is_orphan", "miner_text_info", "object_in_json", "penalty", "pow_seed", "prev_id", "summary_reward", "this_block_fee_median", "timestamp", "total_fee", "total_txs_size", "transactions_details", "type")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * Validates the JSON Element and throws an exception if issues found + * + * @param jsonElement JSON Element + * @throws IOException if the JSON Element is invalid with respect to BlockDetailsModel + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!BlockDetailsModel.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in BlockDetailsModel is not found in the empty JSON string", BlockDetailsModel.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!BlockDetailsModel.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` in the JSON string is not defined in the `BlockDetailsModel` properties. JSON: %s", entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + if ((jsonObj.get("already_generated_coins") != null && !jsonObj.get("already_generated_coins").isJsonNull()) && !jsonObj.get("already_generated_coins").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `already_generated_coins` to be a primitive type in the JSON string but got `%s`", jsonObj.get("already_generated_coins").toString())); + } + if ((jsonObj.get("blob") != null && !jsonObj.get("blob").isJsonNull()) && !jsonObj.get("blob").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `blob` to be a primitive type in the JSON string but got `%s`", jsonObj.get("blob").toString())); + } + if ((jsonObj.get("cumulative_diff_adjusted") != null && !jsonObj.get("cumulative_diff_adjusted").isJsonNull()) && !jsonObj.get("cumulative_diff_adjusted").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `cumulative_diff_adjusted` to be a primitive type in the JSON string but got `%s`", jsonObj.get("cumulative_diff_adjusted").toString())); + } + if ((jsonObj.get("cumulative_diff_precise") != null && !jsonObj.get("cumulative_diff_precise").isJsonNull()) && !jsonObj.get("cumulative_diff_precise").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `cumulative_diff_precise` to be a primitive type in the JSON string but got `%s`", jsonObj.get("cumulative_diff_precise").toString())); + } + if ((jsonObj.get("difficulty") != null && !jsonObj.get("difficulty").isJsonNull()) && !jsonObj.get("difficulty").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `difficulty` to be a primitive type in the JSON string but got `%s`", jsonObj.get("difficulty").toString())); + } + if ((jsonObj.get("id") != null && !jsonObj.get("id").isJsonNull()) && !jsonObj.get("id").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `id` to be a primitive type in the JSON string but got `%s`", jsonObj.get("id").toString())); + } + if ((jsonObj.get("miner_text_info") != null && !jsonObj.get("miner_text_info").isJsonNull()) && !jsonObj.get("miner_text_info").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `miner_text_info` to be a primitive type in the JSON string but got `%s`", jsonObj.get("miner_text_info").toString())); + } + if ((jsonObj.get("object_in_json") != null && !jsonObj.get("object_in_json").isJsonNull()) && !jsonObj.get("object_in_json").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `object_in_json` to be a primitive type in the JSON string but got `%s`", jsonObj.get("object_in_json").toString())); + } + if ((jsonObj.get("pow_seed") != null && !jsonObj.get("pow_seed").isJsonNull()) && !jsonObj.get("pow_seed").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `pow_seed` to be a primitive type in the JSON string but got `%s`", jsonObj.get("pow_seed").toString())); + } + if ((jsonObj.get("prev_id") != null && !jsonObj.get("prev_id").isJsonNull()) && !jsonObj.get("prev_id").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `prev_id` to be a primitive type in the JSON string but got `%s`", jsonObj.get("prev_id").toString())); + } + if (jsonObj.get("transactions_details") != null && !jsonObj.get("transactions_details").isJsonNull()) { + JsonArray jsonArraytransactionsDetails = jsonObj.getAsJsonArray("transactions_details"); + if (jsonArraytransactionsDetails != null) { + // ensure the json data is an array + if (!jsonObj.get("transactions_details").isJsonArray()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `transactions_details` to be an array in the JSON string but got `%s`", jsonObj.get("transactions_details").toString())); + } + + // validate the optional field `transactions_details` (array) + for (int i = 0; i < jsonArraytransactionsDetails.size(); i++) { + TransactionDetailsModel.validateJsonElement(jsonArraytransactionsDetails.get(i)); + }; + } + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!BlockDetailsModel.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'BlockDetailsModel' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter + = gson.getDelegateAdapter(this, TypeToken.get(BlockDetailsModel.class)); + + return (TypeAdapter) new TypeAdapter() { + @Override + public void write(JsonWriter out, BlockDetailsModel value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public BlockDetailsModel read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + + }.nullSafe(); + } + } + + /** + * Create an instance of BlockDetailsModel given an JSON string + * + * @param jsonString JSON string + * @return An instance of BlockDetailsModel + * @throws IOException if the JSON string is invalid with respect to BlockDetailsModel + */ + public static BlockDetailsModel fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, BlockDetailsModel.class); + } + + /** + * Convert an instance of BlockDetailsModel to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} + diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/model/BlockProcessingPerformanceModel.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/BlockProcessingPerformanceModel.java new file mode 100644 index 00000000..df42cb3a --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/BlockProcessingPerformanceModel.java @@ -0,0 +1,594 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Locale; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Locale; + +import invalidPackageName.JSON; + +/** + * BlockProcessingPerformanceModel + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class BlockProcessingPerformanceModel { + public static final String SERIALIZED_NAME_BLOCK_PROCESSING_TIME0 = "block_processing_time_0"; + @SerializedName(SERIALIZED_NAME_BLOCK_PROCESSING_TIME0) + @javax.annotation.Nullable + private Integer blockProcessingTime0; + + public static final String SERIALIZED_NAME_BLOCK_PROCESSING_TIME1 = "block_processing_time_1"; + @SerializedName(SERIALIZED_NAME_BLOCK_PROCESSING_TIME1) + @javax.annotation.Nullable + private Integer blockProcessingTime1; + + public static final String SERIALIZED_NAME_TARGET_CALCULATING_TIME2 = "target_calculating_time_2"; + @SerializedName(SERIALIZED_NAME_TARGET_CALCULATING_TIME2) + @javax.annotation.Nullable + private Integer targetCalculatingTime2; + + public static final String SERIALIZED_NAME_LONGHASH_CALCULATING_TIME3 = "longhash_calculating_time_3"; + @SerializedName(SERIALIZED_NAME_LONGHASH_CALCULATING_TIME3) + @javax.annotation.Nullable + private Integer longhashCalculatingTime3; + + public static final String SERIALIZED_NAME_ALL_TXS_INSERT_TIME5 = "all_txs_insert_time_5"; + @SerializedName(SERIALIZED_NAME_ALL_TXS_INSERT_TIME5) + @javax.annotation.Nullable + private Integer allTxsInsertTime5; + + public static final String SERIALIZED_NAME_ETC_STUFF6 = "etc_stuff_6"; + @SerializedName(SERIALIZED_NAME_ETC_STUFF6) + @javax.annotation.Nullable + private Integer etcStuff6; + + public static final String SERIALIZED_NAME_INSERT_TIME4 = "insert_time_4"; + @SerializedName(SERIALIZED_NAME_INSERT_TIME4) + @javax.annotation.Nullable + private Integer insertTime4; + + public static final String SERIALIZED_NAME_RAISE_BLOCK_CORE_EVENT = "raise_block_core_event"; + @SerializedName(SERIALIZED_NAME_RAISE_BLOCK_CORE_EVENT) + @javax.annotation.Nullable + private Integer raiseBlockCoreEvent; + + public static final String SERIALIZED_NAME_VALIDATE_MINER_TRANSACTION_TIME = "validate_miner_transaction_time"; + @SerializedName(SERIALIZED_NAME_VALIDATE_MINER_TRANSACTION_TIME) + @javax.annotation.Nullable + private Integer validateMinerTransactionTime; + + public static final String SERIALIZED_NAME_COLLECT_RANGEPROOFS_DATA_FROM_TX_TIME = "collect_rangeproofs_data_from_tx_time"; + @SerializedName(SERIALIZED_NAME_COLLECT_RANGEPROOFS_DATA_FROM_TX_TIME) + @javax.annotation.Nullable + private Integer collectRangeproofsDataFromTxTime; + + public static final String SERIALIZED_NAME_VERIFY_MULTIPLE_ZC_OUTS_RANGE_PROOFS_TIME = "verify_multiple_zc_outs_range_proofs_time"; + @SerializedName(SERIALIZED_NAME_VERIFY_MULTIPLE_ZC_OUTS_RANGE_PROOFS_TIME) + @javax.annotation.Nullable + private Integer verifyMultipleZcOutsRangeProofsTime; + + public static final String SERIALIZED_NAME_TARGET_CALCULATING_ENUM_BLOCKS = "target_calculating_enum_blocks"; + @SerializedName(SERIALIZED_NAME_TARGET_CALCULATING_ENUM_BLOCKS) + @javax.annotation.Nullable + private Integer targetCalculatingEnumBlocks; + + public static final String SERIALIZED_NAME_TARGET_CALCULATING_CALC = "target_calculating_calc"; + @SerializedName(SERIALIZED_NAME_TARGET_CALCULATING_CALC) + @javax.annotation.Nullable + private Integer targetCalculatingCalc; + + public static final String SERIALIZED_NAME_POS_VALIDATE_KI_SEARCH = "pos_validate_ki_search"; + @SerializedName(SERIALIZED_NAME_POS_VALIDATE_KI_SEARCH) + @javax.annotation.Nullable + private Integer posValidateKiSearch; + + public static final String SERIALIZED_NAME_POS_VALIDATE_GET_OUT_KEYS_FOR_INPUTS = "pos_validate_get_out_keys_for_inputs"; + @SerializedName(SERIALIZED_NAME_POS_VALIDATE_GET_OUT_KEYS_FOR_INPUTS) + @javax.annotation.Nullable + private Integer posValidateGetOutKeysForInputs; + + public static final String SERIALIZED_NAME_POS_VALIDATE_ZVP = "pos_validate_zvp"; + @SerializedName(SERIALIZED_NAME_POS_VALIDATE_ZVP) + @javax.annotation.Nullable + private Integer posValidateZvp; + + public BlockProcessingPerformanceModel() { + } + + public BlockProcessingPerformanceModel blockProcessingTime0(@javax.annotation.Nullable Integer blockProcessingTime0) { + this.blockProcessingTime0 = blockProcessingTime0; + return this; + } + + /** + * Get blockProcessingTime0 + * @return blockProcessingTime0 + */ + @javax.annotation.Nullable + public Integer getBlockProcessingTime0() { + return blockProcessingTime0; + } + + public void setBlockProcessingTime0(@javax.annotation.Nullable Integer blockProcessingTime0) { + this.blockProcessingTime0 = blockProcessingTime0; + } + + + public BlockProcessingPerformanceModel blockProcessingTime1(@javax.annotation.Nullable Integer blockProcessingTime1) { + this.blockProcessingTime1 = blockProcessingTime1; + return this; + } + + /** + * Get blockProcessingTime1 + * @return blockProcessingTime1 + */ + @javax.annotation.Nullable + public Integer getBlockProcessingTime1() { + return blockProcessingTime1; + } + + public void setBlockProcessingTime1(@javax.annotation.Nullable Integer blockProcessingTime1) { + this.blockProcessingTime1 = blockProcessingTime1; + } + + + public BlockProcessingPerformanceModel targetCalculatingTime2(@javax.annotation.Nullable Integer targetCalculatingTime2) { + this.targetCalculatingTime2 = targetCalculatingTime2; + return this; + } + + /** + * Get targetCalculatingTime2 + * @return targetCalculatingTime2 + */ + @javax.annotation.Nullable + public Integer getTargetCalculatingTime2() { + return targetCalculatingTime2; + } + + public void setTargetCalculatingTime2(@javax.annotation.Nullable Integer targetCalculatingTime2) { + this.targetCalculatingTime2 = targetCalculatingTime2; + } + + + public BlockProcessingPerformanceModel longhashCalculatingTime3(@javax.annotation.Nullable Integer longhashCalculatingTime3) { + this.longhashCalculatingTime3 = longhashCalculatingTime3; + return this; + } + + /** + * Get longhashCalculatingTime3 + * @return longhashCalculatingTime3 + */ + @javax.annotation.Nullable + public Integer getLonghashCalculatingTime3() { + return longhashCalculatingTime3; + } + + public void setLonghashCalculatingTime3(@javax.annotation.Nullable Integer longhashCalculatingTime3) { + this.longhashCalculatingTime3 = longhashCalculatingTime3; + } + + + public BlockProcessingPerformanceModel allTxsInsertTime5(@javax.annotation.Nullable Integer allTxsInsertTime5) { + this.allTxsInsertTime5 = allTxsInsertTime5; + return this; + } + + /** + * Get allTxsInsertTime5 + * @return allTxsInsertTime5 + */ + @javax.annotation.Nullable + public Integer getAllTxsInsertTime5() { + return allTxsInsertTime5; + } + + public void setAllTxsInsertTime5(@javax.annotation.Nullable Integer allTxsInsertTime5) { + this.allTxsInsertTime5 = allTxsInsertTime5; + } + + + public BlockProcessingPerformanceModel etcStuff6(@javax.annotation.Nullable Integer etcStuff6) { + this.etcStuff6 = etcStuff6; + return this; + } + + /** + * Get etcStuff6 + * @return etcStuff6 + */ + @javax.annotation.Nullable + public Integer getEtcStuff6() { + return etcStuff6; + } + + public void setEtcStuff6(@javax.annotation.Nullable Integer etcStuff6) { + this.etcStuff6 = etcStuff6; + } + + + public BlockProcessingPerformanceModel insertTime4(@javax.annotation.Nullable Integer insertTime4) { + this.insertTime4 = insertTime4; + return this; + } + + /** + * Get insertTime4 + * @return insertTime4 + */ + @javax.annotation.Nullable + public Integer getInsertTime4() { + return insertTime4; + } + + public void setInsertTime4(@javax.annotation.Nullable Integer insertTime4) { + this.insertTime4 = insertTime4; + } + + + public BlockProcessingPerformanceModel raiseBlockCoreEvent(@javax.annotation.Nullable Integer raiseBlockCoreEvent) { + this.raiseBlockCoreEvent = raiseBlockCoreEvent; + return this; + } + + /** + * Get raiseBlockCoreEvent + * @return raiseBlockCoreEvent + */ + @javax.annotation.Nullable + public Integer getRaiseBlockCoreEvent() { + return raiseBlockCoreEvent; + } + + public void setRaiseBlockCoreEvent(@javax.annotation.Nullable Integer raiseBlockCoreEvent) { + this.raiseBlockCoreEvent = raiseBlockCoreEvent; + } + + + public BlockProcessingPerformanceModel validateMinerTransactionTime(@javax.annotation.Nullable Integer validateMinerTransactionTime) { + this.validateMinerTransactionTime = validateMinerTransactionTime; + return this; + } + + /** + * Get validateMinerTransactionTime + * @return validateMinerTransactionTime + */ + @javax.annotation.Nullable + public Integer getValidateMinerTransactionTime() { + return validateMinerTransactionTime; + } + + public void setValidateMinerTransactionTime(@javax.annotation.Nullable Integer validateMinerTransactionTime) { + this.validateMinerTransactionTime = validateMinerTransactionTime; + } + + + public BlockProcessingPerformanceModel collectRangeproofsDataFromTxTime(@javax.annotation.Nullable Integer collectRangeproofsDataFromTxTime) { + this.collectRangeproofsDataFromTxTime = collectRangeproofsDataFromTxTime; + return this; + } + + /** + * Get collectRangeproofsDataFromTxTime + * @return collectRangeproofsDataFromTxTime + */ + @javax.annotation.Nullable + public Integer getCollectRangeproofsDataFromTxTime() { + return collectRangeproofsDataFromTxTime; + } + + public void setCollectRangeproofsDataFromTxTime(@javax.annotation.Nullable Integer collectRangeproofsDataFromTxTime) { + this.collectRangeproofsDataFromTxTime = collectRangeproofsDataFromTxTime; + } + + + public BlockProcessingPerformanceModel verifyMultipleZcOutsRangeProofsTime(@javax.annotation.Nullable Integer verifyMultipleZcOutsRangeProofsTime) { + this.verifyMultipleZcOutsRangeProofsTime = verifyMultipleZcOutsRangeProofsTime; + return this; + } + + /** + * Get verifyMultipleZcOutsRangeProofsTime + * @return verifyMultipleZcOutsRangeProofsTime + */ + @javax.annotation.Nullable + public Integer getVerifyMultipleZcOutsRangeProofsTime() { + return verifyMultipleZcOutsRangeProofsTime; + } + + public void setVerifyMultipleZcOutsRangeProofsTime(@javax.annotation.Nullable Integer verifyMultipleZcOutsRangeProofsTime) { + this.verifyMultipleZcOutsRangeProofsTime = verifyMultipleZcOutsRangeProofsTime; + } + + + public BlockProcessingPerformanceModel targetCalculatingEnumBlocks(@javax.annotation.Nullable Integer targetCalculatingEnumBlocks) { + this.targetCalculatingEnumBlocks = targetCalculatingEnumBlocks; + return this; + } + + /** + * Get targetCalculatingEnumBlocks + * @return targetCalculatingEnumBlocks + */ + @javax.annotation.Nullable + public Integer getTargetCalculatingEnumBlocks() { + return targetCalculatingEnumBlocks; + } + + public void setTargetCalculatingEnumBlocks(@javax.annotation.Nullable Integer targetCalculatingEnumBlocks) { + this.targetCalculatingEnumBlocks = targetCalculatingEnumBlocks; + } + + + public BlockProcessingPerformanceModel targetCalculatingCalc(@javax.annotation.Nullable Integer targetCalculatingCalc) { + this.targetCalculatingCalc = targetCalculatingCalc; + return this; + } + + /** + * Get targetCalculatingCalc + * @return targetCalculatingCalc + */ + @javax.annotation.Nullable + public Integer getTargetCalculatingCalc() { + return targetCalculatingCalc; + } + + public void setTargetCalculatingCalc(@javax.annotation.Nullable Integer targetCalculatingCalc) { + this.targetCalculatingCalc = targetCalculatingCalc; + } + + + public BlockProcessingPerformanceModel posValidateKiSearch(@javax.annotation.Nullable Integer posValidateKiSearch) { + this.posValidateKiSearch = posValidateKiSearch; + return this; + } + + /** + * Get posValidateKiSearch + * @return posValidateKiSearch + */ + @javax.annotation.Nullable + public Integer getPosValidateKiSearch() { + return posValidateKiSearch; + } + + public void setPosValidateKiSearch(@javax.annotation.Nullable Integer posValidateKiSearch) { + this.posValidateKiSearch = posValidateKiSearch; + } + + + public BlockProcessingPerformanceModel posValidateGetOutKeysForInputs(@javax.annotation.Nullable Integer posValidateGetOutKeysForInputs) { + this.posValidateGetOutKeysForInputs = posValidateGetOutKeysForInputs; + return this; + } + + /** + * Get posValidateGetOutKeysForInputs + * @return posValidateGetOutKeysForInputs + */ + @javax.annotation.Nullable + public Integer getPosValidateGetOutKeysForInputs() { + return posValidateGetOutKeysForInputs; + } + + public void setPosValidateGetOutKeysForInputs(@javax.annotation.Nullable Integer posValidateGetOutKeysForInputs) { + this.posValidateGetOutKeysForInputs = posValidateGetOutKeysForInputs; + } + + + public BlockProcessingPerformanceModel posValidateZvp(@javax.annotation.Nullable Integer posValidateZvp) { + this.posValidateZvp = posValidateZvp; + return this; + } + + /** + * Get posValidateZvp + * @return posValidateZvp + */ + @javax.annotation.Nullable + public Integer getPosValidateZvp() { + return posValidateZvp; + } + + public void setPosValidateZvp(@javax.annotation.Nullable Integer posValidateZvp) { + this.posValidateZvp = posValidateZvp; + } + + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + BlockProcessingPerformanceModel blockProcessingPerformanceModel = (BlockProcessingPerformanceModel) o; + return Objects.equals(this.blockProcessingTime0, blockProcessingPerformanceModel.blockProcessingTime0) && + Objects.equals(this.blockProcessingTime1, blockProcessingPerformanceModel.blockProcessingTime1) && + Objects.equals(this.targetCalculatingTime2, blockProcessingPerformanceModel.targetCalculatingTime2) && + Objects.equals(this.longhashCalculatingTime3, blockProcessingPerformanceModel.longhashCalculatingTime3) && + Objects.equals(this.allTxsInsertTime5, blockProcessingPerformanceModel.allTxsInsertTime5) && + Objects.equals(this.etcStuff6, blockProcessingPerformanceModel.etcStuff6) && + Objects.equals(this.insertTime4, blockProcessingPerformanceModel.insertTime4) && + Objects.equals(this.raiseBlockCoreEvent, blockProcessingPerformanceModel.raiseBlockCoreEvent) && + Objects.equals(this.validateMinerTransactionTime, blockProcessingPerformanceModel.validateMinerTransactionTime) && + Objects.equals(this.collectRangeproofsDataFromTxTime, blockProcessingPerformanceModel.collectRangeproofsDataFromTxTime) && + Objects.equals(this.verifyMultipleZcOutsRangeProofsTime, blockProcessingPerformanceModel.verifyMultipleZcOutsRangeProofsTime) && + Objects.equals(this.targetCalculatingEnumBlocks, blockProcessingPerformanceModel.targetCalculatingEnumBlocks) && + Objects.equals(this.targetCalculatingCalc, blockProcessingPerformanceModel.targetCalculatingCalc) && + Objects.equals(this.posValidateKiSearch, blockProcessingPerformanceModel.posValidateKiSearch) && + Objects.equals(this.posValidateGetOutKeysForInputs, blockProcessingPerformanceModel.posValidateGetOutKeysForInputs) && + Objects.equals(this.posValidateZvp, blockProcessingPerformanceModel.posValidateZvp); + } + + @Override + public int hashCode() { + return Objects.hash(blockProcessingTime0, blockProcessingTime1, targetCalculatingTime2, longhashCalculatingTime3, allTxsInsertTime5, etcStuff6, insertTime4, raiseBlockCoreEvent, validateMinerTransactionTime, collectRangeproofsDataFromTxTime, verifyMultipleZcOutsRangeProofsTime, targetCalculatingEnumBlocks, targetCalculatingCalc, posValidateKiSearch, posValidateGetOutKeysForInputs, posValidateZvp); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class BlockProcessingPerformanceModel {\n"); + sb.append(" blockProcessingTime0: ").append(toIndentedString(blockProcessingTime0)).append("\n"); + sb.append(" blockProcessingTime1: ").append(toIndentedString(blockProcessingTime1)).append("\n"); + sb.append(" targetCalculatingTime2: ").append(toIndentedString(targetCalculatingTime2)).append("\n"); + sb.append(" longhashCalculatingTime3: ").append(toIndentedString(longhashCalculatingTime3)).append("\n"); + sb.append(" allTxsInsertTime5: ").append(toIndentedString(allTxsInsertTime5)).append("\n"); + sb.append(" etcStuff6: ").append(toIndentedString(etcStuff6)).append("\n"); + sb.append(" insertTime4: ").append(toIndentedString(insertTime4)).append("\n"); + sb.append(" raiseBlockCoreEvent: ").append(toIndentedString(raiseBlockCoreEvent)).append("\n"); + sb.append(" validateMinerTransactionTime: ").append(toIndentedString(validateMinerTransactionTime)).append("\n"); + sb.append(" collectRangeproofsDataFromTxTime: ").append(toIndentedString(collectRangeproofsDataFromTxTime)).append("\n"); + sb.append(" verifyMultipleZcOutsRangeProofsTime: ").append(toIndentedString(verifyMultipleZcOutsRangeProofsTime)).append("\n"); + sb.append(" targetCalculatingEnumBlocks: ").append(toIndentedString(targetCalculatingEnumBlocks)).append("\n"); + sb.append(" targetCalculatingCalc: ").append(toIndentedString(targetCalculatingCalc)).append("\n"); + sb.append(" posValidateKiSearch: ").append(toIndentedString(posValidateKiSearch)).append("\n"); + sb.append(" posValidateGetOutKeysForInputs: ").append(toIndentedString(posValidateGetOutKeysForInputs)).append("\n"); + sb.append(" posValidateZvp: ").append(toIndentedString(posValidateZvp)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + + public static HashSet openapiFields; + public static HashSet openapiRequiredFields; + + static { + // a set of all properties/fields (JSON key names) + openapiFields = new HashSet(Arrays.asList("block_processing_time_0", "block_processing_time_1", "target_calculating_time_2", "longhash_calculating_time_3", "all_txs_insert_time_5", "etc_stuff_6", "insert_time_4", "raise_block_core_event", "validate_miner_transaction_time", "collect_rangeproofs_data_from_tx_time", "verify_multiple_zc_outs_range_proofs_time", "target_calculating_enum_blocks", "target_calculating_calc", "pos_validate_ki_search", "pos_validate_get_out_keys_for_inputs", "pos_validate_zvp")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * Validates the JSON Element and throws an exception if issues found + * + * @param jsonElement JSON Element + * @throws IOException if the JSON Element is invalid with respect to BlockProcessingPerformanceModel + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!BlockProcessingPerformanceModel.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in BlockProcessingPerformanceModel is not found in the empty JSON string", BlockProcessingPerformanceModel.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!BlockProcessingPerformanceModel.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` in the JSON string is not defined in the `BlockProcessingPerformanceModel` properties. JSON: %s", entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!BlockProcessingPerformanceModel.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'BlockProcessingPerformanceModel' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter + = gson.getDelegateAdapter(this, TypeToken.get(BlockProcessingPerformanceModel.class)); + + return (TypeAdapter) new TypeAdapter() { + @Override + public void write(JsonWriter out, BlockProcessingPerformanceModel value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public BlockProcessingPerformanceModel read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + + }.nullSafe(); + } + } + + /** + * Create an instance of BlockProcessingPerformanceModel given an JSON string + * + * @param jsonString JSON string + * @return An instance of BlockProcessingPerformanceModel + * @throws IOException if the JSON string is invalid with respect to BlockProcessingPerformanceModel + */ + public static BlockProcessingPerformanceModel fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, BlockProcessingPerformanceModel.class); + } + + /** + * Convert an instance of BlockProcessingPerformanceModel to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} + diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/model/BlockTemplateModel.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/BlockTemplateModel.java new file mode 100644 index 00000000..eecdc0fe --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/BlockTemplateModel.java @@ -0,0 +1,429 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Locale; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; +import org.openapitools.client.model.TxGenerationContextModel; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Locale; + +import invalidPackageName.JSON; + +/** + * BlockTemplateModel + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class BlockTemplateModel { + public static final String SERIALIZED_NAME_BLOCKTEMPLATE_BLOB = "blocktemplate_blob"; + @SerializedName(SERIALIZED_NAME_BLOCKTEMPLATE_BLOB) + @javax.annotation.Nullable + private String blocktemplateBlob; + + public static final String SERIALIZED_NAME_DIFFICULTY = "difficulty"; + @SerializedName(SERIALIZED_NAME_DIFFICULTY) + @javax.annotation.Nullable + private String difficulty; + + public static final String SERIALIZED_NAME_HEIGHT = "height"; + @SerializedName(SERIALIZED_NAME_HEIGHT) + @javax.annotation.Nullable + private Integer height; + + public static final String SERIALIZED_NAME_MINER_TX_TGC = "miner_tx_tgc"; + @SerializedName(SERIALIZED_NAME_MINER_TX_TGC) + @javax.annotation.Nullable + private TxGenerationContextModel minerTxTgc; + + public static final String SERIALIZED_NAME_BLOCK_REWARD_WITHOUT_FEE = "block_reward_without_fee"; + @SerializedName(SERIALIZED_NAME_BLOCK_REWARD_WITHOUT_FEE) + @javax.annotation.Nullable + private Integer blockRewardWithoutFee; + + public static final String SERIALIZED_NAME_BLOCK_REWARD = "block_reward"; + @SerializedName(SERIALIZED_NAME_BLOCK_REWARD) + @javax.annotation.Nullable + private Integer blockReward; + + public static final String SERIALIZED_NAME_TXS_FEE = "txs_fee"; + @SerializedName(SERIALIZED_NAME_TXS_FEE) + @javax.annotation.Nullable + private Integer txsFee; + + public static final String SERIALIZED_NAME_PREV_HASH = "prev_hash"; + @SerializedName(SERIALIZED_NAME_PREV_HASH) + @javax.annotation.Nullable + private String prevHash; + + public static final String SERIALIZED_NAME_SEED = "seed"; + @SerializedName(SERIALIZED_NAME_SEED) + @javax.annotation.Nullable + private String seed; + + public BlockTemplateModel() { + } + + public BlockTemplateModel blocktemplateBlob(@javax.annotation.Nullable String blocktemplateBlob) { + this.blocktemplateBlob = blocktemplateBlob; + return this; + } + + /** + * Get blocktemplateBlob + * @return blocktemplateBlob + */ + @javax.annotation.Nullable + public String getBlocktemplateBlob() { + return blocktemplateBlob; + } + + public void setBlocktemplateBlob(@javax.annotation.Nullable String blocktemplateBlob) { + this.blocktemplateBlob = blocktemplateBlob; + } + + + public BlockTemplateModel difficulty(@javax.annotation.Nullable String difficulty) { + this.difficulty = difficulty; + return this; + } + + /** + * Get difficulty + * @return difficulty + */ + @javax.annotation.Nullable + public String getDifficulty() { + return difficulty; + } + + public void setDifficulty(@javax.annotation.Nullable String difficulty) { + this.difficulty = difficulty; + } + + + public BlockTemplateModel height(@javax.annotation.Nullable Integer height) { + this.height = height; + return this; + } + + /** + * Get height + * @return height + */ + @javax.annotation.Nullable + public Integer getHeight() { + return height; + } + + public void setHeight(@javax.annotation.Nullable Integer height) { + this.height = height; + } + + + public BlockTemplateModel minerTxTgc(@javax.annotation.Nullable TxGenerationContextModel minerTxTgc) { + this.minerTxTgc = minerTxTgc; + return this; + } + + /** + * Get minerTxTgc + * @return minerTxTgc + */ + @javax.annotation.Nullable + public TxGenerationContextModel getMinerTxTgc() { + return minerTxTgc; + } + + public void setMinerTxTgc(@javax.annotation.Nullable TxGenerationContextModel minerTxTgc) { + this.minerTxTgc = minerTxTgc; + } + + + public BlockTemplateModel blockRewardWithoutFee(@javax.annotation.Nullable Integer blockRewardWithoutFee) { + this.blockRewardWithoutFee = blockRewardWithoutFee; + return this; + } + + /** + * Get blockRewardWithoutFee + * @return blockRewardWithoutFee + */ + @javax.annotation.Nullable + public Integer getBlockRewardWithoutFee() { + return blockRewardWithoutFee; + } + + public void setBlockRewardWithoutFee(@javax.annotation.Nullable Integer blockRewardWithoutFee) { + this.blockRewardWithoutFee = blockRewardWithoutFee; + } + + + public BlockTemplateModel blockReward(@javax.annotation.Nullable Integer blockReward) { + this.blockReward = blockReward; + return this; + } + + /** + * Get blockReward + * @return blockReward + */ + @javax.annotation.Nullable + public Integer getBlockReward() { + return blockReward; + } + + public void setBlockReward(@javax.annotation.Nullable Integer blockReward) { + this.blockReward = blockReward; + } + + + public BlockTemplateModel txsFee(@javax.annotation.Nullable Integer txsFee) { + this.txsFee = txsFee; + return this; + } + + /** + * Get txsFee + * @return txsFee + */ + @javax.annotation.Nullable + public Integer getTxsFee() { + return txsFee; + } + + public void setTxsFee(@javax.annotation.Nullable Integer txsFee) { + this.txsFee = txsFee; + } + + + public BlockTemplateModel prevHash(@javax.annotation.Nullable String prevHash) { + this.prevHash = prevHash; + return this; + } + + /** + * Get prevHash + * @return prevHash + */ + @javax.annotation.Nullable + public String getPrevHash() { + return prevHash; + } + + public void setPrevHash(@javax.annotation.Nullable String prevHash) { + this.prevHash = prevHash; + } + + + public BlockTemplateModel seed(@javax.annotation.Nullable String seed) { + this.seed = seed; + return this; + } + + /** + * Get seed + * @return seed + */ + @javax.annotation.Nullable + public String getSeed() { + return seed; + } + + public void setSeed(@javax.annotation.Nullable String seed) { + this.seed = seed; + } + + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + BlockTemplateModel blockTemplateModel = (BlockTemplateModel) o; + return Objects.equals(this.blocktemplateBlob, blockTemplateModel.blocktemplateBlob) && + Objects.equals(this.difficulty, blockTemplateModel.difficulty) && + Objects.equals(this.height, blockTemplateModel.height) && + Objects.equals(this.minerTxTgc, blockTemplateModel.minerTxTgc) && + Objects.equals(this.blockRewardWithoutFee, blockTemplateModel.blockRewardWithoutFee) && + Objects.equals(this.blockReward, blockTemplateModel.blockReward) && + Objects.equals(this.txsFee, blockTemplateModel.txsFee) && + Objects.equals(this.prevHash, blockTemplateModel.prevHash) && + Objects.equals(this.seed, blockTemplateModel.seed); + } + + @Override + public int hashCode() { + return Objects.hash(blocktemplateBlob, difficulty, height, minerTxTgc, blockRewardWithoutFee, blockReward, txsFee, prevHash, seed); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class BlockTemplateModel {\n"); + sb.append(" blocktemplateBlob: ").append(toIndentedString(blocktemplateBlob)).append("\n"); + sb.append(" difficulty: ").append(toIndentedString(difficulty)).append("\n"); + sb.append(" height: ").append(toIndentedString(height)).append("\n"); + sb.append(" minerTxTgc: ").append(toIndentedString(minerTxTgc)).append("\n"); + sb.append(" blockRewardWithoutFee: ").append(toIndentedString(blockRewardWithoutFee)).append("\n"); + sb.append(" blockReward: ").append(toIndentedString(blockReward)).append("\n"); + sb.append(" txsFee: ").append(toIndentedString(txsFee)).append("\n"); + sb.append(" prevHash: ").append(toIndentedString(prevHash)).append("\n"); + sb.append(" seed: ").append(toIndentedString(seed)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + + public static HashSet openapiFields; + public static HashSet openapiRequiredFields; + + static { + // a set of all properties/fields (JSON key names) + openapiFields = new HashSet(Arrays.asList("blocktemplate_blob", "difficulty", "height", "miner_tx_tgc", "block_reward_without_fee", "block_reward", "txs_fee", "prev_hash", "seed")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * Validates the JSON Element and throws an exception if issues found + * + * @param jsonElement JSON Element + * @throws IOException if the JSON Element is invalid with respect to BlockTemplateModel + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!BlockTemplateModel.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in BlockTemplateModel is not found in the empty JSON string", BlockTemplateModel.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!BlockTemplateModel.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` in the JSON string is not defined in the `BlockTemplateModel` properties. JSON: %s", entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + if ((jsonObj.get("blocktemplate_blob") != null && !jsonObj.get("blocktemplate_blob").isJsonNull()) && !jsonObj.get("blocktemplate_blob").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `blocktemplate_blob` to be a primitive type in the JSON string but got `%s`", jsonObj.get("blocktemplate_blob").toString())); + } + if ((jsonObj.get("difficulty") != null && !jsonObj.get("difficulty").isJsonNull()) && !jsonObj.get("difficulty").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `difficulty` to be a primitive type in the JSON string but got `%s`", jsonObj.get("difficulty").toString())); + } + // validate the optional field `miner_tx_tgc` + if (jsonObj.get("miner_tx_tgc") != null && !jsonObj.get("miner_tx_tgc").isJsonNull()) { + TxGenerationContextModel.validateJsonElement(jsonObj.get("miner_tx_tgc")); + } + if ((jsonObj.get("prev_hash") != null && !jsonObj.get("prev_hash").isJsonNull()) && !jsonObj.get("prev_hash").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `prev_hash` to be a primitive type in the JSON string but got `%s`", jsonObj.get("prev_hash").toString())); + } + if ((jsonObj.get("seed") != null && !jsonObj.get("seed").isJsonNull()) && !jsonObj.get("seed").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `seed` to be a primitive type in the JSON string but got `%s`", jsonObj.get("seed").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!BlockTemplateModel.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'BlockTemplateModel' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter + = gson.getDelegateAdapter(this, TypeToken.get(BlockTemplateModel.class)); + + return (TypeAdapter) new TypeAdapter() { + @Override + public void write(JsonWriter out, BlockTemplateModel value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public BlockTemplateModel read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + + }.nullSafe(); + } + } + + /** + * Create an instance of BlockTemplateModel given an JSON string + * + * @param jsonString JSON string + * @return An instance of BlockTemplateModel + * @throws IOException if the JSON string is invalid with respect to BlockTemplateModel + */ + public static BlockTemplateModel fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, BlockTemplateModel.class); + } + + /** + * Convert an instance of BlockTemplateModel to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} + diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/model/BlockTemplateRequestModel.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/BlockTemplateRequestModel.java new file mode 100644 index 00000000..dcfe59a4 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/BlockTemplateRequestModel.java @@ -0,0 +1,388 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Locale; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import org.openapitools.client.model.PosEntryModel; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Locale; + +import invalidPackageName.JSON; + +/** + * BlockTemplateRequestModel + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class BlockTemplateRequestModel { + public static final String SERIALIZED_NAME_MINER_ADDRESS = "miner_address"; + @SerializedName(SERIALIZED_NAME_MINER_ADDRESS) + @javax.annotation.Nullable + private String minerAddress; + + public static final String SERIALIZED_NAME_STAKEHOLDER_ADDRESS = "stakeholder_address"; + @SerializedName(SERIALIZED_NAME_STAKEHOLDER_ADDRESS) + @javax.annotation.Nullable + private String stakeholderAddress; + + public static final String SERIALIZED_NAME_EX_NONCE = "ex_nonce"; + @SerializedName(SERIALIZED_NAME_EX_NONCE) + @javax.annotation.Nullable + private String exNonce; + + public static final String SERIALIZED_NAME_POS_BLOCK = "pos_block"; + @SerializedName(SERIALIZED_NAME_POS_BLOCK) + @javax.annotation.Nullable + private Boolean posBlock; + + public static final String SERIALIZED_NAME_IGNORE_POW_TS_CHECK = "ignore_pow_ts_check"; + @SerializedName(SERIALIZED_NAME_IGNORE_POW_TS_CHECK) + @javax.annotation.Nullable + private Boolean ignorePowTsCheck; + + public static final String SERIALIZED_NAME_PE = "pe"; + @SerializedName(SERIALIZED_NAME_PE) + @javax.annotation.Nullable + private PosEntryModel pe; + + public static final String SERIALIZED_NAME_EXPLICIT_TXS = "explicit_txs"; + @SerializedName(SERIALIZED_NAME_EXPLICIT_TXS) + @javax.annotation.Nullable + private List explicitTxs = new ArrayList<>(); + + public BlockTemplateRequestModel() { + } + + public BlockTemplateRequestModel minerAddress(@javax.annotation.Nullable String minerAddress) { + this.minerAddress = minerAddress; + return this; + } + + /** + * Get minerAddress + * @return minerAddress + */ + @javax.annotation.Nullable + public String getMinerAddress() { + return minerAddress; + } + + public void setMinerAddress(@javax.annotation.Nullable String minerAddress) { + this.minerAddress = minerAddress; + } + + + public BlockTemplateRequestModel stakeholderAddress(@javax.annotation.Nullable String stakeholderAddress) { + this.stakeholderAddress = stakeholderAddress; + return this; + } + + /** + * Get stakeholderAddress + * @return stakeholderAddress + */ + @javax.annotation.Nullable + public String getStakeholderAddress() { + return stakeholderAddress; + } + + public void setStakeholderAddress(@javax.annotation.Nullable String stakeholderAddress) { + this.stakeholderAddress = stakeholderAddress; + } + + + public BlockTemplateRequestModel exNonce(@javax.annotation.Nullable String exNonce) { + this.exNonce = exNonce; + return this; + } + + /** + * Get exNonce + * @return exNonce + */ + @javax.annotation.Nullable + public String getExNonce() { + return exNonce; + } + + public void setExNonce(@javax.annotation.Nullable String exNonce) { + this.exNonce = exNonce; + } + + + public BlockTemplateRequestModel posBlock(@javax.annotation.Nullable Boolean posBlock) { + this.posBlock = posBlock; + return this; + } + + /** + * Get posBlock + * @return posBlock + */ + @javax.annotation.Nullable + public Boolean getPosBlock() { + return posBlock; + } + + public void setPosBlock(@javax.annotation.Nullable Boolean posBlock) { + this.posBlock = posBlock; + } + + + public BlockTemplateRequestModel ignorePowTsCheck(@javax.annotation.Nullable Boolean ignorePowTsCheck) { + this.ignorePowTsCheck = ignorePowTsCheck; + return this; + } + + /** + * Get ignorePowTsCheck + * @return ignorePowTsCheck + */ + @javax.annotation.Nullable + public Boolean getIgnorePowTsCheck() { + return ignorePowTsCheck; + } + + public void setIgnorePowTsCheck(@javax.annotation.Nullable Boolean ignorePowTsCheck) { + this.ignorePowTsCheck = ignorePowTsCheck; + } + + + public BlockTemplateRequestModel pe(@javax.annotation.Nullable PosEntryModel pe) { + this.pe = pe; + return this; + } + + /** + * Get pe + * @return pe + */ + @javax.annotation.Nullable + public PosEntryModel getPe() { + return pe; + } + + public void setPe(@javax.annotation.Nullable PosEntryModel pe) { + this.pe = pe; + } + + + public BlockTemplateRequestModel explicitTxs(@javax.annotation.Nullable List explicitTxs) { + this.explicitTxs = explicitTxs; + return this; + } + + public BlockTemplateRequestModel addExplicitTxsItem(String explicitTxsItem) { + if (this.explicitTxs == null) { + this.explicitTxs = new ArrayList<>(); + } + this.explicitTxs.add(explicitTxsItem); + return this; + } + + /** + * Get explicitTxs + * @return explicitTxs + */ + @javax.annotation.Nullable + public List getExplicitTxs() { + return explicitTxs; + } + + public void setExplicitTxs(@javax.annotation.Nullable List explicitTxs) { + this.explicitTxs = explicitTxs; + } + + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + BlockTemplateRequestModel blockTemplateRequestModel = (BlockTemplateRequestModel) o; + return Objects.equals(this.minerAddress, blockTemplateRequestModel.minerAddress) && + Objects.equals(this.stakeholderAddress, blockTemplateRequestModel.stakeholderAddress) && + Objects.equals(this.exNonce, blockTemplateRequestModel.exNonce) && + Objects.equals(this.posBlock, blockTemplateRequestModel.posBlock) && + Objects.equals(this.ignorePowTsCheck, blockTemplateRequestModel.ignorePowTsCheck) && + Objects.equals(this.pe, blockTemplateRequestModel.pe) && + Objects.equals(this.explicitTxs, blockTemplateRequestModel.explicitTxs); + } + + @Override + public int hashCode() { + return Objects.hash(minerAddress, stakeholderAddress, exNonce, posBlock, ignorePowTsCheck, pe, explicitTxs); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class BlockTemplateRequestModel {\n"); + sb.append(" minerAddress: ").append(toIndentedString(minerAddress)).append("\n"); + sb.append(" stakeholderAddress: ").append(toIndentedString(stakeholderAddress)).append("\n"); + sb.append(" exNonce: ").append(toIndentedString(exNonce)).append("\n"); + sb.append(" posBlock: ").append(toIndentedString(posBlock)).append("\n"); + sb.append(" ignorePowTsCheck: ").append(toIndentedString(ignorePowTsCheck)).append("\n"); + sb.append(" pe: ").append(toIndentedString(pe)).append("\n"); + sb.append(" explicitTxs: ").append(toIndentedString(explicitTxs)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + + public static HashSet openapiFields; + public static HashSet openapiRequiredFields; + + static { + // a set of all properties/fields (JSON key names) + openapiFields = new HashSet(Arrays.asList("miner_address", "stakeholder_address", "ex_nonce", "pos_block", "ignore_pow_ts_check", "pe", "explicit_txs")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * Validates the JSON Element and throws an exception if issues found + * + * @param jsonElement JSON Element + * @throws IOException if the JSON Element is invalid with respect to BlockTemplateRequestModel + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!BlockTemplateRequestModel.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in BlockTemplateRequestModel is not found in the empty JSON string", BlockTemplateRequestModel.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!BlockTemplateRequestModel.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` in the JSON string is not defined in the `BlockTemplateRequestModel` properties. JSON: %s", entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + if ((jsonObj.get("miner_address") != null && !jsonObj.get("miner_address").isJsonNull()) && !jsonObj.get("miner_address").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `miner_address` to be a primitive type in the JSON string but got `%s`", jsonObj.get("miner_address").toString())); + } + if ((jsonObj.get("stakeholder_address") != null && !jsonObj.get("stakeholder_address").isJsonNull()) && !jsonObj.get("stakeholder_address").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `stakeholder_address` to be a primitive type in the JSON string but got `%s`", jsonObj.get("stakeholder_address").toString())); + } + if ((jsonObj.get("ex_nonce") != null && !jsonObj.get("ex_nonce").isJsonNull()) && !jsonObj.get("ex_nonce").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `ex_nonce` to be a primitive type in the JSON string but got `%s`", jsonObj.get("ex_nonce").toString())); + } + // validate the optional field `pe` + if (jsonObj.get("pe") != null && !jsonObj.get("pe").isJsonNull()) { + PosEntryModel.validateJsonElement(jsonObj.get("pe")); + } + // ensure the optional json data is an array if present + if (jsonObj.get("explicit_txs") != null && !jsonObj.get("explicit_txs").isJsonNull() && !jsonObj.get("explicit_txs").isJsonArray()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `explicit_txs` to be an array in the JSON string but got `%s`", jsonObj.get("explicit_txs").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!BlockTemplateRequestModel.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'BlockTemplateRequestModel' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter + = gson.getDelegateAdapter(this, TypeToken.get(BlockTemplateRequestModel.class)); + + return (TypeAdapter) new TypeAdapter() { + @Override + public void write(JsonWriter out, BlockTemplateRequestModel value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public BlockTemplateRequestModel read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + + }.nullSafe(); + } + } + + /** + * Create an instance of BlockTemplateRequestModel given an JSON string + * + * @param jsonString JSON string + * @return An instance of BlockTemplateRequestModel + * @throws IOException if the JSON string is invalid with respect to BlockTemplateRequestModel + */ + public static BlockTemplateRequestModel fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, BlockTemplateRequestModel.class); + } + + /** + * Convert an instance of BlockTemplateRequestModel to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} + diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/model/DbStatInfoModel.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/DbStatInfoModel.java new file mode 100644 index 00000000..312c767d --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/DbStatInfoModel.java @@ -0,0 +1,256 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Locale; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Locale; + +import invalidPackageName.JSON; + +/** + * DbStatInfoModel + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class DbStatInfoModel { + public static final String SERIALIZED_NAME_TX_COUNT = "tx_count"; + @SerializedName(SERIALIZED_NAME_TX_COUNT) + @javax.annotation.Nullable + private Integer txCount; + + public static final String SERIALIZED_NAME_WRITE_TX_COUNT = "write_tx_count"; + @SerializedName(SERIALIZED_NAME_WRITE_TX_COUNT) + @javax.annotation.Nullable + private Integer writeTxCount; + + public static final String SERIALIZED_NAME_MAP_SIZE = "map_size"; + @SerializedName(SERIALIZED_NAME_MAP_SIZE) + @javax.annotation.Nullable + private Integer mapSize; + + public DbStatInfoModel() { + } + + public DbStatInfoModel txCount(@javax.annotation.Nullable Integer txCount) { + this.txCount = txCount; + return this; + } + + /** + * Get txCount + * @return txCount + */ + @javax.annotation.Nullable + public Integer getTxCount() { + return txCount; + } + + public void setTxCount(@javax.annotation.Nullable Integer txCount) { + this.txCount = txCount; + } + + + public DbStatInfoModel writeTxCount(@javax.annotation.Nullable Integer writeTxCount) { + this.writeTxCount = writeTxCount; + return this; + } + + /** + * Get writeTxCount + * @return writeTxCount + */ + @javax.annotation.Nullable + public Integer getWriteTxCount() { + return writeTxCount; + } + + public void setWriteTxCount(@javax.annotation.Nullable Integer writeTxCount) { + this.writeTxCount = writeTxCount; + } + + + public DbStatInfoModel mapSize(@javax.annotation.Nullable Integer mapSize) { + this.mapSize = mapSize; + return this; + } + + /** + * Get mapSize + * @return mapSize + */ + @javax.annotation.Nullable + public Integer getMapSize() { + return mapSize; + } + + public void setMapSize(@javax.annotation.Nullable Integer mapSize) { + this.mapSize = mapSize; + } + + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + DbStatInfoModel dbStatInfoModel = (DbStatInfoModel) o; + return Objects.equals(this.txCount, dbStatInfoModel.txCount) && + Objects.equals(this.writeTxCount, dbStatInfoModel.writeTxCount) && + Objects.equals(this.mapSize, dbStatInfoModel.mapSize); + } + + @Override + public int hashCode() { + return Objects.hash(txCount, writeTxCount, mapSize); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class DbStatInfoModel {\n"); + sb.append(" txCount: ").append(toIndentedString(txCount)).append("\n"); + sb.append(" writeTxCount: ").append(toIndentedString(writeTxCount)).append("\n"); + sb.append(" mapSize: ").append(toIndentedString(mapSize)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + + public static HashSet openapiFields; + public static HashSet openapiRequiredFields; + + static { + // a set of all properties/fields (JSON key names) + openapiFields = new HashSet(Arrays.asList("tx_count", "write_tx_count", "map_size")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * Validates the JSON Element and throws an exception if issues found + * + * @param jsonElement JSON Element + * @throws IOException if the JSON Element is invalid with respect to DbStatInfoModel + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!DbStatInfoModel.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in DbStatInfoModel is not found in the empty JSON string", DbStatInfoModel.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!DbStatInfoModel.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` in the JSON string is not defined in the `DbStatInfoModel` properties. JSON: %s", entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!DbStatInfoModel.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'DbStatInfoModel' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter + = gson.getDelegateAdapter(this, TypeToken.get(DbStatInfoModel.class)); + + return (TypeAdapter) new TypeAdapter() { + @Override + public void write(JsonWriter out, DbStatInfoModel value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public DbStatInfoModel read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + + }.nullSafe(); + } + } + + /** + * Create an instance of DbStatInfoModel given an JSON string + * + * @param jsonString JSON string + * @return An instance of DbStatInfoModel + * @throws IOException if the JSON string is invalid with respect to DbStatInfoModel + */ + public static DbStatInfoModel fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, DbStatInfoModel.class); + } + + /** + * Convert an instance of DbStatInfoModel to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} + diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/model/HeightModel.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/HeightModel.java new file mode 100644 index 00000000..1834418d --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/HeightModel.java @@ -0,0 +1,204 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Locale; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Locale; + +import invalidPackageName.JSON; + +/** + * HeightModel + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class HeightModel { + public static final String SERIALIZED_NAME_HEIGHT = "height"; + @SerializedName(SERIALIZED_NAME_HEIGHT) + @javax.annotation.Nullable + private Integer height; + + public HeightModel() { + } + + public HeightModel height(@javax.annotation.Nullable Integer height) { + this.height = height; + return this; + } + + /** + * Get height + * @return height + */ + @javax.annotation.Nullable + public Integer getHeight() { + return height; + } + + public void setHeight(@javax.annotation.Nullable Integer height) { + this.height = height; + } + + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + HeightModel heightModel = (HeightModel) o; + return Objects.equals(this.height, heightModel.height); + } + + @Override + public int hashCode() { + return Objects.hash(height); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class HeightModel {\n"); + sb.append(" height: ").append(toIndentedString(height)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + + public static HashSet openapiFields; + public static HashSet openapiRequiredFields; + + static { + // a set of all properties/fields (JSON key names) + openapiFields = new HashSet(Arrays.asList("height")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * Validates the JSON Element and throws an exception if issues found + * + * @param jsonElement JSON Element + * @throws IOException if the JSON Element is invalid with respect to HeightModel + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!HeightModel.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in HeightModel is not found in the empty JSON string", HeightModel.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!HeightModel.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` in the JSON string is not defined in the `HeightModel` properties. JSON: %s", entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!HeightModel.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'HeightModel' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter + = gson.getDelegateAdapter(this, TypeToken.get(HeightModel.class)); + + return (TypeAdapter) new TypeAdapter() { + @Override + public void write(JsonWriter out, HeightModel value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public HeightModel read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + + }.nullSafe(); + } + } + + /** + * Create an instance of HeightModel given an JSON string + * + * @param jsonString JSON string + * @return An instance of HeightModel + * @throws IOException if the JSON string is invalid with respect to HeightModel + */ + public static HeightModel fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, HeightModel.class); + } + + /** + * Convert an instance of HeightModel to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} + diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/model/InfoModel.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/InfoModel.java new file mode 100644 index 00000000..ac2da187 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/InfoModel.java @@ -0,0 +1,1444 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Locale; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.openapitools.client.model.MaintainersInfoModel; +import org.openapitools.client.model.PerformanceModel; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Locale; + +import invalidPackageName.JSON; + +/** + * InfoModel + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class InfoModel { + public static final String SERIALIZED_NAME_HEIGHT = "height"; + @SerializedName(SERIALIZED_NAME_HEIGHT) + @javax.annotation.Nullable + private Integer height; + + public static final String SERIALIZED_NAME_TX_COUNT = "tx_count"; + @SerializedName(SERIALIZED_NAME_TX_COUNT) + @javax.annotation.Nullable + private Integer txCount; + + public static final String SERIALIZED_NAME_TX_POOL_SIZE = "tx_pool_size"; + @SerializedName(SERIALIZED_NAME_TX_POOL_SIZE) + @javax.annotation.Nullable + private Integer txPoolSize; + + public static final String SERIALIZED_NAME_ALT_BLOCKS_COUNT = "alt_blocks_count"; + @SerializedName(SERIALIZED_NAME_ALT_BLOCKS_COUNT) + @javax.annotation.Nullable + private Integer altBlocksCount; + + public static final String SERIALIZED_NAME_OUTGOING_CONNECTIONS_COUNT = "outgoing_connections_count"; + @SerializedName(SERIALIZED_NAME_OUTGOING_CONNECTIONS_COUNT) + @javax.annotation.Nullable + private Integer outgoingConnectionsCount; + + public static final String SERIALIZED_NAME_INCOMING_CONNECTIONS_COUNT = "incoming_connections_count"; + @SerializedName(SERIALIZED_NAME_INCOMING_CONNECTIONS_COUNT) + @javax.annotation.Nullable + private Integer incomingConnectionsCount; + + public static final String SERIALIZED_NAME_SYNCHRONIZED_CONNECTIONS_COUNT = "synchronized_connections_count"; + @SerializedName(SERIALIZED_NAME_SYNCHRONIZED_CONNECTIONS_COUNT) + @javax.annotation.Nullable + private Integer synchronizedConnectionsCount; + + public static final String SERIALIZED_NAME_WHITE_PEERLIST_SIZE = "white_peerlist_size"; + @SerializedName(SERIALIZED_NAME_WHITE_PEERLIST_SIZE) + @javax.annotation.Nullable + private Integer whitePeerlistSize; + + public static final String SERIALIZED_NAME_GREY_PEERLIST_SIZE = "grey_peerlist_size"; + @SerializedName(SERIALIZED_NAME_GREY_PEERLIST_SIZE) + @javax.annotation.Nullable + private Integer greyPeerlistSize; + + public static final String SERIALIZED_NAME_CURRENT_BLOCKS_MEDIAN = "current_blocks_median"; + @SerializedName(SERIALIZED_NAME_CURRENT_BLOCKS_MEDIAN) + @javax.annotation.Nullable + private Integer currentBlocksMedian; + + public static final String SERIALIZED_NAME_ALIAS_COUNT = "alias_count"; + @SerializedName(SERIALIZED_NAME_ALIAS_COUNT) + @javax.annotation.Nullable + private Integer aliasCount; + + public static final String SERIALIZED_NAME_CURRENT_MAX_ALLOWED_BLOCK_SIZE = "current_max_allowed_block_size"; + @SerializedName(SERIALIZED_NAME_CURRENT_MAX_ALLOWED_BLOCK_SIZE) + @javax.annotation.Nullable + private Integer currentMaxAllowedBlockSize; + + public static final String SERIALIZED_NAME_DAEMON_NETWORK_STATE = "daemon_network_state"; + @SerializedName(SERIALIZED_NAME_DAEMON_NETWORK_STATE) + @javax.annotation.Nullable + private String daemonNetworkState; + + public static final String SERIALIZED_NAME_SYNCHRONIZATION_START_HEIGHT = "synchronization_start_height"; + @SerializedName(SERIALIZED_NAME_SYNCHRONIZATION_START_HEIGHT) + @javax.annotation.Nullable + private Integer synchronizationStartHeight; + + public static final String SERIALIZED_NAME_MAX_NET_SEEN_HEIGHT = "max_net_seen_height"; + @SerializedName(SERIALIZED_NAME_MAX_NET_SEEN_HEIGHT) + @javax.annotation.Nullable + private Integer maxNetSeenHeight; + + public static final String SERIALIZED_NAME_MI = "mi"; + @SerializedName(SERIALIZED_NAME_MI) + @javax.annotation.Nullable + private MaintainersInfoModel mi; + + public static final String SERIALIZED_NAME_POS_ALLOWED = "pos_allowed"; + @SerializedName(SERIALIZED_NAME_POS_ALLOWED) + @javax.annotation.Nullable + private Boolean posAllowed; + + public static final String SERIALIZED_NAME_POS_DIFFICULTY = "pos_difficulty"; + @SerializedName(SERIALIZED_NAME_POS_DIFFICULTY) + @javax.annotation.Nullable + private String posDifficulty; + + public static final String SERIALIZED_NAME_POW_DIFFICULTY = "pow_difficulty"; + @SerializedName(SERIALIZED_NAME_POW_DIFFICULTY) + @javax.annotation.Nullable + private Integer powDifficulty; + + public static final String SERIALIZED_NAME_DEFAULT_FEE = "default_fee"; + @SerializedName(SERIALIZED_NAME_DEFAULT_FEE) + @javax.annotation.Nullable + private Integer defaultFee; + + public static final String SERIALIZED_NAME_MINIMUM_FEE = "minimum_fee"; + @SerializedName(SERIALIZED_NAME_MINIMUM_FEE) + @javax.annotation.Nullable + private Integer minimumFee; + + public static final String SERIALIZED_NAME_IS_HARDFORK_ACTIVE = "is_hardfork_active"; + @SerializedName(SERIALIZED_NAME_IS_HARDFORK_ACTIVE) + @javax.annotation.Nullable + private List isHardforkActive = new ArrayList<>(); + + public static final String SERIALIZED_NAME_NET_TIME_DELTA_MEDIAN = "net_time_delta_median"; + @SerializedName(SERIALIZED_NAME_NET_TIME_DELTA_MEDIAN) + @javax.annotation.Nullable + private Long netTimeDeltaMedian; + + public static final String SERIALIZED_NAME_CURRENT_NETWORK_HASHRATE50 = "current_network_hashrate_50"; + @SerializedName(SERIALIZED_NAME_CURRENT_NETWORK_HASHRATE50) + @javax.annotation.Nullable + private Integer currentNetworkHashrate50; + + public static final String SERIALIZED_NAME_CURRENT_NETWORK_HASHRATE350 = "current_network_hashrate_350"; + @SerializedName(SERIALIZED_NAME_CURRENT_NETWORK_HASHRATE350) + @javax.annotation.Nullable + private Integer currentNetworkHashrate350; + + public static final String SERIALIZED_NAME_SECONDS_FOR10_BLOCKS = "seconds_for_10_blocks"; + @SerializedName(SERIALIZED_NAME_SECONDS_FOR10_BLOCKS) + @javax.annotation.Nullable + private Integer secondsFor10Blocks; + + public static final String SERIALIZED_NAME_SECONDS_FOR30_BLOCKS = "seconds_for_30_blocks"; + @SerializedName(SERIALIZED_NAME_SECONDS_FOR30_BLOCKS) + @javax.annotation.Nullable + private Integer secondsFor30Blocks; + + public static final String SERIALIZED_NAME_TRANSACTIONS_CNT_PER_DAY = "transactions_cnt_per_day"; + @SerializedName(SERIALIZED_NAME_TRANSACTIONS_CNT_PER_DAY) + @javax.annotation.Nullable + private List transactionsCntPerDay = new ArrayList<>(); + + public static final String SERIALIZED_NAME_TRANSACTIONS_VOLUME_PER_DAY = "transactions_volume_per_day"; + @SerializedName(SERIALIZED_NAME_TRANSACTIONS_VOLUME_PER_DAY) + @javax.annotation.Nullable + private List transactionsVolumePerDay = new ArrayList<>(); + + public static final String SERIALIZED_NAME_LAST_POS_TIMESTAMP = "last_pos_timestamp"; + @SerializedName(SERIALIZED_NAME_LAST_POS_TIMESTAMP) + @javax.annotation.Nullable + private Integer lastPosTimestamp; + + public static final String SERIALIZED_NAME_LAST_POW_TIMESTAMP = "last_pow_timestamp"; + @SerializedName(SERIALIZED_NAME_LAST_POW_TIMESTAMP) + @javax.annotation.Nullable + private Integer lastPowTimestamp; + + public static final String SERIALIZED_NAME_TOTAL_COINS = "total_coins"; + @SerializedName(SERIALIZED_NAME_TOTAL_COINS) + @javax.annotation.Nullable + private String totalCoins; + + public static final String SERIALIZED_NAME_LAST_BLOCK_SIZE = "last_block_size"; + @SerializedName(SERIALIZED_NAME_LAST_BLOCK_SIZE) + @javax.annotation.Nullable + private Integer lastBlockSize; + + public static final String SERIALIZED_NAME_TX_COUNT_IN_LAST_BLOCK = "tx_count_in_last_block"; + @SerializedName(SERIALIZED_NAME_TX_COUNT_IN_LAST_BLOCK) + @javax.annotation.Nullable + private Integer txCountInLastBlock; + + public static final String SERIALIZED_NAME_POS_SEQUENCE_FACTOR = "pos_sequence_factor"; + @SerializedName(SERIALIZED_NAME_POS_SEQUENCE_FACTOR) + @javax.annotation.Nullable + private Double posSequenceFactor; + + public static final String SERIALIZED_NAME_POW_SEQUENCE_FACTOR = "pow_sequence_factor"; + @SerializedName(SERIALIZED_NAME_POW_SEQUENCE_FACTOR) + @javax.annotation.Nullable + private Double powSequenceFactor; + + public static final String SERIALIZED_NAME_BLOCK_REWARD = "block_reward"; + @SerializedName(SERIALIZED_NAME_BLOCK_REWARD) + @javax.annotation.Nullable + private Integer blockReward; + + public static final String SERIALIZED_NAME_LAST_BLOCK_TOTAL_REWARD = "last_block_total_reward"; + @SerializedName(SERIALIZED_NAME_LAST_BLOCK_TOTAL_REWARD) + @javax.annotation.Nullable + private Integer lastBlockTotalReward; + + public static final String SERIALIZED_NAME_POS_DIFF_TOTAL_COINS_RATE = "pos_diff_total_coins_rate"; + @SerializedName(SERIALIZED_NAME_POS_DIFF_TOTAL_COINS_RATE) + @javax.annotation.Nullable + private Integer posDiffTotalCoinsRate; + + public static final String SERIALIZED_NAME_LAST_BLOCK_TIMESTAMP = "last_block_timestamp"; + @SerializedName(SERIALIZED_NAME_LAST_BLOCK_TIMESTAMP) + @javax.annotation.Nullable + private Integer lastBlockTimestamp; + + public static final String SERIALIZED_NAME_LAST_BLOCK_HASH = "last_block_hash"; + @SerializedName(SERIALIZED_NAME_LAST_BLOCK_HASH) + @javax.annotation.Nullable + private String lastBlockHash; + + public static final String SERIALIZED_NAME_POS_BLOCK_TS_SHIFT_VS_ACTUAL = "pos_block_ts_shift_vs_actual"; + @SerializedName(SERIALIZED_NAME_POS_BLOCK_TS_SHIFT_VS_ACTUAL) + @javax.annotation.Nullable + private Long posBlockTsShiftVsActual; + + public static final String SERIALIZED_NAME_OUTS_STAT = "outs_stat"; + @SerializedName(SERIALIZED_NAME_OUTS_STAT) + @javax.annotation.Nullable + private Map outsStat = new HashMap<>(); + + public static final String SERIALIZED_NAME_PERFORMANCE_DATA = "performance_data"; + @SerializedName(SERIALIZED_NAME_PERFORMANCE_DATA) + @javax.annotation.Nullable + private PerformanceModel performanceData; + + public static final String SERIALIZED_NAME_OFFERS_COUNT = "offers_count"; + @SerializedName(SERIALIZED_NAME_OFFERS_COUNT) + @javax.annotation.Nullable + private Integer offersCount; + + public static final String SERIALIZED_NAME_EXPIRATION_MEDIAN_TIMESTAMP = "expiration_median_timestamp"; + @SerializedName(SERIALIZED_NAME_EXPIRATION_MEDIAN_TIMESTAMP) + @javax.annotation.Nullable + private Integer expirationMedianTimestamp; + + public InfoModel() { + } + + public InfoModel height(@javax.annotation.Nullable Integer height) { + this.height = height; + return this; + } + + /** + * Get height + * @return height + */ + @javax.annotation.Nullable + public Integer getHeight() { + return height; + } + + public void setHeight(@javax.annotation.Nullable Integer height) { + this.height = height; + } + + + public InfoModel txCount(@javax.annotation.Nullable Integer txCount) { + this.txCount = txCount; + return this; + } + + /** + * Get txCount + * @return txCount + */ + @javax.annotation.Nullable + public Integer getTxCount() { + return txCount; + } + + public void setTxCount(@javax.annotation.Nullable Integer txCount) { + this.txCount = txCount; + } + + + public InfoModel txPoolSize(@javax.annotation.Nullable Integer txPoolSize) { + this.txPoolSize = txPoolSize; + return this; + } + + /** + * Get txPoolSize + * @return txPoolSize + */ + @javax.annotation.Nullable + public Integer getTxPoolSize() { + return txPoolSize; + } + + public void setTxPoolSize(@javax.annotation.Nullable Integer txPoolSize) { + this.txPoolSize = txPoolSize; + } + + + public InfoModel altBlocksCount(@javax.annotation.Nullable Integer altBlocksCount) { + this.altBlocksCount = altBlocksCount; + return this; + } + + /** + * Get altBlocksCount + * @return altBlocksCount + */ + @javax.annotation.Nullable + public Integer getAltBlocksCount() { + return altBlocksCount; + } + + public void setAltBlocksCount(@javax.annotation.Nullable Integer altBlocksCount) { + this.altBlocksCount = altBlocksCount; + } + + + public InfoModel outgoingConnectionsCount(@javax.annotation.Nullable Integer outgoingConnectionsCount) { + this.outgoingConnectionsCount = outgoingConnectionsCount; + return this; + } + + /** + * Get outgoingConnectionsCount + * @return outgoingConnectionsCount + */ + @javax.annotation.Nullable + public Integer getOutgoingConnectionsCount() { + return outgoingConnectionsCount; + } + + public void setOutgoingConnectionsCount(@javax.annotation.Nullable Integer outgoingConnectionsCount) { + this.outgoingConnectionsCount = outgoingConnectionsCount; + } + + + public InfoModel incomingConnectionsCount(@javax.annotation.Nullable Integer incomingConnectionsCount) { + this.incomingConnectionsCount = incomingConnectionsCount; + return this; + } + + /** + * Get incomingConnectionsCount + * @return incomingConnectionsCount + */ + @javax.annotation.Nullable + public Integer getIncomingConnectionsCount() { + return incomingConnectionsCount; + } + + public void setIncomingConnectionsCount(@javax.annotation.Nullable Integer incomingConnectionsCount) { + this.incomingConnectionsCount = incomingConnectionsCount; + } + + + public InfoModel synchronizedConnectionsCount(@javax.annotation.Nullable Integer synchronizedConnectionsCount) { + this.synchronizedConnectionsCount = synchronizedConnectionsCount; + return this; + } + + /** + * Get synchronizedConnectionsCount + * @return synchronizedConnectionsCount + */ + @javax.annotation.Nullable + public Integer getSynchronizedConnectionsCount() { + return synchronizedConnectionsCount; + } + + public void setSynchronizedConnectionsCount(@javax.annotation.Nullable Integer synchronizedConnectionsCount) { + this.synchronizedConnectionsCount = synchronizedConnectionsCount; + } + + + public InfoModel whitePeerlistSize(@javax.annotation.Nullable Integer whitePeerlistSize) { + this.whitePeerlistSize = whitePeerlistSize; + return this; + } + + /** + * Get whitePeerlistSize + * @return whitePeerlistSize + */ + @javax.annotation.Nullable + public Integer getWhitePeerlistSize() { + return whitePeerlistSize; + } + + public void setWhitePeerlistSize(@javax.annotation.Nullable Integer whitePeerlistSize) { + this.whitePeerlistSize = whitePeerlistSize; + } + + + public InfoModel greyPeerlistSize(@javax.annotation.Nullable Integer greyPeerlistSize) { + this.greyPeerlistSize = greyPeerlistSize; + return this; + } + + /** + * Get greyPeerlistSize + * @return greyPeerlistSize + */ + @javax.annotation.Nullable + public Integer getGreyPeerlistSize() { + return greyPeerlistSize; + } + + public void setGreyPeerlistSize(@javax.annotation.Nullable Integer greyPeerlistSize) { + this.greyPeerlistSize = greyPeerlistSize; + } + + + public InfoModel currentBlocksMedian(@javax.annotation.Nullable Integer currentBlocksMedian) { + this.currentBlocksMedian = currentBlocksMedian; + return this; + } + + /** + * Get currentBlocksMedian + * @return currentBlocksMedian + */ + @javax.annotation.Nullable + public Integer getCurrentBlocksMedian() { + return currentBlocksMedian; + } + + public void setCurrentBlocksMedian(@javax.annotation.Nullable Integer currentBlocksMedian) { + this.currentBlocksMedian = currentBlocksMedian; + } + + + public InfoModel aliasCount(@javax.annotation.Nullable Integer aliasCount) { + this.aliasCount = aliasCount; + return this; + } + + /** + * Get aliasCount + * @return aliasCount + */ + @javax.annotation.Nullable + public Integer getAliasCount() { + return aliasCount; + } + + public void setAliasCount(@javax.annotation.Nullable Integer aliasCount) { + this.aliasCount = aliasCount; + } + + + public InfoModel currentMaxAllowedBlockSize(@javax.annotation.Nullable Integer currentMaxAllowedBlockSize) { + this.currentMaxAllowedBlockSize = currentMaxAllowedBlockSize; + return this; + } + + /** + * Get currentMaxAllowedBlockSize + * @return currentMaxAllowedBlockSize + */ + @javax.annotation.Nullable + public Integer getCurrentMaxAllowedBlockSize() { + return currentMaxAllowedBlockSize; + } + + public void setCurrentMaxAllowedBlockSize(@javax.annotation.Nullable Integer currentMaxAllowedBlockSize) { + this.currentMaxAllowedBlockSize = currentMaxAllowedBlockSize; + } + + + public InfoModel daemonNetworkState(@javax.annotation.Nullable String daemonNetworkState) { + this.daemonNetworkState = daemonNetworkState; + return this; + } + + /** + * Get daemonNetworkState + * @return daemonNetworkState + */ + @javax.annotation.Nullable + public String getDaemonNetworkState() { + return daemonNetworkState; + } + + public void setDaemonNetworkState(@javax.annotation.Nullable String daemonNetworkState) { + this.daemonNetworkState = daemonNetworkState; + } + + + public InfoModel synchronizationStartHeight(@javax.annotation.Nullable Integer synchronizationStartHeight) { + this.synchronizationStartHeight = synchronizationStartHeight; + return this; + } + + /** + * Get synchronizationStartHeight + * @return synchronizationStartHeight + */ + @javax.annotation.Nullable + public Integer getSynchronizationStartHeight() { + return synchronizationStartHeight; + } + + public void setSynchronizationStartHeight(@javax.annotation.Nullable Integer synchronizationStartHeight) { + this.synchronizationStartHeight = synchronizationStartHeight; + } + + + public InfoModel maxNetSeenHeight(@javax.annotation.Nullable Integer maxNetSeenHeight) { + this.maxNetSeenHeight = maxNetSeenHeight; + return this; + } + + /** + * Get maxNetSeenHeight + * @return maxNetSeenHeight + */ + @javax.annotation.Nullable + public Integer getMaxNetSeenHeight() { + return maxNetSeenHeight; + } + + public void setMaxNetSeenHeight(@javax.annotation.Nullable Integer maxNetSeenHeight) { + this.maxNetSeenHeight = maxNetSeenHeight; + } + + + public InfoModel mi(@javax.annotation.Nullable MaintainersInfoModel mi) { + this.mi = mi; + return this; + } + + /** + * Get mi + * @return mi + */ + @javax.annotation.Nullable + public MaintainersInfoModel getMi() { + return mi; + } + + public void setMi(@javax.annotation.Nullable MaintainersInfoModel mi) { + this.mi = mi; + } + + + public InfoModel posAllowed(@javax.annotation.Nullable Boolean posAllowed) { + this.posAllowed = posAllowed; + return this; + } + + /** + * Get posAllowed + * @return posAllowed + */ + @javax.annotation.Nullable + public Boolean getPosAllowed() { + return posAllowed; + } + + public void setPosAllowed(@javax.annotation.Nullable Boolean posAllowed) { + this.posAllowed = posAllowed; + } + + + public InfoModel posDifficulty(@javax.annotation.Nullable String posDifficulty) { + this.posDifficulty = posDifficulty; + return this; + } + + /** + * Get posDifficulty + * @return posDifficulty + */ + @javax.annotation.Nullable + public String getPosDifficulty() { + return posDifficulty; + } + + public void setPosDifficulty(@javax.annotation.Nullable String posDifficulty) { + this.posDifficulty = posDifficulty; + } + + + public InfoModel powDifficulty(@javax.annotation.Nullable Integer powDifficulty) { + this.powDifficulty = powDifficulty; + return this; + } + + /** + * Get powDifficulty + * @return powDifficulty + */ + @javax.annotation.Nullable + public Integer getPowDifficulty() { + return powDifficulty; + } + + public void setPowDifficulty(@javax.annotation.Nullable Integer powDifficulty) { + this.powDifficulty = powDifficulty; + } + + + public InfoModel defaultFee(@javax.annotation.Nullable Integer defaultFee) { + this.defaultFee = defaultFee; + return this; + } + + /** + * Get defaultFee + * @return defaultFee + */ + @javax.annotation.Nullable + public Integer getDefaultFee() { + return defaultFee; + } + + public void setDefaultFee(@javax.annotation.Nullable Integer defaultFee) { + this.defaultFee = defaultFee; + } + + + public InfoModel minimumFee(@javax.annotation.Nullable Integer minimumFee) { + this.minimumFee = minimumFee; + return this; + } + + /** + * Get minimumFee + * @return minimumFee + */ + @javax.annotation.Nullable + public Integer getMinimumFee() { + return minimumFee; + } + + public void setMinimumFee(@javax.annotation.Nullable Integer minimumFee) { + this.minimumFee = minimumFee; + } + + + public InfoModel isHardforkActive(@javax.annotation.Nullable List isHardforkActive) { + this.isHardforkActive = isHardforkActive; + return this; + } + + public InfoModel addIsHardforkActiveItem(Boolean isHardforkActiveItem) { + if (this.isHardforkActive == null) { + this.isHardforkActive = new ArrayList<>(); + } + this.isHardforkActive.add(isHardforkActiveItem); + return this; + } + + /** + * Get isHardforkActive + * @return isHardforkActive + */ + @javax.annotation.Nullable + public List getIsHardforkActive() { + return isHardforkActive; + } + + public void setIsHardforkActive(@javax.annotation.Nullable List isHardforkActive) { + this.isHardforkActive = isHardforkActive; + } + + + public InfoModel netTimeDeltaMedian(@javax.annotation.Nullable Long netTimeDeltaMedian) { + this.netTimeDeltaMedian = netTimeDeltaMedian; + return this; + } + + /** + * Get netTimeDeltaMedian + * @return netTimeDeltaMedian + */ + @javax.annotation.Nullable + public Long getNetTimeDeltaMedian() { + return netTimeDeltaMedian; + } + + public void setNetTimeDeltaMedian(@javax.annotation.Nullable Long netTimeDeltaMedian) { + this.netTimeDeltaMedian = netTimeDeltaMedian; + } + + + public InfoModel currentNetworkHashrate50(@javax.annotation.Nullable Integer currentNetworkHashrate50) { + this.currentNetworkHashrate50 = currentNetworkHashrate50; + return this; + } + + /** + * Get currentNetworkHashrate50 + * @return currentNetworkHashrate50 + */ + @javax.annotation.Nullable + public Integer getCurrentNetworkHashrate50() { + return currentNetworkHashrate50; + } + + public void setCurrentNetworkHashrate50(@javax.annotation.Nullable Integer currentNetworkHashrate50) { + this.currentNetworkHashrate50 = currentNetworkHashrate50; + } + + + public InfoModel currentNetworkHashrate350(@javax.annotation.Nullable Integer currentNetworkHashrate350) { + this.currentNetworkHashrate350 = currentNetworkHashrate350; + return this; + } + + /** + * Get currentNetworkHashrate350 + * @return currentNetworkHashrate350 + */ + @javax.annotation.Nullable + public Integer getCurrentNetworkHashrate350() { + return currentNetworkHashrate350; + } + + public void setCurrentNetworkHashrate350(@javax.annotation.Nullable Integer currentNetworkHashrate350) { + this.currentNetworkHashrate350 = currentNetworkHashrate350; + } + + + public InfoModel secondsFor10Blocks(@javax.annotation.Nullable Integer secondsFor10Blocks) { + this.secondsFor10Blocks = secondsFor10Blocks; + return this; + } + + /** + * Get secondsFor10Blocks + * @return secondsFor10Blocks + */ + @javax.annotation.Nullable + public Integer getSecondsFor10Blocks() { + return secondsFor10Blocks; + } + + public void setSecondsFor10Blocks(@javax.annotation.Nullable Integer secondsFor10Blocks) { + this.secondsFor10Blocks = secondsFor10Blocks; + } + + + public InfoModel secondsFor30Blocks(@javax.annotation.Nullable Integer secondsFor30Blocks) { + this.secondsFor30Blocks = secondsFor30Blocks; + return this; + } + + /** + * Get secondsFor30Blocks + * @return secondsFor30Blocks + */ + @javax.annotation.Nullable + public Integer getSecondsFor30Blocks() { + return secondsFor30Blocks; + } + + public void setSecondsFor30Blocks(@javax.annotation.Nullable Integer secondsFor30Blocks) { + this.secondsFor30Blocks = secondsFor30Blocks; + } + + + public InfoModel transactionsCntPerDay(@javax.annotation.Nullable List transactionsCntPerDay) { + this.transactionsCntPerDay = transactionsCntPerDay; + return this; + } + + public InfoModel addTransactionsCntPerDayItem(Integer transactionsCntPerDayItem) { + if (this.transactionsCntPerDay == null) { + this.transactionsCntPerDay = new ArrayList<>(); + } + this.transactionsCntPerDay.add(transactionsCntPerDayItem); + return this; + } + + /** + * Get transactionsCntPerDay + * @return transactionsCntPerDay + */ + @javax.annotation.Nullable + public List getTransactionsCntPerDay() { + return transactionsCntPerDay; + } + + public void setTransactionsCntPerDay(@javax.annotation.Nullable List transactionsCntPerDay) { + this.transactionsCntPerDay = transactionsCntPerDay; + } + + + public InfoModel transactionsVolumePerDay(@javax.annotation.Nullable List transactionsVolumePerDay) { + this.transactionsVolumePerDay = transactionsVolumePerDay; + return this; + } + + public InfoModel addTransactionsVolumePerDayItem(Integer transactionsVolumePerDayItem) { + if (this.transactionsVolumePerDay == null) { + this.transactionsVolumePerDay = new ArrayList<>(); + } + this.transactionsVolumePerDay.add(transactionsVolumePerDayItem); + return this; + } + + /** + * Get transactionsVolumePerDay + * @return transactionsVolumePerDay + */ + @javax.annotation.Nullable + public List getTransactionsVolumePerDay() { + return transactionsVolumePerDay; + } + + public void setTransactionsVolumePerDay(@javax.annotation.Nullable List transactionsVolumePerDay) { + this.transactionsVolumePerDay = transactionsVolumePerDay; + } + + + public InfoModel lastPosTimestamp(@javax.annotation.Nullable Integer lastPosTimestamp) { + this.lastPosTimestamp = lastPosTimestamp; + return this; + } + + /** + * Get lastPosTimestamp + * @return lastPosTimestamp + */ + @javax.annotation.Nullable + public Integer getLastPosTimestamp() { + return lastPosTimestamp; + } + + public void setLastPosTimestamp(@javax.annotation.Nullable Integer lastPosTimestamp) { + this.lastPosTimestamp = lastPosTimestamp; + } + + + public InfoModel lastPowTimestamp(@javax.annotation.Nullable Integer lastPowTimestamp) { + this.lastPowTimestamp = lastPowTimestamp; + return this; + } + + /** + * Get lastPowTimestamp + * @return lastPowTimestamp + */ + @javax.annotation.Nullable + public Integer getLastPowTimestamp() { + return lastPowTimestamp; + } + + public void setLastPowTimestamp(@javax.annotation.Nullable Integer lastPowTimestamp) { + this.lastPowTimestamp = lastPowTimestamp; + } + + + public InfoModel totalCoins(@javax.annotation.Nullable String totalCoins) { + this.totalCoins = totalCoins; + return this; + } + + /** + * Get totalCoins + * @return totalCoins + */ + @javax.annotation.Nullable + public String getTotalCoins() { + return totalCoins; + } + + public void setTotalCoins(@javax.annotation.Nullable String totalCoins) { + this.totalCoins = totalCoins; + } + + + public InfoModel lastBlockSize(@javax.annotation.Nullable Integer lastBlockSize) { + this.lastBlockSize = lastBlockSize; + return this; + } + + /** + * Get lastBlockSize + * @return lastBlockSize + */ + @javax.annotation.Nullable + public Integer getLastBlockSize() { + return lastBlockSize; + } + + public void setLastBlockSize(@javax.annotation.Nullable Integer lastBlockSize) { + this.lastBlockSize = lastBlockSize; + } + + + public InfoModel txCountInLastBlock(@javax.annotation.Nullable Integer txCountInLastBlock) { + this.txCountInLastBlock = txCountInLastBlock; + return this; + } + + /** + * Get txCountInLastBlock + * @return txCountInLastBlock + */ + @javax.annotation.Nullable + public Integer getTxCountInLastBlock() { + return txCountInLastBlock; + } + + public void setTxCountInLastBlock(@javax.annotation.Nullable Integer txCountInLastBlock) { + this.txCountInLastBlock = txCountInLastBlock; + } + + + public InfoModel posSequenceFactor(@javax.annotation.Nullable Double posSequenceFactor) { + this.posSequenceFactor = posSequenceFactor; + return this; + } + + /** + * Get posSequenceFactor + * @return posSequenceFactor + */ + @javax.annotation.Nullable + public Double getPosSequenceFactor() { + return posSequenceFactor; + } + + public void setPosSequenceFactor(@javax.annotation.Nullable Double posSequenceFactor) { + this.posSequenceFactor = posSequenceFactor; + } + + + public InfoModel powSequenceFactor(@javax.annotation.Nullable Double powSequenceFactor) { + this.powSequenceFactor = powSequenceFactor; + return this; + } + + /** + * Get powSequenceFactor + * @return powSequenceFactor + */ + @javax.annotation.Nullable + public Double getPowSequenceFactor() { + return powSequenceFactor; + } + + public void setPowSequenceFactor(@javax.annotation.Nullable Double powSequenceFactor) { + this.powSequenceFactor = powSequenceFactor; + } + + + public InfoModel blockReward(@javax.annotation.Nullable Integer blockReward) { + this.blockReward = blockReward; + return this; + } + + /** + * Get blockReward + * @return blockReward + */ + @javax.annotation.Nullable + public Integer getBlockReward() { + return blockReward; + } + + public void setBlockReward(@javax.annotation.Nullable Integer blockReward) { + this.blockReward = blockReward; + } + + + public InfoModel lastBlockTotalReward(@javax.annotation.Nullable Integer lastBlockTotalReward) { + this.lastBlockTotalReward = lastBlockTotalReward; + return this; + } + + /** + * Get lastBlockTotalReward + * @return lastBlockTotalReward + */ + @javax.annotation.Nullable + public Integer getLastBlockTotalReward() { + return lastBlockTotalReward; + } + + public void setLastBlockTotalReward(@javax.annotation.Nullable Integer lastBlockTotalReward) { + this.lastBlockTotalReward = lastBlockTotalReward; + } + + + public InfoModel posDiffTotalCoinsRate(@javax.annotation.Nullable Integer posDiffTotalCoinsRate) { + this.posDiffTotalCoinsRate = posDiffTotalCoinsRate; + return this; + } + + /** + * Get posDiffTotalCoinsRate + * @return posDiffTotalCoinsRate + */ + @javax.annotation.Nullable + public Integer getPosDiffTotalCoinsRate() { + return posDiffTotalCoinsRate; + } + + public void setPosDiffTotalCoinsRate(@javax.annotation.Nullable Integer posDiffTotalCoinsRate) { + this.posDiffTotalCoinsRate = posDiffTotalCoinsRate; + } + + + public InfoModel lastBlockTimestamp(@javax.annotation.Nullable Integer lastBlockTimestamp) { + this.lastBlockTimestamp = lastBlockTimestamp; + return this; + } + + /** + * Get lastBlockTimestamp + * @return lastBlockTimestamp + */ + @javax.annotation.Nullable + public Integer getLastBlockTimestamp() { + return lastBlockTimestamp; + } + + public void setLastBlockTimestamp(@javax.annotation.Nullable Integer lastBlockTimestamp) { + this.lastBlockTimestamp = lastBlockTimestamp; + } + + + public InfoModel lastBlockHash(@javax.annotation.Nullable String lastBlockHash) { + this.lastBlockHash = lastBlockHash; + return this; + } + + /** + * Get lastBlockHash + * @return lastBlockHash + */ + @javax.annotation.Nullable + public String getLastBlockHash() { + return lastBlockHash; + } + + public void setLastBlockHash(@javax.annotation.Nullable String lastBlockHash) { + this.lastBlockHash = lastBlockHash; + } + + + public InfoModel posBlockTsShiftVsActual(@javax.annotation.Nullable Long posBlockTsShiftVsActual) { + this.posBlockTsShiftVsActual = posBlockTsShiftVsActual; + return this; + } + + /** + * Get posBlockTsShiftVsActual + * @return posBlockTsShiftVsActual + */ + @javax.annotation.Nullable + public Long getPosBlockTsShiftVsActual() { + return posBlockTsShiftVsActual; + } + + public void setPosBlockTsShiftVsActual(@javax.annotation.Nullable Long posBlockTsShiftVsActual) { + this.posBlockTsShiftVsActual = posBlockTsShiftVsActual; + } + + + public InfoModel outsStat(@javax.annotation.Nullable Map outsStat) { + this.outsStat = outsStat; + return this; + } + + public InfoModel putOutsStatItem(String key, Integer outsStatItem) { + if (this.outsStat == null) { + this.outsStat = new HashMap<>(); + } + this.outsStat.put(key, outsStatItem); + return this; + } + + /** + * Get outsStat + * @return outsStat + */ + @javax.annotation.Nullable + public Map getOutsStat() { + return outsStat; + } + + public void setOutsStat(@javax.annotation.Nullable Map outsStat) { + this.outsStat = outsStat; + } + + + public InfoModel performanceData(@javax.annotation.Nullable PerformanceModel performanceData) { + this.performanceData = performanceData; + return this; + } + + /** + * Get performanceData + * @return performanceData + */ + @javax.annotation.Nullable + public PerformanceModel getPerformanceData() { + return performanceData; + } + + public void setPerformanceData(@javax.annotation.Nullable PerformanceModel performanceData) { + this.performanceData = performanceData; + } + + + public InfoModel offersCount(@javax.annotation.Nullable Integer offersCount) { + this.offersCount = offersCount; + return this; + } + + /** + * Get offersCount + * @return offersCount + */ + @javax.annotation.Nullable + public Integer getOffersCount() { + return offersCount; + } + + public void setOffersCount(@javax.annotation.Nullable Integer offersCount) { + this.offersCount = offersCount; + } + + + public InfoModel expirationMedianTimestamp(@javax.annotation.Nullable Integer expirationMedianTimestamp) { + this.expirationMedianTimestamp = expirationMedianTimestamp; + return this; + } + + /** + * Get expirationMedianTimestamp + * @return expirationMedianTimestamp + */ + @javax.annotation.Nullable + public Integer getExpirationMedianTimestamp() { + return expirationMedianTimestamp; + } + + public void setExpirationMedianTimestamp(@javax.annotation.Nullable Integer expirationMedianTimestamp) { + this.expirationMedianTimestamp = expirationMedianTimestamp; + } + + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + InfoModel infoModel = (InfoModel) o; + return Objects.equals(this.height, infoModel.height) && + Objects.equals(this.txCount, infoModel.txCount) && + Objects.equals(this.txPoolSize, infoModel.txPoolSize) && + Objects.equals(this.altBlocksCount, infoModel.altBlocksCount) && + Objects.equals(this.outgoingConnectionsCount, infoModel.outgoingConnectionsCount) && + Objects.equals(this.incomingConnectionsCount, infoModel.incomingConnectionsCount) && + Objects.equals(this.synchronizedConnectionsCount, infoModel.synchronizedConnectionsCount) && + Objects.equals(this.whitePeerlistSize, infoModel.whitePeerlistSize) && + Objects.equals(this.greyPeerlistSize, infoModel.greyPeerlistSize) && + Objects.equals(this.currentBlocksMedian, infoModel.currentBlocksMedian) && + Objects.equals(this.aliasCount, infoModel.aliasCount) && + Objects.equals(this.currentMaxAllowedBlockSize, infoModel.currentMaxAllowedBlockSize) && + Objects.equals(this.daemonNetworkState, infoModel.daemonNetworkState) && + Objects.equals(this.synchronizationStartHeight, infoModel.synchronizationStartHeight) && + Objects.equals(this.maxNetSeenHeight, infoModel.maxNetSeenHeight) && + Objects.equals(this.mi, infoModel.mi) && + Objects.equals(this.posAllowed, infoModel.posAllowed) && + Objects.equals(this.posDifficulty, infoModel.posDifficulty) && + Objects.equals(this.powDifficulty, infoModel.powDifficulty) && + Objects.equals(this.defaultFee, infoModel.defaultFee) && + Objects.equals(this.minimumFee, infoModel.minimumFee) && + Objects.equals(this.isHardforkActive, infoModel.isHardforkActive) && + Objects.equals(this.netTimeDeltaMedian, infoModel.netTimeDeltaMedian) && + Objects.equals(this.currentNetworkHashrate50, infoModel.currentNetworkHashrate50) && + Objects.equals(this.currentNetworkHashrate350, infoModel.currentNetworkHashrate350) && + Objects.equals(this.secondsFor10Blocks, infoModel.secondsFor10Blocks) && + Objects.equals(this.secondsFor30Blocks, infoModel.secondsFor30Blocks) && + Objects.equals(this.transactionsCntPerDay, infoModel.transactionsCntPerDay) && + Objects.equals(this.transactionsVolumePerDay, infoModel.transactionsVolumePerDay) && + Objects.equals(this.lastPosTimestamp, infoModel.lastPosTimestamp) && + Objects.equals(this.lastPowTimestamp, infoModel.lastPowTimestamp) && + Objects.equals(this.totalCoins, infoModel.totalCoins) && + Objects.equals(this.lastBlockSize, infoModel.lastBlockSize) && + Objects.equals(this.txCountInLastBlock, infoModel.txCountInLastBlock) && + Objects.equals(this.posSequenceFactor, infoModel.posSequenceFactor) && + Objects.equals(this.powSequenceFactor, infoModel.powSequenceFactor) && + Objects.equals(this.blockReward, infoModel.blockReward) && + Objects.equals(this.lastBlockTotalReward, infoModel.lastBlockTotalReward) && + Objects.equals(this.posDiffTotalCoinsRate, infoModel.posDiffTotalCoinsRate) && + Objects.equals(this.lastBlockTimestamp, infoModel.lastBlockTimestamp) && + Objects.equals(this.lastBlockHash, infoModel.lastBlockHash) && + Objects.equals(this.posBlockTsShiftVsActual, infoModel.posBlockTsShiftVsActual) && + Objects.equals(this.outsStat, infoModel.outsStat) && + Objects.equals(this.performanceData, infoModel.performanceData) && + Objects.equals(this.offersCount, infoModel.offersCount) && + Objects.equals(this.expirationMedianTimestamp, infoModel.expirationMedianTimestamp); + } + + @Override + public int hashCode() { + return Objects.hash(height, txCount, txPoolSize, altBlocksCount, outgoingConnectionsCount, incomingConnectionsCount, synchronizedConnectionsCount, whitePeerlistSize, greyPeerlistSize, currentBlocksMedian, aliasCount, currentMaxAllowedBlockSize, daemonNetworkState, synchronizationStartHeight, maxNetSeenHeight, mi, posAllowed, posDifficulty, powDifficulty, defaultFee, minimumFee, isHardforkActive, netTimeDeltaMedian, currentNetworkHashrate50, currentNetworkHashrate350, secondsFor10Blocks, secondsFor30Blocks, transactionsCntPerDay, transactionsVolumePerDay, lastPosTimestamp, lastPowTimestamp, totalCoins, lastBlockSize, txCountInLastBlock, posSequenceFactor, powSequenceFactor, blockReward, lastBlockTotalReward, posDiffTotalCoinsRate, lastBlockTimestamp, lastBlockHash, posBlockTsShiftVsActual, outsStat, performanceData, offersCount, expirationMedianTimestamp); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class InfoModel {\n"); + sb.append(" height: ").append(toIndentedString(height)).append("\n"); + sb.append(" txCount: ").append(toIndentedString(txCount)).append("\n"); + sb.append(" txPoolSize: ").append(toIndentedString(txPoolSize)).append("\n"); + sb.append(" altBlocksCount: ").append(toIndentedString(altBlocksCount)).append("\n"); + sb.append(" outgoingConnectionsCount: ").append(toIndentedString(outgoingConnectionsCount)).append("\n"); + sb.append(" incomingConnectionsCount: ").append(toIndentedString(incomingConnectionsCount)).append("\n"); + sb.append(" synchronizedConnectionsCount: ").append(toIndentedString(synchronizedConnectionsCount)).append("\n"); + sb.append(" whitePeerlistSize: ").append(toIndentedString(whitePeerlistSize)).append("\n"); + sb.append(" greyPeerlistSize: ").append(toIndentedString(greyPeerlistSize)).append("\n"); + sb.append(" currentBlocksMedian: ").append(toIndentedString(currentBlocksMedian)).append("\n"); + sb.append(" aliasCount: ").append(toIndentedString(aliasCount)).append("\n"); + sb.append(" currentMaxAllowedBlockSize: ").append(toIndentedString(currentMaxAllowedBlockSize)).append("\n"); + sb.append(" daemonNetworkState: ").append(toIndentedString(daemonNetworkState)).append("\n"); + sb.append(" synchronizationStartHeight: ").append(toIndentedString(synchronizationStartHeight)).append("\n"); + sb.append(" maxNetSeenHeight: ").append(toIndentedString(maxNetSeenHeight)).append("\n"); + sb.append(" mi: ").append(toIndentedString(mi)).append("\n"); + sb.append(" posAllowed: ").append(toIndentedString(posAllowed)).append("\n"); + sb.append(" posDifficulty: ").append(toIndentedString(posDifficulty)).append("\n"); + sb.append(" powDifficulty: ").append(toIndentedString(powDifficulty)).append("\n"); + sb.append(" defaultFee: ").append(toIndentedString(defaultFee)).append("\n"); + sb.append(" minimumFee: ").append(toIndentedString(minimumFee)).append("\n"); + sb.append(" isHardforkActive: ").append(toIndentedString(isHardforkActive)).append("\n"); + sb.append(" netTimeDeltaMedian: ").append(toIndentedString(netTimeDeltaMedian)).append("\n"); + sb.append(" currentNetworkHashrate50: ").append(toIndentedString(currentNetworkHashrate50)).append("\n"); + sb.append(" currentNetworkHashrate350: ").append(toIndentedString(currentNetworkHashrate350)).append("\n"); + sb.append(" secondsFor10Blocks: ").append(toIndentedString(secondsFor10Blocks)).append("\n"); + sb.append(" secondsFor30Blocks: ").append(toIndentedString(secondsFor30Blocks)).append("\n"); + sb.append(" transactionsCntPerDay: ").append(toIndentedString(transactionsCntPerDay)).append("\n"); + sb.append(" transactionsVolumePerDay: ").append(toIndentedString(transactionsVolumePerDay)).append("\n"); + sb.append(" lastPosTimestamp: ").append(toIndentedString(lastPosTimestamp)).append("\n"); + sb.append(" lastPowTimestamp: ").append(toIndentedString(lastPowTimestamp)).append("\n"); + sb.append(" totalCoins: ").append(toIndentedString(totalCoins)).append("\n"); + sb.append(" lastBlockSize: ").append(toIndentedString(lastBlockSize)).append("\n"); + sb.append(" txCountInLastBlock: ").append(toIndentedString(txCountInLastBlock)).append("\n"); + sb.append(" posSequenceFactor: ").append(toIndentedString(posSequenceFactor)).append("\n"); + sb.append(" powSequenceFactor: ").append(toIndentedString(powSequenceFactor)).append("\n"); + sb.append(" blockReward: ").append(toIndentedString(blockReward)).append("\n"); + sb.append(" lastBlockTotalReward: ").append(toIndentedString(lastBlockTotalReward)).append("\n"); + sb.append(" posDiffTotalCoinsRate: ").append(toIndentedString(posDiffTotalCoinsRate)).append("\n"); + sb.append(" lastBlockTimestamp: ").append(toIndentedString(lastBlockTimestamp)).append("\n"); + sb.append(" lastBlockHash: ").append(toIndentedString(lastBlockHash)).append("\n"); + sb.append(" posBlockTsShiftVsActual: ").append(toIndentedString(posBlockTsShiftVsActual)).append("\n"); + sb.append(" outsStat: ").append(toIndentedString(outsStat)).append("\n"); + sb.append(" performanceData: ").append(toIndentedString(performanceData)).append("\n"); + sb.append(" offersCount: ").append(toIndentedString(offersCount)).append("\n"); + sb.append(" expirationMedianTimestamp: ").append(toIndentedString(expirationMedianTimestamp)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + + public static HashSet openapiFields; + public static HashSet openapiRequiredFields; + + static { + // a set of all properties/fields (JSON key names) + openapiFields = new HashSet(Arrays.asList("height", "tx_count", "tx_pool_size", "alt_blocks_count", "outgoing_connections_count", "incoming_connections_count", "synchronized_connections_count", "white_peerlist_size", "grey_peerlist_size", "current_blocks_median", "alias_count", "current_max_allowed_block_size", "daemon_network_state", "synchronization_start_height", "max_net_seen_height", "mi", "pos_allowed", "pos_difficulty", "pow_difficulty", "default_fee", "minimum_fee", "is_hardfork_active", "net_time_delta_median", "current_network_hashrate_50", "current_network_hashrate_350", "seconds_for_10_blocks", "seconds_for_30_blocks", "transactions_cnt_per_day", "transactions_volume_per_day", "last_pos_timestamp", "last_pow_timestamp", "total_coins", "last_block_size", "tx_count_in_last_block", "pos_sequence_factor", "pow_sequence_factor", "block_reward", "last_block_total_reward", "pos_diff_total_coins_rate", "last_block_timestamp", "last_block_hash", "pos_block_ts_shift_vs_actual", "outs_stat", "performance_data", "offers_count", "expiration_median_timestamp")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * Validates the JSON Element and throws an exception if issues found + * + * @param jsonElement JSON Element + * @throws IOException if the JSON Element is invalid with respect to InfoModel + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!InfoModel.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in InfoModel is not found in the empty JSON string", InfoModel.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!InfoModel.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` in the JSON string is not defined in the `InfoModel` properties. JSON: %s", entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + if ((jsonObj.get("daemon_network_state") != null && !jsonObj.get("daemon_network_state").isJsonNull()) && !jsonObj.get("daemon_network_state").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `daemon_network_state` to be a primitive type in the JSON string but got `%s`", jsonObj.get("daemon_network_state").toString())); + } + // validate the optional field `mi` + if (jsonObj.get("mi") != null && !jsonObj.get("mi").isJsonNull()) { + MaintainersInfoModel.validateJsonElement(jsonObj.get("mi")); + } + if ((jsonObj.get("pos_difficulty") != null && !jsonObj.get("pos_difficulty").isJsonNull()) && !jsonObj.get("pos_difficulty").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `pos_difficulty` to be a primitive type in the JSON string but got `%s`", jsonObj.get("pos_difficulty").toString())); + } + // ensure the optional json data is an array if present + if (jsonObj.get("is_hardfork_active") != null && !jsonObj.get("is_hardfork_active").isJsonNull() && !jsonObj.get("is_hardfork_active").isJsonArray()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `is_hardfork_active` to be an array in the JSON string but got `%s`", jsonObj.get("is_hardfork_active").toString())); + } + // ensure the optional json data is an array if present + if (jsonObj.get("transactions_cnt_per_day") != null && !jsonObj.get("transactions_cnt_per_day").isJsonNull() && !jsonObj.get("transactions_cnt_per_day").isJsonArray()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `transactions_cnt_per_day` to be an array in the JSON string but got `%s`", jsonObj.get("transactions_cnt_per_day").toString())); + } + // ensure the optional json data is an array if present + if (jsonObj.get("transactions_volume_per_day") != null && !jsonObj.get("transactions_volume_per_day").isJsonNull() && !jsonObj.get("transactions_volume_per_day").isJsonArray()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `transactions_volume_per_day` to be an array in the JSON string but got `%s`", jsonObj.get("transactions_volume_per_day").toString())); + } + if ((jsonObj.get("total_coins") != null && !jsonObj.get("total_coins").isJsonNull()) && !jsonObj.get("total_coins").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `total_coins` to be a primitive type in the JSON string but got `%s`", jsonObj.get("total_coins").toString())); + } + if ((jsonObj.get("last_block_hash") != null && !jsonObj.get("last_block_hash").isJsonNull()) && !jsonObj.get("last_block_hash").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `last_block_hash` to be a primitive type in the JSON string but got `%s`", jsonObj.get("last_block_hash").toString())); + } + // validate the optional field `performance_data` + if (jsonObj.get("performance_data") != null && !jsonObj.get("performance_data").isJsonNull()) { + PerformanceModel.validateJsonElement(jsonObj.get("performance_data")); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!InfoModel.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'InfoModel' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter + = gson.getDelegateAdapter(this, TypeToken.get(InfoModel.class)); + + return (TypeAdapter) new TypeAdapter() { + @Override + public void write(JsonWriter out, InfoModel value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public InfoModel read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + + }.nullSafe(); + } + } + + /** + * Create an instance of InfoModel given an JSON string + * + * @param jsonString JSON string + * @return An instance of InfoModel + * @throws IOException if the JSON string is invalid with respect to InfoModel + */ + public static InfoModel fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, InfoModel.class); + } + + /** + * Convert an instance of InfoModel to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} + diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/model/MaintainersInfoModel.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/MaintainersInfoModel.java new file mode 100644 index 00000000..45b5ae2d --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/MaintainersInfoModel.java @@ -0,0 +1,318 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Locale; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Locale; + +import invalidPackageName.JSON; + +/** + * MaintainersInfoModel + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class MaintainersInfoModel { + public static final String SERIALIZED_NAME_VER_MAJOR = "ver_major"; + @SerializedName(SERIALIZED_NAME_VER_MAJOR) + @javax.annotation.Nullable + private Integer verMajor; + + public static final String SERIALIZED_NAME_VER_MINOR = "ver_minor"; + @SerializedName(SERIALIZED_NAME_VER_MINOR) + @javax.annotation.Nullable + private Integer verMinor; + + public static final String SERIALIZED_NAME_VER_REVISION = "ver_revision"; + @SerializedName(SERIALIZED_NAME_VER_REVISION) + @javax.annotation.Nullable + private Integer verRevision; + + public static final String SERIALIZED_NAME_BUILD_NO = "build_no"; + @SerializedName(SERIALIZED_NAME_BUILD_NO) + @javax.annotation.Nullable + private Integer buildNo; + + public static final String SERIALIZED_NAME_MODE = "mode"; + @SerializedName(SERIALIZED_NAME_MODE) + @javax.annotation.Nullable + private Integer mode; + + public MaintainersInfoModel() { + } + + public MaintainersInfoModel verMajor(@javax.annotation.Nullable Integer verMajor) { + this.verMajor = verMajor; + return this; + } + + /** + * Get verMajor + * minimum: 0 + * maximum: 255 + * @return verMajor + */ + @javax.annotation.Nullable + public Integer getVerMajor() { + return verMajor; + } + + public void setVerMajor(@javax.annotation.Nullable Integer verMajor) { + this.verMajor = verMajor; + } + + + public MaintainersInfoModel verMinor(@javax.annotation.Nullable Integer verMinor) { + this.verMinor = verMinor; + return this; + } + + /** + * Get verMinor + * minimum: 0 + * maximum: 255 + * @return verMinor + */ + @javax.annotation.Nullable + public Integer getVerMinor() { + return verMinor; + } + + public void setVerMinor(@javax.annotation.Nullable Integer verMinor) { + this.verMinor = verMinor; + } + + + public MaintainersInfoModel verRevision(@javax.annotation.Nullable Integer verRevision) { + this.verRevision = verRevision; + return this; + } + + /** + * Get verRevision + * minimum: 0 + * maximum: 255 + * @return verRevision + */ + @javax.annotation.Nullable + public Integer getVerRevision() { + return verRevision; + } + + public void setVerRevision(@javax.annotation.Nullable Integer verRevision) { + this.verRevision = verRevision; + } + + + public MaintainersInfoModel buildNo(@javax.annotation.Nullable Integer buildNo) { + this.buildNo = buildNo; + return this; + } + + /** + * Get buildNo + * minimum: 0 + * maximum: 4294967295 + * @return buildNo + */ + @javax.annotation.Nullable + public Integer getBuildNo() { + return buildNo; + } + + public void setBuildNo(@javax.annotation.Nullable Integer buildNo) { + this.buildNo = buildNo; + } + + + public MaintainersInfoModel mode(@javax.annotation.Nullable Integer mode) { + this.mode = mode; + return this; + } + + /** + * Get mode + * minimum: 0 + * maximum: 255 + * @return mode + */ + @javax.annotation.Nullable + public Integer getMode() { + return mode; + } + + public void setMode(@javax.annotation.Nullable Integer mode) { + this.mode = mode; + } + + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + MaintainersInfoModel maintainersInfoModel = (MaintainersInfoModel) o; + return Objects.equals(this.verMajor, maintainersInfoModel.verMajor) && + Objects.equals(this.verMinor, maintainersInfoModel.verMinor) && + Objects.equals(this.verRevision, maintainersInfoModel.verRevision) && + Objects.equals(this.buildNo, maintainersInfoModel.buildNo) && + Objects.equals(this.mode, maintainersInfoModel.mode); + } + + @Override + public int hashCode() { + return Objects.hash(verMajor, verMinor, verRevision, buildNo, mode); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class MaintainersInfoModel {\n"); + sb.append(" verMajor: ").append(toIndentedString(verMajor)).append("\n"); + sb.append(" verMinor: ").append(toIndentedString(verMinor)).append("\n"); + sb.append(" verRevision: ").append(toIndentedString(verRevision)).append("\n"); + sb.append(" buildNo: ").append(toIndentedString(buildNo)).append("\n"); + sb.append(" mode: ").append(toIndentedString(mode)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + + public static HashSet openapiFields; + public static HashSet openapiRequiredFields; + + static { + // a set of all properties/fields (JSON key names) + openapiFields = new HashSet(Arrays.asList("ver_major", "ver_minor", "ver_revision", "build_no", "mode")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * Validates the JSON Element and throws an exception if issues found + * + * @param jsonElement JSON Element + * @throws IOException if the JSON Element is invalid with respect to MaintainersInfoModel + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!MaintainersInfoModel.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in MaintainersInfoModel is not found in the empty JSON string", MaintainersInfoModel.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!MaintainersInfoModel.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` in the JSON string is not defined in the `MaintainersInfoModel` properties. JSON: %s", entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!MaintainersInfoModel.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'MaintainersInfoModel' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter + = gson.getDelegateAdapter(this, TypeToken.get(MaintainersInfoModel.class)); + + return (TypeAdapter) new TypeAdapter() { + @Override + public void write(JsonWriter out, MaintainersInfoModel value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public MaintainersInfoModel read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + + }.nullSafe(); + } + } + + /** + * Create an instance of MaintainersInfoModel given an JSON string + * + * @param jsonString JSON string + * @return An instance of MaintainersInfoModel + * @throws IOException if the JSON string is invalid with respect to MaintainersInfoModel + */ + public static MaintainersInfoModel fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, MaintainersInfoModel.class); + } + + /** + * Convert an instance of MaintainersInfoModel to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} + diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/model/PerformanceModel.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/PerformanceModel.java new file mode 100644 index 00000000..8e65e0be --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/PerformanceModel.java @@ -0,0 +1,302 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Locale; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; +import org.openapitools.client.model.BlockProcessingPerformanceModel; +import org.openapitools.client.model.DbStatInfoModel; +import org.openapitools.client.model.TxPoolPerformanceModel; +import org.openapitools.client.model.TxProcessingPerformanceModel; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Locale; + +import invalidPackageName.JSON; + +/** + * PerformanceModel + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class PerformanceModel { + public static final String SERIALIZED_NAME_BLOCK_PROCESSING = "block_processing"; + @SerializedName(SERIALIZED_NAME_BLOCK_PROCESSING) + @javax.annotation.Nullable + private BlockProcessingPerformanceModel blockProcessing; + + public static final String SERIALIZED_NAME_TX_PROCESSING = "tx_processing"; + @SerializedName(SERIALIZED_NAME_TX_PROCESSING) + @javax.annotation.Nullable + private TxProcessingPerformanceModel txProcessing; + + public static final String SERIALIZED_NAME_TX_POOL = "tx_pool"; + @SerializedName(SERIALIZED_NAME_TX_POOL) + @javax.annotation.Nullable + private TxPoolPerformanceModel txPool; + + public static final String SERIALIZED_NAME_DB_STAT_INFO = "db_stat_info"; + @SerializedName(SERIALIZED_NAME_DB_STAT_INFO) + @javax.annotation.Nullable + private DbStatInfoModel dbStatInfo; + + public PerformanceModel() { + } + + public PerformanceModel blockProcessing(@javax.annotation.Nullable BlockProcessingPerformanceModel blockProcessing) { + this.blockProcessing = blockProcessing; + return this; + } + + /** + * Get blockProcessing + * @return blockProcessing + */ + @javax.annotation.Nullable + public BlockProcessingPerformanceModel getBlockProcessing() { + return blockProcessing; + } + + public void setBlockProcessing(@javax.annotation.Nullable BlockProcessingPerformanceModel blockProcessing) { + this.blockProcessing = blockProcessing; + } + + + public PerformanceModel txProcessing(@javax.annotation.Nullable TxProcessingPerformanceModel txProcessing) { + this.txProcessing = txProcessing; + return this; + } + + /** + * Get txProcessing + * @return txProcessing + */ + @javax.annotation.Nullable + public TxProcessingPerformanceModel getTxProcessing() { + return txProcessing; + } + + public void setTxProcessing(@javax.annotation.Nullable TxProcessingPerformanceModel txProcessing) { + this.txProcessing = txProcessing; + } + + + public PerformanceModel txPool(@javax.annotation.Nullable TxPoolPerformanceModel txPool) { + this.txPool = txPool; + return this; + } + + /** + * Get txPool + * @return txPool + */ + @javax.annotation.Nullable + public TxPoolPerformanceModel getTxPool() { + return txPool; + } + + public void setTxPool(@javax.annotation.Nullable TxPoolPerformanceModel txPool) { + this.txPool = txPool; + } + + + public PerformanceModel dbStatInfo(@javax.annotation.Nullable DbStatInfoModel dbStatInfo) { + this.dbStatInfo = dbStatInfo; + return this; + } + + /** + * Get dbStatInfo + * @return dbStatInfo + */ + @javax.annotation.Nullable + public DbStatInfoModel getDbStatInfo() { + return dbStatInfo; + } + + public void setDbStatInfo(@javax.annotation.Nullable DbStatInfoModel dbStatInfo) { + this.dbStatInfo = dbStatInfo; + } + + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + PerformanceModel performanceModel = (PerformanceModel) o; + return Objects.equals(this.blockProcessing, performanceModel.blockProcessing) && + Objects.equals(this.txProcessing, performanceModel.txProcessing) && + Objects.equals(this.txPool, performanceModel.txPool) && + Objects.equals(this.dbStatInfo, performanceModel.dbStatInfo); + } + + @Override + public int hashCode() { + return Objects.hash(blockProcessing, txProcessing, txPool, dbStatInfo); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class PerformanceModel {\n"); + sb.append(" blockProcessing: ").append(toIndentedString(blockProcessing)).append("\n"); + sb.append(" txProcessing: ").append(toIndentedString(txProcessing)).append("\n"); + sb.append(" txPool: ").append(toIndentedString(txPool)).append("\n"); + sb.append(" dbStatInfo: ").append(toIndentedString(dbStatInfo)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + + public static HashSet openapiFields; + public static HashSet openapiRequiredFields; + + static { + // a set of all properties/fields (JSON key names) + openapiFields = new HashSet(Arrays.asList("block_processing", "tx_processing", "tx_pool", "db_stat_info")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * Validates the JSON Element and throws an exception if issues found + * + * @param jsonElement JSON Element + * @throws IOException if the JSON Element is invalid with respect to PerformanceModel + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!PerformanceModel.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in PerformanceModel is not found in the empty JSON string", PerformanceModel.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!PerformanceModel.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` in the JSON string is not defined in the `PerformanceModel` properties. JSON: %s", entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + // validate the optional field `block_processing` + if (jsonObj.get("block_processing") != null && !jsonObj.get("block_processing").isJsonNull()) { + BlockProcessingPerformanceModel.validateJsonElement(jsonObj.get("block_processing")); + } + // validate the optional field `tx_processing` + if (jsonObj.get("tx_processing") != null && !jsonObj.get("tx_processing").isJsonNull()) { + TxProcessingPerformanceModel.validateJsonElement(jsonObj.get("tx_processing")); + } + // validate the optional field `tx_pool` + if (jsonObj.get("tx_pool") != null && !jsonObj.get("tx_pool").isJsonNull()) { + TxPoolPerformanceModel.validateJsonElement(jsonObj.get("tx_pool")); + } + // validate the optional field `db_stat_info` + if (jsonObj.get("db_stat_info") != null && !jsonObj.get("db_stat_info").isJsonNull()) { + DbStatInfoModel.validateJsonElement(jsonObj.get("db_stat_info")); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!PerformanceModel.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'PerformanceModel' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter + = gson.getDelegateAdapter(this, TypeToken.get(PerformanceModel.class)); + + return (TypeAdapter) new TypeAdapter() { + @Override + public void write(JsonWriter out, PerformanceModel value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public PerformanceModel read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + + }.nullSafe(); + } + } + + /** + * Create an instance of PerformanceModel given an JSON string + * + * @param jsonString JSON string + * @return An instance of PerformanceModel + * @throws IOException if the JSON string is invalid with respect to PerformanceModel + */ + public static PerformanceModel fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, PerformanceModel.class); + } + + /** + * Convert an instance of PerformanceModel to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} + diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/model/PosEntryModel.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/PosEntryModel.java new file mode 100644 index 00000000..bf1bcbb6 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/PosEntryModel.java @@ -0,0 +1,392 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Locale; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Locale; + +import invalidPackageName.JSON; + +/** + * PosEntryModel + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class PosEntryModel { + public static final String SERIALIZED_NAME_AMOUNT = "amount"; + @SerializedName(SERIALIZED_NAME_AMOUNT) + @javax.annotation.Nullable + private Integer amount; + + public static final String SERIALIZED_NAME_G_INDEX = "g_index"; + @SerializedName(SERIALIZED_NAME_G_INDEX) + @javax.annotation.Nullable + private Integer gIndex; + + public static final String SERIALIZED_NAME_KEYIMAGE = "keyimage"; + @SerializedName(SERIALIZED_NAME_KEYIMAGE) + @javax.annotation.Nullable + private String keyimage; + + public static final String SERIALIZED_NAME_BLOCK_TIMESTAMP = "block_timestamp"; + @SerializedName(SERIALIZED_NAME_BLOCK_TIMESTAMP) + @javax.annotation.Nullable + private Integer blockTimestamp; + + public static final String SERIALIZED_NAME_STAKE_UNLOCK_TIME = "stake_unlock_time"; + @SerializedName(SERIALIZED_NAME_STAKE_UNLOCK_TIME) + @javax.annotation.Nullable + private Integer stakeUnlockTime; + + public static final String SERIALIZED_NAME_TX_ID = "tx_id"; + @SerializedName(SERIALIZED_NAME_TX_ID) + @javax.annotation.Nullable + private String txId; + + public static final String SERIALIZED_NAME_TX_OUT_INDEX = "tx_out_index"; + @SerializedName(SERIALIZED_NAME_TX_OUT_INDEX) + @javax.annotation.Nullable + private Integer txOutIndex; + + public static final String SERIALIZED_NAME_WALLET_INDEX = "wallet_index"; + @SerializedName(SERIALIZED_NAME_WALLET_INDEX) + @javax.annotation.Nullable + private Integer walletIndex; + + public PosEntryModel() { + } + + public PosEntryModel amount(@javax.annotation.Nullable Integer amount) { + this.amount = amount; + return this; + } + + /** + * Get amount + * @return amount + */ + @javax.annotation.Nullable + public Integer getAmount() { + return amount; + } + + public void setAmount(@javax.annotation.Nullable Integer amount) { + this.amount = amount; + } + + + public PosEntryModel gIndex(@javax.annotation.Nullable Integer gIndex) { + this.gIndex = gIndex; + return this; + } + + /** + * Get gIndex + * @return gIndex + */ + @javax.annotation.Nullable + public Integer getgIndex() { + return gIndex; + } + + public void setgIndex(@javax.annotation.Nullable Integer gIndex) { + this.gIndex = gIndex; + } + + + public PosEntryModel keyimage(@javax.annotation.Nullable String keyimage) { + this.keyimage = keyimage; + return this; + } + + /** + * Get keyimage + * @return keyimage + */ + @javax.annotation.Nullable + public String getKeyimage() { + return keyimage; + } + + public void setKeyimage(@javax.annotation.Nullable String keyimage) { + this.keyimage = keyimage; + } + + + public PosEntryModel blockTimestamp(@javax.annotation.Nullable Integer blockTimestamp) { + this.blockTimestamp = blockTimestamp; + return this; + } + + /** + * Get blockTimestamp + * @return blockTimestamp + */ + @javax.annotation.Nullable + public Integer getBlockTimestamp() { + return blockTimestamp; + } + + public void setBlockTimestamp(@javax.annotation.Nullable Integer blockTimestamp) { + this.blockTimestamp = blockTimestamp; + } + + + public PosEntryModel stakeUnlockTime(@javax.annotation.Nullable Integer stakeUnlockTime) { + this.stakeUnlockTime = stakeUnlockTime; + return this; + } + + /** + * Get stakeUnlockTime + * @return stakeUnlockTime + */ + @javax.annotation.Nullable + public Integer getStakeUnlockTime() { + return stakeUnlockTime; + } + + public void setStakeUnlockTime(@javax.annotation.Nullable Integer stakeUnlockTime) { + this.stakeUnlockTime = stakeUnlockTime; + } + + + public PosEntryModel txId(@javax.annotation.Nullable String txId) { + this.txId = txId; + return this; + } + + /** + * Get txId + * @return txId + */ + @javax.annotation.Nullable + public String getTxId() { + return txId; + } + + public void setTxId(@javax.annotation.Nullable String txId) { + this.txId = txId; + } + + + public PosEntryModel txOutIndex(@javax.annotation.Nullable Integer txOutIndex) { + this.txOutIndex = txOutIndex; + return this; + } + + /** + * Get txOutIndex + * @return txOutIndex + */ + @javax.annotation.Nullable + public Integer getTxOutIndex() { + return txOutIndex; + } + + public void setTxOutIndex(@javax.annotation.Nullable Integer txOutIndex) { + this.txOutIndex = txOutIndex; + } + + + public PosEntryModel walletIndex(@javax.annotation.Nullable Integer walletIndex) { + this.walletIndex = walletIndex; + return this; + } + + /** + * Get walletIndex + * @return walletIndex + */ + @javax.annotation.Nullable + public Integer getWalletIndex() { + return walletIndex; + } + + public void setWalletIndex(@javax.annotation.Nullable Integer walletIndex) { + this.walletIndex = walletIndex; + } + + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + PosEntryModel posEntryModel = (PosEntryModel) o; + return Objects.equals(this.amount, posEntryModel.amount) && + Objects.equals(this.gIndex, posEntryModel.gIndex) && + Objects.equals(this.keyimage, posEntryModel.keyimage) && + Objects.equals(this.blockTimestamp, posEntryModel.blockTimestamp) && + Objects.equals(this.stakeUnlockTime, posEntryModel.stakeUnlockTime) && + Objects.equals(this.txId, posEntryModel.txId) && + Objects.equals(this.txOutIndex, posEntryModel.txOutIndex) && + Objects.equals(this.walletIndex, posEntryModel.walletIndex); + } + + @Override + public int hashCode() { + return Objects.hash(amount, gIndex, keyimage, blockTimestamp, stakeUnlockTime, txId, txOutIndex, walletIndex); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class PosEntryModel {\n"); + sb.append(" amount: ").append(toIndentedString(amount)).append("\n"); + sb.append(" gIndex: ").append(toIndentedString(gIndex)).append("\n"); + sb.append(" keyimage: ").append(toIndentedString(keyimage)).append("\n"); + sb.append(" blockTimestamp: ").append(toIndentedString(blockTimestamp)).append("\n"); + sb.append(" stakeUnlockTime: ").append(toIndentedString(stakeUnlockTime)).append("\n"); + sb.append(" txId: ").append(toIndentedString(txId)).append("\n"); + sb.append(" txOutIndex: ").append(toIndentedString(txOutIndex)).append("\n"); + sb.append(" walletIndex: ").append(toIndentedString(walletIndex)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + + public static HashSet openapiFields; + public static HashSet openapiRequiredFields; + + static { + // a set of all properties/fields (JSON key names) + openapiFields = new HashSet(Arrays.asList("amount", "g_index", "keyimage", "block_timestamp", "stake_unlock_time", "tx_id", "tx_out_index", "wallet_index")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * Validates the JSON Element and throws an exception if issues found + * + * @param jsonElement JSON Element + * @throws IOException if the JSON Element is invalid with respect to PosEntryModel + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!PosEntryModel.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in PosEntryModel is not found in the empty JSON string", PosEntryModel.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!PosEntryModel.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` in the JSON string is not defined in the `PosEntryModel` properties. JSON: %s", entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + if ((jsonObj.get("keyimage") != null && !jsonObj.get("keyimage").isJsonNull()) && !jsonObj.get("keyimage").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `keyimage` to be a primitive type in the JSON string but got `%s`", jsonObj.get("keyimage").toString())); + } + if ((jsonObj.get("tx_id") != null && !jsonObj.get("tx_id").isJsonNull()) && !jsonObj.get("tx_id").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `tx_id` to be a primitive type in the JSON string but got `%s`", jsonObj.get("tx_id").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!PosEntryModel.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'PosEntryModel' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter + = gson.getDelegateAdapter(this, TypeToken.get(PosEntryModel.class)); + + return (TypeAdapter) new TypeAdapter() { + @Override + public void write(JsonWriter out, PosEntryModel value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public PosEntryModel read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + + }.nullSafe(); + } + } + + /** + * Create an instance of PosEntryModel given an JSON string + * + * @param jsonString JSON string + * @return An instance of PosEntryModel + * @throws IOException if the JSON string is invalid with respect to PosEntryModel + */ + public static PosEntryModel fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, PosEntryModel.class); + } + + /** + * Convert an instance of PosEntryModel to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} + diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/model/SubmitBlockRequestModel.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/SubmitBlockRequestModel.java new file mode 100644 index 00000000..d9c444fc --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/SubmitBlockRequestModel.java @@ -0,0 +1,207 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Locale; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Locale; + +import invalidPackageName.JSON; + +/** + * SubmitBlockRequestModel + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class SubmitBlockRequestModel { + public static final String SERIALIZED_NAME_BLOCK_BLOB = "block_blob"; + @SerializedName(SERIALIZED_NAME_BLOCK_BLOB) + @javax.annotation.Nullable + private String blockBlob; + + public SubmitBlockRequestModel() { + } + + public SubmitBlockRequestModel blockBlob(@javax.annotation.Nullable String blockBlob) { + this.blockBlob = blockBlob; + return this; + } + + /** + * Get blockBlob + * @return blockBlob + */ + @javax.annotation.Nullable + public String getBlockBlob() { + return blockBlob; + } + + public void setBlockBlob(@javax.annotation.Nullable String blockBlob) { + this.blockBlob = blockBlob; + } + + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SubmitBlockRequestModel submitBlockRequestModel = (SubmitBlockRequestModel) o; + return Objects.equals(this.blockBlob, submitBlockRequestModel.blockBlob); + } + + @Override + public int hashCode() { + return Objects.hash(blockBlob); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SubmitBlockRequestModel {\n"); + sb.append(" blockBlob: ").append(toIndentedString(blockBlob)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + + public static HashSet openapiFields; + public static HashSet openapiRequiredFields; + + static { + // a set of all properties/fields (JSON key names) + openapiFields = new HashSet(Arrays.asList("block_blob")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * Validates the JSON Element and throws an exception if issues found + * + * @param jsonElement JSON Element + * @throws IOException if the JSON Element is invalid with respect to SubmitBlockRequestModel + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!SubmitBlockRequestModel.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in SubmitBlockRequestModel is not found in the empty JSON string", SubmitBlockRequestModel.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!SubmitBlockRequestModel.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` in the JSON string is not defined in the `SubmitBlockRequestModel` properties. JSON: %s", entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + if ((jsonObj.get("block_blob") != null && !jsonObj.get("block_blob").isJsonNull()) && !jsonObj.get("block_blob").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `block_blob` to be a primitive type in the JSON string but got `%s`", jsonObj.get("block_blob").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!SubmitBlockRequestModel.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'SubmitBlockRequestModel' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter + = gson.getDelegateAdapter(this, TypeToken.get(SubmitBlockRequestModel.class)); + + return (TypeAdapter) new TypeAdapter() { + @Override + public void write(JsonWriter out, SubmitBlockRequestModel value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public SubmitBlockRequestModel read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + + }.nullSafe(); + } + } + + /** + * Create an instance of SubmitBlockRequestModel given an JSON string + * + * @param jsonString JSON string + * @return An instance of SubmitBlockRequestModel + * @throws IOException if the JSON string is invalid with respect to SubmitBlockRequestModel + */ + public static SubmitBlockRequestModel fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, SubmitBlockRequestModel.class); + } + + /** + * Convert an instance of SubmitBlockRequestModel to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} + diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/model/SubmitBlockResponseModel.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/SubmitBlockResponseModel.java new file mode 100644 index 00000000..be5932a9 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/SubmitBlockResponseModel.java @@ -0,0 +1,207 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Locale; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Locale; + +import invalidPackageName.JSON; + +/** + * SubmitBlockResponseModel + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class SubmitBlockResponseModel { + public static final String SERIALIZED_NAME_STATUS = "status"; + @SerializedName(SERIALIZED_NAME_STATUS) + @javax.annotation.Nullable + private String status; + + public SubmitBlockResponseModel() { + } + + public SubmitBlockResponseModel status(@javax.annotation.Nullable String status) { + this.status = status; + return this; + } + + /** + * Get status + * @return status + */ + @javax.annotation.Nullable + public String getStatus() { + return status; + } + + public void setStatus(@javax.annotation.Nullable String status) { + this.status = status; + } + + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SubmitBlockResponseModel submitBlockResponseModel = (SubmitBlockResponseModel) o; + return Objects.equals(this.status, submitBlockResponseModel.status); + } + + @Override + public int hashCode() { + return Objects.hash(status); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SubmitBlockResponseModel {\n"); + sb.append(" status: ").append(toIndentedString(status)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + + public static HashSet openapiFields; + public static HashSet openapiRequiredFields; + + static { + // a set of all properties/fields (JSON key names) + openapiFields = new HashSet(Arrays.asList("status")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * Validates the JSON Element and throws an exception if issues found + * + * @param jsonElement JSON Element + * @throws IOException if the JSON Element is invalid with respect to SubmitBlockResponseModel + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!SubmitBlockResponseModel.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in SubmitBlockResponseModel is not found in the empty JSON string", SubmitBlockResponseModel.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!SubmitBlockResponseModel.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` in the JSON string is not defined in the `SubmitBlockResponseModel` properties. JSON: %s", entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + if ((jsonObj.get("status") != null && !jsonObj.get("status").isJsonNull()) && !jsonObj.get("status").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `status` to be a primitive type in the JSON string but got `%s`", jsonObj.get("status").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!SubmitBlockResponseModel.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'SubmitBlockResponseModel' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter + = gson.getDelegateAdapter(this, TypeToken.get(SubmitBlockResponseModel.class)); + + return (TypeAdapter) new TypeAdapter() { + @Override + public void write(JsonWriter out, SubmitBlockResponseModel value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public SubmitBlockResponseModel read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + + }.nullSafe(); + } + } + + /** + * Create an instance of SubmitBlockResponseModel given an JSON string + * + * @param jsonString JSON string + * @return An instance of SubmitBlockResponseModel + * @throws IOException if the JSON string is invalid with respect to SubmitBlockResponseModel + */ + public static SubmitBlockResponseModel fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, SubmitBlockResponseModel.class); + } + + /** + * Convert an instance of SubmitBlockResponseModel to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} + diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/model/TransactionAttachmentModel.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/TransactionAttachmentModel.java new file mode 100644 index 00000000..eb906500 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/TransactionAttachmentModel.java @@ -0,0 +1,265 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Locale; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Locale; + +import invalidPackageName.JSON; + +/** + * TransactionAttachmentModel + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class TransactionAttachmentModel { + public static final String SERIALIZED_NAME_TYPE = "type"; + @SerializedName(SERIALIZED_NAME_TYPE) + @javax.annotation.Nullable + private String type; + + public static final String SERIALIZED_NAME_SHORT_VIEW = "short_view"; + @SerializedName(SERIALIZED_NAME_SHORT_VIEW) + @javax.annotation.Nullable + private String shortView; + + public static final String SERIALIZED_NAME_DETAILS_VIEW = "details_view"; + @SerializedName(SERIALIZED_NAME_DETAILS_VIEW) + @javax.annotation.Nullable + private String detailsView; + + public TransactionAttachmentModel() { + } + + public TransactionAttachmentModel type(@javax.annotation.Nullable String type) { + this.type = type; + return this; + } + + /** + * Get type + * @return type + */ + @javax.annotation.Nullable + public String getType() { + return type; + } + + public void setType(@javax.annotation.Nullable String type) { + this.type = type; + } + + + public TransactionAttachmentModel shortView(@javax.annotation.Nullable String shortView) { + this.shortView = shortView; + return this; + } + + /** + * Get shortView + * @return shortView + */ + @javax.annotation.Nullable + public String getShortView() { + return shortView; + } + + public void setShortView(@javax.annotation.Nullable String shortView) { + this.shortView = shortView; + } + + + public TransactionAttachmentModel detailsView(@javax.annotation.Nullable String detailsView) { + this.detailsView = detailsView; + return this; + } + + /** + * Get detailsView + * @return detailsView + */ + @javax.annotation.Nullable + public String getDetailsView() { + return detailsView; + } + + public void setDetailsView(@javax.annotation.Nullable String detailsView) { + this.detailsView = detailsView; + } + + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TransactionAttachmentModel transactionAttachmentModel = (TransactionAttachmentModel) o; + return Objects.equals(this.type, transactionAttachmentModel.type) && + Objects.equals(this.shortView, transactionAttachmentModel.shortView) && + Objects.equals(this.detailsView, transactionAttachmentModel.detailsView); + } + + @Override + public int hashCode() { + return Objects.hash(type, shortView, detailsView); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TransactionAttachmentModel {\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" shortView: ").append(toIndentedString(shortView)).append("\n"); + sb.append(" detailsView: ").append(toIndentedString(detailsView)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + + public static HashSet openapiFields; + public static HashSet openapiRequiredFields; + + static { + // a set of all properties/fields (JSON key names) + openapiFields = new HashSet(Arrays.asList("type", "short_view", "details_view")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * Validates the JSON Element and throws an exception if issues found + * + * @param jsonElement JSON Element + * @throws IOException if the JSON Element is invalid with respect to TransactionAttachmentModel + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!TransactionAttachmentModel.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in TransactionAttachmentModel is not found in the empty JSON string", TransactionAttachmentModel.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!TransactionAttachmentModel.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` in the JSON string is not defined in the `TransactionAttachmentModel` properties. JSON: %s", entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + if ((jsonObj.get("type") != null && !jsonObj.get("type").isJsonNull()) && !jsonObj.get("type").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `type` to be a primitive type in the JSON string but got `%s`", jsonObj.get("type").toString())); + } + if ((jsonObj.get("short_view") != null && !jsonObj.get("short_view").isJsonNull()) && !jsonObj.get("short_view").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `short_view` to be a primitive type in the JSON string but got `%s`", jsonObj.get("short_view").toString())); + } + if ((jsonObj.get("details_view") != null && !jsonObj.get("details_view").isJsonNull()) && !jsonObj.get("details_view").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `details_view` to be a primitive type in the JSON string but got `%s`", jsonObj.get("details_view").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!TransactionAttachmentModel.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'TransactionAttachmentModel' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter + = gson.getDelegateAdapter(this, TypeToken.get(TransactionAttachmentModel.class)); + + return (TypeAdapter) new TypeAdapter() { + @Override + public void write(JsonWriter out, TransactionAttachmentModel value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public TransactionAttachmentModel read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + + }.nullSafe(); + } + } + + /** + * Create an instance of TransactionAttachmentModel given an JSON string + * + * @param jsonString JSON string + * @return An instance of TransactionAttachmentModel + * @throws IOException if the JSON string is invalid with respect to TransactionAttachmentModel + */ + public static TransactionAttachmentModel fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, TransactionAttachmentModel.class); + } + + /** + * Convert an instance of TransactionAttachmentModel to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} + diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/model/TransactionDetailsModel.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/TransactionDetailsModel.java new file mode 100644 index 00000000..af3bcc05 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/TransactionDetailsModel.java @@ -0,0 +1,622 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Locale; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import org.openapitools.client.model.TransactionAttachmentModel; +import org.openapitools.client.model.TransactionExtraModel; +import org.openapitools.client.model.TransactionInputModel; +import org.openapitools.client.model.TransactionOutputModel; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Locale; + +import invalidPackageName.JSON; + +/** + * TransactionDetailsModel + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class TransactionDetailsModel { + public static final String SERIALIZED_NAME_AMOUNT = "amount"; + @SerializedName(SERIALIZED_NAME_AMOUNT) + @javax.annotation.Nullable + private Integer amount; + + public static final String SERIALIZED_NAME_ATTACHMENTS = "attachments"; + @SerializedName(SERIALIZED_NAME_ATTACHMENTS) + @javax.annotation.Nullable + private List attachments = new ArrayList<>(); + + public static final String SERIALIZED_NAME_BLOB = "blob"; + @SerializedName(SERIALIZED_NAME_BLOB) + @javax.annotation.Nullable + private String blob; + + public static final String SERIALIZED_NAME_BLOB_SIZE = "blob_size"; + @SerializedName(SERIALIZED_NAME_BLOB_SIZE) + @javax.annotation.Nullable + private Integer blobSize; + + public static final String SERIALIZED_NAME_EXTRA = "extra"; + @SerializedName(SERIALIZED_NAME_EXTRA) + @javax.annotation.Nullable + private List extra = new ArrayList<>(); + + public static final String SERIALIZED_NAME_FEE = "fee"; + @SerializedName(SERIALIZED_NAME_FEE) + @javax.annotation.Nullable + private Integer fee; + + public static final String SERIALIZED_NAME_ID = "id"; + @SerializedName(SERIALIZED_NAME_ID) + @javax.annotation.Nullable + private String id; + + public static final String SERIALIZED_NAME_INS = "ins"; + @SerializedName(SERIALIZED_NAME_INS) + @javax.annotation.Nullable + private List ins = new ArrayList<>(); + + public static final String SERIALIZED_NAME_KEEPER_BLOCK = "keeper_block"; + @SerializedName(SERIALIZED_NAME_KEEPER_BLOCK) + @javax.annotation.Nullable + private Long keeperBlock; + + public static final String SERIALIZED_NAME_OBJECT_IN_JSON = "object_in_json"; + @SerializedName(SERIALIZED_NAME_OBJECT_IN_JSON) + @javax.annotation.Nullable + private String objectInJson; + + public static final String SERIALIZED_NAME_OUTS = "outs"; + @SerializedName(SERIALIZED_NAME_OUTS) + @javax.annotation.Nullable + private List outs = new ArrayList<>(); + + public static final String SERIALIZED_NAME_PUB_KEY = "pub_key"; + @SerializedName(SERIALIZED_NAME_PUB_KEY) + @javax.annotation.Nullable + private String pubKey; + + public static final String SERIALIZED_NAME_TIMESTAMP = "timestamp"; + @SerializedName(SERIALIZED_NAME_TIMESTAMP) + @javax.annotation.Nullable + private Integer timestamp; + + public TransactionDetailsModel() { + } + + public TransactionDetailsModel amount(@javax.annotation.Nullable Integer amount) { + this.amount = amount; + return this; + } + + /** + * Get amount + * @return amount + */ + @javax.annotation.Nullable + public Integer getAmount() { + return amount; + } + + public void setAmount(@javax.annotation.Nullable Integer amount) { + this.amount = amount; + } + + + public TransactionDetailsModel attachments(@javax.annotation.Nullable List attachments) { + this.attachments = attachments; + return this; + } + + public TransactionDetailsModel addAttachmentsItem(TransactionAttachmentModel attachmentsItem) { + if (this.attachments == null) { + this.attachments = new ArrayList<>(); + } + this.attachments.add(attachmentsItem); + return this; + } + + /** + * Get attachments + * @return attachments + */ + @javax.annotation.Nullable + public List getAttachments() { + return attachments; + } + + public void setAttachments(@javax.annotation.Nullable List attachments) { + this.attachments = attachments; + } + + + public TransactionDetailsModel blob(@javax.annotation.Nullable String blob) { + this.blob = blob; + return this; + } + + /** + * Get blob + * @return blob + */ + @javax.annotation.Nullable + public String getBlob() { + return blob; + } + + public void setBlob(@javax.annotation.Nullable String blob) { + this.blob = blob; + } + + + public TransactionDetailsModel blobSize(@javax.annotation.Nullable Integer blobSize) { + this.blobSize = blobSize; + return this; + } + + /** + * Get blobSize + * @return blobSize + */ + @javax.annotation.Nullable + public Integer getBlobSize() { + return blobSize; + } + + public void setBlobSize(@javax.annotation.Nullable Integer blobSize) { + this.blobSize = blobSize; + } + + + public TransactionDetailsModel extra(@javax.annotation.Nullable List extra) { + this.extra = extra; + return this; + } + + public TransactionDetailsModel addExtraItem(TransactionExtraModel extraItem) { + if (this.extra == null) { + this.extra = new ArrayList<>(); + } + this.extra.add(extraItem); + return this; + } + + /** + * Get extra + * @return extra + */ + @javax.annotation.Nullable + public List getExtra() { + return extra; + } + + public void setExtra(@javax.annotation.Nullable List extra) { + this.extra = extra; + } + + + public TransactionDetailsModel fee(@javax.annotation.Nullable Integer fee) { + this.fee = fee; + return this; + } + + /** + * Get fee + * @return fee + */ + @javax.annotation.Nullable + public Integer getFee() { + return fee; + } + + public void setFee(@javax.annotation.Nullable Integer fee) { + this.fee = fee; + } + + + public TransactionDetailsModel id(@javax.annotation.Nullable String id) { + this.id = id; + return this; + } + + /** + * Get id + * @return id + */ + @javax.annotation.Nullable + public String getId() { + return id; + } + + public void setId(@javax.annotation.Nullable String id) { + this.id = id; + } + + + public TransactionDetailsModel ins(@javax.annotation.Nullable List ins) { + this.ins = ins; + return this; + } + + public TransactionDetailsModel addInsItem(TransactionInputModel insItem) { + if (this.ins == null) { + this.ins = new ArrayList<>(); + } + this.ins.add(insItem); + return this; + } + + /** + * Get ins + * @return ins + */ + @javax.annotation.Nullable + public List getIns() { + return ins; + } + + public void setIns(@javax.annotation.Nullable List ins) { + this.ins = ins; + } + + + public TransactionDetailsModel keeperBlock(@javax.annotation.Nullable Long keeperBlock) { + this.keeperBlock = keeperBlock; + return this; + } + + /** + * Get keeperBlock + * @return keeperBlock + */ + @javax.annotation.Nullable + public Long getKeeperBlock() { + return keeperBlock; + } + + public void setKeeperBlock(@javax.annotation.Nullable Long keeperBlock) { + this.keeperBlock = keeperBlock; + } + + + public TransactionDetailsModel objectInJson(@javax.annotation.Nullable String objectInJson) { + this.objectInJson = objectInJson; + return this; + } + + /** + * Get objectInJson + * @return objectInJson + */ + @javax.annotation.Nullable + public String getObjectInJson() { + return objectInJson; + } + + public void setObjectInJson(@javax.annotation.Nullable String objectInJson) { + this.objectInJson = objectInJson; + } + + + public TransactionDetailsModel outs(@javax.annotation.Nullable List outs) { + this.outs = outs; + return this; + } + + public TransactionDetailsModel addOutsItem(TransactionOutputModel outsItem) { + if (this.outs == null) { + this.outs = new ArrayList<>(); + } + this.outs.add(outsItem); + return this; + } + + /** + * Get outs + * @return outs + */ + @javax.annotation.Nullable + public List getOuts() { + return outs; + } + + public void setOuts(@javax.annotation.Nullable List outs) { + this.outs = outs; + } + + + public TransactionDetailsModel pubKey(@javax.annotation.Nullable String pubKey) { + this.pubKey = pubKey; + return this; + } + + /** + * Get pubKey + * @return pubKey + */ + @javax.annotation.Nullable + public String getPubKey() { + return pubKey; + } + + public void setPubKey(@javax.annotation.Nullable String pubKey) { + this.pubKey = pubKey; + } + + + public TransactionDetailsModel timestamp(@javax.annotation.Nullable Integer timestamp) { + this.timestamp = timestamp; + return this; + } + + /** + * Get timestamp + * @return timestamp + */ + @javax.annotation.Nullable + public Integer getTimestamp() { + return timestamp; + } + + public void setTimestamp(@javax.annotation.Nullable Integer timestamp) { + this.timestamp = timestamp; + } + + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TransactionDetailsModel transactionDetailsModel = (TransactionDetailsModel) o; + return Objects.equals(this.amount, transactionDetailsModel.amount) && + Objects.equals(this.attachments, transactionDetailsModel.attachments) && + Objects.equals(this.blob, transactionDetailsModel.blob) && + Objects.equals(this.blobSize, transactionDetailsModel.blobSize) && + Objects.equals(this.extra, transactionDetailsModel.extra) && + Objects.equals(this.fee, transactionDetailsModel.fee) && + Objects.equals(this.id, transactionDetailsModel.id) && + Objects.equals(this.ins, transactionDetailsModel.ins) && + Objects.equals(this.keeperBlock, transactionDetailsModel.keeperBlock) && + Objects.equals(this.objectInJson, transactionDetailsModel.objectInJson) && + Objects.equals(this.outs, transactionDetailsModel.outs) && + Objects.equals(this.pubKey, transactionDetailsModel.pubKey) && + Objects.equals(this.timestamp, transactionDetailsModel.timestamp); + } + + @Override + public int hashCode() { + return Objects.hash(amount, attachments, blob, blobSize, extra, fee, id, ins, keeperBlock, objectInJson, outs, pubKey, timestamp); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TransactionDetailsModel {\n"); + sb.append(" amount: ").append(toIndentedString(amount)).append("\n"); + sb.append(" attachments: ").append(toIndentedString(attachments)).append("\n"); + sb.append(" blob: ").append(toIndentedString(blob)).append("\n"); + sb.append(" blobSize: ").append(toIndentedString(blobSize)).append("\n"); + sb.append(" extra: ").append(toIndentedString(extra)).append("\n"); + sb.append(" fee: ").append(toIndentedString(fee)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" ins: ").append(toIndentedString(ins)).append("\n"); + sb.append(" keeperBlock: ").append(toIndentedString(keeperBlock)).append("\n"); + sb.append(" objectInJson: ").append(toIndentedString(objectInJson)).append("\n"); + sb.append(" outs: ").append(toIndentedString(outs)).append("\n"); + sb.append(" pubKey: ").append(toIndentedString(pubKey)).append("\n"); + sb.append(" timestamp: ").append(toIndentedString(timestamp)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + + public static HashSet openapiFields; + public static HashSet openapiRequiredFields; + + static { + // a set of all properties/fields (JSON key names) + openapiFields = new HashSet(Arrays.asList("amount", "attachments", "blob", "blob_size", "extra", "fee", "id", "ins", "keeper_block", "object_in_json", "outs", "pub_key", "timestamp")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * Validates the JSON Element and throws an exception if issues found + * + * @param jsonElement JSON Element + * @throws IOException if the JSON Element is invalid with respect to TransactionDetailsModel + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!TransactionDetailsModel.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in TransactionDetailsModel is not found in the empty JSON string", TransactionDetailsModel.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!TransactionDetailsModel.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` in the JSON string is not defined in the `TransactionDetailsModel` properties. JSON: %s", entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + if (jsonObj.get("attachments") != null && !jsonObj.get("attachments").isJsonNull()) { + JsonArray jsonArrayattachments = jsonObj.getAsJsonArray("attachments"); + if (jsonArrayattachments != null) { + // ensure the json data is an array + if (!jsonObj.get("attachments").isJsonArray()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `attachments` to be an array in the JSON string but got `%s`", jsonObj.get("attachments").toString())); + } + + // validate the optional field `attachments` (array) + for (int i = 0; i < jsonArrayattachments.size(); i++) { + TransactionAttachmentModel.validateJsonElement(jsonArrayattachments.get(i)); + }; + } + } + if ((jsonObj.get("blob") != null && !jsonObj.get("blob").isJsonNull()) && !jsonObj.get("blob").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `blob` to be a primitive type in the JSON string but got `%s`", jsonObj.get("blob").toString())); + } + if (jsonObj.get("extra") != null && !jsonObj.get("extra").isJsonNull()) { + JsonArray jsonArrayextra = jsonObj.getAsJsonArray("extra"); + if (jsonArrayextra != null) { + // ensure the json data is an array + if (!jsonObj.get("extra").isJsonArray()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `extra` to be an array in the JSON string but got `%s`", jsonObj.get("extra").toString())); + } + + // validate the optional field `extra` (array) + for (int i = 0; i < jsonArrayextra.size(); i++) { + TransactionExtraModel.validateJsonElement(jsonArrayextra.get(i)); + }; + } + } + if ((jsonObj.get("id") != null && !jsonObj.get("id").isJsonNull()) && !jsonObj.get("id").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `id` to be a primitive type in the JSON string but got `%s`", jsonObj.get("id").toString())); + } + if (jsonObj.get("ins") != null && !jsonObj.get("ins").isJsonNull()) { + JsonArray jsonArrayins = jsonObj.getAsJsonArray("ins"); + if (jsonArrayins != null) { + // ensure the json data is an array + if (!jsonObj.get("ins").isJsonArray()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `ins` to be an array in the JSON string but got `%s`", jsonObj.get("ins").toString())); + } + + // validate the optional field `ins` (array) + for (int i = 0; i < jsonArrayins.size(); i++) { + TransactionInputModel.validateJsonElement(jsonArrayins.get(i)); + }; + } + } + if ((jsonObj.get("object_in_json") != null && !jsonObj.get("object_in_json").isJsonNull()) && !jsonObj.get("object_in_json").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `object_in_json` to be a primitive type in the JSON string but got `%s`", jsonObj.get("object_in_json").toString())); + } + if (jsonObj.get("outs") != null && !jsonObj.get("outs").isJsonNull()) { + JsonArray jsonArrayouts = jsonObj.getAsJsonArray("outs"); + if (jsonArrayouts != null) { + // ensure the json data is an array + if (!jsonObj.get("outs").isJsonArray()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `outs` to be an array in the JSON string but got `%s`", jsonObj.get("outs").toString())); + } + + // validate the optional field `outs` (array) + for (int i = 0; i < jsonArrayouts.size(); i++) { + TransactionOutputModel.validateJsonElement(jsonArrayouts.get(i)); + }; + } + } + if ((jsonObj.get("pub_key") != null && !jsonObj.get("pub_key").isJsonNull()) && !jsonObj.get("pub_key").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `pub_key` to be a primitive type in the JSON string but got `%s`", jsonObj.get("pub_key").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!TransactionDetailsModel.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'TransactionDetailsModel' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter + = gson.getDelegateAdapter(this, TypeToken.get(TransactionDetailsModel.class)); + + return (TypeAdapter) new TypeAdapter() { + @Override + public void write(JsonWriter out, TransactionDetailsModel value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public TransactionDetailsModel read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + + }.nullSafe(); + } + } + + /** + * Create an instance of TransactionDetailsModel given an JSON string + * + * @param jsonString JSON string + * @return An instance of TransactionDetailsModel + * @throws IOException if the JSON string is invalid with respect to TransactionDetailsModel + */ + public static TransactionDetailsModel fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, TransactionDetailsModel.class); + } + + /** + * Convert an instance of TransactionDetailsModel to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} + diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/model/TransactionExtraModel.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/TransactionExtraModel.java new file mode 100644 index 00000000..51ca0d24 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/TransactionExtraModel.java @@ -0,0 +1,265 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Locale; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Locale; + +import invalidPackageName.JSON; + +/** + * TransactionExtraModel + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class TransactionExtraModel { + public static final String SERIALIZED_NAME_TYPE = "type"; + @SerializedName(SERIALIZED_NAME_TYPE) + @javax.annotation.Nullable + private String type; + + public static final String SERIALIZED_NAME_SHORT_VIEW = "short_view"; + @SerializedName(SERIALIZED_NAME_SHORT_VIEW) + @javax.annotation.Nullable + private String shortView; + + public static final String SERIALIZED_NAME_DETAILS_VIEW = "details_view"; + @SerializedName(SERIALIZED_NAME_DETAILS_VIEW) + @javax.annotation.Nullable + private String detailsView; + + public TransactionExtraModel() { + } + + public TransactionExtraModel type(@javax.annotation.Nullable String type) { + this.type = type; + return this; + } + + /** + * Get type + * @return type + */ + @javax.annotation.Nullable + public String getType() { + return type; + } + + public void setType(@javax.annotation.Nullable String type) { + this.type = type; + } + + + public TransactionExtraModel shortView(@javax.annotation.Nullable String shortView) { + this.shortView = shortView; + return this; + } + + /** + * Get shortView + * @return shortView + */ + @javax.annotation.Nullable + public String getShortView() { + return shortView; + } + + public void setShortView(@javax.annotation.Nullable String shortView) { + this.shortView = shortView; + } + + + public TransactionExtraModel detailsView(@javax.annotation.Nullable String detailsView) { + this.detailsView = detailsView; + return this; + } + + /** + * Get detailsView + * @return detailsView + */ + @javax.annotation.Nullable + public String getDetailsView() { + return detailsView; + } + + public void setDetailsView(@javax.annotation.Nullable String detailsView) { + this.detailsView = detailsView; + } + + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TransactionExtraModel transactionExtraModel = (TransactionExtraModel) o; + return Objects.equals(this.type, transactionExtraModel.type) && + Objects.equals(this.shortView, transactionExtraModel.shortView) && + Objects.equals(this.detailsView, transactionExtraModel.detailsView); + } + + @Override + public int hashCode() { + return Objects.hash(type, shortView, detailsView); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TransactionExtraModel {\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" shortView: ").append(toIndentedString(shortView)).append("\n"); + sb.append(" detailsView: ").append(toIndentedString(detailsView)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + + public static HashSet openapiFields; + public static HashSet openapiRequiredFields; + + static { + // a set of all properties/fields (JSON key names) + openapiFields = new HashSet(Arrays.asList("type", "short_view", "details_view")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * Validates the JSON Element and throws an exception if issues found + * + * @param jsonElement JSON Element + * @throws IOException if the JSON Element is invalid with respect to TransactionExtraModel + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!TransactionExtraModel.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in TransactionExtraModel is not found in the empty JSON string", TransactionExtraModel.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!TransactionExtraModel.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` in the JSON string is not defined in the `TransactionExtraModel` properties. JSON: %s", entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + if ((jsonObj.get("type") != null && !jsonObj.get("type").isJsonNull()) && !jsonObj.get("type").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `type` to be a primitive type in the JSON string but got `%s`", jsonObj.get("type").toString())); + } + if ((jsonObj.get("short_view") != null && !jsonObj.get("short_view").isJsonNull()) && !jsonObj.get("short_view").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `short_view` to be a primitive type in the JSON string but got `%s`", jsonObj.get("short_view").toString())); + } + if ((jsonObj.get("details_view") != null && !jsonObj.get("details_view").isJsonNull()) && !jsonObj.get("details_view").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `details_view` to be a primitive type in the JSON string but got `%s`", jsonObj.get("details_view").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!TransactionExtraModel.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'TransactionExtraModel' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter + = gson.getDelegateAdapter(this, TypeToken.get(TransactionExtraModel.class)); + + return (TypeAdapter) new TypeAdapter() { + @Override + public void write(JsonWriter out, TransactionExtraModel value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public TransactionExtraModel read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + + }.nullSafe(); + } + } + + /** + * Create an instance of TransactionExtraModel given an JSON string + * + * @param jsonString JSON string + * @return An instance of TransactionExtraModel + * @throws IOException if the JSON string is invalid with respect to TransactionExtraModel + */ + public static TransactionExtraModel fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, TransactionExtraModel.class); + } + + /** + * Convert an instance of TransactionExtraModel to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} + diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/model/TransactionInputModel.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/TransactionInputModel.java new file mode 100644 index 00000000..d13949c6 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/TransactionInputModel.java @@ -0,0 +1,330 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Locale; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Locale; + +import invalidPackageName.JSON; + +/** + * TransactionInputModel + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class TransactionInputModel { + public static final String SERIALIZED_NAME_AMOUNT = "amount"; + @SerializedName(SERIALIZED_NAME_AMOUNT) + @javax.annotation.Nullable + private Integer amount; + + public static final String SERIALIZED_NAME_GLOBAL_INDEXES = "global_indexes"; + @SerializedName(SERIALIZED_NAME_GLOBAL_INDEXES) + @javax.annotation.Nullable + private List globalIndexes = new ArrayList<>(); + + public static final String SERIALIZED_NAME_HTLC_ORIGIN = "htlc_origin"; + @SerializedName(SERIALIZED_NAME_HTLC_ORIGIN) + @javax.annotation.Nullable + private String htlcOrigin; + + public static final String SERIALIZED_NAME_KIMAGE_OR_MS_ID = "kimage_or_ms_id"; + @SerializedName(SERIALIZED_NAME_KIMAGE_OR_MS_ID) + @javax.annotation.Nullable + private String kimageOrMsId; + + public static final String SERIALIZED_NAME_MULTISIG_COUNT = "multisig_count"; + @SerializedName(SERIALIZED_NAME_MULTISIG_COUNT) + @javax.annotation.Nullable + private Integer multisigCount; + + public TransactionInputModel() { + } + + public TransactionInputModel amount(@javax.annotation.Nullable Integer amount) { + this.amount = amount; + return this; + } + + /** + * Get amount + * @return amount + */ + @javax.annotation.Nullable + public Integer getAmount() { + return amount; + } + + public void setAmount(@javax.annotation.Nullable Integer amount) { + this.amount = amount; + } + + + public TransactionInputModel globalIndexes(@javax.annotation.Nullable List globalIndexes) { + this.globalIndexes = globalIndexes; + return this; + } + + public TransactionInputModel addGlobalIndexesItem(Integer globalIndexesItem) { + if (this.globalIndexes == null) { + this.globalIndexes = new ArrayList<>(); + } + this.globalIndexes.add(globalIndexesItem); + return this; + } + + /** + * Get globalIndexes + * @return globalIndexes + */ + @javax.annotation.Nullable + public List getGlobalIndexes() { + return globalIndexes; + } + + public void setGlobalIndexes(@javax.annotation.Nullable List globalIndexes) { + this.globalIndexes = globalIndexes; + } + + + public TransactionInputModel htlcOrigin(@javax.annotation.Nullable String htlcOrigin) { + this.htlcOrigin = htlcOrigin; + return this; + } + + /** + * Get htlcOrigin + * @return htlcOrigin + */ + @javax.annotation.Nullable + public String getHtlcOrigin() { + return htlcOrigin; + } + + public void setHtlcOrigin(@javax.annotation.Nullable String htlcOrigin) { + this.htlcOrigin = htlcOrigin; + } + + + public TransactionInputModel kimageOrMsId(@javax.annotation.Nullable String kimageOrMsId) { + this.kimageOrMsId = kimageOrMsId; + return this; + } + + /** + * Get kimageOrMsId + * @return kimageOrMsId + */ + @javax.annotation.Nullable + public String getKimageOrMsId() { + return kimageOrMsId; + } + + public void setKimageOrMsId(@javax.annotation.Nullable String kimageOrMsId) { + this.kimageOrMsId = kimageOrMsId; + } + + + public TransactionInputModel multisigCount(@javax.annotation.Nullable Integer multisigCount) { + this.multisigCount = multisigCount; + return this; + } + + /** + * Get multisigCount + * minimum: 0 + * maximum: 4294967295 + * @return multisigCount + */ + @javax.annotation.Nullable + public Integer getMultisigCount() { + return multisigCount; + } + + public void setMultisigCount(@javax.annotation.Nullable Integer multisigCount) { + this.multisigCount = multisigCount; + } + + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TransactionInputModel transactionInputModel = (TransactionInputModel) o; + return Objects.equals(this.amount, transactionInputModel.amount) && + Objects.equals(this.globalIndexes, transactionInputModel.globalIndexes) && + Objects.equals(this.htlcOrigin, transactionInputModel.htlcOrigin) && + Objects.equals(this.kimageOrMsId, transactionInputModel.kimageOrMsId) && + Objects.equals(this.multisigCount, transactionInputModel.multisigCount); + } + + @Override + public int hashCode() { + return Objects.hash(amount, globalIndexes, htlcOrigin, kimageOrMsId, multisigCount); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TransactionInputModel {\n"); + sb.append(" amount: ").append(toIndentedString(amount)).append("\n"); + sb.append(" globalIndexes: ").append(toIndentedString(globalIndexes)).append("\n"); + sb.append(" htlcOrigin: ").append(toIndentedString(htlcOrigin)).append("\n"); + sb.append(" kimageOrMsId: ").append(toIndentedString(kimageOrMsId)).append("\n"); + sb.append(" multisigCount: ").append(toIndentedString(multisigCount)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + + public static HashSet openapiFields; + public static HashSet openapiRequiredFields; + + static { + // a set of all properties/fields (JSON key names) + openapiFields = new HashSet(Arrays.asList("amount", "global_indexes", "htlc_origin", "kimage_or_ms_id", "multisig_count")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * Validates the JSON Element and throws an exception if issues found + * + * @param jsonElement JSON Element + * @throws IOException if the JSON Element is invalid with respect to TransactionInputModel + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!TransactionInputModel.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in TransactionInputModel is not found in the empty JSON string", TransactionInputModel.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!TransactionInputModel.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` in the JSON string is not defined in the `TransactionInputModel` properties. JSON: %s", entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + // ensure the optional json data is an array if present + if (jsonObj.get("global_indexes") != null && !jsonObj.get("global_indexes").isJsonNull() && !jsonObj.get("global_indexes").isJsonArray()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `global_indexes` to be an array in the JSON string but got `%s`", jsonObj.get("global_indexes").toString())); + } + if ((jsonObj.get("htlc_origin") != null && !jsonObj.get("htlc_origin").isJsonNull()) && !jsonObj.get("htlc_origin").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `htlc_origin` to be a primitive type in the JSON string but got `%s`", jsonObj.get("htlc_origin").toString())); + } + if ((jsonObj.get("kimage_or_ms_id") != null && !jsonObj.get("kimage_or_ms_id").isJsonNull()) && !jsonObj.get("kimage_or_ms_id").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `kimage_or_ms_id` to be a primitive type in the JSON string but got `%s`", jsonObj.get("kimage_or_ms_id").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!TransactionInputModel.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'TransactionInputModel' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter + = gson.getDelegateAdapter(this, TypeToken.get(TransactionInputModel.class)); + + return (TypeAdapter) new TypeAdapter() { + @Override + public void write(JsonWriter out, TransactionInputModel value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public TransactionInputModel read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + + }.nullSafe(); + } + } + + /** + * Create an instance of TransactionInputModel given an JSON string + * + * @param jsonString JSON string + * @return An instance of TransactionInputModel + * @throws IOException if the JSON string is invalid with respect to TransactionInputModel + */ + public static TransactionInputModel fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, TransactionInputModel.class); + } + + /** + * Convert an instance of TransactionInputModel to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} + diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/model/TransactionOutputModel.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/TransactionOutputModel.java new file mode 100644 index 00000000..7b73eae6 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/TransactionOutputModel.java @@ -0,0 +1,324 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Locale; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Locale; + +import invalidPackageName.JSON; + +/** + * TransactionOutputModel + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class TransactionOutputModel { + public static final String SERIALIZED_NAME_AMOUNT = "amount"; + @SerializedName(SERIALIZED_NAME_AMOUNT) + @javax.annotation.Nullable + private Integer amount; + + public static final String SERIALIZED_NAME_GLOBAL_INDEX = "global_index"; + @SerializedName(SERIALIZED_NAME_GLOBAL_INDEX) + @javax.annotation.Nullable + private Integer globalIndex; + + public static final String SERIALIZED_NAME_IS_SPENT = "is_spent"; + @SerializedName(SERIALIZED_NAME_IS_SPENT) + @javax.annotation.Nullable + private Boolean isSpent; + + public static final String SERIALIZED_NAME_MINIMUM_SIGS = "minimum_sigs"; + @SerializedName(SERIALIZED_NAME_MINIMUM_SIGS) + @javax.annotation.Nullable + private Integer minimumSigs; + + public static final String SERIALIZED_NAME_PUB_KEYS = "pub_keys"; + @SerializedName(SERIALIZED_NAME_PUB_KEYS) + @javax.annotation.Nullable + private List pubKeys = new ArrayList<>(); + + public TransactionOutputModel() { + } + + public TransactionOutputModel amount(@javax.annotation.Nullable Integer amount) { + this.amount = amount; + return this; + } + + /** + * Get amount + * @return amount + */ + @javax.annotation.Nullable + public Integer getAmount() { + return amount; + } + + public void setAmount(@javax.annotation.Nullable Integer amount) { + this.amount = amount; + } + + + public TransactionOutputModel globalIndex(@javax.annotation.Nullable Integer globalIndex) { + this.globalIndex = globalIndex; + return this; + } + + /** + * Get globalIndex + * @return globalIndex + */ + @javax.annotation.Nullable + public Integer getGlobalIndex() { + return globalIndex; + } + + public void setGlobalIndex(@javax.annotation.Nullable Integer globalIndex) { + this.globalIndex = globalIndex; + } + + + public TransactionOutputModel isSpent(@javax.annotation.Nullable Boolean isSpent) { + this.isSpent = isSpent; + return this; + } + + /** + * Get isSpent + * @return isSpent + */ + @javax.annotation.Nullable + public Boolean getIsSpent() { + return isSpent; + } + + public void setIsSpent(@javax.annotation.Nullable Boolean isSpent) { + this.isSpent = isSpent; + } + + + public TransactionOutputModel minimumSigs(@javax.annotation.Nullable Integer minimumSigs) { + this.minimumSigs = minimumSigs; + return this; + } + + /** + * Get minimumSigs + * minimum: 0 + * maximum: 4294967295 + * @return minimumSigs + */ + @javax.annotation.Nullable + public Integer getMinimumSigs() { + return minimumSigs; + } + + public void setMinimumSigs(@javax.annotation.Nullable Integer minimumSigs) { + this.minimumSigs = minimumSigs; + } + + + public TransactionOutputModel pubKeys(@javax.annotation.Nullable List pubKeys) { + this.pubKeys = pubKeys; + return this; + } + + public TransactionOutputModel addPubKeysItem(String pubKeysItem) { + if (this.pubKeys == null) { + this.pubKeys = new ArrayList<>(); + } + this.pubKeys.add(pubKeysItem); + return this; + } + + /** + * Get pubKeys + * @return pubKeys + */ + @javax.annotation.Nullable + public List getPubKeys() { + return pubKeys; + } + + public void setPubKeys(@javax.annotation.Nullable List pubKeys) { + this.pubKeys = pubKeys; + } + + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TransactionOutputModel transactionOutputModel = (TransactionOutputModel) o; + return Objects.equals(this.amount, transactionOutputModel.amount) && + Objects.equals(this.globalIndex, transactionOutputModel.globalIndex) && + Objects.equals(this.isSpent, transactionOutputModel.isSpent) && + Objects.equals(this.minimumSigs, transactionOutputModel.minimumSigs) && + Objects.equals(this.pubKeys, transactionOutputModel.pubKeys); + } + + @Override + public int hashCode() { + return Objects.hash(amount, globalIndex, isSpent, minimumSigs, pubKeys); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TransactionOutputModel {\n"); + sb.append(" amount: ").append(toIndentedString(amount)).append("\n"); + sb.append(" globalIndex: ").append(toIndentedString(globalIndex)).append("\n"); + sb.append(" isSpent: ").append(toIndentedString(isSpent)).append("\n"); + sb.append(" minimumSigs: ").append(toIndentedString(minimumSigs)).append("\n"); + sb.append(" pubKeys: ").append(toIndentedString(pubKeys)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + + public static HashSet openapiFields; + public static HashSet openapiRequiredFields; + + static { + // a set of all properties/fields (JSON key names) + openapiFields = new HashSet(Arrays.asList("amount", "global_index", "is_spent", "minimum_sigs", "pub_keys")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * Validates the JSON Element and throws an exception if issues found + * + * @param jsonElement JSON Element + * @throws IOException if the JSON Element is invalid with respect to TransactionOutputModel + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!TransactionOutputModel.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in TransactionOutputModel is not found in the empty JSON string", TransactionOutputModel.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!TransactionOutputModel.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` in the JSON string is not defined in the `TransactionOutputModel` properties. JSON: %s", entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + // ensure the optional json data is an array if present + if (jsonObj.get("pub_keys") != null && !jsonObj.get("pub_keys").isJsonNull() && !jsonObj.get("pub_keys").isJsonArray()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `pub_keys` to be an array in the JSON string but got `%s`", jsonObj.get("pub_keys").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!TransactionOutputModel.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'TransactionOutputModel' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter + = gson.getDelegateAdapter(this, TypeToken.get(TransactionOutputModel.class)); + + return (TypeAdapter) new TypeAdapter() { + @Override + public void write(JsonWriter out, TransactionOutputModel value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public TransactionOutputModel read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + + }.nullSafe(); + } + } + + /** + * Create an instance of TransactionOutputModel given an JSON string + * + * @param jsonString JSON string + * @return An instance of TransactionOutputModel + * @throws IOException if the JSON string is invalid with respect to TransactionOutputModel + */ + public static TransactionOutputModel fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, TransactionOutputModel.class); + } + + /** + * Convert an instance of TransactionOutputModel to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} + diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/model/TxGenerationContextModel.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/TxGenerationContextModel.java new file mode 100644 index 00000000..185243dd --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/TxGenerationContextModel.java @@ -0,0 +1,963 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Locale; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Locale; + +import invalidPackageName.JSON; + +/** + * TxGenerationContextModel + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class TxGenerationContextModel { + public static final String SERIALIZED_NAME_ASSET_IDS = "asset_ids"; + @SerializedName(SERIALIZED_NAME_ASSET_IDS) + @javax.annotation.Nullable + private List assetIds = new ArrayList<>(); + + public static final String SERIALIZED_NAME_BLINDED_ASSET_IDS = "blinded_asset_ids"; + @SerializedName(SERIALIZED_NAME_BLINDED_ASSET_IDS) + @javax.annotation.Nullable + private List blindedAssetIds = new ArrayList<>(); + + public static final String SERIALIZED_NAME_AMOUNT_COMMITMENTS = "amount_commitments"; + @SerializedName(SERIALIZED_NAME_AMOUNT_COMMITMENTS) + @javax.annotation.Nullable + private List amountCommitments = new ArrayList<>(); + + public static final String SERIALIZED_NAME_ASSET_ID_BLINDING_MASKS = "asset_id_blinding_masks"; + @SerializedName(SERIALIZED_NAME_ASSET_ID_BLINDING_MASKS) + @javax.annotation.Nullable + private List assetIdBlindingMasks = new ArrayList<>(); + + public static final String SERIALIZED_NAME_AMOUNTS = "amounts"; + @SerializedName(SERIALIZED_NAME_AMOUNTS) + @javax.annotation.Nullable + private List amounts = new ArrayList<>(); + + public static final String SERIALIZED_NAME_AMOUNT_BLINDING_MASKS = "amount_blinding_masks"; + @SerializedName(SERIALIZED_NAME_AMOUNT_BLINDING_MASKS) + @javax.annotation.Nullable + private List amountBlindingMasks = new ArrayList<>(); + + public static final String SERIALIZED_NAME_PSEUDO_OUTS_BLINDED_ASSET_IDS = "pseudo_outs_blinded_asset_ids"; + @SerializedName(SERIALIZED_NAME_PSEUDO_OUTS_BLINDED_ASSET_IDS) + @javax.annotation.Nullable + private List pseudoOutsBlindedAssetIds = new ArrayList<>(); + + public static final String SERIALIZED_NAME_PSEUDO_OUTS_PLUS_REAL_OUT_BLINDING_MASKS = "pseudo_outs_plus_real_out_blinding_masks"; + @SerializedName(SERIALIZED_NAME_PSEUDO_OUTS_PLUS_REAL_OUT_BLINDING_MASKS) + @javax.annotation.Nullable + private List pseudoOutsPlusRealOutBlindingMasks = new ArrayList<>(); + + public static final String SERIALIZED_NAME_REAL_ZC_INS_ASSET_IDS = "real_zc_ins_asset_ids"; + @SerializedName(SERIALIZED_NAME_REAL_ZC_INS_ASSET_IDS) + @javax.annotation.Nullable + private List realZcInsAssetIds = new ArrayList<>(); + + public static final String SERIALIZED_NAME_ZC_INPUT_AMOUNTS = "zc_input_amounts"; + @SerializedName(SERIALIZED_NAME_ZC_INPUT_AMOUNTS) + @javax.annotation.Nullable + private List zcInputAmounts = new ArrayList<>(); + + public static final String SERIALIZED_NAME_PSEUDO_OUT_AMOUNT_COMMITMENTS_SUM = "pseudo_out_amount_commitments_sum"; + @SerializedName(SERIALIZED_NAME_PSEUDO_OUT_AMOUNT_COMMITMENTS_SUM) + @javax.annotation.Nullable + private String pseudoOutAmountCommitmentsSum; + + public static final String SERIALIZED_NAME_PSEUDO_OUT_AMOUNT_BLINDING_MASKS_SUM = "pseudo_out_amount_blinding_masks_sum"; + @SerializedName(SERIALIZED_NAME_PSEUDO_OUT_AMOUNT_BLINDING_MASKS_SUM) + @javax.annotation.Nullable + private String pseudoOutAmountBlindingMasksSum; + + public static final String SERIALIZED_NAME_REAL_IN_ASSET_ID_BLINDING_MASK_X_AMOUNT_SUM = "real_in_asset_id_blinding_mask_x_amount_sum"; + @SerializedName(SERIALIZED_NAME_REAL_IN_ASSET_ID_BLINDING_MASK_X_AMOUNT_SUM) + @javax.annotation.Nullable + private String realInAssetIdBlindingMaskXAmountSum; + + public static final String SERIALIZED_NAME_AMOUNT_COMMITMENTS_SUM = "amount_commitments_sum"; + @SerializedName(SERIALIZED_NAME_AMOUNT_COMMITMENTS_SUM) + @javax.annotation.Nullable + private String amountCommitmentsSum; + + public static final String SERIALIZED_NAME_AMOUNT_BLINDING_MASKS_SUM = "amount_blinding_masks_sum"; + @SerializedName(SERIALIZED_NAME_AMOUNT_BLINDING_MASKS_SUM) + @javax.annotation.Nullable + private String amountBlindingMasksSum; + + public static final String SERIALIZED_NAME_ASSET_ID_BLINDING_MASK_X_AMOUNT_SUM = "asset_id_blinding_mask_x_amount_sum"; + @SerializedName(SERIALIZED_NAME_ASSET_ID_BLINDING_MASK_X_AMOUNT_SUM) + @javax.annotation.Nullable + private String assetIdBlindingMaskXAmountSum; + + public static final String SERIALIZED_NAME_AO_ASSET_ID = "ao_asset_id"; + @SerializedName(SERIALIZED_NAME_AO_ASSET_ID) + @javax.annotation.Nullable + private String aoAssetId; + + public static final String SERIALIZED_NAME_AO_ASSET_ID_PT = "ao_asset_id_pt"; + @SerializedName(SERIALIZED_NAME_AO_ASSET_ID_PT) + @javax.annotation.Nullable + private String aoAssetIdPt; + + public static final String SERIALIZED_NAME_AO_AMOUNT_COMMITMENT = "ao_amount_commitment"; + @SerializedName(SERIALIZED_NAME_AO_AMOUNT_COMMITMENT) + @javax.annotation.Nullable + private String aoAmountCommitment; + + public static final String SERIALIZED_NAME_AO_AMOUNT_BLINDING_MASK = "ao_amount_blinding_mask"; + @SerializedName(SERIALIZED_NAME_AO_AMOUNT_BLINDING_MASK) + @javax.annotation.Nullable + private String aoAmountBlindingMask; + + public static final String SERIALIZED_NAME_AO_COMMITMENT_IN_OUTPUTS = "ao_commitment_in_outputs"; + @SerializedName(SERIALIZED_NAME_AO_COMMITMENT_IN_OUTPUTS) + @javax.annotation.Nullable + private Boolean aoCommitmentInOutputs; + + public static final String SERIALIZED_NAME_TX_KEY_PUB = "tx_key_pub"; + @SerializedName(SERIALIZED_NAME_TX_KEY_PUB) + @javax.annotation.Nullable + private String txKeyPub; + + public static final String SERIALIZED_NAME_TX_KEY_SEC = "tx_key_sec"; + @SerializedName(SERIALIZED_NAME_TX_KEY_SEC) + @javax.annotation.Nullable + private String txKeySec; + + public static final String SERIALIZED_NAME_TX_PUB_KEY_P = "tx_pub_key_p"; + @SerializedName(SERIALIZED_NAME_TX_PUB_KEY_P) + @javax.annotation.Nullable + private String txPubKeyP; + + public TxGenerationContextModel() { + } + + public TxGenerationContextModel assetIds(@javax.annotation.Nullable List assetIds) { + this.assetIds = assetIds; + return this; + } + + public TxGenerationContextModel addAssetIdsItem(String assetIdsItem) { + if (this.assetIds == null) { + this.assetIds = new ArrayList<>(); + } + this.assetIds.add(assetIdsItem); + return this; + } + + /** + * Get assetIds + * @return assetIds + */ + @javax.annotation.Nullable + public List getAssetIds() { + return assetIds; + } + + public void setAssetIds(@javax.annotation.Nullable List assetIds) { + this.assetIds = assetIds; + } + + + public TxGenerationContextModel blindedAssetIds(@javax.annotation.Nullable List blindedAssetIds) { + this.blindedAssetIds = blindedAssetIds; + return this; + } + + public TxGenerationContextModel addBlindedAssetIdsItem(String blindedAssetIdsItem) { + if (this.blindedAssetIds == null) { + this.blindedAssetIds = new ArrayList<>(); + } + this.blindedAssetIds.add(blindedAssetIdsItem); + return this; + } + + /** + * Get blindedAssetIds + * @return blindedAssetIds + */ + @javax.annotation.Nullable + public List getBlindedAssetIds() { + return blindedAssetIds; + } + + public void setBlindedAssetIds(@javax.annotation.Nullable List blindedAssetIds) { + this.blindedAssetIds = blindedAssetIds; + } + + + public TxGenerationContextModel amountCommitments(@javax.annotation.Nullable List amountCommitments) { + this.amountCommitments = amountCommitments; + return this; + } + + public TxGenerationContextModel addAmountCommitmentsItem(String amountCommitmentsItem) { + if (this.amountCommitments == null) { + this.amountCommitments = new ArrayList<>(); + } + this.amountCommitments.add(amountCommitmentsItem); + return this; + } + + /** + * Get amountCommitments + * @return amountCommitments + */ + @javax.annotation.Nullable + public List getAmountCommitments() { + return amountCommitments; + } + + public void setAmountCommitments(@javax.annotation.Nullable List amountCommitments) { + this.amountCommitments = amountCommitments; + } + + + public TxGenerationContextModel assetIdBlindingMasks(@javax.annotation.Nullable List assetIdBlindingMasks) { + this.assetIdBlindingMasks = assetIdBlindingMasks; + return this; + } + + public TxGenerationContextModel addAssetIdBlindingMasksItem(String assetIdBlindingMasksItem) { + if (this.assetIdBlindingMasks == null) { + this.assetIdBlindingMasks = new ArrayList<>(); + } + this.assetIdBlindingMasks.add(assetIdBlindingMasksItem); + return this; + } + + /** + * Get assetIdBlindingMasks + * @return assetIdBlindingMasks + */ + @javax.annotation.Nullable + public List getAssetIdBlindingMasks() { + return assetIdBlindingMasks; + } + + public void setAssetIdBlindingMasks(@javax.annotation.Nullable List assetIdBlindingMasks) { + this.assetIdBlindingMasks = assetIdBlindingMasks; + } + + + public TxGenerationContextModel amounts(@javax.annotation.Nullable List amounts) { + this.amounts = amounts; + return this; + } + + public TxGenerationContextModel addAmountsItem(String amountsItem) { + if (this.amounts == null) { + this.amounts = new ArrayList<>(); + } + this.amounts.add(amountsItem); + return this; + } + + /** + * Get amounts + * @return amounts + */ + @javax.annotation.Nullable + public List getAmounts() { + return amounts; + } + + public void setAmounts(@javax.annotation.Nullable List amounts) { + this.amounts = amounts; + } + + + public TxGenerationContextModel amountBlindingMasks(@javax.annotation.Nullable List amountBlindingMasks) { + this.amountBlindingMasks = amountBlindingMasks; + return this; + } + + public TxGenerationContextModel addAmountBlindingMasksItem(String amountBlindingMasksItem) { + if (this.amountBlindingMasks == null) { + this.amountBlindingMasks = new ArrayList<>(); + } + this.amountBlindingMasks.add(amountBlindingMasksItem); + return this; + } + + /** + * Get amountBlindingMasks + * @return amountBlindingMasks + */ + @javax.annotation.Nullable + public List getAmountBlindingMasks() { + return amountBlindingMasks; + } + + public void setAmountBlindingMasks(@javax.annotation.Nullable List amountBlindingMasks) { + this.amountBlindingMasks = amountBlindingMasks; + } + + + public TxGenerationContextModel pseudoOutsBlindedAssetIds(@javax.annotation.Nullable List pseudoOutsBlindedAssetIds) { + this.pseudoOutsBlindedAssetIds = pseudoOutsBlindedAssetIds; + return this; + } + + public TxGenerationContextModel addPseudoOutsBlindedAssetIdsItem(String pseudoOutsBlindedAssetIdsItem) { + if (this.pseudoOutsBlindedAssetIds == null) { + this.pseudoOutsBlindedAssetIds = new ArrayList<>(); + } + this.pseudoOutsBlindedAssetIds.add(pseudoOutsBlindedAssetIdsItem); + return this; + } + + /** + * Get pseudoOutsBlindedAssetIds + * @return pseudoOutsBlindedAssetIds + */ + @javax.annotation.Nullable + public List getPseudoOutsBlindedAssetIds() { + return pseudoOutsBlindedAssetIds; + } + + public void setPseudoOutsBlindedAssetIds(@javax.annotation.Nullable List pseudoOutsBlindedAssetIds) { + this.pseudoOutsBlindedAssetIds = pseudoOutsBlindedAssetIds; + } + + + public TxGenerationContextModel pseudoOutsPlusRealOutBlindingMasks(@javax.annotation.Nullable List pseudoOutsPlusRealOutBlindingMasks) { + this.pseudoOutsPlusRealOutBlindingMasks = pseudoOutsPlusRealOutBlindingMasks; + return this; + } + + public TxGenerationContextModel addPseudoOutsPlusRealOutBlindingMasksItem(String pseudoOutsPlusRealOutBlindingMasksItem) { + if (this.pseudoOutsPlusRealOutBlindingMasks == null) { + this.pseudoOutsPlusRealOutBlindingMasks = new ArrayList<>(); + } + this.pseudoOutsPlusRealOutBlindingMasks.add(pseudoOutsPlusRealOutBlindingMasksItem); + return this; + } + + /** + * Get pseudoOutsPlusRealOutBlindingMasks + * @return pseudoOutsPlusRealOutBlindingMasks + */ + @javax.annotation.Nullable + public List getPseudoOutsPlusRealOutBlindingMasks() { + return pseudoOutsPlusRealOutBlindingMasks; + } + + public void setPseudoOutsPlusRealOutBlindingMasks(@javax.annotation.Nullable List pseudoOutsPlusRealOutBlindingMasks) { + this.pseudoOutsPlusRealOutBlindingMasks = pseudoOutsPlusRealOutBlindingMasks; + } + + + public TxGenerationContextModel realZcInsAssetIds(@javax.annotation.Nullable List realZcInsAssetIds) { + this.realZcInsAssetIds = realZcInsAssetIds; + return this; + } + + public TxGenerationContextModel addRealZcInsAssetIdsItem(String realZcInsAssetIdsItem) { + if (this.realZcInsAssetIds == null) { + this.realZcInsAssetIds = new ArrayList<>(); + } + this.realZcInsAssetIds.add(realZcInsAssetIdsItem); + return this; + } + + /** + * Get realZcInsAssetIds + * @return realZcInsAssetIds + */ + @javax.annotation.Nullable + public List getRealZcInsAssetIds() { + return realZcInsAssetIds; + } + + public void setRealZcInsAssetIds(@javax.annotation.Nullable List realZcInsAssetIds) { + this.realZcInsAssetIds = realZcInsAssetIds; + } + + + public TxGenerationContextModel zcInputAmounts(@javax.annotation.Nullable List zcInputAmounts) { + this.zcInputAmounts = zcInputAmounts; + return this; + } + + public TxGenerationContextModel addZcInputAmountsItem(Integer zcInputAmountsItem) { + if (this.zcInputAmounts == null) { + this.zcInputAmounts = new ArrayList<>(); + } + this.zcInputAmounts.add(zcInputAmountsItem); + return this; + } + + /** + * Get zcInputAmounts + * @return zcInputAmounts + */ + @javax.annotation.Nullable + public List getZcInputAmounts() { + return zcInputAmounts; + } + + public void setZcInputAmounts(@javax.annotation.Nullable List zcInputAmounts) { + this.zcInputAmounts = zcInputAmounts; + } + + + public TxGenerationContextModel pseudoOutAmountCommitmentsSum(@javax.annotation.Nullable String pseudoOutAmountCommitmentsSum) { + this.pseudoOutAmountCommitmentsSum = pseudoOutAmountCommitmentsSum; + return this; + } + + /** + * Get pseudoOutAmountCommitmentsSum + * @return pseudoOutAmountCommitmentsSum + */ + @javax.annotation.Nullable + public String getPseudoOutAmountCommitmentsSum() { + return pseudoOutAmountCommitmentsSum; + } + + public void setPseudoOutAmountCommitmentsSum(@javax.annotation.Nullable String pseudoOutAmountCommitmentsSum) { + this.pseudoOutAmountCommitmentsSum = pseudoOutAmountCommitmentsSum; + } + + + public TxGenerationContextModel pseudoOutAmountBlindingMasksSum(@javax.annotation.Nullable String pseudoOutAmountBlindingMasksSum) { + this.pseudoOutAmountBlindingMasksSum = pseudoOutAmountBlindingMasksSum; + return this; + } + + /** + * Get pseudoOutAmountBlindingMasksSum + * @return pseudoOutAmountBlindingMasksSum + */ + @javax.annotation.Nullable + public String getPseudoOutAmountBlindingMasksSum() { + return pseudoOutAmountBlindingMasksSum; + } + + public void setPseudoOutAmountBlindingMasksSum(@javax.annotation.Nullable String pseudoOutAmountBlindingMasksSum) { + this.pseudoOutAmountBlindingMasksSum = pseudoOutAmountBlindingMasksSum; + } + + + public TxGenerationContextModel realInAssetIdBlindingMaskXAmountSum(@javax.annotation.Nullable String realInAssetIdBlindingMaskXAmountSum) { + this.realInAssetIdBlindingMaskXAmountSum = realInAssetIdBlindingMaskXAmountSum; + return this; + } + + /** + * Get realInAssetIdBlindingMaskXAmountSum + * @return realInAssetIdBlindingMaskXAmountSum + */ + @javax.annotation.Nullable + public String getRealInAssetIdBlindingMaskXAmountSum() { + return realInAssetIdBlindingMaskXAmountSum; + } + + public void setRealInAssetIdBlindingMaskXAmountSum(@javax.annotation.Nullable String realInAssetIdBlindingMaskXAmountSum) { + this.realInAssetIdBlindingMaskXAmountSum = realInAssetIdBlindingMaskXAmountSum; + } + + + public TxGenerationContextModel amountCommitmentsSum(@javax.annotation.Nullable String amountCommitmentsSum) { + this.amountCommitmentsSum = amountCommitmentsSum; + return this; + } + + /** + * Get amountCommitmentsSum + * @return amountCommitmentsSum + */ + @javax.annotation.Nullable + public String getAmountCommitmentsSum() { + return amountCommitmentsSum; + } + + public void setAmountCommitmentsSum(@javax.annotation.Nullable String amountCommitmentsSum) { + this.amountCommitmentsSum = amountCommitmentsSum; + } + + + public TxGenerationContextModel amountBlindingMasksSum(@javax.annotation.Nullable String amountBlindingMasksSum) { + this.amountBlindingMasksSum = amountBlindingMasksSum; + return this; + } + + /** + * Get amountBlindingMasksSum + * @return amountBlindingMasksSum + */ + @javax.annotation.Nullable + public String getAmountBlindingMasksSum() { + return amountBlindingMasksSum; + } + + public void setAmountBlindingMasksSum(@javax.annotation.Nullable String amountBlindingMasksSum) { + this.amountBlindingMasksSum = amountBlindingMasksSum; + } + + + public TxGenerationContextModel assetIdBlindingMaskXAmountSum(@javax.annotation.Nullable String assetIdBlindingMaskXAmountSum) { + this.assetIdBlindingMaskXAmountSum = assetIdBlindingMaskXAmountSum; + return this; + } + + /** + * Get assetIdBlindingMaskXAmountSum + * @return assetIdBlindingMaskXAmountSum + */ + @javax.annotation.Nullable + public String getAssetIdBlindingMaskXAmountSum() { + return assetIdBlindingMaskXAmountSum; + } + + public void setAssetIdBlindingMaskXAmountSum(@javax.annotation.Nullable String assetIdBlindingMaskXAmountSum) { + this.assetIdBlindingMaskXAmountSum = assetIdBlindingMaskXAmountSum; + } + + + public TxGenerationContextModel aoAssetId(@javax.annotation.Nullable String aoAssetId) { + this.aoAssetId = aoAssetId; + return this; + } + + /** + * Get aoAssetId + * @return aoAssetId + */ + @javax.annotation.Nullable + public String getAoAssetId() { + return aoAssetId; + } + + public void setAoAssetId(@javax.annotation.Nullable String aoAssetId) { + this.aoAssetId = aoAssetId; + } + + + public TxGenerationContextModel aoAssetIdPt(@javax.annotation.Nullable String aoAssetIdPt) { + this.aoAssetIdPt = aoAssetIdPt; + return this; + } + + /** + * Get aoAssetIdPt + * @return aoAssetIdPt + */ + @javax.annotation.Nullable + public String getAoAssetIdPt() { + return aoAssetIdPt; + } + + public void setAoAssetIdPt(@javax.annotation.Nullable String aoAssetIdPt) { + this.aoAssetIdPt = aoAssetIdPt; + } + + + public TxGenerationContextModel aoAmountCommitment(@javax.annotation.Nullable String aoAmountCommitment) { + this.aoAmountCommitment = aoAmountCommitment; + return this; + } + + /** + * Get aoAmountCommitment + * @return aoAmountCommitment + */ + @javax.annotation.Nullable + public String getAoAmountCommitment() { + return aoAmountCommitment; + } + + public void setAoAmountCommitment(@javax.annotation.Nullable String aoAmountCommitment) { + this.aoAmountCommitment = aoAmountCommitment; + } + + + public TxGenerationContextModel aoAmountBlindingMask(@javax.annotation.Nullable String aoAmountBlindingMask) { + this.aoAmountBlindingMask = aoAmountBlindingMask; + return this; + } + + /** + * Get aoAmountBlindingMask + * @return aoAmountBlindingMask + */ + @javax.annotation.Nullable + public String getAoAmountBlindingMask() { + return aoAmountBlindingMask; + } + + public void setAoAmountBlindingMask(@javax.annotation.Nullable String aoAmountBlindingMask) { + this.aoAmountBlindingMask = aoAmountBlindingMask; + } + + + public TxGenerationContextModel aoCommitmentInOutputs(@javax.annotation.Nullable Boolean aoCommitmentInOutputs) { + this.aoCommitmentInOutputs = aoCommitmentInOutputs; + return this; + } + + /** + * Get aoCommitmentInOutputs + * @return aoCommitmentInOutputs + */ + @javax.annotation.Nullable + public Boolean getAoCommitmentInOutputs() { + return aoCommitmentInOutputs; + } + + public void setAoCommitmentInOutputs(@javax.annotation.Nullable Boolean aoCommitmentInOutputs) { + this.aoCommitmentInOutputs = aoCommitmentInOutputs; + } + + + public TxGenerationContextModel txKeyPub(@javax.annotation.Nullable String txKeyPub) { + this.txKeyPub = txKeyPub; + return this; + } + + /** + * Get txKeyPub + * @return txKeyPub + */ + @javax.annotation.Nullable + public String getTxKeyPub() { + return txKeyPub; + } + + public void setTxKeyPub(@javax.annotation.Nullable String txKeyPub) { + this.txKeyPub = txKeyPub; + } + + + public TxGenerationContextModel txKeySec(@javax.annotation.Nullable String txKeySec) { + this.txKeySec = txKeySec; + return this; + } + + /** + * Get txKeySec + * @return txKeySec + */ + @javax.annotation.Nullable + public String getTxKeySec() { + return txKeySec; + } + + public void setTxKeySec(@javax.annotation.Nullable String txKeySec) { + this.txKeySec = txKeySec; + } + + + public TxGenerationContextModel txPubKeyP(@javax.annotation.Nullable String txPubKeyP) { + this.txPubKeyP = txPubKeyP; + return this; + } + + /** + * Get txPubKeyP + * @return txPubKeyP + */ + @javax.annotation.Nullable + public String getTxPubKeyP() { + return txPubKeyP; + } + + public void setTxPubKeyP(@javax.annotation.Nullable String txPubKeyP) { + this.txPubKeyP = txPubKeyP; + } + + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TxGenerationContextModel txGenerationContextModel = (TxGenerationContextModel) o; + return Objects.equals(this.assetIds, txGenerationContextModel.assetIds) && + Objects.equals(this.blindedAssetIds, txGenerationContextModel.blindedAssetIds) && + Objects.equals(this.amountCommitments, txGenerationContextModel.amountCommitments) && + Objects.equals(this.assetIdBlindingMasks, txGenerationContextModel.assetIdBlindingMasks) && + Objects.equals(this.amounts, txGenerationContextModel.amounts) && + Objects.equals(this.amountBlindingMasks, txGenerationContextModel.amountBlindingMasks) && + Objects.equals(this.pseudoOutsBlindedAssetIds, txGenerationContextModel.pseudoOutsBlindedAssetIds) && + Objects.equals(this.pseudoOutsPlusRealOutBlindingMasks, txGenerationContextModel.pseudoOutsPlusRealOutBlindingMasks) && + Objects.equals(this.realZcInsAssetIds, txGenerationContextModel.realZcInsAssetIds) && + Objects.equals(this.zcInputAmounts, txGenerationContextModel.zcInputAmounts) && + Objects.equals(this.pseudoOutAmountCommitmentsSum, txGenerationContextModel.pseudoOutAmountCommitmentsSum) && + Objects.equals(this.pseudoOutAmountBlindingMasksSum, txGenerationContextModel.pseudoOutAmountBlindingMasksSum) && + Objects.equals(this.realInAssetIdBlindingMaskXAmountSum, txGenerationContextModel.realInAssetIdBlindingMaskXAmountSum) && + Objects.equals(this.amountCommitmentsSum, txGenerationContextModel.amountCommitmentsSum) && + Objects.equals(this.amountBlindingMasksSum, txGenerationContextModel.amountBlindingMasksSum) && + Objects.equals(this.assetIdBlindingMaskXAmountSum, txGenerationContextModel.assetIdBlindingMaskXAmountSum) && + Objects.equals(this.aoAssetId, txGenerationContextModel.aoAssetId) && + Objects.equals(this.aoAssetIdPt, txGenerationContextModel.aoAssetIdPt) && + Objects.equals(this.aoAmountCommitment, txGenerationContextModel.aoAmountCommitment) && + Objects.equals(this.aoAmountBlindingMask, txGenerationContextModel.aoAmountBlindingMask) && + Objects.equals(this.aoCommitmentInOutputs, txGenerationContextModel.aoCommitmentInOutputs) && + Objects.equals(this.txKeyPub, txGenerationContextModel.txKeyPub) && + Objects.equals(this.txKeySec, txGenerationContextModel.txKeySec) && + Objects.equals(this.txPubKeyP, txGenerationContextModel.txPubKeyP); + } + + @Override + public int hashCode() { + return Objects.hash(assetIds, blindedAssetIds, amountCommitments, assetIdBlindingMasks, amounts, amountBlindingMasks, pseudoOutsBlindedAssetIds, pseudoOutsPlusRealOutBlindingMasks, realZcInsAssetIds, zcInputAmounts, pseudoOutAmountCommitmentsSum, pseudoOutAmountBlindingMasksSum, realInAssetIdBlindingMaskXAmountSum, amountCommitmentsSum, amountBlindingMasksSum, assetIdBlindingMaskXAmountSum, aoAssetId, aoAssetIdPt, aoAmountCommitment, aoAmountBlindingMask, aoCommitmentInOutputs, txKeyPub, txKeySec, txPubKeyP); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TxGenerationContextModel {\n"); + sb.append(" assetIds: ").append(toIndentedString(assetIds)).append("\n"); + sb.append(" blindedAssetIds: ").append(toIndentedString(blindedAssetIds)).append("\n"); + sb.append(" amountCommitments: ").append(toIndentedString(amountCommitments)).append("\n"); + sb.append(" assetIdBlindingMasks: ").append(toIndentedString(assetIdBlindingMasks)).append("\n"); + sb.append(" amounts: ").append(toIndentedString(amounts)).append("\n"); + sb.append(" amountBlindingMasks: ").append(toIndentedString(amountBlindingMasks)).append("\n"); + sb.append(" pseudoOutsBlindedAssetIds: ").append(toIndentedString(pseudoOutsBlindedAssetIds)).append("\n"); + sb.append(" pseudoOutsPlusRealOutBlindingMasks: ").append(toIndentedString(pseudoOutsPlusRealOutBlindingMasks)).append("\n"); + sb.append(" realZcInsAssetIds: ").append(toIndentedString(realZcInsAssetIds)).append("\n"); + sb.append(" zcInputAmounts: ").append(toIndentedString(zcInputAmounts)).append("\n"); + sb.append(" pseudoOutAmountCommitmentsSum: ").append(toIndentedString(pseudoOutAmountCommitmentsSum)).append("\n"); + sb.append(" pseudoOutAmountBlindingMasksSum: ").append(toIndentedString(pseudoOutAmountBlindingMasksSum)).append("\n"); + sb.append(" realInAssetIdBlindingMaskXAmountSum: ").append(toIndentedString(realInAssetIdBlindingMaskXAmountSum)).append("\n"); + sb.append(" amountCommitmentsSum: ").append(toIndentedString(amountCommitmentsSum)).append("\n"); + sb.append(" amountBlindingMasksSum: ").append(toIndentedString(amountBlindingMasksSum)).append("\n"); + sb.append(" assetIdBlindingMaskXAmountSum: ").append(toIndentedString(assetIdBlindingMaskXAmountSum)).append("\n"); + sb.append(" aoAssetId: ").append(toIndentedString(aoAssetId)).append("\n"); + sb.append(" aoAssetIdPt: ").append(toIndentedString(aoAssetIdPt)).append("\n"); + sb.append(" aoAmountCommitment: ").append(toIndentedString(aoAmountCommitment)).append("\n"); + sb.append(" aoAmountBlindingMask: ").append(toIndentedString(aoAmountBlindingMask)).append("\n"); + sb.append(" aoCommitmentInOutputs: ").append(toIndentedString(aoCommitmentInOutputs)).append("\n"); + sb.append(" txKeyPub: ").append(toIndentedString(txKeyPub)).append("\n"); + sb.append(" txKeySec: ").append(toIndentedString(txKeySec)).append("\n"); + sb.append(" txPubKeyP: ").append(toIndentedString(txPubKeyP)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + + public static HashSet openapiFields; + public static HashSet openapiRequiredFields; + + static { + // a set of all properties/fields (JSON key names) + openapiFields = new HashSet(Arrays.asList("asset_ids", "blinded_asset_ids", "amount_commitments", "asset_id_blinding_masks", "amounts", "amount_blinding_masks", "pseudo_outs_blinded_asset_ids", "pseudo_outs_plus_real_out_blinding_masks", "real_zc_ins_asset_ids", "zc_input_amounts", "pseudo_out_amount_commitments_sum", "pseudo_out_amount_blinding_masks_sum", "real_in_asset_id_blinding_mask_x_amount_sum", "amount_commitments_sum", "amount_blinding_masks_sum", "asset_id_blinding_mask_x_amount_sum", "ao_asset_id", "ao_asset_id_pt", "ao_amount_commitment", "ao_amount_blinding_mask", "ao_commitment_in_outputs", "tx_key_pub", "tx_key_sec", "tx_pub_key_p")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * Validates the JSON Element and throws an exception if issues found + * + * @param jsonElement JSON Element + * @throws IOException if the JSON Element is invalid with respect to TxGenerationContextModel + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!TxGenerationContextModel.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in TxGenerationContextModel is not found in the empty JSON string", TxGenerationContextModel.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!TxGenerationContextModel.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` in the JSON string is not defined in the `TxGenerationContextModel` properties. JSON: %s", entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + // ensure the optional json data is an array if present + if (jsonObj.get("asset_ids") != null && !jsonObj.get("asset_ids").isJsonNull() && !jsonObj.get("asset_ids").isJsonArray()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `asset_ids` to be an array in the JSON string but got `%s`", jsonObj.get("asset_ids").toString())); + } + // ensure the optional json data is an array if present + if (jsonObj.get("blinded_asset_ids") != null && !jsonObj.get("blinded_asset_ids").isJsonNull() && !jsonObj.get("blinded_asset_ids").isJsonArray()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `blinded_asset_ids` to be an array in the JSON string but got `%s`", jsonObj.get("blinded_asset_ids").toString())); + } + // ensure the optional json data is an array if present + if (jsonObj.get("amount_commitments") != null && !jsonObj.get("amount_commitments").isJsonNull() && !jsonObj.get("amount_commitments").isJsonArray()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `amount_commitments` to be an array in the JSON string but got `%s`", jsonObj.get("amount_commitments").toString())); + } + // ensure the optional json data is an array if present + if (jsonObj.get("asset_id_blinding_masks") != null && !jsonObj.get("asset_id_blinding_masks").isJsonNull() && !jsonObj.get("asset_id_blinding_masks").isJsonArray()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `asset_id_blinding_masks` to be an array in the JSON string but got `%s`", jsonObj.get("asset_id_blinding_masks").toString())); + } + // ensure the optional json data is an array if present + if (jsonObj.get("amounts") != null && !jsonObj.get("amounts").isJsonNull() && !jsonObj.get("amounts").isJsonArray()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `amounts` to be an array in the JSON string but got `%s`", jsonObj.get("amounts").toString())); + } + // ensure the optional json data is an array if present + if (jsonObj.get("amount_blinding_masks") != null && !jsonObj.get("amount_blinding_masks").isJsonNull() && !jsonObj.get("amount_blinding_masks").isJsonArray()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `amount_blinding_masks` to be an array in the JSON string but got `%s`", jsonObj.get("amount_blinding_masks").toString())); + } + // ensure the optional json data is an array if present + if (jsonObj.get("pseudo_outs_blinded_asset_ids") != null && !jsonObj.get("pseudo_outs_blinded_asset_ids").isJsonNull() && !jsonObj.get("pseudo_outs_blinded_asset_ids").isJsonArray()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `pseudo_outs_blinded_asset_ids` to be an array in the JSON string but got `%s`", jsonObj.get("pseudo_outs_blinded_asset_ids").toString())); + } + // ensure the optional json data is an array if present + if (jsonObj.get("pseudo_outs_plus_real_out_blinding_masks") != null && !jsonObj.get("pseudo_outs_plus_real_out_blinding_masks").isJsonNull() && !jsonObj.get("pseudo_outs_plus_real_out_blinding_masks").isJsonArray()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `pseudo_outs_plus_real_out_blinding_masks` to be an array in the JSON string but got `%s`", jsonObj.get("pseudo_outs_plus_real_out_blinding_masks").toString())); + } + // ensure the optional json data is an array if present + if (jsonObj.get("real_zc_ins_asset_ids") != null && !jsonObj.get("real_zc_ins_asset_ids").isJsonNull() && !jsonObj.get("real_zc_ins_asset_ids").isJsonArray()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `real_zc_ins_asset_ids` to be an array in the JSON string but got `%s`", jsonObj.get("real_zc_ins_asset_ids").toString())); + } + // ensure the optional json data is an array if present + if (jsonObj.get("zc_input_amounts") != null && !jsonObj.get("zc_input_amounts").isJsonNull() && !jsonObj.get("zc_input_amounts").isJsonArray()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `zc_input_amounts` to be an array in the JSON string but got `%s`", jsonObj.get("zc_input_amounts").toString())); + } + if ((jsonObj.get("pseudo_out_amount_commitments_sum") != null && !jsonObj.get("pseudo_out_amount_commitments_sum").isJsonNull()) && !jsonObj.get("pseudo_out_amount_commitments_sum").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `pseudo_out_amount_commitments_sum` to be a primitive type in the JSON string but got `%s`", jsonObj.get("pseudo_out_amount_commitments_sum").toString())); + } + if ((jsonObj.get("pseudo_out_amount_blinding_masks_sum") != null && !jsonObj.get("pseudo_out_amount_blinding_masks_sum").isJsonNull()) && !jsonObj.get("pseudo_out_amount_blinding_masks_sum").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `pseudo_out_amount_blinding_masks_sum` to be a primitive type in the JSON string but got `%s`", jsonObj.get("pseudo_out_amount_blinding_masks_sum").toString())); + } + if ((jsonObj.get("real_in_asset_id_blinding_mask_x_amount_sum") != null && !jsonObj.get("real_in_asset_id_blinding_mask_x_amount_sum").isJsonNull()) && !jsonObj.get("real_in_asset_id_blinding_mask_x_amount_sum").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `real_in_asset_id_blinding_mask_x_amount_sum` to be a primitive type in the JSON string but got `%s`", jsonObj.get("real_in_asset_id_blinding_mask_x_amount_sum").toString())); + } + if ((jsonObj.get("amount_commitments_sum") != null && !jsonObj.get("amount_commitments_sum").isJsonNull()) && !jsonObj.get("amount_commitments_sum").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `amount_commitments_sum` to be a primitive type in the JSON string but got `%s`", jsonObj.get("amount_commitments_sum").toString())); + } + if ((jsonObj.get("amount_blinding_masks_sum") != null && !jsonObj.get("amount_blinding_masks_sum").isJsonNull()) && !jsonObj.get("amount_blinding_masks_sum").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `amount_blinding_masks_sum` to be a primitive type in the JSON string but got `%s`", jsonObj.get("amount_blinding_masks_sum").toString())); + } + if ((jsonObj.get("asset_id_blinding_mask_x_amount_sum") != null && !jsonObj.get("asset_id_blinding_mask_x_amount_sum").isJsonNull()) && !jsonObj.get("asset_id_blinding_mask_x_amount_sum").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `asset_id_blinding_mask_x_amount_sum` to be a primitive type in the JSON string but got `%s`", jsonObj.get("asset_id_blinding_mask_x_amount_sum").toString())); + } + if ((jsonObj.get("ao_asset_id") != null && !jsonObj.get("ao_asset_id").isJsonNull()) && !jsonObj.get("ao_asset_id").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `ao_asset_id` to be a primitive type in the JSON string but got `%s`", jsonObj.get("ao_asset_id").toString())); + } + if ((jsonObj.get("ao_asset_id_pt") != null && !jsonObj.get("ao_asset_id_pt").isJsonNull()) && !jsonObj.get("ao_asset_id_pt").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `ao_asset_id_pt` to be a primitive type in the JSON string but got `%s`", jsonObj.get("ao_asset_id_pt").toString())); + } + if ((jsonObj.get("ao_amount_commitment") != null && !jsonObj.get("ao_amount_commitment").isJsonNull()) && !jsonObj.get("ao_amount_commitment").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `ao_amount_commitment` to be a primitive type in the JSON string but got `%s`", jsonObj.get("ao_amount_commitment").toString())); + } + if ((jsonObj.get("ao_amount_blinding_mask") != null && !jsonObj.get("ao_amount_blinding_mask").isJsonNull()) && !jsonObj.get("ao_amount_blinding_mask").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `ao_amount_blinding_mask` to be a primitive type in the JSON string but got `%s`", jsonObj.get("ao_amount_blinding_mask").toString())); + } + if ((jsonObj.get("tx_key_pub") != null && !jsonObj.get("tx_key_pub").isJsonNull()) && !jsonObj.get("tx_key_pub").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `tx_key_pub` to be a primitive type in the JSON string but got `%s`", jsonObj.get("tx_key_pub").toString())); + } + if ((jsonObj.get("tx_key_sec") != null && !jsonObj.get("tx_key_sec").isJsonNull()) && !jsonObj.get("tx_key_sec").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `tx_key_sec` to be a primitive type in the JSON string but got `%s`", jsonObj.get("tx_key_sec").toString())); + } + if ((jsonObj.get("tx_pub_key_p") != null && !jsonObj.get("tx_pub_key_p").isJsonNull()) && !jsonObj.get("tx_pub_key_p").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `tx_pub_key_p` to be a primitive type in the JSON string but got `%s`", jsonObj.get("tx_pub_key_p").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!TxGenerationContextModel.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'TxGenerationContextModel' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter + = gson.getDelegateAdapter(this, TypeToken.get(TxGenerationContextModel.class)); + + return (TypeAdapter) new TypeAdapter() { + @Override + public void write(JsonWriter out, TxGenerationContextModel value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public TxGenerationContextModel read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + + }.nullSafe(); + } + } + + /** + * Create an instance of TxGenerationContextModel given an JSON string + * + * @param jsonString JSON string + * @return An instance of TxGenerationContextModel + * @throws IOException if the JSON string is invalid with respect to TxGenerationContextModel + */ + public static TxGenerationContextModel fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, TxGenerationContextModel.class); + } + + /** + * Convert an instance of TxGenerationContextModel to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} + diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/model/TxPoolPerformanceModel.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/TxPoolPerformanceModel.java new file mode 100644 index 00000000..edd666a4 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/TxPoolPerformanceModel.java @@ -0,0 +1,464 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Locale; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Locale; + +import invalidPackageName.JSON; + +/** + * TxPoolPerformanceModel + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class TxPoolPerformanceModel { + public static final String SERIALIZED_NAME_TX_PROCESSING_TIME = "tx_processing_time"; + @SerializedName(SERIALIZED_NAME_TX_PROCESSING_TIME) + @javax.annotation.Nullable + private Integer txProcessingTime; + + public static final String SERIALIZED_NAME_CHECK_INPUTS_TYPES_SUPPORTED_TIME = "check_inputs_types_supported_time"; + @SerializedName(SERIALIZED_NAME_CHECK_INPUTS_TYPES_SUPPORTED_TIME) + @javax.annotation.Nullable + private Integer checkInputsTypesSupportedTime; + + public static final String SERIALIZED_NAME_EXPIRATION_VALIDATE_TIME = "expiration_validate_time"; + @SerializedName(SERIALIZED_NAME_EXPIRATION_VALIDATE_TIME) + @javax.annotation.Nullable + private Integer expirationValidateTime; + + public static final String SERIALIZED_NAME_VALIDATE_AMOUNT_TIME = "validate_amount_time"; + @SerializedName(SERIALIZED_NAME_VALIDATE_AMOUNT_TIME) + @javax.annotation.Nullable + private Integer validateAmountTime; + + public static final String SERIALIZED_NAME_VALIDATE_ALIAS_TIME = "validate_alias_time"; + @SerializedName(SERIALIZED_NAME_VALIDATE_ALIAS_TIME) + @javax.annotation.Nullable + private Integer validateAliasTime; + + public static final String SERIALIZED_NAME_CHECK_KEYIMAGES_WS_MS_TIME = "check_keyimages_ws_ms_time"; + @SerializedName(SERIALIZED_NAME_CHECK_KEYIMAGES_WS_MS_TIME) + @javax.annotation.Nullable + private Integer checkKeyimagesWsMsTime; + + public static final String SERIALIZED_NAME_CHECK_INPUTS_TIME = "check_inputs_time"; + @SerializedName(SERIALIZED_NAME_CHECK_INPUTS_TIME) + @javax.annotation.Nullable + private Integer checkInputsTime; + + public static final String SERIALIZED_NAME_BEGIN_TX_TIME = "begin_tx_time"; + @SerializedName(SERIALIZED_NAME_BEGIN_TX_TIME) + @javax.annotation.Nullable + private Integer beginTxTime; + + public static final String SERIALIZED_NAME_UPDATE_DB_TIME = "update_db_time"; + @SerializedName(SERIALIZED_NAME_UPDATE_DB_TIME) + @javax.annotation.Nullable + private Integer updateDbTime; + + public static final String SERIALIZED_NAME_DB_COMMIT_TIME = "db_commit_time"; + @SerializedName(SERIALIZED_NAME_DB_COMMIT_TIME) + @javax.annotation.Nullable + private Integer dbCommitTime; + + public static final String SERIALIZED_NAME_CHECK_POST_HF4_BALANCE = "check_post_hf4_balance"; + @SerializedName(SERIALIZED_NAME_CHECK_POST_HF4_BALANCE) + @javax.annotation.Nullable + private Integer checkPostHf4Balance; + + public TxPoolPerformanceModel() { + } + + public TxPoolPerformanceModel txProcessingTime(@javax.annotation.Nullable Integer txProcessingTime) { + this.txProcessingTime = txProcessingTime; + return this; + } + + /** + * Get txProcessingTime + * @return txProcessingTime + */ + @javax.annotation.Nullable + public Integer getTxProcessingTime() { + return txProcessingTime; + } + + public void setTxProcessingTime(@javax.annotation.Nullable Integer txProcessingTime) { + this.txProcessingTime = txProcessingTime; + } + + + public TxPoolPerformanceModel checkInputsTypesSupportedTime(@javax.annotation.Nullable Integer checkInputsTypesSupportedTime) { + this.checkInputsTypesSupportedTime = checkInputsTypesSupportedTime; + return this; + } + + /** + * Get checkInputsTypesSupportedTime + * @return checkInputsTypesSupportedTime + */ + @javax.annotation.Nullable + public Integer getCheckInputsTypesSupportedTime() { + return checkInputsTypesSupportedTime; + } + + public void setCheckInputsTypesSupportedTime(@javax.annotation.Nullable Integer checkInputsTypesSupportedTime) { + this.checkInputsTypesSupportedTime = checkInputsTypesSupportedTime; + } + + + public TxPoolPerformanceModel expirationValidateTime(@javax.annotation.Nullable Integer expirationValidateTime) { + this.expirationValidateTime = expirationValidateTime; + return this; + } + + /** + * Get expirationValidateTime + * @return expirationValidateTime + */ + @javax.annotation.Nullable + public Integer getExpirationValidateTime() { + return expirationValidateTime; + } + + public void setExpirationValidateTime(@javax.annotation.Nullable Integer expirationValidateTime) { + this.expirationValidateTime = expirationValidateTime; + } + + + public TxPoolPerformanceModel validateAmountTime(@javax.annotation.Nullable Integer validateAmountTime) { + this.validateAmountTime = validateAmountTime; + return this; + } + + /** + * Get validateAmountTime + * @return validateAmountTime + */ + @javax.annotation.Nullable + public Integer getValidateAmountTime() { + return validateAmountTime; + } + + public void setValidateAmountTime(@javax.annotation.Nullable Integer validateAmountTime) { + this.validateAmountTime = validateAmountTime; + } + + + public TxPoolPerformanceModel validateAliasTime(@javax.annotation.Nullable Integer validateAliasTime) { + this.validateAliasTime = validateAliasTime; + return this; + } + + /** + * Get validateAliasTime + * @return validateAliasTime + */ + @javax.annotation.Nullable + public Integer getValidateAliasTime() { + return validateAliasTime; + } + + public void setValidateAliasTime(@javax.annotation.Nullable Integer validateAliasTime) { + this.validateAliasTime = validateAliasTime; + } + + + public TxPoolPerformanceModel checkKeyimagesWsMsTime(@javax.annotation.Nullable Integer checkKeyimagesWsMsTime) { + this.checkKeyimagesWsMsTime = checkKeyimagesWsMsTime; + return this; + } + + /** + * Get checkKeyimagesWsMsTime + * @return checkKeyimagesWsMsTime + */ + @javax.annotation.Nullable + public Integer getCheckKeyimagesWsMsTime() { + return checkKeyimagesWsMsTime; + } + + public void setCheckKeyimagesWsMsTime(@javax.annotation.Nullable Integer checkKeyimagesWsMsTime) { + this.checkKeyimagesWsMsTime = checkKeyimagesWsMsTime; + } + + + public TxPoolPerformanceModel checkInputsTime(@javax.annotation.Nullable Integer checkInputsTime) { + this.checkInputsTime = checkInputsTime; + return this; + } + + /** + * Get checkInputsTime + * @return checkInputsTime + */ + @javax.annotation.Nullable + public Integer getCheckInputsTime() { + return checkInputsTime; + } + + public void setCheckInputsTime(@javax.annotation.Nullable Integer checkInputsTime) { + this.checkInputsTime = checkInputsTime; + } + + + public TxPoolPerformanceModel beginTxTime(@javax.annotation.Nullable Integer beginTxTime) { + this.beginTxTime = beginTxTime; + return this; + } + + /** + * Get beginTxTime + * @return beginTxTime + */ + @javax.annotation.Nullable + public Integer getBeginTxTime() { + return beginTxTime; + } + + public void setBeginTxTime(@javax.annotation.Nullable Integer beginTxTime) { + this.beginTxTime = beginTxTime; + } + + + public TxPoolPerformanceModel updateDbTime(@javax.annotation.Nullable Integer updateDbTime) { + this.updateDbTime = updateDbTime; + return this; + } + + /** + * Get updateDbTime + * @return updateDbTime + */ + @javax.annotation.Nullable + public Integer getUpdateDbTime() { + return updateDbTime; + } + + public void setUpdateDbTime(@javax.annotation.Nullable Integer updateDbTime) { + this.updateDbTime = updateDbTime; + } + + + public TxPoolPerformanceModel dbCommitTime(@javax.annotation.Nullable Integer dbCommitTime) { + this.dbCommitTime = dbCommitTime; + return this; + } + + /** + * Get dbCommitTime + * @return dbCommitTime + */ + @javax.annotation.Nullable + public Integer getDbCommitTime() { + return dbCommitTime; + } + + public void setDbCommitTime(@javax.annotation.Nullable Integer dbCommitTime) { + this.dbCommitTime = dbCommitTime; + } + + + public TxPoolPerformanceModel checkPostHf4Balance(@javax.annotation.Nullable Integer checkPostHf4Balance) { + this.checkPostHf4Balance = checkPostHf4Balance; + return this; + } + + /** + * Get checkPostHf4Balance + * @return checkPostHf4Balance + */ + @javax.annotation.Nullable + public Integer getCheckPostHf4Balance() { + return checkPostHf4Balance; + } + + public void setCheckPostHf4Balance(@javax.annotation.Nullable Integer checkPostHf4Balance) { + this.checkPostHf4Balance = checkPostHf4Balance; + } + + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TxPoolPerformanceModel txPoolPerformanceModel = (TxPoolPerformanceModel) o; + return Objects.equals(this.txProcessingTime, txPoolPerformanceModel.txProcessingTime) && + Objects.equals(this.checkInputsTypesSupportedTime, txPoolPerformanceModel.checkInputsTypesSupportedTime) && + Objects.equals(this.expirationValidateTime, txPoolPerformanceModel.expirationValidateTime) && + Objects.equals(this.validateAmountTime, txPoolPerformanceModel.validateAmountTime) && + Objects.equals(this.validateAliasTime, txPoolPerformanceModel.validateAliasTime) && + Objects.equals(this.checkKeyimagesWsMsTime, txPoolPerformanceModel.checkKeyimagesWsMsTime) && + Objects.equals(this.checkInputsTime, txPoolPerformanceModel.checkInputsTime) && + Objects.equals(this.beginTxTime, txPoolPerformanceModel.beginTxTime) && + Objects.equals(this.updateDbTime, txPoolPerformanceModel.updateDbTime) && + Objects.equals(this.dbCommitTime, txPoolPerformanceModel.dbCommitTime) && + Objects.equals(this.checkPostHf4Balance, txPoolPerformanceModel.checkPostHf4Balance); + } + + @Override + public int hashCode() { + return Objects.hash(txProcessingTime, checkInputsTypesSupportedTime, expirationValidateTime, validateAmountTime, validateAliasTime, checkKeyimagesWsMsTime, checkInputsTime, beginTxTime, updateDbTime, dbCommitTime, checkPostHf4Balance); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TxPoolPerformanceModel {\n"); + sb.append(" txProcessingTime: ").append(toIndentedString(txProcessingTime)).append("\n"); + sb.append(" checkInputsTypesSupportedTime: ").append(toIndentedString(checkInputsTypesSupportedTime)).append("\n"); + sb.append(" expirationValidateTime: ").append(toIndentedString(expirationValidateTime)).append("\n"); + sb.append(" validateAmountTime: ").append(toIndentedString(validateAmountTime)).append("\n"); + sb.append(" validateAliasTime: ").append(toIndentedString(validateAliasTime)).append("\n"); + sb.append(" checkKeyimagesWsMsTime: ").append(toIndentedString(checkKeyimagesWsMsTime)).append("\n"); + sb.append(" checkInputsTime: ").append(toIndentedString(checkInputsTime)).append("\n"); + sb.append(" beginTxTime: ").append(toIndentedString(beginTxTime)).append("\n"); + sb.append(" updateDbTime: ").append(toIndentedString(updateDbTime)).append("\n"); + sb.append(" dbCommitTime: ").append(toIndentedString(dbCommitTime)).append("\n"); + sb.append(" checkPostHf4Balance: ").append(toIndentedString(checkPostHf4Balance)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + + public static HashSet openapiFields; + public static HashSet openapiRequiredFields; + + static { + // a set of all properties/fields (JSON key names) + openapiFields = new HashSet(Arrays.asList("tx_processing_time", "check_inputs_types_supported_time", "expiration_validate_time", "validate_amount_time", "validate_alias_time", "check_keyimages_ws_ms_time", "check_inputs_time", "begin_tx_time", "update_db_time", "db_commit_time", "check_post_hf4_balance")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * Validates the JSON Element and throws an exception if issues found + * + * @param jsonElement JSON Element + * @throws IOException if the JSON Element is invalid with respect to TxPoolPerformanceModel + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!TxPoolPerformanceModel.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in TxPoolPerformanceModel is not found in the empty JSON string", TxPoolPerformanceModel.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!TxPoolPerformanceModel.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` in the JSON string is not defined in the `TxPoolPerformanceModel` properties. JSON: %s", entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!TxPoolPerformanceModel.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'TxPoolPerformanceModel' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter + = gson.getDelegateAdapter(this, TypeToken.get(TxPoolPerformanceModel.class)); + + return (TypeAdapter) new TypeAdapter() { + @Override + public void write(JsonWriter out, TxPoolPerformanceModel value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public TxPoolPerformanceModel read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + + }.nullSafe(); + } + } + + /** + * Create an instance of TxPoolPerformanceModel given an JSON string + * + * @param jsonString JSON string + * @return An instance of TxPoolPerformanceModel + * @throws IOException if the JSON string is invalid with respect to TxPoolPerformanceModel + */ + public static TxPoolPerformanceModel fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, TxPoolPerformanceModel.class); + } + + /** + * Convert an instance of TxPoolPerformanceModel to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} + diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/model/TxProcessingPerformanceModel.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/TxProcessingPerformanceModel.java new file mode 100644 index 00000000..091efb74 --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/TxProcessingPerformanceModel.java @@ -0,0 +1,828 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Locale; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Locale; + +import invalidPackageName.JSON; + +/** + * TxProcessingPerformanceModel + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class TxProcessingPerformanceModel { + public static final String SERIALIZED_NAME_TX_CHECK_INPUTS = "tx_check_inputs"; + @SerializedName(SERIALIZED_NAME_TX_CHECK_INPUTS) + @javax.annotation.Nullable + private Integer txCheckInputs; + + public static final String SERIALIZED_NAME_TX_ADD_ONE_TX = "tx_add_one_tx"; + @SerializedName(SERIALIZED_NAME_TX_ADD_ONE_TX) + @javax.annotation.Nullable + private Integer txAddOneTx; + + public static final String SERIALIZED_NAME_TX_PROCESS_EXTRA = "tx_process_extra"; + @SerializedName(SERIALIZED_NAME_TX_PROCESS_EXTRA) + @javax.annotation.Nullable + private Integer txProcessExtra; + + public static final String SERIALIZED_NAME_TX_PROCESS_ATTACHMENT = "tx_process_attachment"; + @SerializedName(SERIALIZED_NAME_TX_PROCESS_ATTACHMENT) + @javax.annotation.Nullable + private Integer txProcessAttachment; + + public static final String SERIALIZED_NAME_TX_PROCESS_INPUTS = "tx_process_inputs"; + @SerializedName(SERIALIZED_NAME_TX_PROCESS_INPUTS) + @javax.annotation.Nullable + private Integer txProcessInputs; + + public static final String SERIALIZED_NAME_TX_PUSH_GLOBAL_INDEX = "tx_push_global_index"; + @SerializedName(SERIALIZED_NAME_TX_PUSH_GLOBAL_INDEX) + @javax.annotation.Nullable + private Integer txPushGlobalIndex; + + public static final String SERIALIZED_NAME_TX_CHECK_EXIST = "tx_check_exist"; + @SerializedName(SERIALIZED_NAME_TX_CHECK_EXIST) + @javax.annotation.Nullable + private Integer txCheckExist; + + public static final String SERIALIZED_NAME_TX_PRINT_LOG = "tx_print_log"; + @SerializedName(SERIALIZED_NAME_TX_PRINT_LOG) + @javax.annotation.Nullable + private Integer txPrintLog; + + public static final String SERIALIZED_NAME_TX_PRAPARE_APPEND = "tx_prapare_append"; + @SerializedName(SERIALIZED_NAME_TX_PRAPARE_APPEND) + @javax.annotation.Nullable + private Integer txPrapareAppend; + + public static final String SERIALIZED_NAME_TX_APPEND = "tx_append"; + @SerializedName(SERIALIZED_NAME_TX_APPEND) + @javax.annotation.Nullable + private Integer txAppend; + + public static final String SERIALIZED_NAME_TX_APPEND_RL_WAIT = "tx_append_rl_wait"; + @SerializedName(SERIALIZED_NAME_TX_APPEND_RL_WAIT) + @javax.annotation.Nullable + private Integer txAppendRlWait; + + public static final String SERIALIZED_NAME_TX_APPEND_IS_EXPIRED = "tx_append_is_expired"; + @SerializedName(SERIALIZED_NAME_TX_APPEND_IS_EXPIRED) + @javax.annotation.Nullable + private Integer txAppendIsExpired; + + public static final String SERIALIZED_NAME_TX_STORE_DB = "tx_store_db"; + @SerializedName(SERIALIZED_NAME_TX_STORE_DB) + @javax.annotation.Nullable + private Integer txStoreDb; + + public static final String SERIALIZED_NAME_TX_CHECK_INPUTS_PREFIX_HASH = "tx_check_inputs_prefix_hash"; + @SerializedName(SERIALIZED_NAME_TX_CHECK_INPUTS_PREFIX_HASH) + @javax.annotation.Nullable + private Integer txCheckInputsPrefixHash; + + public static final String SERIALIZED_NAME_TX_CHECK_INPUTS_ATTACHMENT_CHECK = "tx_check_inputs_attachment_check"; + @SerializedName(SERIALIZED_NAME_TX_CHECK_INPUTS_ATTACHMENT_CHECK) + @javax.annotation.Nullable + private Integer txCheckInputsAttachmentCheck; + + public static final String SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP = "tx_check_inputs_loop"; + @SerializedName(SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP) + @javax.annotation.Nullable + private Integer txCheckInputsLoop; + + public static final String SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_KIMAGE_CHECK = "tx_check_inputs_loop_kimage_check"; + @SerializedName(SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_KIMAGE_CHECK) + @javax.annotation.Nullable + private Integer txCheckInputsLoopKimageCheck; + + public static final String SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_CH_IN_VAL_SIG = "tx_check_inputs_loop_ch_in_val_sig"; + @SerializedName(SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_CH_IN_VAL_SIG) + @javax.annotation.Nullable + private Integer txCheckInputsLoopChInValSig; + + public static final String SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_SCAN_OUTPUTKEYS_GET_ITEM_SIZE = "tx_check_inputs_loop_scan_outputkeys_get_item_size"; + @SerializedName(SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_SCAN_OUTPUTKEYS_GET_ITEM_SIZE) + @javax.annotation.Nullable + private Integer txCheckInputsLoopScanOutputkeysGetItemSize; + + public static final String SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_SCAN_OUTPUTKEYS_RELATIVE_TO_ABSOLUTE = "tx_check_inputs_loop_scan_outputkeys_relative_to_absolute"; + @SerializedName(SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_SCAN_OUTPUTKEYS_RELATIVE_TO_ABSOLUTE) + @javax.annotation.Nullable + private Integer txCheckInputsLoopScanOutputkeysRelativeToAbsolute; + + public static final String SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_SCAN_OUTPUTKEYS_LOOP = "tx_check_inputs_loop_scan_outputkeys_loop"; + @SerializedName(SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_SCAN_OUTPUTKEYS_LOOP) + @javax.annotation.Nullable + private Integer txCheckInputsLoopScanOutputkeysLoop; + + public static final String SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_SCAN_OUTPUTKEYS_LOOP_GET_SUBITEM = "tx_check_inputs_loop_scan_outputkeys_loop_get_subitem"; + @SerializedName(SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_SCAN_OUTPUTKEYS_LOOP_GET_SUBITEM) + @javax.annotation.Nullable + private Integer txCheckInputsLoopScanOutputkeysLoopGetSubitem; + + public static final String SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_SCAN_OUTPUTKEYS_LOOP_FIND_TX = "tx_check_inputs_loop_scan_outputkeys_loop_find_tx"; + @SerializedName(SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_SCAN_OUTPUTKEYS_LOOP_FIND_TX) + @javax.annotation.Nullable + private Integer txCheckInputsLoopScanOutputkeysLoopFindTx; + + public static final String SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_SCAN_OUTPUTKEYS_LOOP_HANDLE_OUTPUT = "tx_check_inputs_loop_scan_outputkeys_loop_handle_output"; + @SerializedName(SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_SCAN_OUTPUTKEYS_LOOP_HANDLE_OUTPUT) + @javax.annotation.Nullable + private Integer txCheckInputsLoopScanOutputkeysLoopHandleOutput; + + public static final String SERIALIZED_NAME_TX_MIXIN_COUNT = "tx_mixin_count"; + @SerializedName(SERIALIZED_NAME_TX_MIXIN_COUNT) + @javax.annotation.Nullable + private Integer txMixinCount; + + public TxProcessingPerformanceModel() { + } + + public TxProcessingPerformanceModel txCheckInputs(@javax.annotation.Nullable Integer txCheckInputs) { + this.txCheckInputs = txCheckInputs; + return this; + } + + /** + * Get txCheckInputs + * @return txCheckInputs + */ + @javax.annotation.Nullable + public Integer getTxCheckInputs() { + return txCheckInputs; + } + + public void setTxCheckInputs(@javax.annotation.Nullable Integer txCheckInputs) { + this.txCheckInputs = txCheckInputs; + } + + + public TxProcessingPerformanceModel txAddOneTx(@javax.annotation.Nullable Integer txAddOneTx) { + this.txAddOneTx = txAddOneTx; + return this; + } + + /** + * Get txAddOneTx + * @return txAddOneTx + */ + @javax.annotation.Nullable + public Integer getTxAddOneTx() { + return txAddOneTx; + } + + public void setTxAddOneTx(@javax.annotation.Nullable Integer txAddOneTx) { + this.txAddOneTx = txAddOneTx; + } + + + public TxProcessingPerformanceModel txProcessExtra(@javax.annotation.Nullable Integer txProcessExtra) { + this.txProcessExtra = txProcessExtra; + return this; + } + + /** + * Get txProcessExtra + * @return txProcessExtra + */ + @javax.annotation.Nullable + public Integer getTxProcessExtra() { + return txProcessExtra; + } + + public void setTxProcessExtra(@javax.annotation.Nullable Integer txProcessExtra) { + this.txProcessExtra = txProcessExtra; + } + + + public TxProcessingPerformanceModel txProcessAttachment(@javax.annotation.Nullable Integer txProcessAttachment) { + this.txProcessAttachment = txProcessAttachment; + return this; + } + + /** + * Get txProcessAttachment + * @return txProcessAttachment + */ + @javax.annotation.Nullable + public Integer getTxProcessAttachment() { + return txProcessAttachment; + } + + public void setTxProcessAttachment(@javax.annotation.Nullable Integer txProcessAttachment) { + this.txProcessAttachment = txProcessAttachment; + } + + + public TxProcessingPerformanceModel txProcessInputs(@javax.annotation.Nullable Integer txProcessInputs) { + this.txProcessInputs = txProcessInputs; + return this; + } + + /** + * Get txProcessInputs + * @return txProcessInputs + */ + @javax.annotation.Nullable + public Integer getTxProcessInputs() { + return txProcessInputs; + } + + public void setTxProcessInputs(@javax.annotation.Nullable Integer txProcessInputs) { + this.txProcessInputs = txProcessInputs; + } + + + public TxProcessingPerformanceModel txPushGlobalIndex(@javax.annotation.Nullable Integer txPushGlobalIndex) { + this.txPushGlobalIndex = txPushGlobalIndex; + return this; + } + + /** + * Get txPushGlobalIndex + * @return txPushGlobalIndex + */ + @javax.annotation.Nullable + public Integer getTxPushGlobalIndex() { + return txPushGlobalIndex; + } + + public void setTxPushGlobalIndex(@javax.annotation.Nullable Integer txPushGlobalIndex) { + this.txPushGlobalIndex = txPushGlobalIndex; + } + + + public TxProcessingPerformanceModel txCheckExist(@javax.annotation.Nullable Integer txCheckExist) { + this.txCheckExist = txCheckExist; + return this; + } + + /** + * Get txCheckExist + * @return txCheckExist + */ + @javax.annotation.Nullable + public Integer getTxCheckExist() { + return txCheckExist; + } + + public void setTxCheckExist(@javax.annotation.Nullable Integer txCheckExist) { + this.txCheckExist = txCheckExist; + } + + + public TxProcessingPerformanceModel txPrintLog(@javax.annotation.Nullable Integer txPrintLog) { + this.txPrintLog = txPrintLog; + return this; + } + + /** + * Get txPrintLog + * @return txPrintLog + */ + @javax.annotation.Nullable + public Integer getTxPrintLog() { + return txPrintLog; + } + + public void setTxPrintLog(@javax.annotation.Nullable Integer txPrintLog) { + this.txPrintLog = txPrintLog; + } + + + public TxProcessingPerformanceModel txPrapareAppend(@javax.annotation.Nullable Integer txPrapareAppend) { + this.txPrapareAppend = txPrapareAppend; + return this; + } + + /** + * Get txPrapareAppend + * @return txPrapareAppend + */ + @javax.annotation.Nullable + public Integer getTxPrapareAppend() { + return txPrapareAppend; + } + + public void setTxPrapareAppend(@javax.annotation.Nullable Integer txPrapareAppend) { + this.txPrapareAppend = txPrapareAppend; + } + + + public TxProcessingPerformanceModel txAppend(@javax.annotation.Nullable Integer txAppend) { + this.txAppend = txAppend; + return this; + } + + /** + * Get txAppend + * @return txAppend + */ + @javax.annotation.Nullable + public Integer getTxAppend() { + return txAppend; + } + + public void setTxAppend(@javax.annotation.Nullable Integer txAppend) { + this.txAppend = txAppend; + } + + + public TxProcessingPerformanceModel txAppendRlWait(@javax.annotation.Nullable Integer txAppendRlWait) { + this.txAppendRlWait = txAppendRlWait; + return this; + } + + /** + * Get txAppendRlWait + * @return txAppendRlWait + */ + @javax.annotation.Nullable + public Integer getTxAppendRlWait() { + return txAppendRlWait; + } + + public void setTxAppendRlWait(@javax.annotation.Nullable Integer txAppendRlWait) { + this.txAppendRlWait = txAppendRlWait; + } + + + public TxProcessingPerformanceModel txAppendIsExpired(@javax.annotation.Nullable Integer txAppendIsExpired) { + this.txAppendIsExpired = txAppendIsExpired; + return this; + } + + /** + * Get txAppendIsExpired + * @return txAppendIsExpired + */ + @javax.annotation.Nullable + public Integer getTxAppendIsExpired() { + return txAppendIsExpired; + } + + public void setTxAppendIsExpired(@javax.annotation.Nullable Integer txAppendIsExpired) { + this.txAppendIsExpired = txAppendIsExpired; + } + + + public TxProcessingPerformanceModel txStoreDb(@javax.annotation.Nullable Integer txStoreDb) { + this.txStoreDb = txStoreDb; + return this; + } + + /** + * Get txStoreDb + * @return txStoreDb + */ + @javax.annotation.Nullable + public Integer getTxStoreDb() { + return txStoreDb; + } + + public void setTxStoreDb(@javax.annotation.Nullable Integer txStoreDb) { + this.txStoreDb = txStoreDb; + } + + + public TxProcessingPerformanceModel txCheckInputsPrefixHash(@javax.annotation.Nullable Integer txCheckInputsPrefixHash) { + this.txCheckInputsPrefixHash = txCheckInputsPrefixHash; + return this; + } + + /** + * Get txCheckInputsPrefixHash + * @return txCheckInputsPrefixHash + */ + @javax.annotation.Nullable + public Integer getTxCheckInputsPrefixHash() { + return txCheckInputsPrefixHash; + } + + public void setTxCheckInputsPrefixHash(@javax.annotation.Nullable Integer txCheckInputsPrefixHash) { + this.txCheckInputsPrefixHash = txCheckInputsPrefixHash; + } + + + public TxProcessingPerformanceModel txCheckInputsAttachmentCheck(@javax.annotation.Nullable Integer txCheckInputsAttachmentCheck) { + this.txCheckInputsAttachmentCheck = txCheckInputsAttachmentCheck; + return this; + } + + /** + * Get txCheckInputsAttachmentCheck + * @return txCheckInputsAttachmentCheck + */ + @javax.annotation.Nullable + public Integer getTxCheckInputsAttachmentCheck() { + return txCheckInputsAttachmentCheck; + } + + public void setTxCheckInputsAttachmentCheck(@javax.annotation.Nullable Integer txCheckInputsAttachmentCheck) { + this.txCheckInputsAttachmentCheck = txCheckInputsAttachmentCheck; + } + + + public TxProcessingPerformanceModel txCheckInputsLoop(@javax.annotation.Nullable Integer txCheckInputsLoop) { + this.txCheckInputsLoop = txCheckInputsLoop; + return this; + } + + /** + * Get txCheckInputsLoop + * @return txCheckInputsLoop + */ + @javax.annotation.Nullable + public Integer getTxCheckInputsLoop() { + return txCheckInputsLoop; + } + + public void setTxCheckInputsLoop(@javax.annotation.Nullable Integer txCheckInputsLoop) { + this.txCheckInputsLoop = txCheckInputsLoop; + } + + + public TxProcessingPerformanceModel txCheckInputsLoopKimageCheck(@javax.annotation.Nullable Integer txCheckInputsLoopKimageCheck) { + this.txCheckInputsLoopKimageCheck = txCheckInputsLoopKimageCheck; + return this; + } + + /** + * Get txCheckInputsLoopKimageCheck + * @return txCheckInputsLoopKimageCheck + */ + @javax.annotation.Nullable + public Integer getTxCheckInputsLoopKimageCheck() { + return txCheckInputsLoopKimageCheck; + } + + public void setTxCheckInputsLoopKimageCheck(@javax.annotation.Nullable Integer txCheckInputsLoopKimageCheck) { + this.txCheckInputsLoopKimageCheck = txCheckInputsLoopKimageCheck; + } + + + public TxProcessingPerformanceModel txCheckInputsLoopChInValSig(@javax.annotation.Nullable Integer txCheckInputsLoopChInValSig) { + this.txCheckInputsLoopChInValSig = txCheckInputsLoopChInValSig; + return this; + } + + /** + * Get txCheckInputsLoopChInValSig + * @return txCheckInputsLoopChInValSig + */ + @javax.annotation.Nullable + public Integer getTxCheckInputsLoopChInValSig() { + return txCheckInputsLoopChInValSig; + } + + public void setTxCheckInputsLoopChInValSig(@javax.annotation.Nullable Integer txCheckInputsLoopChInValSig) { + this.txCheckInputsLoopChInValSig = txCheckInputsLoopChInValSig; + } + + + public TxProcessingPerformanceModel txCheckInputsLoopScanOutputkeysGetItemSize(@javax.annotation.Nullable Integer txCheckInputsLoopScanOutputkeysGetItemSize) { + this.txCheckInputsLoopScanOutputkeysGetItemSize = txCheckInputsLoopScanOutputkeysGetItemSize; + return this; + } + + /** + * Get txCheckInputsLoopScanOutputkeysGetItemSize + * @return txCheckInputsLoopScanOutputkeysGetItemSize + */ + @javax.annotation.Nullable + public Integer getTxCheckInputsLoopScanOutputkeysGetItemSize() { + return txCheckInputsLoopScanOutputkeysGetItemSize; + } + + public void setTxCheckInputsLoopScanOutputkeysGetItemSize(@javax.annotation.Nullable Integer txCheckInputsLoopScanOutputkeysGetItemSize) { + this.txCheckInputsLoopScanOutputkeysGetItemSize = txCheckInputsLoopScanOutputkeysGetItemSize; + } + + + public TxProcessingPerformanceModel txCheckInputsLoopScanOutputkeysRelativeToAbsolute(@javax.annotation.Nullable Integer txCheckInputsLoopScanOutputkeysRelativeToAbsolute) { + this.txCheckInputsLoopScanOutputkeysRelativeToAbsolute = txCheckInputsLoopScanOutputkeysRelativeToAbsolute; + return this; + } + + /** + * Get txCheckInputsLoopScanOutputkeysRelativeToAbsolute + * @return txCheckInputsLoopScanOutputkeysRelativeToAbsolute + */ + @javax.annotation.Nullable + public Integer getTxCheckInputsLoopScanOutputkeysRelativeToAbsolute() { + return txCheckInputsLoopScanOutputkeysRelativeToAbsolute; + } + + public void setTxCheckInputsLoopScanOutputkeysRelativeToAbsolute(@javax.annotation.Nullable Integer txCheckInputsLoopScanOutputkeysRelativeToAbsolute) { + this.txCheckInputsLoopScanOutputkeysRelativeToAbsolute = txCheckInputsLoopScanOutputkeysRelativeToAbsolute; + } + + + public TxProcessingPerformanceModel txCheckInputsLoopScanOutputkeysLoop(@javax.annotation.Nullable Integer txCheckInputsLoopScanOutputkeysLoop) { + this.txCheckInputsLoopScanOutputkeysLoop = txCheckInputsLoopScanOutputkeysLoop; + return this; + } + + /** + * Get txCheckInputsLoopScanOutputkeysLoop + * @return txCheckInputsLoopScanOutputkeysLoop + */ + @javax.annotation.Nullable + public Integer getTxCheckInputsLoopScanOutputkeysLoop() { + return txCheckInputsLoopScanOutputkeysLoop; + } + + public void setTxCheckInputsLoopScanOutputkeysLoop(@javax.annotation.Nullable Integer txCheckInputsLoopScanOutputkeysLoop) { + this.txCheckInputsLoopScanOutputkeysLoop = txCheckInputsLoopScanOutputkeysLoop; + } + + + public TxProcessingPerformanceModel txCheckInputsLoopScanOutputkeysLoopGetSubitem(@javax.annotation.Nullable Integer txCheckInputsLoopScanOutputkeysLoopGetSubitem) { + this.txCheckInputsLoopScanOutputkeysLoopGetSubitem = txCheckInputsLoopScanOutputkeysLoopGetSubitem; + return this; + } + + /** + * Get txCheckInputsLoopScanOutputkeysLoopGetSubitem + * @return txCheckInputsLoopScanOutputkeysLoopGetSubitem + */ + @javax.annotation.Nullable + public Integer getTxCheckInputsLoopScanOutputkeysLoopGetSubitem() { + return txCheckInputsLoopScanOutputkeysLoopGetSubitem; + } + + public void setTxCheckInputsLoopScanOutputkeysLoopGetSubitem(@javax.annotation.Nullable Integer txCheckInputsLoopScanOutputkeysLoopGetSubitem) { + this.txCheckInputsLoopScanOutputkeysLoopGetSubitem = txCheckInputsLoopScanOutputkeysLoopGetSubitem; + } + + + public TxProcessingPerformanceModel txCheckInputsLoopScanOutputkeysLoopFindTx(@javax.annotation.Nullable Integer txCheckInputsLoopScanOutputkeysLoopFindTx) { + this.txCheckInputsLoopScanOutputkeysLoopFindTx = txCheckInputsLoopScanOutputkeysLoopFindTx; + return this; + } + + /** + * Get txCheckInputsLoopScanOutputkeysLoopFindTx + * @return txCheckInputsLoopScanOutputkeysLoopFindTx + */ + @javax.annotation.Nullable + public Integer getTxCheckInputsLoopScanOutputkeysLoopFindTx() { + return txCheckInputsLoopScanOutputkeysLoopFindTx; + } + + public void setTxCheckInputsLoopScanOutputkeysLoopFindTx(@javax.annotation.Nullable Integer txCheckInputsLoopScanOutputkeysLoopFindTx) { + this.txCheckInputsLoopScanOutputkeysLoopFindTx = txCheckInputsLoopScanOutputkeysLoopFindTx; + } + + + public TxProcessingPerformanceModel txCheckInputsLoopScanOutputkeysLoopHandleOutput(@javax.annotation.Nullable Integer txCheckInputsLoopScanOutputkeysLoopHandleOutput) { + this.txCheckInputsLoopScanOutputkeysLoopHandleOutput = txCheckInputsLoopScanOutputkeysLoopHandleOutput; + return this; + } + + /** + * Get txCheckInputsLoopScanOutputkeysLoopHandleOutput + * @return txCheckInputsLoopScanOutputkeysLoopHandleOutput + */ + @javax.annotation.Nullable + public Integer getTxCheckInputsLoopScanOutputkeysLoopHandleOutput() { + return txCheckInputsLoopScanOutputkeysLoopHandleOutput; + } + + public void setTxCheckInputsLoopScanOutputkeysLoopHandleOutput(@javax.annotation.Nullable Integer txCheckInputsLoopScanOutputkeysLoopHandleOutput) { + this.txCheckInputsLoopScanOutputkeysLoopHandleOutput = txCheckInputsLoopScanOutputkeysLoopHandleOutput; + } + + + public TxProcessingPerformanceModel txMixinCount(@javax.annotation.Nullable Integer txMixinCount) { + this.txMixinCount = txMixinCount; + return this; + } + + /** + * Get txMixinCount + * @return txMixinCount + */ + @javax.annotation.Nullable + public Integer getTxMixinCount() { + return txMixinCount; + } + + public void setTxMixinCount(@javax.annotation.Nullable Integer txMixinCount) { + this.txMixinCount = txMixinCount; + } + + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TxProcessingPerformanceModel txProcessingPerformanceModel = (TxProcessingPerformanceModel) o; + return Objects.equals(this.txCheckInputs, txProcessingPerformanceModel.txCheckInputs) && + Objects.equals(this.txAddOneTx, txProcessingPerformanceModel.txAddOneTx) && + Objects.equals(this.txProcessExtra, txProcessingPerformanceModel.txProcessExtra) && + Objects.equals(this.txProcessAttachment, txProcessingPerformanceModel.txProcessAttachment) && + Objects.equals(this.txProcessInputs, txProcessingPerformanceModel.txProcessInputs) && + Objects.equals(this.txPushGlobalIndex, txProcessingPerformanceModel.txPushGlobalIndex) && + Objects.equals(this.txCheckExist, txProcessingPerformanceModel.txCheckExist) && + Objects.equals(this.txPrintLog, txProcessingPerformanceModel.txPrintLog) && + Objects.equals(this.txPrapareAppend, txProcessingPerformanceModel.txPrapareAppend) && + Objects.equals(this.txAppend, txProcessingPerformanceModel.txAppend) && + Objects.equals(this.txAppendRlWait, txProcessingPerformanceModel.txAppendRlWait) && + Objects.equals(this.txAppendIsExpired, txProcessingPerformanceModel.txAppendIsExpired) && + Objects.equals(this.txStoreDb, txProcessingPerformanceModel.txStoreDb) && + Objects.equals(this.txCheckInputsPrefixHash, txProcessingPerformanceModel.txCheckInputsPrefixHash) && + Objects.equals(this.txCheckInputsAttachmentCheck, txProcessingPerformanceModel.txCheckInputsAttachmentCheck) && + Objects.equals(this.txCheckInputsLoop, txProcessingPerformanceModel.txCheckInputsLoop) && + Objects.equals(this.txCheckInputsLoopKimageCheck, txProcessingPerformanceModel.txCheckInputsLoopKimageCheck) && + Objects.equals(this.txCheckInputsLoopChInValSig, txProcessingPerformanceModel.txCheckInputsLoopChInValSig) && + Objects.equals(this.txCheckInputsLoopScanOutputkeysGetItemSize, txProcessingPerformanceModel.txCheckInputsLoopScanOutputkeysGetItemSize) && + Objects.equals(this.txCheckInputsLoopScanOutputkeysRelativeToAbsolute, txProcessingPerformanceModel.txCheckInputsLoopScanOutputkeysRelativeToAbsolute) && + Objects.equals(this.txCheckInputsLoopScanOutputkeysLoop, txProcessingPerformanceModel.txCheckInputsLoopScanOutputkeysLoop) && + Objects.equals(this.txCheckInputsLoopScanOutputkeysLoopGetSubitem, txProcessingPerformanceModel.txCheckInputsLoopScanOutputkeysLoopGetSubitem) && + Objects.equals(this.txCheckInputsLoopScanOutputkeysLoopFindTx, txProcessingPerformanceModel.txCheckInputsLoopScanOutputkeysLoopFindTx) && + Objects.equals(this.txCheckInputsLoopScanOutputkeysLoopHandleOutput, txProcessingPerformanceModel.txCheckInputsLoopScanOutputkeysLoopHandleOutput) && + Objects.equals(this.txMixinCount, txProcessingPerformanceModel.txMixinCount); + } + + @Override + public int hashCode() { + return Objects.hash(txCheckInputs, txAddOneTx, txProcessExtra, txProcessAttachment, txProcessInputs, txPushGlobalIndex, txCheckExist, txPrintLog, txPrapareAppend, txAppend, txAppendRlWait, txAppendIsExpired, txStoreDb, txCheckInputsPrefixHash, txCheckInputsAttachmentCheck, txCheckInputsLoop, txCheckInputsLoopKimageCheck, txCheckInputsLoopChInValSig, txCheckInputsLoopScanOutputkeysGetItemSize, txCheckInputsLoopScanOutputkeysRelativeToAbsolute, txCheckInputsLoopScanOutputkeysLoop, txCheckInputsLoopScanOutputkeysLoopGetSubitem, txCheckInputsLoopScanOutputkeysLoopFindTx, txCheckInputsLoopScanOutputkeysLoopHandleOutput, txMixinCount); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TxProcessingPerformanceModel {\n"); + sb.append(" txCheckInputs: ").append(toIndentedString(txCheckInputs)).append("\n"); + sb.append(" txAddOneTx: ").append(toIndentedString(txAddOneTx)).append("\n"); + sb.append(" txProcessExtra: ").append(toIndentedString(txProcessExtra)).append("\n"); + sb.append(" txProcessAttachment: ").append(toIndentedString(txProcessAttachment)).append("\n"); + sb.append(" txProcessInputs: ").append(toIndentedString(txProcessInputs)).append("\n"); + sb.append(" txPushGlobalIndex: ").append(toIndentedString(txPushGlobalIndex)).append("\n"); + sb.append(" txCheckExist: ").append(toIndentedString(txCheckExist)).append("\n"); + sb.append(" txPrintLog: ").append(toIndentedString(txPrintLog)).append("\n"); + sb.append(" txPrapareAppend: ").append(toIndentedString(txPrapareAppend)).append("\n"); + sb.append(" txAppend: ").append(toIndentedString(txAppend)).append("\n"); + sb.append(" txAppendRlWait: ").append(toIndentedString(txAppendRlWait)).append("\n"); + sb.append(" txAppendIsExpired: ").append(toIndentedString(txAppendIsExpired)).append("\n"); + sb.append(" txStoreDb: ").append(toIndentedString(txStoreDb)).append("\n"); + sb.append(" txCheckInputsPrefixHash: ").append(toIndentedString(txCheckInputsPrefixHash)).append("\n"); + sb.append(" txCheckInputsAttachmentCheck: ").append(toIndentedString(txCheckInputsAttachmentCheck)).append("\n"); + sb.append(" txCheckInputsLoop: ").append(toIndentedString(txCheckInputsLoop)).append("\n"); + sb.append(" txCheckInputsLoopKimageCheck: ").append(toIndentedString(txCheckInputsLoopKimageCheck)).append("\n"); + sb.append(" txCheckInputsLoopChInValSig: ").append(toIndentedString(txCheckInputsLoopChInValSig)).append("\n"); + sb.append(" txCheckInputsLoopScanOutputkeysGetItemSize: ").append(toIndentedString(txCheckInputsLoopScanOutputkeysGetItemSize)).append("\n"); + sb.append(" txCheckInputsLoopScanOutputkeysRelativeToAbsolute: ").append(toIndentedString(txCheckInputsLoopScanOutputkeysRelativeToAbsolute)).append("\n"); + sb.append(" txCheckInputsLoopScanOutputkeysLoop: ").append(toIndentedString(txCheckInputsLoopScanOutputkeysLoop)).append("\n"); + sb.append(" txCheckInputsLoopScanOutputkeysLoopGetSubitem: ").append(toIndentedString(txCheckInputsLoopScanOutputkeysLoopGetSubitem)).append("\n"); + sb.append(" txCheckInputsLoopScanOutputkeysLoopFindTx: ").append(toIndentedString(txCheckInputsLoopScanOutputkeysLoopFindTx)).append("\n"); + sb.append(" txCheckInputsLoopScanOutputkeysLoopHandleOutput: ").append(toIndentedString(txCheckInputsLoopScanOutputkeysLoopHandleOutput)).append("\n"); + sb.append(" txMixinCount: ").append(toIndentedString(txMixinCount)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + + public static HashSet openapiFields; + public static HashSet openapiRequiredFields; + + static { + // a set of all properties/fields (JSON key names) + openapiFields = new HashSet(Arrays.asList("tx_check_inputs", "tx_add_one_tx", "tx_process_extra", "tx_process_attachment", "tx_process_inputs", "tx_push_global_index", "tx_check_exist", "tx_print_log", "tx_prapare_append", "tx_append", "tx_append_rl_wait", "tx_append_is_expired", "tx_store_db", "tx_check_inputs_prefix_hash", "tx_check_inputs_attachment_check", "tx_check_inputs_loop", "tx_check_inputs_loop_kimage_check", "tx_check_inputs_loop_ch_in_val_sig", "tx_check_inputs_loop_scan_outputkeys_get_item_size", "tx_check_inputs_loop_scan_outputkeys_relative_to_absolute", "tx_check_inputs_loop_scan_outputkeys_loop", "tx_check_inputs_loop_scan_outputkeys_loop_get_subitem", "tx_check_inputs_loop_scan_outputkeys_loop_find_tx", "tx_check_inputs_loop_scan_outputkeys_loop_handle_output", "tx_mixin_count")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * Validates the JSON Element and throws an exception if issues found + * + * @param jsonElement JSON Element + * @throws IOException if the JSON Element is invalid with respect to TxProcessingPerformanceModel + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!TxProcessingPerformanceModel.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in TxProcessingPerformanceModel is not found in the empty JSON string", TxProcessingPerformanceModel.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!TxProcessingPerformanceModel.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` in the JSON string is not defined in the `TxProcessingPerformanceModel` properties. JSON: %s", entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!TxProcessingPerformanceModel.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'TxProcessingPerformanceModel' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter + = gson.getDelegateAdapter(this, TypeToken.get(TxProcessingPerformanceModel.class)); + + return (TypeAdapter) new TypeAdapter() { + @Override + public void write(JsonWriter out, TxProcessingPerformanceModel value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public TxProcessingPerformanceModel read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + + }.nullSafe(); + } + } + + /** + * Create an instance of TxProcessingPerformanceModel given an JSON string + * + * @param jsonString JSON string + * @return An instance of TxProcessingPerformanceModel + * @throws IOException if the JSON string is invalid with respect to TxProcessingPerformanceModel + */ + public static TxProcessingPerformanceModel fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, TxProcessingPerformanceModel.class); + } + + /** + * Convert an instance of TxProcessingPerformanceModel to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} + diff --git a/utils/sdk/client/java/src/main/java/org/openapitools/client/model/VersionModel.java b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/VersionModel.java new file mode 100644 index 00000000..f82fb6fc --- /dev/null +++ b/utils/sdk/client/java/src/main/java/org/openapitools/client/model/VersionModel.java @@ -0,0 +1,323 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import java.util.Objects; +import java.util.Locale; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Locale; + +import invalidPackageName.JSON; + +/** + * VersionModel + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0") +public class VersionModel { + public static final String SERIALIZED_NAME_VERSION = "version"; + @SerializedName(SERIALIZED_NAME_VERSION) + @javax.annotation.Nullable + private String version; + + public static final String SERIALIZED_NAME_VERSION_LONG = "version_long"; + @SerializedName(SERIALIZED_NAME_VERSION_LONG) + @javax.annotation.Nullable + private String versionLong; + + public static final String SERIALIZED_NAME_MAJOR = "major"; + @SerializedName(SERIALIZED_NAME_MAJOR) + @javax.annotation.Nullable + private String major; + + public static final String SERIALIZED_NAME_MINOR = "minor"; + @SerializedName(SERIALIZED_NAME_MINOR) + @javax.annotation.Nullable + private String minor; + + public static final String SERIALIZED_NAME_REVISION = "revision"; + @SerializedName(SERIALIZED_NAME_REVISION) + @javax.annotation.Nullable + private String revision; + + public VersionModel() { + } + + public VersionModel version(@javax.annotation.Nullable String version) { + this.version = version; + return this; + } + + /** + * Get version + * @return version + */ + @javax.annotation.Nullable + public String getVersion() { + return version; + } + + public void setVersion(@javax.annotation.Nullable String version) { + this.version = version; + } + + + public VersionModel versionLong(@javax.annotation.Nullable String versionLong) { + this.versionLong = versionLong; + return this; + } + + /** + * Get versionLong + * @return versionLong + */ + @javax.annotation.Nullable + public String getVersionLong() { + return versionLong; + } + + public void setVersionLong(@javax.annotation.Nullable String versionLong) { + this.versionLong = versionLong; + } + + + public VersionModel major(@javax.annotation.Nullable String major) { + this.major = major; + return this; + } + + /** + * Get major + * @return major + */ + @javax.annotation.Nullable + public String getMajor() { + return major; + } + + public void setMajor(@javax.annotation.Nullable String major) { + this.major = major; + } + + + public VersionModel minor(@javax.annotation.Nullable String minor) { + this.minor = minor; + return this; + } + + /** + * Get minor + * @return minor + */ + @javax.annotation.Nullable + public String getMinor() { + return minor; + } + + public void setMinor(@javax.annotation.Nullable String minor) { + this.minor = minor; + } + + + public VersionModel revision(@javax.annotation.Nullable String revision) { + this.revision = revision; + return this; + } + + /** + * Get revision + * @return revision + */ + @javax.annotation.Nullable + public String getRevision() { + return revision; + } + + public void setRevision(@javax.annotation.Nullable String revision) { + this.revision = revision; + } + + + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + VersionModel versionModel = (VersionModel) o; + return Objects.equals(this.version, versionModel.version) && + Objects.equals(this.versionLong, versionModel.versionLong) && + Objects.equals(this.major, versionModel.major) && + Objects.equals(this.minor, versionModel.minor) && + Objects.equals(this.revision, versionModel.revision); + } + + @Override + public int hashCode() { + return Objects.hash(version, versionLong, major, minor, revision); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class VersionModel {\n"); + sb.append(" version: ").append(toIndentedString(version)).append("\n"); + sb.append(" versionLong: ").append(toIndentedString(versionLong)).append("\n"); + sb.append(" major: ").append(toIndentedString(major)).append("\n"); + sb.append(" minor: ").append(toIndentedString(minor)).append("\n"); + sb.append(" revision: ").append(toIndentedString(revision)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + + + public static HashSet openapiFields; + public static HashSet openapiRequiredFields; + + static { + // a set of all properties/fields (JSON key names) + openapiFields = new HashSet(Arrays.asList("version", "version_long", "major", "minor", "revision")); + + // a set of required properties/fields (JSON key names) + openapiRequiredFields = new HashSet(0); + } + + /** + * Validates the JSON Element and throws an exception if issues found + * + * @param jsonElement JSON Element + * @throws IOException if the JSON Element is invalid with respect to VersionModel + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + if (jsonElement == null) { + if (!VersionModel.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null + throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in VersionModel is not found in the empty JSON string", VersionModel.openapiRequiredFields.toString())); + } + } + + Set> entries = jsonElement.getAsJsonObject().entrySet(); + // check to see if the JSON string contains additional fields + for (Map.Entry entry : entries) { + if (!VersionModel.openapiFields.contains(entry.getKey())) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` in the JSON string is not defined in the `VersionModel` properties. JSON: %s", entry.getKey(), jsonElement.toString())); + } + } + JsonObject jsonObj = jsonElement.getAsJsonObject(); + if ((jsonObj.get("version") != null && !jsonObj.get("version").isJsonNull()) && !jsonObj.get("version").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `version` to be a primitive type in the JSON string but got `%s`", jsonObj.get("version").toString())); + } + if ((jsonObj.get("version_long") != null && !jsonObj.get("version_long").isJsonNull()) && !jsonObj.get("version_long").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `version_long` to be a primitive type in the JSON string but got `%s`", jsonObj.get("version_long").toString())); + } + if ((jsonObj.get("major") != null && !jsonObj.get("major").isJsonNull()) && !jsonObj.get("major").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `major` to be a primitive type in the JSON string but got `%s`", jsonObj.get("major").toString())); + } + if ((jsonObj.get("minor") != null && !jsonObj.get("minor").isJsonNull()) && !jsonObj.get("minor").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `minor` to be a primitive type in the JSON string but got `%s`", jsonObj.get("minor").toString())); + } + if ((jsonObj.get("revision") != null && !jsonObj.get("revision").isJsonNull()) && !jsonObj.get("revision").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format(Locale.ROOT, "Expected the field `revision` to be a primitive type in the JSON string but got `%s`", jsonObj.get("revision").toString())); + } + } + + public static class CustomTypeAdapterFactory implements TypeAdapterFactory { + @SuppressWarnings("unchecked") + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (!VersionModel.class.isAssignableFrom(type.getRawType())) { + return null; // this class only serializes 'VersionModel' and its subtypes + } + final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); + final TypeAdapter thisAdapter + = gson.getDelegateAdapter(this, TypeToken.get(VersionModel.class)); + + return (TypeAdapter) new TypeAdapter() { + @Override + public void write(JsonWriter out, VersionModel value) throws IOException { + JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); + elementAdapter.write(out, obj); + } + + @Override + public VersionModel read(JsonReader in) throws IOException { + JsonElement jsonElement = elementAdapter.read(in); + validateJsonElement(jsonElement); + return thisAdapter.fromJsonTree(jsonElement); + } + + }.nullSafe(); + } + } + + /** + * Create an instance of VersionModel given an JSON string + * + * @param jsonString JSON string + * @return An instance of VersionModel + * @throws IOException if the JSON string is invalid with respect to VersionModel + */ + public static VersionModel fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, VersionModel.class); + } + + /** + * Convert an instance of VersionModel to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } +} + diff --git a/utils/sdk/client/java/src/test/java/lthn/BlockApiTest.java b/utils/sdk/client/java/src/test/java/lthn/BlockApiTest.java new file mode 100644 index 00000000..ebcf1ea0 --- /dev/null +++ b/utils/sdk/client/java/src/test/java/lthn/BlockApiTest.java @@ -0,0 +1,97 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package lthn; + +import invalidPackageName.ApiException; +import org.openapitools.client.model.BlockDetailsModel; +import org.openapitools.client.model.BlockTemplateModel; +import org.openapitools.client.model.BlockTemplateRequestModel; +import org.openapitools.client.model.HeightModel; +import org.openapitools.client.model.SubmitBlockRequestModel; +import org.openapitools.client.model.SubmitBlockResponseModel; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * API tests for BlockApi + */ +@Disabled +public class BlockApiTest { + + private final BlockApi api = new BlockApi(); + + /** + * Create a block template for mining + * + * @throws ApiException if the Api call fails + */ + @Test + public void createBlockTemplateTest() throws ApiException { + BlockTemplateRequestModel blockTemplateRequestModel = null; + BlockTemplateModel response = api.createBlockTemplate(blockTemplateRequestModel); + // TODO: test validations + } + + /** + * Get a block by its hash or height (ID) + * + * @throws ApiException if the Api call fails + */ + @Test + public void getBlockTest() throws ApiException { + String identifier = null; + BlockDetailsModel response = api.getBlock(identifier); + // TODO: test validations + } + + /** + * Get one or more blocks, with optional pagination. + * + * @throws ApiException if the Api call fails + */ + @Test + public void getBlocksTest() throws ApiException { + List response = api.getBlocks(); + // TODO: test validations + } + + /** + * Get the current blockchain height + * + * @throws ApiException if the Api call fails + */ + @Test + public void getHeightTest() throws ApiException { + HeightModel response = api.getHeight(); + // TODO: test validations + } + + /** + * Submit a new block to the network + * + * @throws ApiException if the Api call fails + */ + @Test + public void submitBlockTest() throws ApiException { + SubmitBlockRequestModel submitBlockRequestModel = null; + SubmitBlockResponseModel response = api.submitBlock(submitBlockRequestModel); + // TODO: test validations + } + +} diff --git a/utils/sdk/client/java/src/test/java/lthn/InfoApiTest.java b/utils/sdk/client/java/src/test/java/lthn/InfoApiTest.java new file mode 100644 index 00000000..bec7e1db --- /dev/null +++ b/utils/sdk/client/java/src/test/java/lthn/InfoApiTest.java @@ -0,0 +1,60 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package lthn; + +import invalidPackageName.ApiException; +import org.openapitools.client.model.InfoModel; +import org.openapitools.client.model.VersionModel; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * API tests for InfoApi + */ +@Disabled +public class InfoApiTest { + + private final InfoApi api = new InfoApi(); + + /** + * Get detailed information about the blockchain and daemon state + * + * @throws ApiException if the Api call fails + */ + @Test + public void getInfoTest() throws ApiException { + String flags = null; + InfoModel response = api.getInfo(flags); + // TODO: test validations + } + + /** + * Get API version + * + * Returns the current version of the API. + * + * @throws ApiException if the Api call fails + */ + @Test + public void versionTest() throws ApiException { + VersionModel response = api.version(); + // TODO: test validations + } + +} diff --git a/utils/sdk/client/java/src/test/java/org/lthn/api/BlockApiTest.java b/utils/sdk/client/java/src/test/java/org/lthn/api/BlockApiTest.java new file mode 100644 index 00000000..5a30e582 --- /dev/null +++ b/utils/sdk/client/java/src/test/java/org/lthn/api/BlockApiTest.java @@ -0,0 +1,97 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.lthn.api; + +import org.lthn.ApiException; +import org.openapitools.client.model.BlockDetailsModel; +import org.openapitools.client.model.BlockTemplateModel; +import org.openapitools.client.model.BlockTemplateRequestModel; +import org.openapitools.client.model.HeightModel; +import org.openapitools.client.model.SubmitBlockRequestModel; +import org.openapitools.client.model.SubmitBlockResponseModel; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * API tests for BlockApi + */ +@Disabled +public class BlockApiTest { + + private final BlockApi api = new BlockApi(); + + /** + * Create a block template for mining + * + * @throws ApiException if the Api call fails + */ + @Test + public void createBlockTemplateTest() throws ApiException { + BlockTemplateRequestModel blockTemplateRequestModel = null; + BlockTemplateModel response = api.createBlockTemplate(blockTemplateRequestModel); + // TODO: test validations + } + + /** + * Get a block by its hash or height (ID) + * + * @throws ApiException if the Api call fails + */ + @Test + public void getBlockTest() throws ApiException { + String identifier = null; + BlockDetailsModel response = api.getBlock(identifier); + // TODO: test validations + } + + /** + * Get one or more blocks, with optional pagination. + * + * @throws ApiException if the Api call fails + */ + @Test + public void getBlocksTest() throws ApiException { + List response = api.getBlocks(); + // TODO: test validations + } + + /** + * Get the current blockchain height + * + * @throws ApiException if the Api call fails + */ + @Test + public void getHeightTest() throws ApiException { + HeightModel response = api.getHeight(); + // TODO: test validations + } + + /** + * Submit a new block to the network + * + * @throws ApiException if the Api call fails + */ + @Test + public void submitBlockTest() throws ApiException { + SubmitBlockRequestModel submitBlockRequestModel = null; + SubmitBlockResponseModel response = api.submitBlock(submitBlockRequestModel); + // TODO: test validations + } + +} diff --git a/utils/sdk/client/java/src/test/java/org/lthn/api/InfoApiTest.java b/utils/sdk/client/java/src/test/java/org/lthn/api/InfoApiTest.java new file mode 100644 index 00000000..380682e8 --- /dev/null +++ b/utils/sdk/client/java/src/test/java/org/lthn/api/InfoApiTest.java @@ -0,0 +1,60 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.lthn.api; + +import org.lthn.ApiException; +import org.openapitools.client.model.InfoModel; +import org.openapitools.client.model.VersionModel; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * API tests for InfoApi + */ +@Disabled +public class InfoApiTest { + + private final InfoApi api = new InfoApi(); + + /** + * Get detailed information about the blockchain and daemon state + * + * @throws ApiException if the Api call fails + */ + @Test + public void getInfoTest() throws ApiException { + String flags = null; + InfoModel response = api.getInfo(flags); + // TODO: test validations + } + + /** + * Get API version + * + * Returns the current version of the API. + * + * @throws ApiException if the Api call fails + */ + @Test + public void versionTest() throws ApiException { + VersionModel response = api.version(); + // TODO: test validations + } + +} diff --git a/utils/sdk/client/java/src/test/java/org/openapitools/client/api/BlockApiTest.java b/utils/sdk/client/java/src/test/java/org/openapitools/client/api/BlockApiTest.java new file mode 100644 index 00000000..09f56f08 --- /dev/null +++ b/utils/sdk/client/java/src/test/java/org/openapitools/client/api/BlockApiTest.java @@ -0,0 +1,97 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.api; + +import org.openapitools.client.ApiException; +import org.openapitools.client.model.BlockDetailsModel; +import org.openapitools.client.model.BlockTemplateModel; +import org.openapitools.client.model.BlockTemplateRequestModel; +import org.openapitools.client.model.HeightModel; +import org.openapitools.client.model.SubmitBlockRequestModel; +import org.openapitools.client.model.SubmitBlockResponseModel; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * API tests for BlockApi + */ +@Disabled +public class BlockApiTest { + + private final BlockApi api = new BlockApi(); + + /** + * Create a block template for mining + * + * @throws ApiException if the Api call fails + */ + @Test + public void createBlockTemplateTest() throws ApiException { + BlockTemplateRequestModel blockTemplateRequestModel = null; + BlockTemplateModel response = api.createBlockTemplate(blockTemplateRequestModel); + // TODO: test validations + } + + /** + * Get a block by its hash or height (ID) + * + * @throws ApiException if the Api call fails + */ + @Test + public void getBlockTest() throws ApiException { + String identifier = null; + BlockDetailsModel response = api.getBlock(identifier); + // TODO: test validations + } + + /** + * Get one or more blocks, with optional pagination. + * + * @throws ApiException if the Api call fails + */ + @Test + public void getBlocksTest() throws ApiException { + List response = api.getBlocks(); + // TODO: test validations + } + + /** + * Get the current blockchain height + * + * @throws ApiException if the Api call fails + */ + @Test + public void getHeightTest() throws ApiException { + HeightModel response = api.getHeight(); + // TODO: test validations + } + + /** + * Submit a new block to the network + * + * @throws ApiException if the Api call fails + */ + @Test + public void submitBlockTest() throws ApiException { + SubmitBlockRequestModel submitBlockRequestModel = null; + SubmitBlockResponseModel response = api.submitBlock(submitBlockRequestModel); + // TODO: test validations + } + +} diff --git a/utils/sdk/client/java/src/test/java/org/openapitools/client/api/InfoApiTest.java b/utils/sdk/client/java/src/test/java/org/openapitools/client/api/InfoApiTest.java new file mode 100644 index 00000000..6a0640ab --- /dev/null +++ b/utils/sdk/client/java/src/test/java/org/openapitools/client/api/InfoApiTest.java @@ -0,0 +1,60 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.api; + +import org.openapitools.client.ApiException; +import org.openapitools.client.model.InfoModel; +import org.openapitools.client.model.VersionModel; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * API tests for InfoApi + */ +@Disabled +public class InfoApiTest { + + private final InfoApi api = new InfoApi(); + + /** + * Get detailed information about the blockchain and daemon state + * + * @throws ApiException if the Api call fails + */ + @Test + public void getInfoTest() throws ApiException { + String flags = null; + InfoModel response = api.getInfo(flags); + // TODO: test validations + } + + /** + * Get API version + * + * Returns the current version of the API. + * + * @throws ApiException if the Api call fails + */ + @Test + public void versionTest() throws ApiException { + VersionModel response = api.version(); + // TODO: test validations + } + +} diff --git a/utils/sdk/client/java/src/test/java/org/openapitools/client/model/BlockDetailsModelTest.java b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/BlockDetailsModelTest.java new file mode 100644 index 00000000..db71b526 --- /dev/null +++ b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/BlockDetailsModelTest.java @@ -0,0 +1,243 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import org.openapitools.client.model.TransactionDetailsModel; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for BlockDetailsModel + */ +public class BlockDetailsModelTest { + private final BlockDetailsModel model = new BlockDetailsModel(); + + /** + * Model tests for BlockDetailsModel + */ + @Test + public void testBlockDetailsModel() { + // TODO: test BlockDetailsModel + } + + /** + * Test the property 'actualTimestamp' + */ + @Test + public void actualTimestampTest() { + // TODO: test actualTimestamp + } + + /** + * Test the property 'alreadyGeneratedCoins' + */ + @Test + public void alreadyGeneratedCoinsTest() { + // TODO: test alreadyGeneratedCoins + } + + /** + * Test the property 'baseReward' + */ + @Test + public void baseRewardTest() { + // TODO: test baseReward + } + + /** + * Test the property 'blob' + */ + @Test + public void blobTest() { + // TODO: test blob + } + + /** + * Test the property 'blockCumulativeSize' + */ + @Test + public void blockCumulativeSizeTest() { + // TODO: test blockCumulativeSize + } + + /** + * Test the property 'blockTselfSize' + */ + @Test + public void blockTselfSizeTest() { + // TODO: test blockTselfSize + } + + /** + * Test the property 'cumulativeDiffAdjusted' + */ + @Test + public void cumulativeDiffAdjustedTest() { + // TODO: test cumulativeDiffAdjusted + } + + /** + * Test the property 'cumulativeDiffPrecise' + */ + @Test + public void cumulativeDiffPreciseTest() { + // TODO: test cumulativeDiffPrecise + } + + /** + * Test the property 'difficulty' + */ + @Test + public void difficultyTest() { + // TODO: test difficulty + } + + /** + * Test the property 'effectiveFeeMedian' + */ + @Test + public void effectiveFeeMedianTest() { + // TODO: test effectiveFeeMedian + } + + /** + * Test the property 'height' + */ + @Test + public void heightTest() { + // TODO: test height + } + + /** + * Test the property 'id' + */ + @Test + public void idTest() { + // TODO: test id + } + + /** + * Test the property 'isOrphan' + */ + @Test + public void isOrphanTest() { + // TODO: test isOrphan + } + + /** + * Test the property 'minerTextInfo' + */ + @Test + public void minerTextInfoTest() { + // TODO: test minerTextInfo + } + + /** + * Test the property 'objectInJson' + */ + @Test + public void objectInJsonTest() { + // TODO: test objectInJson + } + + /** + * Test the property 'penalty' + */ + @Test + public void penaltyTest() { + // TODO: test penalty + } + + /** + * Test the property 'powSeed' + */ + @Test + public void powSeedTest() { + // TODO: test powSeed + } + + /** + * Test the property 'prevId' + */ + @Test + public void prevIdTest() { + // TODO: test prevId + } + + /** + * Test the property 'summaryReward' + */ + @Test + public void summaryRewardTest() { + // TODO: test summaryReward + } + + /** + * Test the property 'thisBlockFeeMedian' + */ + @Test + public void thisBlockFeeMedianTest() { + // TODO: test thisBlockFeeMedian + } + + /** + * Test the property 'timestamp' + */ + @Test + public void timestampTest() { + // TODO: test timestamp + } + + /** + * Test the property 'totalFee' + */ + @Test + public void totalFeeTest() { + // TODO: test totalFee + } + + /** + * Test the property 'totalTxsSize' + */ + @Test + public void totalTxsSizeTest() { + // TODO: test totalTxsSize + } + + /** + * Test the property 'transactionsDetails' + */ + @Test + public void transactionsDetailsTest() { + // TODO: test transactionsDetails + } + + /** + * Test the property 'type' + */ + @Test + public void typeTest() { + // TODO: test type + } + +} diff --git a/utils/sdk/client/java/src/test/java/org/openapitools/client/model/BlockProcessingPerformanceModelTest.java b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/BlockProcessingPerformanceModelTest.java new file mode 100644 index 00000000..4ad38274 --- /dev/null +++ b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/BlockProcessingPerformanceModelTest.java @@ -0,0 +1,168 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for BlockProcessingPerformanceModel + */ +public class BlockProcessingPerformanceModelTest { + private final BlockProcessingPerformanceModel model = new BlockProcessingPerformanceModel(); + + /** + * Model tests for BlockProcessingPerformanceModel + */ + @Test + public void testBlockProcessingPerformanceModel() { + // TODO: test BlockProcessingPerformanceModel + } + + /** + * Test the property 'blockProcessingTime0' + */ + @Test + public void blockProcessingTime0Test() { + // TODO: test blockProcessingTime0 + } + + /** + * Test the property 'blockProcessingTime1' + */ + @Test + public void blockProcessingTime1Test() { + // TODO: test blockProcessingTime1 + } + + /** + * Test the property 'targetCalculatingTime2' + */ + @Test + public void targetCalculatingTime2Test() { + // TODO: test targetCalculatingTime2 + } + + /** + * Test the property 'longhashCalculatingTime3' + */ + @Test + public void longhashCalculatingTime3Test() { + // TODO: test longhashCalculatingTime3 + } + + /** + * Test the property 'allTxsInsertTime5' + */ + @Test + public void allTxsInsertTime5Test() { + // TODO: test allTxsInsertTime5 + } + + /** + * Test the property 'etcStuff6' + */ + @Test + public void etcStuff6Test() { + // TODO: test etcStuff6 + } + + /** + * Test the property 'insertTime4' + */ + @Test + public void insertTime4Test() { + // TODO: test insertTime4 + } + + /** + * Test the property 'raiseBlockCoreEvent' + */ + @Test + public void raiseBlockCoreEventTest() { + // TODO: test raiseBlockCoreEvent + } + + /** + * Test the property 'validateMinerTransactionTime' + */ + @Test + public void validateMinerTransactionTimeTest() { + // TODO: test validateMinerTransactionTime + } + + /** + * Test the property 'collectRangeproofsDataFromTxTime' + */ + @Test + public void collectRangeproofsDataFromTxTimeTest() { + // TODO: test collectRangeproofsDataFromTxTime + } + + /** + * Test the property 'verifyMultipleZcOutsRangeProofsTime' + */ + @Test + public void verifyMultipleZcOutsRangeProofsTimeTest() { + // TODO: test verifyMultipleZcOutsRangeProofsTime + } + + /** + * Test the property 'targetCalculatingEnumBlocks' + */ + @Test + public void targetCalculatingEnumBlocksTest() { + // TODO: test targetCalculatingEnumBlocks + } + + /** + * Test the property 'targetCalculatingCalc' + */ + @Test + public void targetCalculatingCalcTest() { + // TODO: test targetCalculatingCalc + } + + /** + * Test the property 'posValidateKiSearch' + */ + @Test + public void posValidateKiSearchTest() { + // TODO: test posValidateKiSearch + } + + /** + * Test the property 'posValidateGetOutKeysForInputs' + */ + @Test + public void posValidateGetOutKeysForInputsTest() { + // TODO: test posValidateGetOutKeysForInputs + } + + /** + * Test the property 'posValidateZvp' + */ + @Test + public void posValidateZvpTest() { + // TODO: test posValidateZvp + } + +} diff --git a/utils/sdk/client/java/src/test/java/org/openapitools/client/model/BlockTemplateModelTest.java b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/BlockTemplateModelTest.java new file mode 100644 index 00000000..4fbf4d9f --- /dev/null +++ b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/BlockTemplateModelTest.java @@ -0,0 +1,113 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; +import org.openapitools.client.model.TxGenerationContextModel; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for BlockTemplateModel + */ +public class BlockTemplateModelTest { + private final BlockTemplateModel model = new BlockTemplateModel(); + + /** + * Model tests for BlockTemplateModel + */ + @Test + public void testBlockTemplateModel() { + // TODO: test BlockTemplateModel + } + + /** + * Test the property 'blocktemplateBlob' + */ + @Test + public void blocktemplateBlobTest() { + // TODO: test blocktemplateBlob + } + + /** + * Test the property 'difficulty' + */ + @Test + public void difficultyTest() { + // TODO: test difficulty + } + + /** + * Test the property 'height' + */ + @Test + public void heightTest() { + // TODO: test height + } + + /** + * Test the property 'minerTxTgc' + */ + @Test + public void minerTxTgcTest() { + // TODO: test minerTxTgc + } + + /** + * Test the property 'blockRewardWithoutFee' + */ + @Test + public void blockRewardWithoutFeeTest() { + // TODO: test blockRewardWithoutFee + } + + /** + * Test the property 'blockReward' + */ + @Test + public void blockRewardTest() { + // TODO: test blockReward + } + + /** + * Test the property 'txsFee' + */ + @Test + public void txsFeeTest() { + // TODO: test txsFee + } + + /** + * Test the property 'prevHash' + */ + @Test + public void prevHashTest() { + // TODO: test prevHash + } + + /** + * Test the property 'seed' + */ + @Test + public void seedTest() { + // TODO: test seed + } + +} diff --git a/utils/sdk/client/java/src/test/java/org/openapitools/client/model/BlockTemplateRequestModelTest.java b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/BlockTemplateRequestModelTest.java new file mode 100644 index 00000000..41b86325 --- /dev/null +++ b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/BlockTemplateRequestModelTest.java @@ -0,0 +1,99 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import org.openapitools.client.model.PosEntryModel; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for BlockTemplateRequestModel + */ +public class BlockTemplateRequestModelTest { + private final BlockTemplateRequestModel model = new BlockTemplateRequestModel(); + + /** + * Model tests for BlockTemplateRequestModel + */ + @Test + public void testBlockTemplateRequestModel() { + // TODO: test BlockTemplateRequestModel + } + + /** + * Test the property 'minerAddress' + */ + @Test + public void minerAddressTest() { + // TODO: test minerAddress + } + + /** + * Test the property 'stakeholderAddress' + */ + @Test + public void stakeholderAddressTest() { + // TODO: test stakeholderAddress + } + + /** + * Test the property 'exNonce' + */ + @Test + public void exNonceTest() { + // TODO: test exNonce + } + + /** + * Test the property 'posBlock' + */ + @Test + public void posBlockTest() { + // TODO: test posBlock + } + + /** + * Test the property 'ignorePowTsCheck' + */ + @Test + public void ignorePowTsCheckTest() { + // TODO: test ignorePowTsCheck + } + + /** + * Test the property 'pe' + */ + @Test + public void peTest() { + // TODO: test pe + } + + /** + * Test the property 'explicitTxs' + */ + @Test + public void explicitTxsTest() { + // TODO: test explicitTxs + } + +} diff --git a/utils/sdk/client/java/src/test/java/org/openapitools/client/model/DbStatInfoModelTest.java b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/DbStatInfoModelTest.java new file mode 100644 index 00000000..194476df --- /dev/null +++ b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/DbStatInfoModelTest.java @@ -0,0 +1,64 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for DbStatInfoModel + */ +public class DbStatInfoModelTest { + private final DbStatInfoModel model = new DbStatInfoModel(); + + /** + * Model tests for DbStatInfoModel + */ + @Test + public void testDbStatInfoModel() { + // TODO: test DbStatInfoModel + } + + /** + * Test the property 'txCount' + */ + @Test + public void txCountTest() { + // TODO: test txCount + } + + /** + * Test the property 'writeTxCount' + */ + @Test + public void writeTxCountTest() { + // TODO: test writeTxCount + } + + /** + * Test the property 'mapSize' + */ + @Test + public void mapSizeTest() { + // TODO: test mapSize + } + +} diff --git a/utils/sdk/client/java/src/test/java/org/openapitools/client/model/HeightModelTest.java b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/HeightModelTest.java new file mode 100644 index 00000000..022358a9 --- /dev/null +++ b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/HeightModelTest.java @@ -0,0 +1,48 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for HeightModel + */ +public class HeightModelTest { + private final HeightModel model = new HeightModel(); + + /** + * Model tests for HeightModel + */ + @Test + public void testHeightModel() { + // TODO: test HeightModel + } + + /** + * Test the property 'height' + */ + @Test + public void heightTest() { + // TODO: test height + } + +} diff --git a/utils/sdk/client/java/src/test/java/org/openapitools/client/model/InfoModelTest.java b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/InfoModelTest.java new file mode 100644 index 00000000..b079f408 --- /dev/null +++ b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/InfoModelTest.java @@ -0,0 +1,414 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.openapitools.client.model.MaintainersInfoModel; +import org.openapitools.client.model.PerformanceModel; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for InfoModel + */ +public class InfoModelTest { + private final InfoModel model = new InfoModel(); + + /** + * Model tests for InfoModel + */ + @Test + public void testInfoModel() { + // TODO: test InfoModel + } + + /** + * Test the property 'height' + */ + @Test + public void heightTest() { + // TODO: test height + } + + /** + * Test the property 'txCount' + */ + @Test + public void txCountTest() { + // TODO: test txCount + } + + /** + * Test the property 'txPoolSize' + */ + @Test + public void txPoolSizeTest() { + // TODO: test txPoolSize + } + + /** + * Test the property 'altBlocksCount' + */ + @Test + public void altBlocksCountTest() { + // TODO: test altBlocksCount + } + + /** + * Test the property 'outgoingConnectionsCount' + */ + @Test + public void outgoingConnectionsCountTest() { + // TODO: test outgoingConnectionsCount + } + + /** + * Test the property 'incomingConnectionsCount' + */ + @Test + public void incomingConnectionsCountTest() { + // TODO: test incomingConnectionsCount + } + + /** + * Test the property 'synchronizedConnectionsCount' + */ + @Test + public void synchronizedConnectionsCountTest() { + // TODO: test synchronizedConnectionsCount + } + + /** + * Test the property 'whitePeerlistSize' + */ + @Test + public void whitePeerlistSizeTest() { + // TODO: test whitePeerlistSize + } + + /** + * Test the property 'greyPeerlistSize' + */ + @Test + public void greyPeerlistSizeTest() { + // TODO: test greyPeerlistSize + } + + /** + * Test the property 'currentBlocksMedian' + */ + @Test + public void currentBlocksMedianTest() { + // TODO: test currentBlocksMedian + } + + /** + * Test the property 'aliasCount' + */ + @Test + public void aliasCountTest() { + // TODO: test aliasCount + } + + /** + * Test the property 'currentMaxAllowedBlockSize' + */ + @Test + public void currentMaxAllowedBlockSizeTest() { + // TODO: test currentMaxAllowedBlockSize + } + + /** + * Test the property 'daemonNetworkState' + */ + @Test + public void daemonNetworkStateTest() { + // TODO: test daemonNetworkState + } + + /** + * Test the property 'synchronizationStartHeight' + */ + @Test + public void synchronizationStartHeightTest() { + // TODO: test synchronizationStartHeight + } + + /** + * Test the property 'maxNetSeenHeight' + */ + @Test + public void maxNetSeenHeightTest() { + // TODO: test maxNetSeenHeight + } + + /** + * Test the property 'mi' + */ + @Test + public void miTest() { + // TODO: test mi + } + + /** + * Test the property 'posAllowed' + */ + @Test + public void posAllowedTest() { + // TODO: test posAllowed + } + + /** + * Test the property 'posDifficulty' + */ + @Test + public void posDifficultyTest() { + // TODO: test posDifficulty + } + + /** + * Test the property 'powDifficulty' + */ + @Test + public void powDifficultyTest() { + // TODO: test powDifficulty + } + + /** + * Test the property 'defaultFee' + */ + @Test + public void defaultFeeTest() { + // TODO: test defaultFee + } + + /** + * Test the property 'minimumFee' + */ + @Test + public void minimumFeeTest() { + // TODO: test minimumFee + } + + /** + * Test the property 'isHardforkActive' + */ + @Test + public void isHardforkActiveTest() { + // TODO: test isHardforkActive + } + + /** + * Test the property 'netTimeDeltaMedian' + */ + @Test + public void netTimeDeltaMedianTest() { + // TODO: test netTimeDeltaMedian + } + + /** + * Test the property 'currentNetworkHashrate50' + */ + @Test + public void currentNetworkHashrate50Test() { + // TODO: test currentNetworkHashrate50 + } + + /** + * Test the property 'currentNetworkHashrate350' + */ + @Test + public void currentNetworkHashrate350Test() { + // TODO: test currentNetworkHashrate350 + } + + /** + * Test the property 'secondsFor10Blocks' + */ + @Test + public void secondsFor10BlocksTest() { + // TODO: test secondsFor10Blocks + } + + /** + * Test the property 'secondsFor30Blocks' + */ + @Test + public void secondsFor30BlocksTest() { + // TODO: test secondsFor30Blocks + } + + /** + * Test the property 'transactionsCntPerDay' + */ + @Test + public void transactionsCntPerDayTest() { + // TODO: test transactionsCntPerDay + } + + /** + * Test the property 'transactionsVolumePerDay' + */ + @Test + public void transactionsVolumePerDayTest() { + // TODO: test transactionsVolumePerDay + } + + /** + * Test the property 'lastPosTimestamp' + */ + @Test + public void lastPosTimestampTest() { + // TODO: test lastPosTimestamp + } + + /** + * Test the property 'lastPowTimestamp' + */ + @Test + public void lastPowTimestampTest() { + // TODO: test lastPowTimestamp + } + + /** + * Test the property 'totalCoins' + */ + @Test + public void totalCoinsTest() { + // TODO: test totalCoins + } + + /** + * Test the property 'lastBlockSize' + */ + @Test + public void lastBlockSizeTest() { + // TODO: test lastBlockSize + } + + /** + * Test the property 'txCountInLastBlock' + */ + @Test + public void txCountInLastBlockTest() { + // TODO: test txCountInLastBlock + } + + /** + * Test the property 'posSequenceFactor' + */ + @Test + public void posSequenceFactorTest() { + // TODO: test posSequenceFactor + } + + /** + * Test the property 'powSequenceFactor' + */ + @Test + public void powSequenceFactorTest() { + // TODO: test powSequenceFactor + } + + /** + * Test the property 'blockReward' + */ + @Test + public void blockRewardTest() { + // TODO: test blockReward + } + + /** + * Test the property 'lastBlockTotalReward' + */ + @Test + public void lastBlockTotalRewardTest() { + // TODO: test lastBlockTotalReward + } + + /** + * Test the property 'posDiffTotalCoinsRate' + */ + @Test + public void posDiffTotalCoinsRateTest() { + // TODO: test posDiffTotalCoinsRate + } + + /** + * Test the property 'lastBlockTimestamp' + */ + @Test + public void lastBlockTimestampTest() { + // TODO: test lastBlockTimestamp + } + + /** + * Test the property 'lastBlockHash' + */ + @Test + public void lastBlockHashTest() { + // TODO: test lastBlockHash + } + + /** + * Test the property 'posBlockTsShiftVsActual' + */ + @Test + public void posBlockTsShiftVsActualTest() { + // TODO: test posBlockTsShiftVsActual + } + + /** + * Test the property 'outsStat' + */ + @Test + public void outsStatTest() { + // TODO: test outsStat + } + + /** + * Test the property 'performanceData' + */ + @Test + public void performanceDataTest() { + // TODO: test performanceData + } + + /** + * Test the property 'offersCount' + */ + @Test + public void offersCountTest() { + // TODO: test offersCount + } + + /** + * Test the property 'expirationMedianTimestamp' + */ + @Test + public void expirationMedianTimestampTest() { + // TODO: test expirationMedianTimestamp + } + +} diff --git a/utils/sdk/client/java/src/test/java/org/openapitools/client/model/MaintainersInfoModelTest.java b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/MaintainersInfoModelTest.java new file mode 100644 index 00000000..1ac9dcb5 --- /dev/null +++ b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/MaintainersInfoModelTest.java @@ -0,0 +1,80 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for MaintainersInfoModel + */ +public class MaintainersInfoModelTest { + private final MaintainersInfoModel model = new MaintainersInfoModel(); + + /** + * Model tests for MaintainersInfoModel + */ + @Test + public void testMaintainersInfoModel() { + // TODO: test MaintainersInfoModel + } + + /** + * Test the property 'verMajor' + */ + @Test + public void verMajorTest() { + // TODO: test verMajor + } + + /** + * Test the property 'verMinor' + */ + @Test + public void verMinorTest() { + // TODO: test verMinor + } + + /** + * Test the property 'verRevision' + */ + @Test + public void verRevisionTest() { + // TODO: test verRevision + } + + /** + * Test the property 'buildNo' + */ + @Test + public void buildNoTest() { + // TODO: test buildNo + } + + /** + * Test the property 'mode' + */ + @Test + public void modeTest() { + // TODO: test mode + } + +} diff --git a/utils/sdk/client/java/src/test/java/org/openapitools/client/model/PerformanceModelTest.java b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/PerformanceModelTest.java new file mode 100644 index 00000000..4a1eb738 --- /dev/null +++ b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/PerformanceModelTest.java @@ -0,0 +1,76 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; +import org.openapitools.client.model.BlockProcessingPerformanceModel; +import org.openapitools.client.model.DbStatInfoModel; +import org.openapitools.client.model.TxPoolPerformanceModel; +import org.openapitools.client.model.TxProcessingPerformanceModel; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for PerformanceModel + */ +public class PerformanceModelTest { + private final PerformanceModel model = new PerformanceModel(); + + /** + * Model tests for PerformanceModel + */ + @Test + public void testPerformanceModel() { + // TODO: test PerformanceModel + } + + /** + * Test the property 'blockProcessing' + */ + @Test + public void blockProcessingTest() { + // TODO: test blockProcessing + } + + /** + * Test the property 'txProcessing' + */ + @Test + public void txProcessingTest() { + // TODO: test txProcessing + } + + /** + * Test the property 'txPool' + */ + @Test + public void txPoolTest() { + // TODO: test txPool + } + + /** + * Test the property 'dbStatInfo' + */ + @Test + public void dbStatInfoTest() { + // TODO: test dbStatInfo + } + +} diff --git a/utils/sdk/client/java/src/test/java/org/openapitools/client/model/PosEntryModelTest.java b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/PosEntryModelTest.java new file mode 100644 index 00000000..abc79668 --- /dev/null +++ b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/PosEntryModelTest.java @@ -0,0 +1,104 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for PosEntryModel + */ +public class PosEntryModelTest { + private final PosEntryModel model = new PosEntryModel(); + + /** + * Model tests for PosEntryModel + */ + @Test + public void testPosEntryModel() { + // TODO: test PosEntryModel + } + + /** + * Test the property 'amount' + */ + @Test + public void amountTest() { + // TODO: test amount + } + + /** + * Test the property 'gIndex' + */ + @Test + public void gIndexTest() { + // TODO: test gIndex + } + + /** + * Test the property 'keyimage' + */ + @Test + public void keyimageTest() { + // TODO: test keyimage + } + + /** + * Test the property 'blockTimestamp' + */ + @Test + public void blockTimestampTest() { + // TODO: test blockTimestamp + } + + /** + * Test the property 'stakeUnlockTime' + */ + @Test + public void stakeUnlockTimeTest() { + // TODO: test stakeUnlockTime + } + + /** + * Test the property 'txId' + */ + @Test + public void txIdTest() { + // TODO: test txId + } + + /** + * Test the property 'txOutIndex' + */ + @Test + public void txOutIndexTest() { + // TODO: test txOutIndex + } + + /** + * Test the property 'walletIndex' + */ + @Test + public void walletIndexTest() { + // TODO: test walletIndex + } + +} diff --git a/utils/sdk/client/java/src/test/java/org/openapitools/client/model/SubmitBlockRequestModelTest.java b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/SubmitBlockRequestModelTest.java new file mode 100644 index 00000000..66fbbf26 --- /dev/null +++ b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/SubmitBlockRequestModelTest.java @@ -0,0 +1,48 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for SubmitBlockRequestModel + */ +public class SubmitBlockRequestModelTest { + private final SubmitBlockRequestModel model = new SubmitBlockRequestModel(); + + /** + * Model tests for SubmitBlockRequestModel + */ + @Test + public void testSubmitBlockRequestModel() { + // TODO: test SubmitBlockRequestModel + } + + /** + * Test the property 'blockBlob' + */ + @Test + public void blockBlobTest() { + // TODO: test blockBlob + } + +} diff --git a/utils/sdk/client/java/src/test/java/org/openapitools/client/model/SubmitBlockResponseModelTest.java b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/SubmitBlockResponseModelTest.java new file mode 100644 index 00000000..6893ba70 --- /dev/null +++ b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/SubmitBlockResponseModelTest.java @@ -0,0 +1,48 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for SubmitBlockResponseModel + */ +public class SubmitBlockResponseModelTest { + private final SubmitBlockResponseModel model = new SubmitBlockResponseModel(); + + /** + * Model tests for SubmitBlockResponseModel + */ + @Test + public void testSubmitBlockResponseModel() { + // TODO: test SubmitBlockResponseModel + } + + /** + * Test the property 'status' + */ + @Test + public void statusTest() { + // TODO: test status + } + +} diff --git a/utils/sdk/client/java/src/test/java/org/openapitools/client/model/TransactionAttachmentModelTest.java b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/TransactionAttachmentModelTest.java new file mode 100644 index 00000000..cad51297 --- /dev/null +++ b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/TransactionAttachmentModelTest.java @@ -0,0 +1,64 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for TransactionAttachmentModel + */ +public class TransactionAttachmentModelTest { + private final TransactionAttachmentModel model = new TransactionAttachmentModel(); + + /** + * Model tests for TransactionAttachmentModel + */ + @Test + public void testTransactionAttachmentModel() { + // TODO: test TransactionAttachmentModel + } + + /** + * Test the property 'type' + */ + @Test + public void typeTest() { + // TODO: test type + } + + /** + * Test the property 'shortView' + */ + @Test + public void shortViewTest() { + // TODO: test shortView + } + + /** + * Test the property 'detailsView' + */ + @Test + public void detailsViewTest() { + // TODO: test detailsView + } + +} diff --git a/utils/sdk/client/java/src/test/java/org/openapitools/client/model/TransactionDetailsModelTest.java b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/TransactionDetailsModelTest.java new file mode 100644 index 00000000..acb689ca --- /dev/null +++ b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/TransactionDetailsModelTest.java @@ -0,0 +1,150 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import org.openapitools.client.model.TransactionAttachmentModel; +import org.openapitools.client.model.TransactionExtraModel; +import org.openapitools.client.model.TransactionInputModel; +import org.openapitools.client.model.TransactionOutputModel; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for TransactionDetailsModel + */ +public class TransactionDetailsModelTest { + private final TransactionDetailsModel model = new TransactionDetailsModel(); + + /** + * Model tests for TransactionDetailsModel + */ + @Test + public void testTransactionDetailsModel() { + // TODO: test TransactionDetailsModel + } + + /** + * Test the property 'amount' + */ + @Test + public void amountTest() { + // TODO: test amount + } + + /** + * Test the property 'attachments' + */ + @Test + public void attachmentsTest() { + // TODO: test attachments + } + + /** + * Test the property 'blob' + */ + @Test + public void blobTest() { + // TODO: test blob + } + + /** + * Test the property 'blobSize' + */ + @Test + public void blobSizeTest() { + // TODO: test blobSize + } + + /** + * Test the property 'extra' + */ + @Test + public void extraTest() { + // TODO: test extra + } + + /** + * Test the property 'fee' + */ + @Test + public void feeTest() { + // TODO: test fee + } + + /** + * Test the property 'id' + */ + @Test + public void idTest() { + // TODO: test id + } + + /** + * Test the property 'ins' + */ + @Test + public void insTest() { + // TODO: test ins + } + + /** + * Test the property 'keeperBlock' + */ + @Test + public void keeperBlockTest() { + // TODO: test keeperBlock + } + + /** + * Test the property 'objectInJson' + */ + @Test + public void objectInJsonTest() { + // TODO: test objectInJson + } + + /** + * Test the property 'outs' + */ + @Test + public void outsTest() { + // TODO: test outs + } + + /** + * Test the property 'pubKey' + */ + @Test + public void pubKeyTest() { + // TODO: test pubKey + } + + /** + * Test the property 'timestamp' + */ + @Test + public void timestampTest() { + // TODO: test timestamp + } + +} diff --git a/utils/sdk/client/java/src/test/java/org/openapitools/client/model/TransactionExtraModelTest.java b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/TransactionExtraModelTest.java new file mode 100644 index 00000000..ddd007c8 --- /dev/null +++ b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/TransactionExtraModelTest.java @@ -0,0 +1,64 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for TransactionExtraModel + */ +public class TransactionExtraModelTest { + private final TransactionExtraModel model = new TransactionExtraModel(); + + /** + * Model tests for TransactionExtraModel + */ + @Test + public void testTransactionExtraModel() { + // TODO: test TransactionExtraModel + } + + /** + * Test the property 'type' + */ + @Test + public void typeTest() { + // TODO: test type + } + + /** + * Test the property 'shortView' + */ + @Test + public void shortViewTest() { + // TODO: test shortView + } + + /** + * Test the property 'detailsView' + */ + @Test + public void detailsViewTest() { + // TODO: test detailsView + } + +} diff --git a/utils/sdk/client/java/src/test/java/org/openapitools/client/model/TransactionInputModelTest.java b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/TransactionInputModelTest.java new file mode 100644 index 00000000..6dc94fe5 --- /dev/null +++ b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/TransactionInputModelTest.java @@ -0,0 +1,82 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for TransactionInputModel + */ +public class TransactionInputModelTest { + private final TransactionInputModel model = new TransactionInputModel(); + + /** + * Model tests for TransactionInputModel + */ + @Test + public void testTransactionInputModel() { + // TODO: test TransactionInputModel + } + + /** + * Test the property 'amount' + */ + @Test + public void amountTest() { + // TODO: test amount + } + + /** + * Test the property 'globalIndexes' + */ + @Test + public void globalIndexesTest() { + // TODO: test globalIndexes + } + + /** + * Test the property 'htlcOrigin' + */ + @Test + public void htlcOriginTest() { + // TODO: test htlcOrigin + } + + /** + * Test the property 'kimageOrMsId' + */ + @Test + public void kimageOrMsIdTest() { + // TODO: test kimageOrMsId + } + + /** + * Test the property 'multisigCount' + */ + @Test + public void multisigCountTest() { + // TODO: test multisigCount + } + +} diff --git a/utils/sdk/client/java/src/test/java/org/openapitools/client/model/TransactionOutputModelTest.java b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/TransactionOutputModelTest.java new file mode 100644 index 00000000..b9ff9e77 --- /dev/null +++ b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/TransactionOutputModelTest.java @@ -0,0 +1,82 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for TransactionOutputModel + */ +public class TransactionOutputModelTest { + private final TransactionOutputModel model = new TransactionOutputModel(); + + /** + * Model tests for TransactionOutputModel + */ + @Test + public void testTransactionOutputModel() { + // TODO: test TransactionOutputModel + } + + /** + * Test the property 'amount' + */ + @Test + public void amountTest() { + // TODO: test amount + } + + /** + * Test the property 'globalIndex' + */ + @Test + public void globalIndexTest() { + // TODO: test globalIndex + } + + /** + * Test the property 'isSpent' + */ + @Test + public void isSpentTest() { + // TODO: test isSpent + } + + /** + * Test the property 'minimumSigs' + */ + @Test + public void minimumSigsTest() { + // TODO: test minimumSigs + } + + /** + * Test the property 'pubKeys' + */ + @Test + public void pubKeysTest() { + // TODO: test pubKeys + } + +} diff --git a/utils/sdk/client/java/src/test/java/org/openapitools/client/model/TxGenerationContextModelTest.java b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/TxGenerationContextModelTest.java new file mode 100644 index 00000000..cfb3eb6d --- /dev/null +++ b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/TxGenerationContextModelTest.java @@ -0,0 +1,234 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for TxGenerationContextModel + */ +public class TxGenerationContextModelTest { + private final TxGenerationContextModel model = new TxGenerationContextModel(); + + /** + * Model tests for TxGenerationContextModel + */ + @Test + public void testTxGenerationContextModel() { + // TODO: test TxGenerationContextModel + } + + /** + * Test the property 'assetIds' + */ + @Test + public void assetIdsTest() { + // TODO: test assetIds + } + + /** + * Test the property 'blindedAssetIds' + */ + @Test + public void blindedAssetIdsTest() { + // TODO: test blindedAssetIds + } + + /** + * Test the property 'amountCommitments' + */ + @Test + public void amountCommitmentsTest() { + // TODO: test amountCommitments + } + + /** + * Test the property 'assetIdBlindingMasks' + */ + @Test + public void assetIdBlindingMasksTest() { + // TODO: test assetIdBlindingMasks + } + + /** + * Test the property 'amounts' + */ + @Test + public void amountsTest() { + // TODO: test amounts + } + + /** + * Test the property 'amountBlindingMasks' + */ + @Test + public void amountBlindingMasksTest() { + // TODO: test amountBlindingMasks + } + + /** + * Test the property 'pseudoOutsBlindedAssetIds' + */ + @Test + public void pseudoOutsBlindedAssetIdsTest() { + // TODO: test pseudoOutsBlindedAssetIds + } + + /** + * Test the property 'pseudoOutsPlusRealOutBlindingMasks' + */ + @Test + public void pseudoOutsPlusRealOutBlindingMasksTest() { + // TODO: test pseudoOutsPlusRealOutBlindingMasks + } + + /** + * Test the property 'realZcInsAssetIds' + */ + @Test + public void realZcInsAssetIdsTest() { + // TODO: test realZcInsAssetIds + } + + /** + * Test the property 'zcInputAmounts' + */ + @Test + public void zcInputAmountsTest() { + // TODO: test zcInputAmounts + } + + /** + * Test the property 'pseudoOutAmountCommitmentsSum' + */ + @Test + public void pseudoOutAmountCommitmentsSumTest() { + // TODO: test pseudoOutAmountCommitmentsSum + } + + /** + * Test the property 'pseudoOutAmountBlindingMasksSum' + */ + @Test + public void pseudoOutAmountBlindingMasksSumTest() { + // TODO: test pseudoOutAmountBlindingMasksSum + } + + /** + * Test the property 'realInAssetIdBlindingMaskXAmountSum' + */ + @Test + public void realInAssetIdBlindingMaskXAmountSumTest() { + // TODO: test realInAssetIdBlindingMaskXAmountSum + } + + /** + * Test the property 'amountCommitmentsSum' + */ + @Test + public void amountCommitmentsSumTest() { + // TODO: test amountCommitmentsSum + } + + /** + * Test the property 'amountBlindingMasksSum' + */ + @Test + public void amountBlindingMasksSumTest() { + // TODO: test amountBlindingMasksSum + } + + /** + * Test the property 'assetIdBlindingMaskXAmountSum' + */ + @Test + public void assetIdBlindingMaskXAmountSumTest() { + // TODO: test assetIdBlindingMaskXAmountSum + } + + /** + * Test the property 'aoAssetId' + */ + @Test + public void aoAssetIdTest() { + // TODO: test aoAssetId + } + + /** + * Test the property 'aoAssetIdPt' + */ + @Test + public void aoAssetIdPtTest() { + // TODO: test aoAssetIdPt + } + + /** + * Test the property 'aoAmountCommitment' + */ + @Test + public void aoAmountCommitmentTest() { + // TODO: test aoAmountCommitment + } + + /** + * Test the property 'aoAmountBlindingMask' + */ + @Test + public void aoAmountBlindingMaskTest() { + // TODO: test aoAmountBlindingMask + } + + /** + * Test the property 'aoCommitmentInOutputs' + */ + @Test + public void aoCommitmentInOutputsTest() { + // TODO: test aoCommitmentInOutputs + } + + /** + * Test the property 'txKeyPub' + */ + @Test + public void txKeyPubTest() { + // TODO: test txKeyPub + } + + /** + * Test the property 'txKeySec' + */ + @Test + public void txKeySecTest() { + // TODO: test txKeySec + } + + /** + * Test the property 'txPubKeyP' + */ + @Test + public void txPubKeyPTest() { + // TODO: test txPubKeyP + } + +} diff --git a/utils/sdk/client/java/src/test/java/org/openapitools/client/model/TxPoolPerformanceModelTest.java b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/TxPoolPerformanceModelTest.java new file mode 100644 index 00000000..69c66581 --- /dev/null +++ b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/TxPoolPerformanceModelTest.java @@ -0,0 +1,128 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for TxPoolPerformanceModel + */ +public class TxPoolPerformanceModelTest { + private final TxPoolPerformanceModel model = new TxPoolPerformanceModel(); + + /** + * Model tests for TxPoolPerformanceModel + */ + @Test + public void testTxPoolPerformanceModel() { + // TODO: test TxPoolPerformanceModel + } + + /** + * Test the property 'txProcessingTime' + */ + @Test + public void txProcessingTimeTest() { + // TODO: test txProcessingTime + } + + /** + * Test the property 'checkInputsTypesSupportedTime' + */ + @Test + public void checkInputsTypesSupportedTimeTest() { + // TODO: test checkInputsTypesSupportedTime + } + + /** + * Test the property 'expirationValidateTime' + */ + @Test + public void expirationValidateTimeTest() { + // TODO: test expirationValidateTime + } + + /** + * Test the property 'validateAmountTime' + */ + @Test + public void validateAmountTimeTest() { + // TODO: test validateAmountTime + } + + /** + * Test the property 'validateAliasTime' + */ + @Test + public void validateAliasTimeTest() { + // TODO: test validateAliasTime + } + + /** + * Test the property 'checkKeyimagesWsMsTime' + */ + @Test + public void checkKeyimagesWsMsTimeTest() { + // TODO: test checkKeyimagesWsMsTime + } + + /** + * Test the property 'checkInputsTime' + */ + @Test + public void checkInputsTimeTest() { + // TODO: test checkInputsTime + } + + /** + * Test the property 'beginTxTime' + */ + @Test + public void beginTxTimeTest() { + // TODO: test beginTxTime + } + + /** + * Test the property 'updateDbTime' + */ + @Test + public void updateDbTimeTest() { + // TODO: test updateDbTime + } + + /** + * Test the property 'dbCommitTime' + */ + @Test + public void dbCommitTimeTest() { + // TODO: test dbCommitTime + } + + /** + * Test the property 'checkPostHf4Balance' + */ + @Test + public void checkPostHf4BalanceTest() { + // TODO: test checkPostHf4Balance + } + +} diff --git a/utils/sdk/client/java/src/test/java/org/openapitools/client/model/TxProcessingPerformanceModelTest.java b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/TxProcessingPerformanceModelTest.java new file mode 100644 index 00000000..854a6229 --- /dev/null +++ b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/TxProcessingPerformanceModelTest.java @@ -0,0 +1,240 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for TxProcessingPerformanceModel + */ +public class TxProcessingPerformanceModelTest { + private final TxProcessingPerformanceModel model = new TxProcessingPerformanceModel(); + + /** + * Model tests for TxProcessingPerformanceModel + */ + @Test + public void testTxProcessingPerformanceModel() { + // TODO: test TxProcessingPerformanceModel + } + + /** + * Test the property 'txCheckInputs' + */ + @Test + public void txCheckInputsTest() { + // TODO: test txCheckInputs + } + + /** + * Test the property 'txAddOneTx' + */ + @Test + public void txAddOneTxTest() { + // TODO: test txAddOneTx + } + + /** + * Test the property 'txProcessExtra' + */ + @Test + public void txProcessExtraTest() { + // TODO: test txProcessExtra + } + + /** + * Test the property 'txProcessAttachment' + */ + @Test + public void txProcessAttachmentTest() { + // TODO: test txProcessAttachment + } + + /** + * Test the property 'txProcessInputs' + */ + @Test + public void txProcessInputsTest() { + // TODO: test txProcessInputs + } + + /** + * Test the property 'txPushGlobalIndex' + */ + @Test + public void txPushGlobalIndexTest() { + // TODO: test txPushGlobalIndex + } + + /** + * Test the property 'txCheckExist' + */ + @Test + public void txCheckExistTest() { + // TODO: test txCheckExist + } + + /** + * Test the property 'txPrintLog' + */ + @Test + public void txPrintLogTest() { + // TODO: test txPrintLog + } + + /** + * Test the property 'txPrapareAppend' + */ + @Test + public void txPrapareAppendTest() { + // TODO: test txPrapareAppend + } + + /** + * Test the property 'txAppend' + */ + @Test + public void txAppendTest() { + // TODO: test txAppend + } + + /** + * Test the property 'txAppendRlWait' + */ + @Test + public void txAppendRlWaitTest() { + // TODO: test txAppendRlWait + } + + /** + * Test the property 'txAppendIsExpired' + */ + @Test + public void txAppendIsExpiredTest() { + // TODO: test txAppendIsExpired + } + + /** + * Test the property 'txStoreDb' + */ + @Test + public void txStoreDbTest() { + // TODO: test txStoreDb + } + + /** + * Test the property 'txCheckInputsPrefixHash' + */ + @Test + public void txCheckInputsPrefixHashTest() { + // TODO: test txCheckInputsPrefixHash + } + + /** + * Test the property 'txCheckInputsAttachmentCheck' + */ + @Test + public void txCheckInputsAttachmentCheckTest() { + // TODO: test txCheckInputsAttachmentCheck + } + + /** + * Test the property 'txCheckInputsLoop' + */ + @Test + public void txCheckInputsLoopTest() { + // TODO: test txCheckInputsLoop + } + + /** + * Test the property 'txCheckInputsLoopKimageCheck' + */ + @Test + public void txCheckInputsLoopKimageCheckTest() { + // TODO: test txCheckInputsLoopKimageCheck + } + + /** + * Test the property 'txCheckInputsLoopChInValSig' + */ + @Test + public void txCheckInputsLoopChInValSigTest() { + // TODO: test txCheckInputsLoopChInValSig + } + + /** + * Test the property 'txCheckInputsLoopScanOutputkeysGetItemSize' + */ + @Test + public void txCheckInputsLoopScanOutputkeysGetItemSizeTest() { + // TODO: test txCheckInputsLoopScanOutputkeysGetItemSize + } + + /** + * Test the property 'txCheckInputsLoopScanOutputkeysRelativeToAbsolute' + */ + @Test + public void txCheckInputsLoopScanOutputkeysRelativeToAbsoluteTest() { + // TODO: test txCheckInputsLoopScanOutputkeysRelativeToAbsolute + } + + /** + * Test the property 'txCheckInputsLoopScanOutputkeysLoop' + */ + @Test + public void txCheckInputsLoopScanOutputkeysLoopTest() { + // TODO: test txCheckInputsLoopScanOutputkeysLoop + } + + /** + * Test the property 'txCheckInputsLoopScanOutputkeysLoopGetSubitem' + */ + @Test + public void txCheckInputsLoopScanOutputkeysLoopGetSubitemTest() { + // TODO: test txCheckInputsLoopScanOutputkeysLoopGetSubitem + } + + /** + * Test the property 'txCheckInputsLoopScanOutputkeysLoopFindTx' + */ + @Test + public void txCheckInputsLoopScanOutputkeysLoopFindTxTest() { + // TODO: test txCheckInputsLoopScanOutputkeysLoopFindTx + } + + /** + * Test the property 'txCheckInputsLoopScanOutputkeysLoopHandleOutput' + */ + @Test + public void txCheckInputsLoopScanOutputkeysLoopHandleOutputTest() { + // TODO: test txCheckInputsLoopScanOutputkeysLoopHandleOutput + } + + /** + * Test the property 'txMixinCount' + */ + @Test + public void txMixinCountTest() { + // TODO: test txMixinCount + } + +} diff --git a/utils/sdk/client/java/src/test/java/org/openapitools/client/model/VersionModelTest.java b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/VersionModelTest.java new file mode 100644 index 00000000..cb878978 --- /dev/null +++ b/utils/sdk/client/java/src/test/java/org/openapitools/client/model/VersionModelTest.java @@ -0,0 +1,80 @@ +/* + * Lethean Blockchain API + * OpenAPI for Lethean Blockchain + * + * The version of the OpenAPI document: 6.0.1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package org.openapitools.client.model; + +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.annotations.SerializedName; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.Arrays; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +/** + * Model tests for VersionModel + */ +public class VersionModelTest { + private final VersionModel model = new VersionModel(); + + /** + * Model tests for VersionModel + */ + @Test + public void testVersionModel() { + // TODO: test VersionModel + } + + /** + * Test the property 'version' + */ + @Test + public void versionTest() { + // TODO: test version + } + + /** + * Test the property 'versionLong' + */ + @Test + public void versionLongTest() { + // TODO: test versionLong + } + + /** + * Test the property 'major' + */ + @Test + public void majorTest() { + // TODO: test major + } + + /** + * Test the property 'minor' + */ + @Test + public void minorTest() { + // TODO: test minor + } + + /** + * Test the property 'revision' + */ + @Test + public void revisionTest() { + // TODO: test revision + } + +} diff --git a/utils/sdk/packages/java.json b/utils/sdk/packages/java.json index 7ddda99c..7a73a41b 100644 --- a/utils/sdk/packages/java.json +++ b/utils/sdk/packages/java.json @@ -1,5 +1,2 @@ { - "additionalProperties": { - "packageName":"@snider/sdk-cpp-oatpp" - } } \ No newline at end of file diff --git a/utils/sdk/packages/php.json b/utils/sdk/packages/php.json index 660cff71..82d047af 100644 --- a/utils/sdk/packages/php.json +++ b/utils/sdk/packages/php.json @@ -1,10 +1,5 @@ { "additionalProperties": { - "apiPackage": "lthn", - "packageName": "lthn", - "modelPackage": "lthn", - "invokerPackage": "lthn", - "licenceName": "EUPL-1.2", "composerPackageName": "letheanvpn/blockchain" } } \ No newline at end of file

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�#RQpUsEPXncTd7wxH+j=~-_|k_;~aYf&2Y%8oA7m}CYkB2Gf_0~ z2JEQVof|OHi`m^O2-I7(8i&{k@gVrV9g*Yt=r6YcAYu|D{X^GZI<FsW*TNim_1sDK*qg_W z6yx`C_;av7C+?VyKaFk0)44A{+l7;H)cq)iM#f868~~cU?Y-ixpY$H zAZecF7A%O8Y6BC_$$ac3U)J5A&q*qtvg%*_5=p5xnq_KzOCGS*c@ z(MHLY0tFkK{5YL#P}-tcr4_~r1~I@n56&@==E`A4lhOAug0Aa9$$ERpGM1EQ8c45z9l@J$B}yCyVjhF#LJdK}k3sJQ_pL z;^%muq97KSn2nMfFA6`dY(+#LvT0*s--5FM)K5c>HN5G!whKn}_d8ucL=46B^9qGI z_x-;g*$Do8(qV*EF@~z{Vc6=@veL;t>e=Jc2Pho!YF90e4USMF-=tF!P1aJ;UV~WP zG2QCt0$DS2Ih5D-H>8yhdpd&E+R;xd-LaHl>795@h&x8}Y6btU5SLtWo|1Kq3NJ;A z7f^9y>IOWb;&U{Hj8sFaPgh=8+jA*riJrrIaPG~7sHy5>bW}<3A}Pcf_CZmyVE}Ig z&;EK(SSeb~d)#4KMSu9|tKqjkocK3_dnn3rl5ea$0pMr83XISf5V4$0_g|O*J1u$s z$pEnFqH!9l!!jf)>{II zh{OoFy*3YqEXMES_~&){F|sfl|9(eY#6^dM4NS4WOShfuB1Dl08kr_{_;Hfh}Nmn=IwYMiUWWbCWGuU&eZR^lpo=@GyV+{V2yGrqOm3a#{?0JYEwre`q>%hoED_8~^XDUuqA z%?wrHY-aGeiidmM!(ghmTc_nVv{MttDyPpdk;3hyW9IHl-+k$&7dz_oZ5aQ&>Y#J% zEUVGJNllWs?f)j(S`tTNe>Dh15|v|L?Yf81U^4Tjnydy*^GE(K!eVQt0 z;GmXJ_MUJuF=nSEI5p)a7lfUANY0O5HdVzf6%0(Y>ndSC&DN}IrEDES&tJGmTEu^5 z@-5M@vt>#tcT~RS`Vh~JHZiP2Q%XC^)(RjrT!WLQoef0}lU^@U?fSc^Z1RK89XG!( z;Jyz1J-~IJiJ;IEn+GwEAgj|)a_8^Xcf>|U^X~~tY{Xo+I}@PelO4Y4^vu%p`hmos za7WnPT@LBt-%oXKuFKy^2)h8YQkj$KAG-eBVbbgO>-F0(Jx@d=z0BD@6etmqT%Z_RC>RBB9kiuP;{^sy*Vpk$1rj5hp??!FX>DjUoISUl_szgNQJxKq9Ak15t zbsCbtX~8Y`@299#5`NTxduYC9Fc(WZ!{JhGxWE^uXU4A=5T zuuuU+`Qwk>y<`9 zjINjdVu(pcg>`EBiYb!svfx;0!+&?m4}%yAC~n@|vlHg4;?f_gy(qsFDN^cl&*BUG z2BPGolh{PIu@dz(y70=Du9}%Dv#(b_wS{X;uH;!Gum((N z(`~j(B}2nj*O7n#|32Eu^j}Ziqal#}IgIY+?@6U&2>Z=ltAOSgB8vBMrWtC6zd)7U zAjAYttI5dP+B1wA%AChq?P`8B$B%R=h%oeH$;gIDb^7)!!z7p9Jf7s-P2XR}zn=AZ zP$l>FSu}Q}9 z)|!R~g^5t15OrRPkQ2%|ugW3}1Xwa4FBqu9JEP9##gbexH4)b3f7-~+vKvTOlGklA zFMTO{ygrz0)w0a6IgnN|RH^I|(sm{kO>qQvj47XI+DinBI}P9M_=8B_X?^w+KH(GI001y^cQ)Ol>CQ&24&TP>U&Hib zLEx@>V8aIh5D`fy-KFa;-89(g<^Rv#-?lf7&v?Q?`i$H_%Eb*`Yr1Q zwq38NqHLG|cXC*T9L)ElnJ4?_6A`<~%4v~RAjn~#ucFpp%d`9qcS0w$@(Z}Q1-?3e zzv1&?YKHthF2JW)Qgj#PaQEWs9UKr*y@u9bgNWPPrw`o#9Q2Lz->|R;f?w^(SWdKIasu6h;FN5*UGdw z{g%CO#*Ja-ym@kjZEMAGgC)OfNdOVK2pkz>rlVcY1P7wLgL50$k7yM$+pNZ|6P;Ik ziuW=+ZV9->@BNCc?3~p>ts4vcT}$@K+V8XZHZhZ&*X3W!^7A5R2Z5Qnu$q32DKyZ@%==N9a46f7%(7(CEk2qYPAujMPkL0(+&j%g(G9|gJ5%aSWPOuS*Z-OunD&i=01_pIZhsrK zOOKh3TIk}jUb>YcOX)9yBT^yfilTa`_SxiDDF5_4n0yvY@-C~>c~BOKPQ->bqRg3) z=h~M!v#ug%^KV#5E*OniweC4Y>U5iNTl9W!yz*!hMX#8I=!2pu--QhtgY50^z2;bL zNYiS+MW)y|wFk1Jo&?fGT%_y~R9pV4W!woP1f_W1Nk*yV?;SS}1-v85@)+_7ehD9C z{UPE`Y}lA5V#0DJT7J2VJ`+H~Jeld4?a{fDTYiX~<7QtovOxbm^7;DkyCwcx;Hqzt zJa7RUo}Q-p*-l4`HAHQelOurb`$Hff10WI*@!^|2{_|jFvo6kE1P;adr5^xn$QVN) zIDvp3#;0>@ga{W-`VY48r^m0AD4+`sOY_m&3Q|@W;%CEH61I#3Va}dA@G1=#XnWyQ` zXEPgjTyR>kt|a2$`cuDmIgfWZm|t909zKN0zeUa84;$6IIdt*GV1K~k?+gF&6}%bl z3*5YOdbzuJr@eFpt6bd6Ik;c6TfCDag_!qOP=#hQZmwUYrCuE@<~`Eb&ZDB^RD3n9 z);tnJ;G#?$Fx{wl#u|U=K@!CxyT4&d79vB_k@<=FzPqpAoSj!KQ%r1vHgv#b)*vvGIsP$E$H}d7`El`INExe<_Gw;& zJBQSs$`t^Fr7|<|;rsmbkAtjqdAY~}zeVU#lhJH+{a^!-A+m-o0pZyCj|)%x1~BUH zw(^Y*mhJAu>DVOyFMzNiW0@^u6@og!Y#*xTSC?ZVLrm;0?)>kIo%rz20|e`vIOqHr zvVY%A3nNwm{Y1*}j=8SJ;Y|j1IOdPgme!_$Akp!#Y@a6kJlUs-h}>yie_Ym|7k75> z=iQL$)Msd`M@i$__SCNM3PAnenT7ZYZJx&MsRoV>P_Makk%~stW;^M=CR;T*Gh0hc zaN>TRwzk(6!%SZc0kkxdkWIX zyyiTam_VjRS4*tXXPt~Hm#QgK*cKJu!&iulT8zb_$F52~BbK%qj`c0y>n)L7Q?Hx9 z*k)B0Zh4?aI!$E7SMfQXNeVL{2D9UXT}OS6OB%~!G7eutTz-dOVJ0+B0xmU6PuaHkSyX}#hsW< zJmBFzZf|9Qh(4T70UT>~tC75;$S1)KE%lj_z5(7X*d`8Fr~g-gfSBjwG<}<_Ki9@b zZO$wFCy3o$biWjQ$VP+=)BHRgzR!n0XJ&TGx}F?lu=DR>@w4qx=#G zMhk#|nC)zgWmzeI!}t+kNLE>1mdnxDgEg}~{^PKmmi6Qy;e*WIcky(zI?Rvq-M?(u z9E_bTPt23y$*^H}adKYW>$3h>+{wYkYrjV#{YX)F)M&d0eX0J{Wu~123g85b0K`P* zXbl_td|<l|N7rd{~*Og@;qeds>k#g1ft!^gpI z@pj<8z|A9j!vp8d<&{G>BTfbM6f%ZGn`KF~h4j1LBB+mGa%PbTgQI*#Fq%MBZ}U<^ zu^OQ%m-#EmvO~gBz3gMCXWvXjB64Ov81qDCakvPC8RdFsT^-KCs#oMuwhk8&UeBu8 z(e|w*we$imcuqiET-;H%Z+t2+LYR!PN47`8D(kC1OhVl}Qt=obW3{j9#HflIA=i>h z@BEU`Rqs9>ScC${Ff_~s3%W|R>Q(tt!4@@ZB*SP_%UGL&cH>DpeS?cql(Z?I6QI;% zK)BdE*EI}WX|L9soLrVjt9z}yRHBknm`PTmRE0(x4XQP|q(4k?M-`%xjhtoPb!Xf)VZ20hfo}MRhxcs=B|9xIhjxC3y zZ4j{EHJo+S>b|lSK!^Y{nd6^_=l|zOhL*Q=eOuxDxxtV8zNWB|zQ=(qvoY+PU=;#5 zpR$!Qeh3VV-*uv`ZsdeU$CwBpzbV7aY$oOtNxmnr_6+(I_c2xs#SWJr3xkgTzo)~W zGZ~VLI04d^Xdlq5s1qnFeU)dFwT4`LhbHXK*v*Cf5A2U1X8UZXr-_diAX#O7xvVeC z`ntdgoIh~dHg(!f_llc#g=a4s==3xgkBX;%E#7gtFv_UoOlp1x!)|!lZrnh!hYbS_ z|7@6u0m8+t%NrZE2Wy`X)As}Yac~#s-Y)Lt>`rSqga{I>Y##hja!G1~NlJ|-i3(RP zk5Q=eMkk<=UMZITNTtUr{~p0qC?O1*Bwu>fQdL~$|DkGwNL15msr1ykGh*r;R9)?x?soy|GhJBr^ua)r3q>y76wvH7MLASuaBdF8 zw$=>SMy{@pF5NeX7(TS=*psawQ^}$&zG0v?4S3zo`M%c{F;s>vX09KpxXF2^JM=R? z2)4SGhEd=Kj~wC<^Xq+fy4;$tWhu z)jT*k1>EToK1o2{0|Ui-uQzVr^)Cz+${tHS3U>9Q2(8&?Rnd*%X8dZPG}+ly5t=K! z4qgn^vY)y^Wbmqqhh#x<*;@TT%q{b*PlxR>ncFlo8GE#5HnPg;ugm$bvpcOKFs3>} zb4ydkX}i3wvT$d$T5A;Kb{Rc#H#(Hty zP<%Rks58R=$p!Yv(`?q+EcEd@&qPe_?9L#X3}LpDJ^u6PE^a-Gtm2O=?sedsVO$li z-gYhiwj_$1qI(6qfr3qhdM2oNGfd3J`VaS*!(V300OYi~i<7fk-&S{8-Ng~13^0Bq zq!~*)C))+w$mBsI=}nGnTX0WeVK)H>5V8M$#aW&$Guh+8SZlulmqpx)%L*s5IuekC zv&ezS7MfuxPdKB9D^B7pFwZRY9JM+_w`1ldXDA{jDrdgjT5IP(Oi-+5)*8%3=Blxv zh&25n4-yp~(x}kQ=8LOb&G%MS_yhWe_~LIXWL>ff+!R!#Xd;n#^LqLxB%-b+kow%> z7^TVaE~L7Y{SZ}+s&m~pn53Mt5x5~l_EN>U5JQ^JR zY*kcW@m|KQs%%ts6Dm^>a0HyKSaMrnI1oU+M7sbx9zMQid}A++zF5istEXrxL;b#s z=8^L0nYqfI*4et2afF3?iJeg~!_e*RAnXKEi-bzNJb1eSxnM;;Jl0IzgnX0@#n0?1 z#$N#8LS)E3v6-1?<|XB3J%6=y#a$KmjO7U1%>tZ%Ek2oa?Vu;_84bZxenn3=61 zCRxN?90{uLcy^F3E#39ZSs4|D&RE>Sh)UJ-iqVLfgyjM=k)5rb9Wyi79~E3>Z|QCt z`XNiqOqSr_F7EWNlU&y0|MN6|o9w|Fv#xKe6Bj&o?Y`X7AG)1z=hngW<`rWjMIituM>^wz#(y;Zr^~lL-aO6FvHbyNvXkt)C6W zR83{iwsVZLH}dEFj4Q3B29>gQy^F^-2dOQDqau2QXCf0$IDwP($0c(eaqd03mU`gQMi8oFgQ~jVU*OyFSgzd8w9 zmY;8DV`qMDn7DzEvf}$WVMV3UwEgD#E*N9FgT}DPf8H54(PCu_()HmgS3jjgWvE_} zaxd8LGLPe8GjZT@)Xmo~$DCZ{7H^K>q6=i#k6{AE7!H6C zfW+JlHQf)po0L<2t`j?I)O|5h@GI-M@9mX$jKEza;|W3iJLP|vORzz>fGc=!^N+hl zRG&76tzi)&0SlOj4RbhaobK99$8=|7Gj$6yQQYBTCNoXO9<7}XPwW<1FK#`pZV_q= zJ{poKV8d*f!B`=yKRx#`D!Pw@M?>QxG7|~ODiC9=F_S4S1^-a4m%GYCloxqS_c4>XyAv%_{e* zRp5{8w2cA)LRf^vVY-NOKGsG|<~W+{D>L(c_3B-9+e z4^Z;VxL`tvxSp{ysriLZ(5}Asx=Zh+*vP;{)ls;b6(T}hmVio0@3#gi;+G%Cg8GJ$qNhN>vKA;jJ&khx3z5ggurZ<1RcmZM) zj-)q+*^;ruOl-=nCEhlu3T2^aYghF;6m`$K%6{*UVy3Kknux`+`ZMrM5nPhw%rK*2 zM)M9u5nfLU$#m*M)uNXoTGmB>t-{*OM=^#ZD1m5ehphQr@qjw7QrGA?AnCSBtsq@* z4^qs86t(WF+G~jG<6&&RZ-<)#Hz;fVaaMfKU^jxYZ9=OV&H)bnFBM9wruzODKSj;i z)U-QJH`TpJdDhBB0+IgBRA^Gl+02PDy7=7O+@mmOoT{b-5+ZQeSeT5Z>X3S{$yBSy zd!T7T0Tv=_%n?|K-T-0lELNAMO(Rp)>Jqz$M=pOvT-D~9&UqUn6=lRVJ2o>2a2Loz zaA90&O;)7un@|%8%oP?>QQT(-e87g;urX{yILRwXS(^QYC5np>xKV=@vkKhkK{zyJ z)f<$e>A+3g!otCGh>s9~Tl|?E#c+^*HVJiQiw7m<5sR#TL` z?Ikrw-OwX0>yc86dcx|ILdsYZ{ttu}yHm0{n`2E8%obxv)zO9XYH z+z!fJh{hfQ{{@Pfc>XqpqiwR`zeA%&vb>6G(0+ytvzd*V&2+HSY|LZ;T2AZowz!M` z4#6KP@gY#yG$OWaCT1cyh?8(Tk2eC@e3ZuaD&_{Rn1Ah%UxSuPw_H_C0OF!<7-J`c zH7vJQhPK6~XNp&7H5q(6LLiHr|8;h+>*3G&@W*VQj6JY8l2yb(oDe{=Ukrh6chXSv zRJ`h--==uAp!VlWQ54pk{79Ep8Vs>vvc{h)?9)Vm6>@QMcJA!t;$#sK$z>;HR>ypA zw8*IJ5E*(uwKJj*Vd)@>16$BT%A0GGgt{)%m=9Jn%ziFqNKt&b)33IQe4v{vzf8Vg z*nUIsA<@OriP(^tEYH@=lbMV;SU)@<1#VV{)j=Gb07O1ynXj<}5x7^e=wfA`BkqBc zIwwVW0VrCF=)(%qUIEJltLA)S9E^H2L4vZtYH$83LiCftShME)y?JK?~(cQ93MrTlv zM@QzkpDKJXS`h0Zj8i^lHZ$7;!O8jtEWI-NF@4H{f}dIjD9C4FREQ<*vN6-aPDe8x z+01MVF_Ymio^@&-A~hU_6DBrPs0r(m5|b!QA@nL!W^5R^@fA)FYzWR>PVRgX=SaL9 zJ5tG2E+p#3(O0QJo7E@HK7Sm=IBsi2XFE(3bX-N(#Ea03dXd#Gk2}!8S9DcSwRKw) z9e^kWP_OTEaF_hQuHonbv;>QBrr4b2!*;rwDTuAO*e1%uhu&DJM8@%7rm<1HEZu$E z$(_WSvKwY5cX32y4|aN*>}Ty`h4a$g`R5(_yCiiz%scN?y`!* zdU0-%`b^IUjn`c?{(2*8t(^^l+#<3H1YD1d*O}QZOd`tau~+ABK|W>%Bp?S87{m5x zWfi}(sX73Dd?0^U6Uy#XW~he~z+K$s2i)T9Y|OzL%YN^VokOHPd&Ik8!&lYYNA)Bi z2HlH>EeqE8%Yza+8qt31ia7pIF>z#yGh_(h903sckgGVs>i-HH$N>VRs{kr9qIjtV zRyRvC5VaC+^95%i`V5`SLtWbod1_8XMYjva8?nXeg@@9M>i2LAU+sp$XboyzQvgD; zIC6qj#BX)9CVqQN%*2z0HAEAI9V+la8?_AtrsA4?2BLcBh;Nr(;3oYUJG@(Se&>lA;TtDwB9Cc}RhqAOIndu}8K~Yz!bUN5X=zDyW)V1#Y65@Wv%; zNW!0_OF3Ew_QjFw5rd{K`H3DFal00P9Js0K5_cQLAer)_6DL|_K?KQLW&=i!v8STL z>hI-5;iSYh2xXZaftyse381KICDb`fl7H7eR&}JP!KE!k+8gC1OR+l(74;F25Cjm0 z5FC+<(XphNg}3$&GuBr8ZX7oh{m=MRDt-RLOcSwv+sPij znZq|bKQT`pxn9laTrm~`H{Jr}gIH3I*2m>=Vhfkf7MFk0{|u>_uJ^{hCYWhrL&h2c za5@RrA}G?S=`~P-RKw}MvifM8%?9Z>?mK9`r|ERt&^uV;DxsRuIzZqqvMwTv69I$#uDi~h z_=5mMMAKxZgMq_(T4mj~Y>$N8Z9fe_SRsor)BHTi#rcDT_7r?4FvnBxLF=1a-c~kj zkJcW{bhJE$ueY)(-AA$OT%(hr&Zt&9`q&0;J5jG-Y|Lr~ke>2#IU!u227hL)gRJ3u zsPsEbii2CkY}t^hQI7cD`Ko8EI(hHFJcgoEjV4De6*MV3$!y^7rf*|Ln@7!oI4%nj zNC=A$iGs+l&lHi|G z8*|!)QEd!JNOW*P)Ukx^PADD!h;ChqN~kGDJ-5s=T<;x$^0b_F3023$8&rnD9-_2x zNT3|JNn=kPEbu(U-#T#9@~_Av<`3~BGqaiFw^4>*i^VU^unq{Vx&C9>g)mQA5RaV?& zCXg3{ltQ#OjE#ePd0PpB z6nZJgrOKSE{NN~e=a8jJP_z;%&ZT>i7p_zCHelVqGqU)Q^Z2z*OXTGP=%a^7vfr1=Uc$Xd4c3M#HfuI)eBmz;NIT<@GKuEW}mN{WS@?szSZ!khvNo zEPa#Y>gu-ErBqlU-W|?iyN)4daf_2PK`6|bFsNhFB0Wx4jjajyiW3tF#Ic#o^fVp* zFw+xHhmedjAVe;#vv^Xv5n+5%(3)fkImSi9*pPcl+Hb%V12#q`LI+|JfjhhDXs0K$zFGRY zQmYvQRD%q;4i@ig(5y9?GLNA;A9V4foR z$sr&JaU4*bv&A4+=`;jfsVz$~SGzZ>;$4WoLu1D}o>lqSv3FIzJi;+i7{9_Ore2gd zxaL+@d0dU=O{_RJ@({((uZDP&sV#iZ)M|}q7n1z86^LUF%ajy1-?-qEfGF)BM)XBn zx=p);BUftbicRGW7IO2>t{ymIiV{UZE2pR(7AXgcffH(i9L|67U*|`+&U;KDaHI87 zFQ8c_91+-l zv-30Y1cecc{+5-WCm19-hET_8TBDHlmArv02YD}3CSX|`ok;2o=q+SM3wLc<9*pl`*1bG zyWnrSZs1km}Z; zhnR_3EjxcQuwi42otT;3Mb?ue2j)-W<%1Ql1I!Ge_3Z3yre`}Ht+7VjzD+mphtvVn z=|w^!aF=y=QD1(Lezjod?eP7L1#6AL_^Aq=q)|5>e-ooN+weKs^Z7dZaim8GyXiVH znKYD-I#H*PUcXFnI)Q*(ocpR7sEM;uHCu0}#Jx768S@Y2hgFE)+su+TvuICg;J1ie639!s1h9=XfQ zLb<7W8$RN0xwO%!3EVLGs7=VrDHx%6E*eaygCHvr% z%SrLj1!RuMfA^#@#lVefiv<2SF_UN%n{KKasU0^+Yqu%(N`(-hVGo6{Hu{`075o%|8;?2nXH-Zu8fx$tf!!onUGW;1{{Asy47NV`p%gZD7#|-X z0+D5QM3%4+IplldbwKoQ0Q&k(DcpNXJej;4vt>o z&hc#KUT`5$Xe+zXd^r$PEMXCm5X2ENn~5<&mT1s*?8g6(V}%D?=~?5(Jii%7I{Dgr zzGLG@JL)S#L{&UZu@?p>Vm4$fGm}5B63&06&~ZQ$LWPZWQ+B0WX_o&5h^)pQ?D3E3 z=^ti#B9L2N#4Q9D1`;n(6>KT1tlffY4?~E|DC1ajQ2fq4h8u~g%!M8qdpJ(VCoJoF zIg4B4L6ayMBO<>{Q1d^W?jn0Ass1@vQ>@Sz&fgptt=~X-3Q!Q7AWIE?j}F{!$lI_6luoWs1X=gf8Yyaixat8HJ3$E2|#o}hIk$Uxee?Bt2PF-EVHY0(BC8u4QDd;A?YO@QMm zg8qOA0@e4QsE$fZsE*O#lpfKiYMKfS$gjAgDC*0@P*`Li*^|MTo%gyYF;sdyG*BTp zsJF{g##9W7?HE#I)l5Mwzs^xtU5jraQu^F%axeF6lu0vBKf zmarSDXx8+1WI4D=p)y5V!9lia((6+S^UGy{h^jWx3fpjLl6%#;Rto^MKpf=kKlU^B z55u!DM*-zSxj!6)uo7D~2a*fX@=H6z$AGcM&O}7AkgT6kK@svtP#(Tb$A8-S8v$;8 zbL%VC#jiB7vBA{{W;<&hxb6;NQLEBfz1c=3a8WRhc50?lnDk0fLBwS2WTu0i4g|Q% z$(>%|9GT9IV;M%1)qQ1dDBAcZ+vrCo|BJxQGTVbBI^X;t{9hdOl5cC+w~OA8I(*rr z@bJwq1JE>^`NpE3%E8+b=jo-o(|+>vBur%>^L@y=O1u@d-2?F?4W5~2Hj{Ue1Q*B(tVGVA${n_xk>1*{ zpK28WQ7K{bUR_`u$|>^fP+bU|zH7BEysrMK*pju)} zB;po8xYVA~XYijEaY*5eB;w;#ubx(i!Bu2sYp26Mrl)_H=_s;dd6o4s>4aDp*dtU)3BUjw{s{_-Rvdta%Sg)%6M# z^6K5<+Ly@%E1epf|E|N%#rt4apxY&^gKqdVd)%EWskq0Wmvj4`I#Mj{@S8K)ec85% z-ZK*PryCy)JE&aA0uTe!WacO9F0#Hlx43Bjd-?CB)Gw&+9pgs%x0+JDyJt=sX~>H8 z?CfL?-)FbT^0u}g=rq=Gz|tT?`L;0GS22%ZCq)c$jK#~$8=baWkhP7vrQnrU)&2=I z*{@4aP4UpAcc}M08s)sSe8+bq`~{U7Khkj(%>id6^@ud!$yPCrPihaQc1#+6@~>Wd z6;E9JugRwRArk}LCMuv9=X%a-{58;|b|Vj$*-)VJ;>lUk=si@@{P7AWa)rbdrS!pv z#@8}48lU#O}Wj)HidgY3s ztx^0v?5nloy#_IW*FReOT%ruv&<~kc!^(s%diM47zd(w!Z;%w>)@nO|U zgxus+EEQ$D*|Ng4Mr*v~u6*P+Ar!CbJy!gZufan`1rQeEHM*^a*s^&td;nJ9EOLTd zq8F|s38N1FanP88629_|8?W*H%nQpr5&5f#R$vi1Ll(kHlm=w(#mP0c|7P$rGjFIJ zoQMcdFy^1^_uUA>ncKr)@IxT%xFMRDzq0P#2j2D@HWP^xIg_{#o^bgaXN|E>)A3Jx z_)cz>UV>&ad00+9#X(%Fj3s&+~-ZFjMtbVw94JECa+7vyI1D7|?}eh5vHu z3(M!LOrCp=jSyMG6Z3)0L;!FRS%6D8RftG^!MI__yD)m2Ta}2oACuo*g}v>LYXimA zWndjtC!%U+MDbwQ5)sJ)_bNOY^M^49VuHLuT=@|&b*gn$x&;G8z2LW^0c@DrFdKj6 zgWgbq7FPi+R~T@#VO3QNZ)x94$MlH!=TILj$<0HU~AxU59vx$e*PN>{Hn3SmTGIz93}&<%V$j&ZrYW0*hQ z(oAd*#!L)>ySVk@!mWDu3h3IPSPgYLVv{ruu_<@q-1fsq zk@(jg-K;IbrZ#L8Z!Npl+nc678@|ZZ@p43QXDz~8C57G9-@@5}VvW0Vx=n{JcQW*r z+s8DOe_9B+SIM>&+I?G$G`51sU(M6;{Lrlcbhgla2YmPWQ5nMMuYNdV;2>rzEceI!w@30^C5A7ngn`2|G8 zY>8OpO#I69%seq!uzbk9XrXQ~Y7cO@BHKsbC~dl_%53$R!TX*t%fNPCn5b4OxhSC$ zLWG-hcTo9sq?!E6G7|v;tOTg*wK-=*Mwp4mEgWSHIIEaGVkRx3vE})h?GbXq`T|He zhd7?*6BsC$q?+T5RC)p~-(_Y}W1%iLP-VSXK?Gtp^I>}a&V=>tb$xr0%NY>1b~wWW zsJ@%!8mLALKRMl@!5(E^uk_iHT-52!N_kV`G{VwnE91uyJ7ad8@H0?^>mE~EkO%)p zR9gRIlcj6G%uMSd{JKuh)8WtKdY0v7Nkhao{$jt|ZdM1cSiQY>#(AynMuJuLv(B&T@>VwTY`wGLawhYtg;7WbwWK-YipjD z@Wa0}Mkv=M|8Jn|8~OoKw^^gaM)6_-Usv@u?>vdpLRGM&!up^VjYm~jiHze@ba`~{ z#u_H~FBo;E=HwSeC09EHhr;3`9B=L>2SiEc}!IM*jhq&aD&Y1`(t*2OGS zuCq}*3MXu&rea%)ZlI>6s(P^&Ac)i^riQn2YlaqrYM8c#8$nipLiZ>V%Gz5T_oK{c zWwHwKE45Vnm9%79|AE6-d2Oo|-SbLi@=x7aw#K@uG}l5bYM!NE;X)P|%I=(mbB+0u zkAhyp-Q=sdq?!iz`@#@7Z5@dB|DKsS$i~gCT6&cEN5av#x(X9!Fjvhu#E|QB+DRx?KB^b z=I}(odO5k*pYC!(@ELBUdk42YWldsvr)eoATzNyEx#^(W)E`7YJFz1IU(ka7m%vB% z=86yiV|Y4Pd$0g4CwF;S+zS5NZZp~C{|<`DB8$Kt?ff(yzR%0s>K1|E18;iz4PO~< zR-@fz@4@^YZZ;4OG+Pg^6>_#d=DWcMZf>pZ13MndAIxlxITBf5 z5qT3i6D`EdWOvZ*ukAEJy{q+2gixk>tJ$)_CGPD>Q(l+Yf;I@LcxZ5Lz^KZ8=5Gih zax!d?a{2MjqrWKHSiDJ_$P{G%52UDG{a_Y=P z`XcOnBhUsxtyi3o|a7*xDE@SFx|K zf|pQkEUOl+Ue+E(mO{BeaoHe#wj9s9QRNHG=v3XmRI9825U**9BIj_)O>Rp6w54vk zdMQhpt6PS9fAz(f+JbQuKu#-`r&IMB;$h<+r|RS!se%cC@{PK}y#bKIql3bYmTXy$ z9Sk&CHd|_6woig)UbMl}dm;(|Aeav3@NHtlm)G_3x;htjn_VlNyLm>qn>24eZfCwJ zxVe87kBA@;KrSMa*e84V$MO8{%X(UkRd>HNDA7Z8mDTN9l;#iH1v{{>+8eA!!hPf2 zOXcyaU9|M8(HNHpMb554hoVa2u`sl7p-Cp`LqFBLmvl?|s9)5Z9~I|?j}x|cvgb)r zK}jNWcEwNW$6wT7F;Hi&5;U!bnA)WgZzD?e;y#j^y#n+|r^?lvLGsm*eH18pMe{?C zl;N?Dt$-{yE{^s=Nm6qP{hWte)GVR--Q!B7?k%!q0fcM~Z$!0+lIz=S2dod2*#xg?#r#2^Zj;|8WXJ`pQ5~tU z^4p<`RjohTkkTeztwlFi*=$=lY6EzcpvvA=4kX>F`5P%x{>>4sh&vH2Of#F=Oy40E z?kA)=x4ehuKG?=Ec>5K0+$7cv^MTDwM3A${3GfGY2>p$}4(~PgXEU(rt`i_9m;=!> z<(rpX5fR)4;$rf4 zi{AhnuIg?C6ub%u+sPh|_VC1n_4Ky9y~yQ_aMM=uPBAa4O34VJf-i4;$DG;NSF=L^y$%$ zq(OQ;rbBwH(B3?96rs1nxornMj>=T@>qOTD$M2;3rqH&T&(B3}-4Cw(~qaeJ7&z z^t!zMaF;Vf%rsFHPFhb2m|Lfi$ZJ}o)3e%*3>w1z7CS&c|u~Hmz@yEDkPh!>m!Jv0*s4-44|d zrJwrtwJdmtXSxwxiu0bWe$*}4VFTm0+G`n9U}OHZQStC|(vUq{>j%qs$n)lJ@wLKZbH7N=@BvylaN2G?JuO{cel8cz>)?zx}S# z-e7=2M6F5{QZ8{e6qP?v^t38xXLnM|Shscv5*d}%Jdb*ZI+&?XA3A5*s6^zQcQh)O zw?=gorp(4fV1U#vp|VVM&k=PqZ9tO;`9HMMiy|%fOga{??uzYSoQG5jL3=s_UJ}|a zj~f8(8`k!-?dgpn>5j9wAf7=2cNUxxZa8|V zWBetcV>91Z$*!NUA1f095Wo=$u_ZPizfKCJLfvbMKaS#do@lWK9BMyz_e0ogW9&3NJ=^&Rh+IzV+fO;4i0Y4$ZdQU^ zi;vMBEuzu9tsWzg$9Vl-sXX(w9=6dsw+|Vez)dgP70kLugJ~A;V{Kcg8<}r^y#rJu zasK%@xO@8hL6A8a1gmbv1`x>3=IPJbSUUe$PCpk}gs2V>eg=$5RaJZ^Pun4nlmmb) zw7#xPeEe=%j&J`uT`sF(;(cc}Z^LJdoL>;M%Ud72e*;|6P92rl={%I*yA)2&4({5K zq$)IEcrcMrbI&Fn-4a86YNmS~Dxiwv;-d2V;8q6;y(QGG21d?Pg>}YVD+cfUBr;Db zdkj@+C@7W)OVTP^rA>Fh_33K+;m@WA(tEY1hp7MiX?gmf`VM^i=vDEv_hZe6D?ilk z-h{93d44q24zVvb^gPfmY+M<}Zid>WU(|aO z#)G%Y5?C_RY!A=OWF z+%S|gj|?oUw>yEeU^i)Ac^eXuD|{=4LCzxYwVI8z>cfF|NDmu1046dMPX{|4&2nYXbW@Ic0Bl9H?g%@1N;nr`YJn{@V;EcXQxWJra0pTwb7~p*GOEUuGYjhg?k--lCP3CB{RXvK4 zQl}?9A5<9;Rjy}GJZgmK?4If3ZU?~rQ7`$Bw~jTaN2a(7BPN$;`K7;Av#A;mG^jNC6>(NsuJWjp z^*(A)q0>eC=GH-tVgyf$VWFd0IPsSX<1Sg<0;kxSE+)YdcKTRduUt(hu5+8T!5VX9 zp8Yl?krQE!Gn)-&M%?z(>nZB>;#_A^58Uc#i6RzJ!)#3=F}8EIQcvC*1}ik?rsj+) z9(9qKkS_(#wXH`><(s!-iceRQ(ee$c*^M?39Bo8BMl_ZF`XzdVXEsUflTv0_lBSP`c1+N>5gSUll;` z_2DXyE?$k_HNAM)9!93j56?^#KNIW>Q|(xm<>OTYIj6^-%|z-A>4NR5>RkQ5eQ5Km zUcr?J^!@aKG*it`Q0NVS#+e9LbE$qKZnLj)<@$7hdoOkKcF)=F80H3lm*5VL`q0aK z6N0-6lrZq^Zg4N+x$FQDtzwV%`OkSePV3p7{#uq-Cku>KhOCGCeeTRv4vDGxP6~CN z4Y=CGdvqXnEVuw2`)!9M--NW|xVpVx~sv)LF;67JF>c1MH!xL>fTmv?b?QStbd zh8;ZkdX=`dM`$0mTuPbR0afkGG!EJ@vV4t`V&{N1gv`BwK*LPs7Ake^aD-f>%TiGO zf!)j0qv5WZDt+brri-ncIg#eB$|%CMqg1Sia!(W5_=TF@a(?a&!I_HUvGyyqht{bw z^t`fjk9d=P_+!{Wb$={ISS?sx(=NBcQOc(d569u5HYEzllW3Y!|K57380fHy!HX_7 z^wY}%g#*wo1%dOA|xdcEi^+wcmzY)w^9j zp)OK$D-EO@xj~(}RcIHWp0O0FiGcPP08evoY)2>+Wu51NC?tR4F=t@DMRgrEGfz#17x5NHAzdQ6mM8SA;%tx;R zBP89*c0HBadi6k<@E0bD>&`9`TV-yWmIkr zdF(=xr&J683obtv`i|*&e*Qm4Sw#H0UG=%>H75Ge$*%^#j;+0vuT2uw+nsu$Cep>c zyVQ$a6mQkV@hGu#7P-O9O`gt9w!7JIHOGyx!Cq?F?%=*%am2+J&bwl7=A=w5&xOH8 zdtSrY%U7x7Rcxc*8>KthZc&c@n=6sR+n^1w_`i+Tsqj%Z#<7#whJA^y(mqD7y@VpS z7ms?!o2+)<#3Ea@xE*dl^_gBpwB8`lg=8i3WcVNq=G7m<`-#jHaBJX3OYObmGxKcB z5d_Ga-~^&PS#QNc&%nl3p5fv_P9-vl8(U8;3K^L z*mE6snFxPF_4PxwSxM$5{|{k8LdH(V@AhzDz`eb!Z!dB=5s)sy?sD7uxq9tR9nR|q zkF@mAt$~_6rG+PswF&}&$IZ-O_>Jayjf$EjLuFf7v(!{1{LT9BXSz(Ww|NB%D9Z2? z2fb=4rW+-*S1Vvq%tyfsT&(rBRo~W1bpuGc%KeZpX9*N6wfGCZw(LM-fQp)po$a9O zTUyLLfwx&QgX3KHn)pwc@NSUUN!>3pi<4=#$3N!zX%a`LAItgYx}Js0J%e}CdboGi zH8~?Hyf0hIu#Lnp6JtF)He@DiXa4p-N49+W>mp&_4S{)ooz+~ z|LrDpvWFUl|0%QID?28w%;UyXr4xP|)u3pE7`D;&D>P2JXu3w z@H=T)m8#E5EhJnIP^Fm5>L*_%v)5xIlZAGBDrsdMSE?3Uwa`^gI$4x2e^M%m;wd(w z-jEU~XE~t4GOS(Q(slP6j|IJBn0uHxD1B&~G@Bs?M{g808wr1G(flV0lk?9^F@Iv8 z8l_QIt!Y{Fk>6G-RD2s1UuhE2Wo?e|Z44Chq^0cd7!;t2P*DVJ?IM5S(=hJQYO?E% z<{5L#Lr(2{E>VqlbuUb<$yJrRP3g*TkNI|#EEtTm7hz3xde)~?5 zeF<&+JHa%Y`NiCvYZ?MWADA``ac)g5QyPqIXh#P`TKPEHW9O|SO5@- z5Z@)X|A0YzFI;uS_sin_QtQmRM@X-X(Va-qohRv+cX_ zJSNkFiQY;R!*29W?)&rTtB!YDY!DT{pS@q#E&G%=Y~bg>#}SI_23Ux|d|-2A2+Im` zzoa3`z)c&(iqE^IDp%d#5Tpasfz6TFh@2s3V2y>l*7Q2%&w(*3RXA~!ZHPF|Aan8U z&e1Mc_i|C~7^tVXRKjUNBqS6=LWO5s0V2P7KHrJFb8)(e;!}v>QdfvqR`S&HK#Bx+ z|Fzf~Vw#hh&kccxP&$*3Nc-Obc@S)h;!_(gNSqf7ao2XoRJAByrST)L+~vv^iubmAVFcGfP{oxXERt zTNT6Oa6+hs$=9f>U12$#qXf*=Qc0{wqIflrsMab= zRxQ}>DeR4Py|*=wg%@_!)DKPCy+i(u!{K8_Pk-*22<&X0|2)i36F{e*m$$zz%V{NI zW3E%$S>fw`#0|h**J69%Oix#{ja-(BmN87=%i9VfVxFGN_y2o*oA~tav#eq!lQt{u zs9i;~F0nmQZVnjz^sB6Nio_ve8{2Mu$S%fpZt9=cXIod8?7hAsJ&a!!PKbKjGpnWM zBBzgO)y__lsve8CjkFLmbq#ey#^s^1U4+r^L4~iX09Vu!135(%RpU|ZO4g0sOhF&1K=nt6#h&JVQ)&U z6m3Nc8FuN8Ue(%(B#lydH5Zh*))_{6kGy@_*9k~IM64tg^BS$vIw@zV1(CPz55(0} zzO{TDtB*>3oAIRXx`fn&a{g;ysG+D!p+PAB4s;1EKUEPulGLV)QM-F9K~cK9S}f)b1$-A~w@(>}(H5W_IV-<@GPQoX9zv zESsy#%JJ**d*F6e0TGe0#u!5YxrcnPx>ImkC*RogF&e)y#0!<`F8?8bTiKfJ3ZO?d1B(z&*klZFPGO94rb;(A4&Zp=rgu6PH{&# zql3gSf!rbst;BTvJ|CVf(E) zz=$)(bN7h$_2qUC+P_053}KqT5&RvbO7s9e|5mNi10Q-5(1je>9E^D)du1QSyBDAnll!;M=N$I0{NbifqRcA6Lg+7 zcBA4NK)rU+FPl)0IL|pV7Xd-IuCnXoHfvFcor zn0aG$a`>j(htZvoCTifQMg{NH0wNRQe>WJxQa2(VotA&siayF0xQjx zXAsttKiB3=Ahwp`&EG{~%4Y|)cRWNLRQgQ4lSmpR8+6yy0HJ~4FEh4=t%Y+C;k+dy zv>EA3)hm@x&BXd3pLQs+wMh(Q7-u&U8mY`bBU zIcyZj-91*hG>OAIT)Fte>J#&tA~P`wAgcgi%XPG%-_HUS?((3SL0CK44gu|fyS9p=u$7~c0EYzlWrCqbe7b^z3guZRRdY~*{ zA^%q6ZOslUGS>!!R3#+T3Q^p3tFVL=MLl_ajeFegishQU+NWwB)S1487$fNx{03W= zJSgae8&)ahfE%n#2c@Ek`WF!u=Z{3^vn(E52QCwJHht}M5M(-0McW;%D%D{t{sj~Z zUQtw27B#AND4=>>LVbh~NbQqT$g`8wAX8`N>9dh^U5X+xKM+TMaL~4~`wlH5UpDD2 zxbBL2W(4ZhLhVaJhsm@nDEw;-lHRoxu%=^q>V0ahJKnTO+cKNY)|dxMdZkDuF1XHH ziloBUa#ZMkeqFWJM&mUV=s`ahT2_kW+I^_7cqI|g!ZZCI9yMPC(n=yfa{IcWdKN{E=BKDszJs!Eo zDv(8F6(%yq7;F5OQ@hGvwLQPBi-P35*~!}3%umyFuy8p4Twee8vYb|NVrFajlWxTP zXxNzHYu(uqZW!Ps%(r+*#*y1Xpz;vj(Qe53js{u`kQ?tBTjhmFr- zy*p`aL7LZ(V(^!=Q8zNx&v|3|mx5ozCCg>Z0DF*PcAG>CCD4abAT; zODc6}bHKuwpRMb4DsQu`coQQpLapt(PoG40g}gXDG{);WeOlZbW+R?kT3_95pjJm3 z_3h_+{wd2FKx}Q<$C267J774G0Z|dzFP2jM%fw`7 z-9m^AU*VVmAto}+));FI^XeQ#h&geaI(S+h$Q1pFFi`6RkrQTOj>}By&?f*O<2Q)J z@4Tt0Kwvwq0&vg5P!t}bKsd6bR3izj6~izxp)T!Gc}exgT2rE=00IOEHlEVqO0j?@ z*r;x6@0g0E#UdLs1OkB*0VfMSJ)H3Z-%Ew=|RC0gcV6Ni~j%bngG|Ge6RDDVikH-QjYhI!tf)fbrqcj*z&)Yu)UQnv-PK}^ zJCbei0K{rzg&Gl{F&B<^rbKmiR6pb3ka9I_6q!pT+Sh4{Na5}jRPvr>M8N<=@x(aI zLp8Q?tudWy=cgJ^C%5)!^2vapQm+PWtSZiupSDMiSdKvy?gu51P_?ryal%o0gxI;H zPo`V1mYK3GBL4_J0!Z!g(T6o{*NP|@r_}$u+~|Zj%c>Q+)hBA^dK)~X9H`HE>>*a! zQ&YyodQVnUtV(HQwZk%Kh2C^MQ*z47W#&FjCa}=L0GnrHk0KY)rObJ~W#0pzx#Pw# zABZgAL@vOENQmrbG4LCH!#3#A=4*n~J3{U-4!7458*#x9keKXzF!Pa#-1&8R`{6Ec zfFrivOMM))V@A*Wgbq=43i^+v?0m3K2V)Gxi8zR`vG+87N2GyVjm#J}L?V#rfT1e& z;MsjwKpz4i5@9yRN9z2Jn+NTr&^YcV+SWjy>tC%*c%{zJxK2vaC z4)R%$%+qY`Z0Do32g6Lu>-zTZ%jvJnx&Q!AUv*!|$eDaMY=szh=P}FzV8sF_LQFJ$ zn-1S*BC_+cyg7Gq5>CA#=HI8@d||j-&8jI_5tVQ9+;5Q{+zqzOXMZ-k$^4#yuK%Ia zy)r={IGzO#OMNUv#`b6a@^CAckF3=-T<>w6KfKW2rGabs5U#(VDExY)fL4Yho{TvH zE3go`?ymiZ!{-EUKt#-j`2Y~)EOPNF!`u&Wo5xe2PFi=4*I$w7AHFc8)!O4x{h%@L zUc%hM863ZHu_U9)Lul}TsJ(e+lWg^(3Tmcf+OwE@gRuYX)_0S>*g0jp#u6gcybxMO zgS8{T6c6r58RJ}Bw^12hWvG2Kh*WxU-)bhRui|-;8^|*3z`!j*-U3x}5{amN zJx!3gc?w67Fwe*7+aCbdw;${2MJ^{27;DjXaHWwbzSfTD!%a*?P?4_%GqH$}69DNu?7);# zzWf(uVA5kGg#4W zku({)N=-yC%rX%X$>PpGWI4IRAM?{6hr{!9{;{6^I$wS+BK{LpC7{aG_2&30xnIjc zk(z&fzvGS~dbGUK!C2?oU@Q!(8C#!v*OnzJO_`cG^{jq&Mpo`(^SK8#ZuXC4m!LgH zBazWNUYl|~G8zdq?sqv2l>OsX3R)uy?=^D9*#3_)dG6xpVf?#O!IisDIc zLFkKeP@}+A+Gmj!w{ELkubie1y{maH%IS>^Ma9wIQ-rdunlpW>{KbKQrBgz|e^T2n zDne~_L6rSfoo~oPaavJ-6Aemttw2@UnZ!hYt4RFaZ%|!287+V2V&PTPj8)Yy5i9X3 zJ!=g@n#rh)x{|slhJTu&M#wsI>;vugoX(uGP_jg|Z9c7*)#ev%{07}JV{U4((K=Q3 z4$m71+`vGa_0x9TFp(v)M61Y| zaCyIf`WwC^Y-nw7G}?=k9x$W%48Z2&)v{OXScu|7C9>&#hs~vIXEPt|;Rs;8ysoc5 z-Ex8mGy5&!@3)REOPQ;k7E%Eq1Y%}8&-3&1bU3(WapyCMj3S(SrujWi;63ofDiit7 zh~Pw=^Mmh4>vUoO>eSwc6Ai&IC$Pp$Y~tyvcQnv0a!f?zF7ER4GCfUCe@@eJn$D{T zL|`^{DD3A)`<(v`0RO!kfr*Wo4wF3?JDKTVnP_=iFK_GHUzf|vB0_A~a1Jux1#QUa z?*z@nV=LPzgE1sR0J%lPfeka0natt)WGqcbv!2{~5pfU)B4Vbzr|j#%V@>?+u**LG z?O-tTx)V0h%zx2Zy9UGpjjmqqFTII15ljig9brOD znI^4)m5_aCMx3l?THew3&<(gF5-pO|Z>==idro0yhNZyBA z$j5Ca%k%Se_%_>_-6H27;r1vWT$t=0_1S>XEw)})usy#k%cfnA+aDP1jJ#|^cXZr% zOO?ifjAxVpV0l^Bvzw20{x&`Rc{qHZmzU-A*X8`WuB#9e{C!isJ+FfrwN_!s|JeQV z?S(Q?6+x{J*X7Cia=>op&R9Ca9|wINq3YB-qH0ZghlR5IP17s&Bamvi>E9%U+(U+{ zUiqTsz{*4ne;P$=Qi+HeCFR0}**t_gvl2u+-N|#589{OJE zcG6I>6ozBfxN1Wxbh$igW@eERfX?28T$8xN2{r$@rg5xJFF~bc)o0=ONcL&X2q#O~0gqfKSY*xtHIn<&hw8`VutPc#_4BLmuFwaC5 z@JHKx>ha4ZjK=r>U_fP#I>6VnJdR>(HFj`#J9JvQ-}1LIplt+s+q189HF}e`PUu7n z5?sgoc)>OJlkH579RX|)=5RFg6A1oX8@aqe;3w_g`uPcZ!D(Tk3*NI_#`5$wzW?&t zqyZw{rkiOxeE&Xw`%cX6e8#en2$_#PY|BSCn3)M!9afilrhb*PiWFJzf?`B`3>5Na zCJ-Em$XH`0Q;!CBQ{8Mo3N^Vc0^=QuLk^1B)z`MJkJrj}*4)d3`#SKhogGb)9hq)GcpFsFgn2#)O(7V`=bwc^b(C`Zv^3Q}lc+ZbGAYZmYH1U;evjGd;Z zu~fT z@Tqed-@y&r$;=0Pc%JNJ0IU~x`fEAAF6+sOfQamT-!bETU;JHPS&c=s?E*JBACRYl zE@K^|h4d$;GxNj*$O`weF0XDn+WFfwKTU^k^Lmlxv|fImm$QTatP|mWwA~+DUU77` zr;2^sJt(qk)>#h`(3x+TxAx{z`x-9p3GJU0*GU^4l3SDPBn=Ev`4ZIOBMcEOe_e$7 z--voFS+wbZ*}@*9BkQ;#UMq;&_EHZVb9Z3?|lDS20R8k|A30nxQ9|4am6A%OY7=D>1+ ztT(!GH#ITQr+g}9;^iU^xDXcVoJovb(tjkhNkMGfinor-|&O>quQp_P) zuZsJYfg(?QAABh`*3L&WA0cjCPV4IrIlqy=U^^Tf3xWwn>k)gSH-X4p*GdcrJm~tZVp2sxDo~s5!%VNVMw&!PD@O8UaKgV5VZ$wXK+y zdTjC$&&;b6?@_L6Wnx4H1VD%Yzc0gBgEje}cM$HeQC7)^IpJtMucv>Xz%)NiPk+vC zHp`p1MVt%YCgdC5RfqG?JLj(i5X|HH<>vx=exW~p%33y)G1l0Ljb%25nPkO!S=N(V z7Pq{v?jquZD1Ot|z_wW4Ir4R3=b*(+L;pf(dEWF7m;^#tFG94!iLr()&qrgY<6(un zh+D*6L{@RD!1)g&!YyE=Kdt3N7{nh2vI~U+P{iYePC{QIhu=RDKv?y3!?a7Ek0?U zOKyoMop@W+3AOT!*hu*c0jj^~6-RyqsJaKd6fYAsr>|38?+$!~fgVx8*ba8;)%@NI z_gTCqwm5=9MO9p-W3XZ$>>J@&VBj$h^Y4YGN99g8QuWAlA61(iJ90V;0P0nzV7F=8 zA0xV>47f6!z84w;(#r$5aPtUFL^f_rxwX}9fL`E6vw8z4g$RCwcO@*51q4`$ocj8! zEAe;MbEJ=YuBXF!BXZZ-_!y&?gRUqM$?q6xU53@kzEh}bj7KS#yB*Fo?vH|IDY_|8m(OBSAqY{nGYj!-f8!GsEZze zb|Ct>lj{&!=*J|3d>Rhh*bRZeZ0+G28@rre;uliRSXiE-{as+Prng4#Asg+|m#fXhDh6xZS z5D>uW8#zX(P#KXbSpgAkZhOg$anSGFp-RUDDTF~(c(yJ6nu=~i^)lcWkbnSV*v?i~ zffGt<7bU|5RuqUd8IO5j(o(-Sh6!~3d2xbo|MT?p=fQk4Y~=E~%GqfH#*z1ql(%gh z1~PvrybovY_9rV@wzHXLV`pn8X2asJUgYw!T;A5@ZS{9i8^dPWy*IXyVOFr~ zdAI9x3vln>PW&xPePcPwy^qT1Z8}SXO&kIQ%iFq~$QYiU?DS-(r)f3}fxF0ha?8mr z=QSK`Eaeonq4I8b#W(1#FDo{R=zHI~0w1-){`C4)HF_eB3r&9NywNXu*sfB~xx4`% z^4u2O`KliOtMrbQjkXgxe= zOZW}U0HNSG<*le>8TGauq52)Lrh;1HTCi;oPdiQWJRs%Q>Ch}Oskp0091fFeOjK7J zhf0{()AO+=b050q`8}``8<$gv4jy%2+Q>i;I&EX72fU4YO-PjZkC-jk5;rEl2j`#$zkuV5hUL1dz8t~3;A*U#JOn5u(1yPBk@MZwZA z5wXdm>{Ur?6VMPTzqRQzu8a~!?pZnBj$Gf;QwV9Qj%xQpF=Td!5`|GERmTHgmrf4` zUAB*`N-fLk=~2z=Hdn(8`oo*9z#C~HX5zuy)c#?Pp81b2d~saUIcCFlCK9)ts*fH)!e214=K8|uGZy1K}?OK(lDuEP5ULe=o$naL3Q z&y?987tY2KTjM3pOaO_)dU3MKx`zN#zwFN*x#+p-Hb#$~sg zr{|v*`l0AEH*LanKHz0pwnljru)< z4#vw{nX#%li;j^p6kS8VjUBZ-Ww!Mh3B5L zOon7#-TCY;7l@EC#9VdrN_<6~yMnlyiP*I=V@ymt8&{mC&U~l* zvi~Z{l46@!miBESE94?P@%%Kc=Vf^-E$2>?FygLN>Oh!{ArhQ_oY%8E{4qcMd7Pi7 z!!*exW)iF-&cs=4WwTXpMZX=G^>t<)VD2}}jW>u3!ZA}d=vmVhXeJLe*CRA2{~u?y{UNM4t)nX0 zJT-IeCUY@FqfYK!#T1vrgTU({ysixOpM0^_qo1^_DdrXfv-LS&prM;$>_u)dFv?W-sQY9vu)x;OrMXUYFyMYUEbNM zL9t_{O-2!HY3F`%7fCkLh`CgFA$;S_K#&b_TJ$J%FpHsVXQW!hHBdclCr=4g$^NlE zTGfkCQrgNI?`DOBK!uOv)a$R+@7p`St|~S%?4#8k%5UJNTe#n6%k(ZkS26cmx-k;B zK`pKgJKAO5Yaf@B%F?naAxD?Gqy?Q5)eFvF#su5Z?y?By8)$NwH_C}9ZKgM{nkD4S zoa`Pc1E=j>z*(4^_*aFo?r)nr!1uhBh}ld;Gu-(@=}mreHMrL94$#u{6C(p6zyYhu zkN{0edVw-`{8>kQTh6um3W10X@oab|n%D=Dk{4|ZQP|?7(4yK?&kZ90mq|hC)C7}b zLXwB6kSI+|KOEqIGsz;d#(g(c9Tm!^^5q+p(r8N5eIWhv15fX8kBkN-mTQnqjV{N; zVafpIHWfB!qpAw(3#}>M0iJQeE04c_)#EH2rcKrdM7?gPos>a@h_U;^7*Z`yC{6K| zsGBc(lM#7bEC>1VIW4kv$h1?%VRwt{l)JW+?nHG5iIe4Qrg?t)j^lGp2Nc(MsOUr? zO?R5G9V1Z$!}k#mYQiBKb+1kd^Xbg1#~ya7G5ozN%mld0SwzG+xD`@t^ee@IdU#6M z{kYcHqh^32qI~asR5>z}Wy^AQZe0of)D(_;>qwnSqjb1wySQ13;|?D`9;4|a&^VHV z!3EYdG_opE8`kv9m0snPZ0d;#PGoWOJlo@Ro-K#3Wi?;wIA=wut*+*-h;mbQU^o|J zzez+KE-#C$m=D$-CNmi`v6+oMP+Xpl*i1=@h=gf$Y(57~9dw?;E9qzHRB@->ya$4u zf(rx))>UvOaS$is#5s~xWQD8(0rcLtD@I~Ot%lF^o3^0wu)FMTxDnmAdoqk*RIu9x zyuFX>=Apf06@Lmi`BTpgu|Gh1G82J_A@R0V)P#J`?Ho?hgW`R?D~an2D1IiFJVnTh zYj29o@j~y0pMrg_nb927&P~dy#&fk3A<<1;T#`Eyyty)PlO6-)^V|sa%8nhqN0J@_On?pd25f zlM{zprw>`CHiHlbf`)azUWYtS39jWNaK9SkZTb`N{KG~8S)gqRu&Nw=Ogq! z?n@#Ne^dqHV8$IqKx(hTsfn##RY>c7q3|j(o3Wn8mnoy)B_GW@C`!>G08tyQ2rW=r zwTe#H2F1(NQ@=)CmsAuTR>7UBW)uak@)u&?mRQ6$oF(JWAz==a#HhPTvpE}(Vi#jl z9w8zLUQ{@!FlA2unfThW7F4h{(NIx20nwt--et~$#8NmQLP>`M$GN8ktCLJYz$xiv zxFsDcg*ZbpD3uu=K<$cd=N_T}gh`kuVoPN1{hnwS^$*=~V~8vfd1(TU`B8W7Vz+B) z$r!^E@quY(PJx>^e+YJ(ltxe-<8+Fe>G|GK%>D8h%6aIBlQK#w*-Q%ZexHAp>-!ezCsS};^ybs9_)0mb}~|3 zjQH?wolPwp!yuB2oG+IP^K_i1Cp$k`Gude}`rFg&l`H0ld})7a$b!anJ=;e^ICsnY z?E<$#R&fj5>UU&_#H$buF&j3v>|9@RxcF~?*03jo=wluL$s%qcAI)KZiJL!RdSbF{ ztO-#bbtbot?MGL)+zqe;^5GUWvoTdW=X$CX_pD)<8M;hCRAmSzo(Fj~$r1t5+^%3- z%{J<-pv7*9x>K{pMnq&3-86VIQ992rBsQGYRZy&{^F-5I5QVwpFmPko%$6;igJl~v z0QCw|GheSs#lTIeH=K5bq|gf}nbI`6TnD7c zW_fv1kVTGZa)F4|x#Yl%gIfqf2bUd!!*cD$DeY`MrI*L?<0<(jrdV(Lo>acC(h)Lgf z>Cdcmgok{#vLC!;gxLGLmdJkSrQlP4v?LlN?sK|<;75}I18`wAlQ6yrob>>=gCA7W zxbl?%#5@`M#Pq~wA~N1r0hX{QF^+-?cQxbM4BY4xA}aO|AZAG06gZcxNst=l9hi;% z&gRJG!g7gm|4L|TP#WH#i{{5D8$9n_D8y4BOmBAXh{*`mI0PcSfw!ehl!w=DzU$)+ z!|%HR%0nAe8CHc$rOKgT9+3*ooCoiynI+1RvL-J_`*nj>&F||#MjXhCT`H+*NPA0t zCS}Rg5Jr;p>5~#dQuz2s)g&D<7IsCc`bUIq4@wkF z#-FA*-aT`GfWm<)Q3hQ9%0ez{t;!U#D!4!tg6??mTZlre2qLnsSe^bpj1vo7v`-B& zkK%CL?|Pk8(>WG7>1OAr!(^H-^R$I}9FSq-YEKt(m8 zuDDh33U_fPj71?#I6UxJHY}0akkZMuVSa~Y9sxtN@u&+x2-RN@6Pwi1Jsi8)9a^Xl zf-9au@*Bf$OO9Ij;gA9Fk2H8x^@@okQW1qT$Fh&aW+nFu5TS-}3fPJg$BQT|3F zvS8tR^0={UHXy~@#%4%nEL>)?> zt|-t0h#Kir;D$4+xxT0?8Xjt>c(rTuH>Q`aI5QzY0vP5KN>&`0{7YvtL@K*&J zoXRx_K2bi7jr^{tYNG*Hfg4t_o)qc!vQ(cIDd(=_L;uVR>gi=I#CVl^QZ$O=eub_> zLHtgvVoM7V#g9tzxo`wsJWY%Pdz=|7X2_b6a-*)=ZlJqL@ll*`%o^p7y2B``D8DhF z@>YO}EnCae!5jd9+)Cmgi>wRQix1}qEmoW2DD@hxYFg5D52sjLl${d^U3g3#CT?J% z4y5#J)+k2k3bP61-5GIDNP}6G51kc7ZIckvCv{bYp?gAE$H>UooRxc0v?gTV#@9hY z70kqDA~Q1^ChHA{kWe_!Y#|Xp%O*I207wUJK$KdF?g-lYRbhNk8Mp~z%4P#pen(i~ z)B;h+bNyAf(t#T&{}aJv1WtT~LTB*SHXQQB{#XQJ%WRk?HU|(07m*8LO&zG$5MAgf z_rOk7&xpO$tCVFnF?O@zPhC^;0et9=8%u171hiDUA@2pH-B-XEp4c4OJTV=a4UrHQ zq7`uHnog=l2^s}%LSECPkco!L<7d@-)pyB-6)*4uLS`Z&_BV?0jn_B~VZYoy7amf% zU1UC-(!fsdgNL`zVCudTka( zJGt5wJ&1}Fdm(`tCe@B`Aj9kg7!Rb@e(H0(Uas^Uwt(u%y zHBCoya{fAI`zVI21C552ft$MOj2x-sEKAhIbtngVvRQs4<&mfuViC#8bF<6^)PJ>T zQCB8;EfhbJV)b59#4LWqn9l5B(E*4;D?lM|Q%)+Fj3Hyd%*KR!1ewT8L_%`lX~8l} zh}}5A$O+Z0`c_}hL~I0r1@6CwD(4g7ai zTxgn7=s?FSz3=VP1a3&Fcv4-?=CO=9m%KLyuot+|RP;VJF1l49lr{(x#gI|{7Ly%Y z=81V?o|zA9EYWO?4}5**)*BEBkq?*8%xj3I(WAaJ%FqqmKu5m1uW5%X%4~>@zf3Ax zDeZ2@q2!T1Z7{5Co~-#!=19auPTa}gM9z5x*}qSuKP7LZlZ|jW*67i=p0%pq5~i0l za~N10!FkW?y?R%;E^(L}Oh1ZoujH~!9g44rRQ-zhPUr&}Nil&=6;efFf}zkb;Q$t2 zH#KT#Vf%u0?YBVjqCGJ0{SlD>%xvb_%oa}8^9m>Mr|xjss}VOFv0v5XB#}~)vxvQe z1q7{&r!xd0aZ+~zk9Rp1XiKRK`fnb~d)6#e-mPw3R%^}tZC=h!u$p|RSPyG~r@rV9 zv26;a;k=}jaj5oWtrf|U=(4P6ZM@9HujPo<*&B2p4z#<=cAzy6fvtgIDiLm0@p|#V z!WNQU8OHgz|4<&@&{lQZ-x&?b8%_@^^A-CC?N=49Ssx#1( zj(3;6QH@%`hHe=d>kN770oSA#a5P%I!&ZA6k$Zonh&YC+k+!h^T%e%R1eH0oyFjYS zT#9Ts?w3jE$YbP^r7g0G+Yq6SN6j%+wllVW8b=DG<=C9ZAl4#G$$s2XyHxU-bd@G{ zyHJowPv4<))fqy%UIYkVK#i%yl&ty8DB8Ty?xG5HH{a?H*MJ*}og-lU#ePUk4-Hl9 z9jR#ra3mbNOz^$f$8n4?(~+hp>u;)C&vJQ_cR8N+4t}nG=)Ft9&qj)Q zMH^ZjhSH)$`KQW&B6Gz>3@Ak8(K!m}x}!+loCW2g1W1PgTVzGO6o0v1n%#lk_!tG? zPi19u^dG?zLBx@}2o{nHiG!@-KM3-BXes?m2N!U>PFM>I1+AzW1XDL(Zl3Ny;d5;| zOhpGzM4LT(?OXsQ#gX$?SaTnIT)-#d$=D~u2R29IiRc7(sbiacz;2hV3ryjAM;AV1 zW25&g6@>b~M=8Y{Kcs&288-y1Bx`#7U;vR}J{a?j`H9#<7T^plDnM7cbEDr>rf;if zH*tqk5qS1sjX5$OAP#aCx%57gdI;=M;$H!`@%2?}@p$-xHB~NNu&LpH(Zy@KRXc&G zQn-FKSTR-}bn~t#J}A8(hK}}*g1(e7_AnW1m(yu|JB!G$L+=||`ZJ_2r5(&}5q?|k zABXvQo?h0)Tt0@-))<%PEYxv124$FN6ei~~*YNEC{Z+`rp_ z)qfr6&PEISiQ?5xisKh`XBgPw-bu$L^rrJ8X3%8QbH*A?j5t&ss3^TTUQyRjB$VmI zx^fP(RU}7YdhCpZ*v_h|3T-IH2!`4_YRIMy>XeqTQDQ6fLFN&Y*qJXY<{(;w>SxVF z)}#TKx%rDLu==d%f<9ZPhi>-}od|-E5C~~6g&~45Y%E*Lc4jlNKN-syGM4Sc%LVJ= zzrN{or!CSu>|G}e^SM^?y>KhH?Oc5W19B7d#KsU$M3#6WVn7HB+!^Z$av`|@{?4|TZ3Zy~8d@$w@!v~N+F2E)1{mT<3zNKOviy4wS_C7`+Z$J-k zqnQlx%=VdJM1G3<2`m&$es%pxXE5nO%|vVfUr-7;)K(>(#u;`fRVQ+k*b#A8W6Wsi z=FAAH@O3>HZ77u57nBKVoZP4?BDq{jpWs!m8a%Z zqtXf038-!Cx8shKqEtC0eh5mr@iL)G06}cIjZrpYJl-t(fY9%~Nb~;azG^a5Q+1u5 zvihnrxky$8PqVn~qiL;T!9n@zT5FPj&ACWBa&5JW_Vy=!C*v0Ik) zd?6x}ma|&qsl}AU^1hqu+B7C2FybtsV3NW?hX6}h2Nl)*N-b}l%1#d|l`o0Ab{72M z8gOuD!8e|cb~+d{8*+lMr8|BTS9ey#PQ=B6RnS0U#Cs<-P1EQ;C>_XI5$I`se6`ah z)@*G~F}eu0hlOs(85j8|FDi8i>hSYmq8)VglKJfv{fHXRZPWi~WSUwW-J17h(i!iQ zRk}s3hAe3XFVf3vtvka5nj$?C-NgN@jvxzsgh;c8Dp_MdoukFneW?s(`;NI4PiIp_ zwB&{Jl=15Eht#HnG@kUdxp$x-d+PpVi;{}=G@4@h1BWc7p!{KI;97SX8-1aAp%qDe zpaA<<(tY zMf?qmmg1dSs-J?W{fw{Hc)hiv^ie@od0oL&Mhmmpz)~qYc|S+>ns}}6*3glVC~wyn zQy&(gP!HABi!C9A3aK`0S{_Ya;`oh{5QNw;Tb`cCJP{j+gS&`(6Sfp)D5~GOJ8$$&U5nn=Q62nTy+Hf3&Q)W=Muy5NMY~}9UnYWF1j1O2d15{q zYvA4lm(I-m13Vf4OkiV(Eiu#Jfw$AOzGihm6_-pUIiQL~1R10iDOgE3Er zk3=MLA-crFf$X~(Xsq&Mz$>U_b7Vde2yzm66?x-&+rqDfkJ$S&*4D36?=J*Hx%5*X z-eR}3%Z+zr-Am@n0zgFeFqy;5L~dE+vdFrc$-e8Do#2t&d(YrCP?4SY89X6@$l@@Y z`Dr?SKP;~ocM)!{)w>bxUVgrY5?z@f{f1u-f1|ef8?ky5yr*8jP$qw`=ICw1%ht2KDnKVS90u;W|!mJN#(@2>&nl%#UFq|AYwLT z4cm!{*;ux-IezD9Vmrxt!MY$EbK6AAegV9bZdYR}{MH7NM;jBoE}= zn?e)+eTZcYft$FE;Hq-dVCAw(WVLq-gFM?9(mNm8*j7^zgw0Imn=#LTKo-J<$i=gl zI`t}#knlk}-XCe#tBI{qEh2wYn@W-sCMU(C_ zS@o=MTrRS-;}!MlrD?QrTKzQGlhTJAcm|~T)a-}ID_(fzeG4Vo~hXBQcII73@I&z!K>qR^6tqPAm?VYv~KKTj;>yZ zFQX}6EER9ZjNHbpV$h*@|GhhLx@OCW)S&fSfsoAo!r!ailwL_7e*pYH{ zJ}m<2j7gup{EF}Phu&=I{-v+{L0~gY(>%ku^>l`F>6D_#-BgXm)-m)0u5!SuBoA+gy}%+YzO57WGaCMW)pU)`?-OWjt**Uc5vU-G!Lb zZ>1Qz{N-^U1<7#oUrYqCx~)dBr=8NK`)TFw>~t!#Y5N}Q=pmj6iL~Z< z3*~FQJJ1xgHgevZz#^YIBN|rj0QTgDpPdZZhJ-XNm|?U8!)6UMJpLohQNhFX((#nJ&5cTp2#2Y$J1f9)?QxUme-RwVe>Kj zWNro3tlfagM*f|M{W**7;+W~_AIHPD!{v2Z-W-v4kBSiHJ(O>Ua*RL1K61FWF~?oj`!1kY(xTaB49qqmD~>8 zbQfK=>m1A*lTjbol!%z9ZP1cN!_h_r^gXtwI8LallAyvmPQI|hYSsB-NK z1-8UwcPXpO%N29Pv0NjA=G2ywlN88p!t#jmGU{zEYi^qAjjHi2=d59E#&Z@LGT`u!w1l znI~fn0q(N6^8zAcO);`_#*`$ZFPrFHNEbbOeauX6T;Nomz~OKwt;|}yRWlU)^-t;z zQc}H>H7fWkMPwC6EGz86&QJ65{a1U;wui&~a&x>vLe^gFR>B>_R$b&eibABfQ|zhDO*I-h3frs7fDF^y4 zrG{WN;1+G6Ri$u}K<%W0<4{t)2>ZO_-dl>Bl6tVU*M^AVex9PM6a!DFQatdk(REIE zf=IbcR~mp;a7eGZtf%cqpq}Qb7G@^0VWb!5F0Z(}8GE4l$sE3$`I+rO-u~@mB?z=L z*fd}HpovylRozg%@3mRgNPSuuGE@nlYDvc46I!it#AE+L)5&XIo2nI5;&bp3!`C!y zp3L-}h(+FH`Qg?VahGtnshJA_g+FaIo8Hq?(_X>G|oQUYkaXcGne*qNZ)wT2y z>)2hZ5xM;^qSYpr9>+Zl?XOo$bc7XD4D9VV*DDgZEG!@I6ee1W$%#KC&o+LdH3%c# zq$fLIV`i{bfPyqU$6dqS`E=)6BUbMLBAO1<^mGKUo-XTYkyY3lF0wSN-3l=*cug30 zn2erqG?~V{HPo31068b?X*Grq&oczC|LbIdu^0pc_c7SJNbLpdr+&{araG3FlMszvth&MS(X=B7l`v8fb1O`3qA+>H$s%!Qg_S`vPTa< zyAK5%fru@e1Dhk830VE-QEvSy?m}?kgOv~k-Ot(G8ok*f^~<|R{L0}IpcOa~m}w#= zkbA^Ddb>)gEjG4~ybGqgW|%}nAKoYW99ti076@{gJ-xH0$jpXkrU_Vy%B#n>d}YMo z{H6;$3LW?650s`X<+4Qe$Yj{eY@Ud%xK~;K0xoe!T*o6Q7C8_jW2DsM9rGXx9|e0^ zwBI6Em1}FIE1R1yZnMx0s@Y{q>k(nT4;1$n4dmOc@IVOMZ#^|wT@TAp6OrG= z5zYyUiW6ctu{znKY8y1EcHV_Vqa9?qbm1*#=Yu_-Ud`)@r|m$)Z>b_$&ih$f!_;nm z3rLx#d7cjQ@^-oWe09shTq{bhQbN)OLPGCCqNP^F(^*DQCzVr_#o#~RPS;#T?0Sb+ zI=Zl7VhFk=wO3V}azjM4oK|K!{&}E34wtv{dU88$6&JIOtNq^_ z%B|rtQ~cForW9M70sV*Vs!=t>hXk!kZT@2MJh2;hWUBJb=9^-Zb*?|hyj2|sBV{F| zw&Ek{C0Uq=K6YegO*&+bhmO?fSQQM|JGa-B+h-bHsAzep`@D3vQuC^2QUCKg%xNJ> zS2;eQx7Q{PB~jGK>~X3>WV9I$HLv;bqj=&E6ImhxAj=!M1!lI>lRf^yW_H9RKgFFZ zRaJ~-fdq~UnfG=#4KzUs5lv==5#=jo>Jjd+Z2Dd+NkW{b=33PJW!?j&a;ukam%4&U zkE6ihk0Lhq8}k8jam)XT`vJEAj@c5M)HAi-RcL!jP}OUzOc`a_tD#x%V6JCyb(TsY zH@VapTP%$g)9zQ>I(vZ07$Oq67_!EEBbtAMO0AuZRoXtEz#GNn8+Zhr*#Ht$q zmZ}c;$$^(1ulXlp)-kGUv?>=XPk_Sk#W7p1sE>KcBCB!pH%yax{^LjsmeVRuj5S=2 zpj--LQ&o2Nq<1O!^`URH$Lu;wU0R!IzjjFb4W9{Dl>ZZvZ)I-m>`oQcQL8J2yR;;UgVplvgPmwQcp}qqvmMpw2vZ{mQy3HkX+gE*rgJsl$Ic33~um6Z`bg) zn6)2M4Y9gi`Yna>H0RRO2^IJMp<=1?1$l*hbEFT{DkrS11v+!jwnts>H6vykfh4M< zCG$4!NYqHq$0?kHK>T8^ne5X)*-Y;I!>wn?8qZ#d$O>tq|nb{uMJQ1MG`T}>R)cLo1 zZ`&XAtBqRhfSnH2Hu@Vzi|*Sl2X_yHN?fvlC-|@U$q>Kirl)O7q1%YnBdZ7_yj5Gn5)~KabUyXCp?|$* zYE+2h(g~=nam`A4;WMTdgddu+fZBqrZ&uLEQ#AB(=1WR75<}f-dN$!HSGR&ZkQ8$1 zJI3nm{^2>}u>Ym_;-{>Oms`61h(d1eFjfwBo%nzncjGNy#kjSxo2_CzQS2FrQmeP* zkgl=Hjhhd5VTO+-l!mvsMTr{eDXu6>wCdL6uahH?nWyP^B%<~0yq?bD95b^iVzON5 zGYT$r^~#^BJm+%hTl(JRD~`q$7o0R2t`Ct^x-ZWSzBuGuMhZ-2KL-c}wL-_ELy#XcV?;#EWQjl` zB5znv=J4Il-`H4U#_2D&yb=lP!zfVv8lCFVWE@nfZm1?(mU8<~=TTQ1qpoC8_nJKv z84CK1YL-YU8ChT4@-Mgk;Ba)Q$$1N8&~!TjsYD$fnHs*EOoiQu zq(()$RQA8E_Vo;uUs=?>(4*DS9|*w#j@ZVCL1SL_;*Y?pT8;4{0{IhTn0JoXJIQ(| z0ykktf6?u`7q?smE>)-Wn(wVf!v_dV#t_@^JxAE!12sy2kn3A9=1*SIbF-?JLd3+D z&C!@=B69AhxL4p3B2D{+jABaJjxQBwLzcJely6i{eT?;+sIJ;L?%H-qDl*lRYQ+g<;VNut z<)^4XJ>!ZtuD>>-tuTk3I+`<$Q;pXk0WljpO^1V>=jC)h|9Dx?3vnrmPV+=25M`8` zB=LcsH% z$KxNz<>H(JoDext?G)iwRw$?b=JL!kGqzloab$inkad zs9{Wz+w7}_5v#_v{IhdCf_j;AccLk}W`5Y8`A9rweb{FQn3pL zadA@P&w~xsl@8xY`S#S~295}9j%=UV z96^HRFSq<#+#5mssisgRi$zt1tgd;X50ROXQEAk&!V()%6CDhp*@`yAdIqFmFZE)T zx$f7h6eso-uwb~Wama(hS1UZeb| z7HzHRZXx>qSx=eNyKZth02Jo%s=a8_JL44BE@7-tGj&h~W~06v(ipy~kQP5iqVb`L zBCOM?`}KyozYD1LN8EkXC5bZs6@Fl*X*wQ^oy582?Yz96K*Yw3X7t#2DiT>g=LhXG zR0DmlPxJU`EX$f;ovl+6qy$XlSCYt`-9j`!O?EcNKaS$Cyqw)CEeWdCJwNrGs&-n` z%%Y+%)URZh?wDk!;0@4vdfVh~SMp(9?!!vH>ZqZf(aGm988$fZ7XyyiQhL{kTDZZ)$_^eZuqCXoh@Dy>t; z(v7cQfyodVbyC`XN$u#jeb~Yubpde#>xh`x7;|9rjS1pj#r=dVF;5C8R*1W^B(*1s zHwJ`OP(+lz@bEL$QR}d7yZAv8)37C=N~L;NE{ht&^BeTax0O!RK}6|1To9?91Fft; z1m?VFmy4|)(f$V6vzH1J>S=tn>*LBCT&q30J5TZw8HH=fI&~mDJ7H20Ox+BdM=s zB*iy#iluU^AcOrXROO1s?MV8QAE^C4LI2;#f;m$g*M6BfHoBKTzlmDXbnpCxW{?zAq?+h?m<0R z_EI`bSDDLA1EVXzyB%ZX--L861g3UZX&igHk@N65kFJ^;urhs6@ca&Ar9On@}))ERY5*39^a{*mYvsoOV9QP27%+kj3D@Bb` zGu3*ghT?G2Ld|5}-`XLiEC&Iyo&fOtWRBl02}5K(kz2rqS=|OxX$AEHH|Rg~YdhQ= zfq*<|Z@>F!9cX`dzjXrnUCtnN(m7Wd%FnMf=A?ZNB+Lh6pV&ST#4SJF<$odP<}RA5 zjvD945Oyk9cIE~eOu1!>O+T%jNy<}sm#KS?hL*z39c|L7^tD8CwfZeWt#F*$4iE;I z49F1mE(LEG8zi*yxysWPx+_IV-O3W-z1M+nR{j0BcfyCU@GeOG$FMmtADCI(3F}{i zQ`~6N<-8SYJLX)ayFWkOq=OH_@BoTE6dNXfFIpn%$$wjzAK4Ec1GQFgEtJwN>de=# z;6KYN(P~;;T$Yawm8qvpBk*W$9Yt3PrjZJw6}YpAMk)vcUDf#=REBKvsip?ru#6 zs5?s0FZ|vt4}kX@&aVdlRW;gI*~U2EORmZJ&L~w2R|bmDY1|Dez5dwkqd9S#=N&ad zE$JKJwx)j|6rZT>;66^AbMEcdM-O$k$e#KS2l;MFJ?9$dzefAMwo#MFJ4)S2>;aJc zHzp#u3*2Iuc>ZP%-x;72$>oIr__H8t;%I(UbNj2UxRGHn8E);-^=}e)^3bZzm^~0k zKtycWKJoONqc+P=GKTVAn~;A81N-6jBB7hyVZnEr%Uh>l`x)2|=uT5^NAf|#^9_&! zH^HWs7FbuZPyYI(C%nHyQX9B$R4Ebc|z zYrOYrR7}$jAFPJ&ewlMU+6orLCRY$lzy;|h+<7KposTLC+Z$!k`R}hZ~_v&-WA%Ydnw*9KA9=D`!A@d zonKfCJgCJTRWJvmpubNKmEqLU%3U=a^}O~5Vg`hrMdoRK`r{ihU4Fh^e!jY8B>_){ znSc;1FK$EERz=$x&S{b#L2<`Su2TGe5gqFC$*BaC!qqLBG1T1^T4}V{^Z*uLYS z%C`+@J-gG7%i($Y_RnWF=H>sDWmz4>F#C_HDrQO?-sB>^&JC;f53>3nOI^iOvSYt` zM-mhna%DR2t9=kd%Nxx>7g3G(j&toc=Uz3d#d;{8wcyWL>yu zSzyV=smv(bQh6TK?qsW+vE2H;GJ0n(m98Cf5?5l@yrM~|8VRbr`rErBzQoe7uX2Tc z*<9yYTmCNJNe&(JqMZRIQD#F!stPa|a**3X)2PQTIV0m*8JAdQD zpAZMP$a*1h{^;WVmKN=!7nr-IUmYZ@M#=cmTP~>fe#L(%AH!2!7gbxPv#)K#i8w<$$SK#BM2 z8EBPqmU8arO%mjO7u3d3^F`VUZt-#p6jD}=dlLp+DO>ityI8yq@7;0p8#ckRIj}hp zv&h-GA8_aBPHg%1Uk`9Qw|5lz4L8AVqjPIhB-3-Jacm}UH!H#}<2Q0-KMmLzJ5BTP zV60hAr}K}W>*+$s!H>H;0GB_u>Ud`}-3sp;jwpngWOb*XLWJjkK0W<0%W`Dm_3R)Z z=1z!ri)>UZ^mJ?_7N`t2!*84R4)}!~^*8k3lPt$qgZI>VXCU=`V*TuKt)z6_z^VD# zUi=%A%uz~Z`7xGDe6@A6^8?{t5|0=;9#p+M(J(W?EhG*!nd#Zi-$@+dhpeaF&HS+} zKB)LRAspVv=4k9UVv_a6UH*;bCoz?KZ9W&e!K>f!H-xF<7#I5-x{mWLPJElU#@|`{ z9ANVC*WMb{#wYCWg?0h60E|F$zh)943HL`1lKDE>|Jn8|(0qh)Z4`zxt%lN|OIXUAsUeB_g#$qtK4lh(He%%yO z2=WPBx9sVaxrDH!lfuRu%3dSR0@oq!n3k3Ss}*|a)NHjguNWVPVHS{6T3zpX-%bpDP$g(iA# zO>a>0Oah3vgtnSmSP>J;)QAWI5SVy=J{-P(V`DC_Zv91kUjD5XJh{-Z_Qte$ zDIUVtT!>PM8OpOE6ssJOsKyVK%jYtNFmYm`P%#Dll*DJe@;#l2ly%#yWlHw^X~hpD znLy&OoK`lc`FZ~KKi|x3U;h8E%V}jN{*sEGB~umaofN|oPpH=oJL4Tc_l^hVmmKBHjpy7T<6hzxX*5rjP2bN-7w0IQ zYW2&ieic=lxQEl$mm(rEFa1F4?VEH<=dnZ|dcxhNEyl3S zV0Na6ineSqAPdu<7t*EDsVJ1^22x{LY*ID0#v!uYV-hY`s>jfRgRE~*)gvm#Xpr_$ zs)|P)>efhmZ@HIfi9vscT?t2vRMA$+#g4ozTh9C#rm~^Crn$FcNYUa<3*MChWO)U| zOi%XsPq-ECLKNpc71XLiS%KP~pnaxVThRQ~*gyp2eRIv;5xv_3N`u4RBj`TZIS(iZ z0xB0Zze9t9gvc<@#vX}hS%0|m|BLmF*i>G2BbT;zWkr?$JP<|2YT3ivxTf z=^ud9P3$IlDHm_I5329J+~KD5ZRSX#*9*QES}AQmHo)qyg5NuC9t)`%ESn>n12GBC z;(o%tF>jn}vmZaVKi>^Tg_EQl^S4-dH*~f3kpvzMP{T2mCb*kky&WNxo2v{WNcb1p z&V{Sx9}c%P$T07%g1HU$BifO3tGU7mX05gJJUtzZHST;l|MhcuI|0HRzhA07q`md* z5!d5!{~dRq6nubM+zzpetQRLD#QgNf@#&8vR-AvF*UJha2)2(08cs^PRX1Z}wy#;V zz22S=e_5OL%iw|j&wJr_;|yVcl;?}WKGwS$(2F(R9QFJ-xS12Ee>?N<$xubzMqb-P zDDFq~VA!CF>scO7^RZ|jNr;Jn^$ZbXCN>9i{1f72eId7!G5;aPc7G@8lq52Z{Vsh7T74IL?|F3eNGn5raScchL zVoOEhbj$y=%ro0(CL``e+)v;VDX_|}=VM(C(}`b9MDe7XxEo@~j(X`s%f)&MS6d~> zC$TkbKn#+2G6#Xe5hlf#)++d}7ZMttx(=b|2SKpK?weN5ajytxdK74@`cb@erXZ_b znDTy+`ckceVZ?n?%<*y|l-2CiG^tG9SmGz}Op+9c3xNdGpm1!CKTxGzg@stn{Q@LNNWGM=W5%y$xT3J6s^CSuS4E5a| zo>#88?VXdHzlqP6`l<6;0!unbk<}&FGLVYer6n9$1(A5QDf%WvK+MKY$K&z)GaI_R zzFmI4E~g6|%#^$qwTjdB4lY;t3h}FbG3wZz{_$3-m9%pC-B=VUFvuVrn&a_?Q~7I-#tV%#$^jyOS;4UYiqed;g%W<=L3Dy ze>c{hcn0;#_*nhB3Cay_Md`w_Rll}zc3G@xb!WZX4Kw6L|a_#dqT&eB+DAW#H<7UYi5iZ`*P;C zMWWeGX5OOC(PPn%#ilEt#$3^MPJf*kl!k`TR zF~F?YL3KLGs47L@E-0sGWJjTugvwUnq-fZcOVPAq@f%HgwWp(&0xR#myiGiAxhigw z(yV$lE+o?^UFn$=dXf~2Nko=cGl`j===e{#i{KKy0_2hf3|mwmU8l~tQH&SWSEven z$p6r5x!f-4B08;h0W)+FDkT=0qp4s%&<6x&Gn?sI+{In~h4qDr+na%qv89fnj0~u$ zAawUDYL4=+VM5qLjZ7#xHFrH?GfS#OXuRa|1e0KiaxXD{pjWc zoYQO%hv_&I(fW2i|9Dy7PLSm3+|JVt6^S0%uAIgHNAN)+Y=a&8!Mh*s;w}!B+5T}j ze4BwMGnvclDo*@0;rHCk)e3WC(~U0GGCfTD4ZqKBGOD)dEQFnPI>k`k|0 z>83hsoOLAZ(ZbuPRFR_N4Lz1nr(UPh=IK{C1COVl?}m1M+5ckeomiE){KPfMRAfC7 zkvaau%+F^24!06kf+K#v_lv>r{l)Ka5Vr~KU;`jFY!Aj934--i)*s|9@e<+R@EaZj z{lHCQh_+OA)9KYqpI7kQjQ&%hS+EW9y&Opd5wl^Mjd=zexL1+CfR)+rFxfGw>(o^z zaVNLFKq%yGV~k^Z5N1neW|{ziT=A7@nOWa#6Gm!o2qw$kxeX|x^~b6MkR04DPabKm zU@mxyM{4M?m&r~_~%SE)`f&s9aYd>rLbP{>aO}VP%IAkPjf-ygbmx{VSYZ^;}eNoe!g5@ zUf0V4h%r_dP#O|M9FmI0_s2&?g;Wh*bRgAG(F&B+Xed?pe4JjV)7y{B`nIw$#`suS zQQbf>+$Pubsd9-&wLv@h6g@ttmbI;nX-X?mR@K#Zr7hm_aLbG9kXhy?D}0dc#BJB@eqLPn*Sk zQ*3EC(n!?fNpHDqTiV~F*zeQSv{QfIblp=>Cr4XXZ;wIqQ@bwyxj^3Tujx7vJysPS zJud2!ai0ZKxM(x%Kq*lb7jQ!Hz162Pv4L)DZekI=*QTpK)RT4b7SY%!^(aJEu%o0A z#=cA}`GqA*8c!SK>FiKwo28O)b2`l6jvghksu9a9F|n(9jWGblz)c#Qfm+{#GftGxKDo@0eG){6N@uQ<6+LIuz5Z^a8D}=w`2UC&?12ETVim zySr2CgrD)lifFBJvsQl!2qh(6+{Jl$r@Z3i|o=MOeI=B|rmWXA6xJ}iLH`1$cFI=$WI8p(G!aC@K%+;jzt z59i|j@GE(YO2C%+$(REXAa5csBB!`V?t|#Q6EgrX8DqY&IT9RjxuFwe`a3yE+Ld~X zBXZ-iiIZQeejC=NdIf@u>-&b;+;yAp0Da8`6Op*HTVCw^-AqSWr{1x*?-brm81(D$T7-Ocx!5$`in9XElUDmhr<>hsGI}wHJ9e1&+v#IFJ`?O?iwjU{&U7FD5 z&}U+^{+ssQEKWq&Ff*Hjeg4Ojne6#+ac3us_}ivJ{N__N@i+X9f&W8Wek0=ZUj)j{ zE)EPHH~BC;u@CyiAJ_mpQH|mNC@r3z_OvoVPmT5~)}tmY*XD2=rHW}?cS71j{w^KZ zGp!qy`e;jp=EwU{_1|_rPK7uuZ)~5;{6ui#P9&Em=VPa5*kbgyXv5CHz#cMQH7DW& zn*-cgmcL|u`ShvjtoZOB!WZp-csW{P@9snTO86ay<;(;Wje z5*r1~ZoaU!jVQ953y%3Kjf$_Nf0e=!?oLo7sq+T>ETeq^&*-7Lc7Mb!~> znu!Ur$a;pX#D>j8W+F&9A~%*U>O<)00(ay~ps)pqg2KhJYW5x1UdYeSBWImlTHDA_mt9xY&t=PEt zFJwiLZ5z)Owz>tO8E!_6YY3~kNS8`$riY_DHCa_!_im&1REoCvO>!G<5X!}o>29Jb zm;sR}3)U8|x%6953yE!0DRYKuw9OP#T1#`KHk|_4%nh~njvb#ERT#(bPe z%3f*}h|(%~sVb@dJ<;n;yG5~UdehedsMUWZeb%loO6C&F!P$#d^g0kqsKHDBs5+I# zTXoJ&RoXP>s-76sJS8;ME9i!f%b*zzrzrk_DY$(nN|xs&$vMkK{nz4t>7Dm znJn{>%#nyhULZe7&O~&JaJmwH6q6myfMaGhM>gMxX99qQu&P5+HX5C(VPX%(n6B{q zvvqH%NK5M~(T77N0YzGG8)nNq5jl{g$X$bHr`$Gp5x9$6UU)j1={Pag%M09vt?jTk ztjn0_O&lTmQyWD%TXgQ@zk_5|k1Y(@=Nsb$LR^%snWov!lbH|JT5)c@ESI;p_3h-A zh1l?w&2$YXiceN^Q{}(irUSVyN-NXt=r^Og0{f7mtfYc=T9H!3VHF`>m}olK>0qD# z`83Vba$1*@bE^|4K7wK_Dsn;65DAGswD`8aScNF|e)q6PH=X-q^e06W> z7IE!T#gCAG&l%R^T!#TQcP$LSMoZi#3O|l1Dr!X9LVklwzd3*pCNt@K;x48^nF4Po zUE^$Kh#TnM3%fAICTKH51!<_P#oY|-91J@g?j!8muOsU29JdOQqAa7Z=+PM^&O7@v zNF3+_cOhfV{GG7MAdwhV4 z4nqUvmC|3GVv(9j>2a81u)ad#$4vjJ(Sgk~*oeH!`oDy=s(u{Zx986-{w~`wy*=F~ zSR>DIW%9X305DJ1emC|T0fGx?RmT!1j9DhNwd2ALa~(wQS2o;<4iF^m1W30L5q0)| zG=fOs_#$I7MpYH2`0Z;SX~AU7vZ;wh#!L(XAAL77WFc9@Wlm8{RCs%=MK<7nOqm%Z zZu!Y(o}d0{=kKzfojZGixp_F>EY?zq?1A!(IKPIjerna0%W`DtY~o3TW8t#Pq6lQnC(2xPlxIFM9l7dxxBnAZ|7xMn8{dM9E((+ zi~_3CIH$+O`Bc4hd!6ntcKQ=BC zrIWF8K~}XVVrv;h>v@&MO$U2?p62Jn@%eB$t*5`v=ag@Pqw%_OBlGBcSFh->6o#pQJnupQk={vwI5w!ZU{Y-878;1A z+&q=e0r~&f`_nZ^Qe0gamB8FRBD1>p-ru*+{a@gD&Kf!^BYZIQo*zsSgSoj!L{@gM zrmHi|G0=n%0uxZF;9haM;f!G8OKgbOhG3M*cUzQ>`OAPltFM?%2!usa? zi#xoMtXSU=L_uc7Nh6IWp){6~a&E+N0x7?Qbyy7PXpgGI#sh-`R>f}+kLGEJg;y) zh(z8*egan}+I5QfPN!yn+U4}dI2UGK*nfA+AIwJyXW&A5lD7|4Yr$GQ8&2>%6B7kO zAjmJ(mO6^eUVmgVQ%sb^bM=`IL@w^N8P}LxRICczMe2x1ZtsEovb?zC_vP?6BEoth zxshL(TxJWl(TrDJdFavFjYosjFK$&qc1t73(`%?fgjHG4up#E=NRj+t19B!_a>S@3 za^Aax_sfyJ_lswy^?D7r+j_pN=d-MV1mxVtVqWB6GMg_h6pvdV$pq8{l??iqUKp__ z88^cuYz2d=w8n?kf4>bFWhWH?Ns#pdA`;Ny;QiuW|9(2Y9&YD#y{xx$kRTz%-H61@ zDU6VtR(JzRqBV zV>0@U41?lj4ubi1^3PU?gzzp{L&{E#Xh-dCCaJ)~ESSVy>7aorZpBh27c^Q99L+ek zsUHkpPpN(jr_nj>+b9-@3F@5U5R;>ydF0wp?4=gKKp%WqBtvLwM}cyCzv6v zD@*{^i?H*{-}vyt*CWfCw=C`43jEp0XiHJx>2=;mD_hqg%*lFQr*zym#8pYD&Db%puS9>orydO#Zz*%s4<|Dfk zu@`xh@DJe9_=?YTsXKM@jR9#oZRUw%;`S*vSVh?#J~!yrKD}Mt@Q-Ud;h+#n5W9^;5zYyA`*az%Xv8I^GQ3?&HznJ z2m=AKGBdd&#q)_-%dGQ03|R9`V6-|=91|j@bT^OOWPMvN|5%)N%V}X+B_OQ%)*{X) zc@+62B*V3q0Y(@C6@518wF>BLCE5HXN&_SGoK}?G#JP9sl@9@xW8jtL4OaC~-^J-a zvs)H_JT9jbdk>NIe7?QEukY`&1|nj|e)0XWIO8dYQ8Bd7t(%|KsGbMYa++b}js9JL z5tETTvHAd|p>*Ggvsc&gwPmsud+AZ#h?ezCi(DV_)q`as?-|4*h|4tV(H~z9$CtzL z^>F%jxV_!Z{(3#H>ot@wid-NzWcQPhc=%8~TTP>$%)D}=&E_qZiBYe>?1iCoUjKfr zomH*CpBspk+1*j~K}WJx-o42RkV}Y-zHx4ouxaCBtIRe`vMt}(#KA;wG}QK}`;ntj zT6Fq0ubwkIHaDv4SV#@C@dbJx!B{>$;0{Hhj7B@k5AkN}p4@{h1n$^rIh%h3%_LS* z(@}L*N|l7cSdjY)Og@@YW1Kp59!dv5oppjZfTSiUJ5^dwt;Y#na70EXW;i-nfV$0x zCrS+9$If3xiF`>`1w=U(!?a9Nl^9~u(OfPb(>*$M#@6R*2%8DPdT6L5H@zkfg@c|j z0%eZC|(h}Qn(R>-NMT&%Zji9LhQ`pn4K=(u?9`% zP?hi0O-*5PYR?3>p<1aU*#@195+HW$PQ(X8L_9^%o}OI|6MVS z6LdG2hO~@S5c5|X=3)qY3VCL7CKb2yXN56g;sH>P_0MNg8DNI~C@~Q&vrZA`1w^@l z&3E-N=@WC%V6XAzPVr=4cChEf+{ZY~=qsug z7|ta&s>Y}SA`p4z6EEM~@;7!TU`05qHI#;!(yN$?ho=~ed?s5G7dr}d9iQotUbhf2 z$qlkLY?~Qw{E&`fWeYrT+S?P|s5o%ysUqc^p<-oXtA5+J4ZK;iBs8i-X%bl>H@Ccy zKM{N6Ak5_PRT#{$wXmb_Py2K*rY{LZ-YjEeNYz-)|DI9K84baP^Z4HXMfqYi_HCP@>bIG*C zZV>-LFJWj>iq71{wP*fyuZlMMTaNGyPJ?}@b$#Zj`W-!Qs#j}d&o!T6(Xd-bW#(>{ z4DQ+k3T9Vj;8BjogaoOdVL~0`k=P@M>f=$3@0<~?5CW^0C3y)GC2Rc~mra7wUc1 zw%BeWtXPJ1v>QAFJJ#eekor6uggfPmxkejnIaOLUYq#V&=nyUPq>;LDv+HA25rlwn zCFk7X8_6xKKL|q3RXAg8^|3uS9mww1s7gg#o>2d*`zjINa5hI!J_&$)14(TFV{4%P zDQaOmq$6f`0>>-B-+-VzTCE~Y8`r#c>s!?<^is-TO!x2lK_{kytAjMGGwB+wMW0se zsBTb?;1tehSf>5eJP%88Q6;GV?m{Nj?(>p0uTXA#veoOR&cM9$hR%Qp)2&i>8t1o8 zvnKy6pB5Ci8u5|Y1LqL_LAVmJ-67T6K%0ZU%%;sAj|1(Xrffh{o{55OosYjN9>Yp~V@EAvWTSxd|xio>vaC&pl648NbE{)nwb)Xpz zb9*{Eh~jEm6e8$$3Aan|j*q9q;dD5@EXNlXAYA2ox!uldTD}p9+b+{ZA{nXad-sMk z{gG@)*ryF3|4vV&M?DgB|9u?hC#8N!_{;pQnPeVJYAUe_bNeeDTdSn!Opg%R9u+Yl zW6xVvXwdPs7q|KKdWvy-0#I^x&Mp#7X2?V)lv_xh?x~qa=@$+Dw5gP(p_1Y9OS`CS`p`=occ1X+Z3AM1^A?RP&2{?#I1yG>IO{*hjA%S=$B6bIM z3&+@@L0dyBH>zMeBFy`Oni9q&6EHa-gv)f%Jkfg%H+CN6tCZW)?hdlUJYV>BnykkLZXYI5aLR4BEM9MCx zdYrB(D$&aMKIuCAHY!>wS{Z7%>Z2XC8gBy)ngNOXcIJ4=Df7V{PVh%^3$W%DG+jAw zd7GZQ1ELac-%y|^Efs-u=yX@4W!$J&R*|mt)9>1pI#NR;h|m^dPsAiwgbU{gKkWfc+YLQGnj# zph?cCdNjvwA%fiAMQ#$#1o6keIe#L@>=p@E1W!3EA^8e%g~m+axn%P&c8fbz)QV_S zw^-(ySuJ%2Q&FVul8e})sUy`Ml<6E27Bk|)O+3Tax%hwfj+}RkXXlxT0Eo!#w%)Gm z_tuUZ%e9jpho6dQH*wGSRwD^UJG^>2H6y*emXiRQ`2J~(J=#auf~`F?hDK+&rIPK zvrO*bmc_ZnIp>_mvN&e(PRY{RwR=8kel>a5XAdRSND-vxXO9hcLzi{8e_M1IX(I{d z#mXa>)qEufQxQbDZ#4i@9?HB{4>;+*T%c^^1(~@PbR(IuW<;&2NSRuD5zOqH&%nDL z3ROET54tJajr2)APo@v`%aVrQ(hmDG0~v|p&Ny3P5#`Xy~pBH&KaPJ73NHKzZV*!56Uq5J@FQHOFk>#w9E$i$BR{ z%K6CQ)%#lF(Uvkq_PI<1NPw&aVqVyvNLEBwbI@P6)qQB><`70PQ%VZ6RA)@O+ z9M==o1~ewU+zCcLDB->ud~VXR>fTJNd>rZLr-v49COl6I&nRY9phU$#z@9a03Q^ZD zNA>oz(9cbx5;Gu#EAfH(K>lyuoru8X%tSO*&~si^IZXM0(awMD9gFJuGqX7^C4oo< z6bvR}$1Yx#L+qFs5QKMNC9I&KJ=LjcZdieo(ZbFrTbkpe5FE2(_8^KU69bZV5+Mwg3s_z;1EwC=!5`iPd?> zT&hKSY9LQfejS~g)QFskn4BX(*7x-ta(i>jH(n0TAN}!LRNP#%F5I{zJcYoic`P$X zDOP%=0xfzm<#%yUl8zKJ*NwAXxJiWNBe}Q?DACv}e>pGT81IU?zDXDzC8wwyS_BY8 z5Np z$UU)$w>T{78zigRIccU8c-@&s2Ev>+t?6bxP#X-@&uq>CE;dXR=l%yX6W~&w1i4+- z^~Qc#onybGO>b^-r^Qi>p_2MJQy}T1Y|*X;i;{#^>VEkKir0Z)h`OVthrMH(n9OI$ zyJJ+VNqgeo1=zy=7D?CTlJ;Yaq}MSNl*a5s zS1tab5J8IT8{5x$hco~zBd2Dw|$RL;yjE1O#Tsw6Hr8AK1lv zX0&aJeOO71^4v{@dg&@?ZBwVKMh%i;mM+GuMkVz*3j~4yH-rnxEe!3No)I{8H^Z#r{ z^S`F$RF&*&s0(`1SY=$dSgr=t2w^4MAXi`|rnI1QM?qi1P#tw%p0xr!{#9kG0ua3#4=8M=nGK13&FW5mp!2#|FRfAa08 zU*6o|I~~69a$tX`CLw-*PM?h?`W7{_y|-Fd;Q}P9c99$B8;`6J>ZVW4ftTr#%{on6 zFHvVsUAKLUxkM60(g zJ4@P5spk;2M7J%2J0aNO1OWje0zq8339E<*0@5mO-TjbV`RagmfFCkkUt)WwK%cRu z+Z4|9au25cJ$BLo#?1<a_lHxIWnDKacRw|rBeJJnqCrJ7TTY@hne*tDDpI13KUkg>E zP4jQGSaPz>PmLuoB^l5>_i)CyofQj#td7Mnsjxf6zZr{*b}*OTR79Osp}U<;8NXsp zFwlldb!znLP7qNON!fYBD!i`RP9D@~Ei^Od>-$nn%`IS!t?2Tib^aGchRntKnU1Ik z)7V{imR7Y6T^p7)dVqkU@14lH?N2=VIa_C#481$N#nDi_YuJ3;6YYTaU7 z^u0u%Ae7FysoqX0YxTMJ?*?j@3YHRVpp+p=Wv0cs0ga|7vD9Ct?=&tCrL8}N=(Q4< z*m-u|EsniUdz~pQ(gC0#5(E;5`xIwcA&uinBEgtFRHcJsmP*+sw-#(P;vN`b{1oI~#7yLg2y#QX5`ow$*%r&5kSTdvRT~>nR@_-pLqLH*#NI96-13e2 zn4Mk_f;#UenqQ?z$vy~y^TJJGFp{n#leA?dh| zdEHk(zyHmXBZA1qF%!Ky|IN8ma6XgqON3w6<`A&1LXaC%j3s6tS4lu+Z&_TpQ971n zTo!I7YRUN!nKC3~bxo6YPEg9bI>T?_mEBkEtJqTcgUP}?J^cx>0`DNqov3HPtE?b! zo(XWwL=eGx6$x;|c*h-}H+;!$YSEO?FgqRC7^tR>p7rx`+&>RXH4yuSn;uKimu{Lr zBCnY`nGyi?!98}$q}`RAJzKbO!!;naa6`;-N|nB1| z94xiOlBIihKGE6a&r3VzGOSzSQ6ioodZwdyboT*_NJ}onaWr>J3@4$yA1bybK}ZB4 z-YO^v0U;pBqYF1|7j86O(^d=^9 zo}FWN#By~0$ZlbGbPE%)$V#$iXid${#(2~>Pe~vb#)0@m?m+Aa;c-`dw_bj^YrlcO z#ThhY6}duge0P}n9BQM@Oh=cxCV zD@(ZakPv~yjeh1#zi2`^MG6>tvojuu9PvVYU>5K~bWv*gDaPo3L>evJ)Yj!TKaHH9 zNI=1&$49mWXl6XHcYSIIZ3A*Wcx6sT#jJg%QcvsgD(fnp#vjo-zCi0dgZC9@6Ic01}Y!V0#*f0OSvP9W|NzLcDS+ z6C+J0DwH^4W>>G*AVh<07E_XEgSw8E7=_F8;9f0bMX9KbE1@GV(z+1qkE(-{4>{j8 zq$I9_L15-OxsljrSh;04J~{6V1LnN zdN)i1u2ZqxFqD_n%BPGp+bCU;8BX5<17@(5Uj8sdR7I_5s2Gv^s^P_)bW)D!z9khDYq}sBh{0`gj9-8g6HLSLz?edKVg~s)^pzZa-IybT;31DJ~qxczK(%}#0 zxX}$X-K+7^#x^m(Yw z1W=n@NA;m?Gw!lUNw2e8peo~P=|Gf%V&lP7j@`2G@xV(u4-p|C+~gW$y&(vNfB?ih za`GjDL=>-IKqi0Gv5Ba}+Ej7nflCvnl|M5gro}NToX6%S04`%J#q41sph9mP7GVfO z%M1Wwki<(`&rIz6!7nF&{O%5~?r>VKZ*qNu#62lq;i{*=R39Uv)4f{fx9d%Yj{GD5 zF@(TG3p=kC5iCrtHkn1P@L&oX^{QKPGWj)pi$OUAEB(wBvcH>UrbpNup{=aw+$Lu2 z_2fJe5JC=e8GRR5cT%-IaVy#NzUmYTVI}hHUfl9G=U<5k;VQTiLOKD8Q9D8tqg1sO z$q|93ENZOLFI5<=%2VoSRVqq%W5L`uk%Bd8U^LJaW?!gU!>}hcg|&QZ+)(ER3=P8= z;wHM3WzFuqyUdc+ieY6C;olKApOT{PHdBILFN_6J&!nb1H0sg0kJZ%7SuwE#+&%o_ zBt%T^K<+>U$W`PDSvlUH_X%mn`2Ojs|(!97b= zS)1Ugp^8a_sJTs{1Wan0HIP2v%24|lT>8j1FOx1%=hg}%a*l1od}UUw!sXwlGdw=q z{jAjUs76Gh=>qG9lUe<4$_BK@Bi`bUe=dj14aq?-t+PCR9n8a6Z_@N@!oXo)I zxz?7?Oi|JIPE%|cvdO%YzE0ckV}G{96H3~9OFE}Iu^&tQs6Kn!r=cmG)J0#Q12v1d zpAx2za~T3}EYl3&csoUhb2jYEuxz7tqqk~tD@`fVDYg`YF6zR~!t9xdoOd3~&Mgb` zi}Q>4#mO4NEg;0BankTnK76%K_{>?GvG8ayWdX2JY#Z$7_WBJM^>g4SZkd@63p>Z& zJLkwb5}^PI0qZL3Rn}G3l>$fta!iZ)66DT;P_J0b>_i;-kfK_T{zkL(u6O3}cX3-i%#(6*bA4NU^|W}=WF`Q^LXhYub*&1i~6F4V*;tT7PC;< z>_?d#M>HA-&GkPjh?Gq&CRHv6twbe?PDphVJBCfvMWMj#>~Fp|SR&3P7y@naBX!6Bp+M>1s zSGuU-kDjA)DblzS(AJOfb2D2!QF9`mA3v+exVs5yK>m=!dvJy|KR104`nCz%UnOpk ziIZ)oa>$nH(_OrMCCuJtBQdC=bX331=7*bT4veU+15t-HhXE>>4fZC@iD@mNs=*oB zhS0JNPzJuIUxBg}W1K)-kK4S=kHLcA5E+0m1|grwBXX0xD#q@r&yS-2^>PIVGcUnRI)4l|7XznGEa<;A@`x-w|OHfb!Sf1&6YGkaz) zvLbTV7}E%^1jw1bpnm8ra&?irlXc=dFfDZW=9a%X_X@1C{v^4ksIGcK!lp?{lJ0!B z4Rh265VJ)wJ^7z&0U=^`FV3AnjBtj$16QPhdPea`x9&V|0%*yB-{3L|Gl)S!HHy(aYVj`08PUM!u z|MG{w`P+Ysys6H-AETui`_BUT4bw)eJ*#gsfmAU+F7V;@n9oVIcg){DT)UYn4rt#Y zgW*QUPe@-S$%j*&1z8tsFok{^xB`+N2TLx$jY$3l)3EJ6LHHkRv!^K7nDjjg>Ypif z9&enSPBs&(hrE<+r%4u=#MvAIn2Fhg7Aoi79$vijM}KhP8rExwTkR-D>lEN$nKtI~ zgS2xlJ$Tz6(lW0*oK8+qjOoWjlhYI_o-M>~S)6xqy@uFH2)Nzkw#xM;mkUA=37|CG z*X_^kr;(j$Xr#;UJ5xcciNlrsnH(QZ4_J$`Tnd5QuwJ9M{L3Hy@WM<%ex}=|dJKOO@YVpv}J(|WC zF&a$ppf=2>cjlXeb`Y3GrSl)w^Pl{9ZxT5;5+RDZ|JI|4NNL_*3pTyHs=tG4ax~Ne zY$C~yV9RN#&Fnn8BLR@J$eAdv_YdZs8fIE1M@K`Bc}UG{&dV?o(^E1-6Khv)zTlds z?^+-cawDr{u!(N}C5shmw$ z<+Eeh=fb!JW;s$Mv*~oIUZtOiODGSUid7)0JlE47v@yf919egJy4^K0wedcaYDw4n zC@qnth&_v-EwLeJOC(d#gn4>;aGk>)4LLi~PD-Z0_UvrfL~0w32*mlnZD`%l+x_Su zOsm+pEtc%F46*B@@n-O=5#MZ-e(Y=RciE$X_nZA*i2)fC!s-ywDSR{_Z9Jv^c&@Bb ze-20*p13^L;VRxkgey5m?%@2v9bT8^b&;!FeqL|qn_L5>Pf)2d&e~ePX?W}db0)>~ zZ(}Z-@jm^7l7;ebQZS_+Z9rkZ487W9gDSrw_0|ZTXeeZ=`I#F;qDokg3V5ibrs3GJ zI~@G!z|KpM^>V#k-sO6u+nQ-6=e=lBQ2z|i0M-ICf6VptnX<~4?OK&mF7d6IA5e}w z>yRi6ta41>ZFo+FDu;Y4c2N9CM?Aa~M&Pb#7_bLl6G!zLLUsMy&sH<|`5W|dzdH~Y*@72HN zXzFBm2PfU2VS$L#S_uNMrq72>PqPBnSWU5-kB+>oJQ9c;yCeHo=UxEF`U7$y5b@Ft zyloe@F-mMHoAjCikr_C;bE8xvHXR{(Y3|7Gg+LN668=PZBcd+yt5Q8Cs>>W$O6r6W zbE?0pN0Gj7&2ZnLqnD&hvaar|?qA)kLO^NmmSJ2!(6Ip!ntiHIOq zgfryIt(C!V$<%(TP~9JNb2td(3b~Lw`NQ7@w{ZOja7$PB4LbJzzB|-R`efJy!io(qohJf6@e^vT9>ReSeu|Bj@8(J(51TrTWRj z9>g0}Wz@ajG%rozaL=!n{Y)q&_<4=4IhBqk9F@4+q3AKmie4lf|a zdNy&&(JQkP+m@o?&tZQA5itS4%IxFa&nchpx|0}n_0Q7FeR?v>DJ;|`j7tD3VNF~Q z;p`&+jvEvs(s=pK%Xb1G7s!#3oa9W3=R~3oVsr1{i_b<#R$W_8m zsmFKamDv`CqNazhq*}7=F^jCLWs}+bmor-rpqxCSmSedvu4oxFzO~M(UE-&Pu>R>h zx#jzUfb}h`7mG0i8JK;pB&o=bjC9l-9zDD~a_Kb?VBtbH;}1U=G=urk%y+L;v8- z0OsRPvaPX;%;}!^d-%uJ2j+MAWIpI`)|?Mo9Buv{s>W4D7IUTp1B*E)sTs>h@^8J4 zq=%?)xSFV*xoUaZ5~>IEBcW*r72r|fbbZGN1ggR?Ws=a9xz|APG?P|YlI1C5U654> z=im>1IW5c4A5P2dxYEz-Rj#;I&wCMd4cOF_(_qV)A*J}R8yXK` zsBoIdhB;P0`c(-{ekxH=h3-7obZ8UqC+mC&_@)*nDuEqa-(%sQwoQgCas`df5x*dQYNtMUk zt;R}m5B}V64N6v(5F!Ap1P%mp2j{&%eLs2UZs*&2U1b#}Vn6t5ecyCUmTaC$dxkPw zrmP0&;o}a?=^F_@K<;Rkltv`gv=Cu-{&;Z5123L{^?VNJ%X+@Z^-3a4M9vYQ&a&x& zo8QmRnOc~}&B92Gb1Q?EisT?YNK^t-q1EP_72a_1!YcAp{J|~Xh!=JqBFV`q8-efp z9XqLy00jt0&F6^k-8?fs3wDPuR7+wj{)G*e&c{h!+6BmE=au^)%u!YZ@{vKaWw?0=wHT@qQ~_*d557hyXcb{h1E~`e4Y< zzte2tW@DaHrYNk78f#U&VkAQ|RFP(GF|>eVvNl0&x@@Kr=1ze|7e}1l73sWnl>h4~ zX;ZZ3l(DQX;%|ma+!JFibk}`IAbZF|S&Rn+?tU>L?G}w+`*~qL5XjL)NhV zNmz*w_g5n90z`^iNxFl4!q2#|(egDj*-F-WAu02kFb_0E>v``{l-oSikBYyvxYc$A zB%glYP&&JCM0-nIcwxnv=Ch&HyhHbbnh!G-Le)K1@lazY!E_~UV(T+EO;%oY_6Ox} zYoID+`Ev-@{}(4oivv15usQiiOR87*N$7<6*4h^Cdc1N48YL-3v=0=Q5tSrMJkYpz zcl4W)2Sn@ZA5;n)}Ln^p*!*ff@M8eYRSgqt|ehtpv>dGDQD9Q~wQxFMR>nF}!|)wGTt z>Dn?awB8n~w`k|Y#qVy>x3Gtl!Ddly7nqi9%$)_osvb)8Rf!gfb-nke7k69$S>NAp zKi|UTlDtRnGs!moqOz(;%@;)(HYbE7C|Rr)m>L+esEWw!7AvIxT47mgO<}9$9g!+F zBknV*`1A>Tqa#O5Tf?+c94j3`5N@(wWWBQU>=trDvbN_nVZ-yaMx^1pqYMC%yJHorju*9L+rUk4ZmJKIU{E6|MXw3W?!f*PL=w(9 z)&|7Qn!~KO-X&&I`0hxLx%mHi(qj=f_HJyh{d_CcF4ShzgI?mO3es@W9p1JJbYrNx z$M=}+di6Mz<+LV#rR>R9+UvCC2a^q3lk@jH+>l|v&Bh1o< z9pkzD-w+BLJKh+S)YYP~05ccblay%Ka1GkXGK0ELN`>=ojjgeyMk0N(w2wl0n21a? zxD^phvHYBg$O6{ZEVq>Az9YC3&CIJEq;6q+AU|s>b|oJEY6Wwj#77M4ouq|7e6a`n zR@Dy9a46Dm^?$>nJjmMxfAcJn$I=i~-+YGDez?G(a8K|MAk?2+k(**oMf85Jl>%>z zWu|tqu@tFXKFjuMHAKJN7$X%bJ8q4w%rA-J-Ql#-Du6$@<+P9^=iT-F8m{p(xIM$( zFbVyCv%z4{?)|V`KLWJ0*JdlVViR)RC0HDwJjf+u2wmOcsc)b}&`O`7#t=;`4=7b& zCl$llBCww}-H`7GBfM4Y*|VZgKg$1s3l4V4iaqm+i~J4raIjcS!V ztlOf70=p~F(A&Bdbigk76OtoT(9W{5PMlM{=nMNDA8&wHvXO>=f zEMdACKUaSBl&96|_|s)4R)~a12&~W>MKV3DJ1anu$41~)RFaM*<^v(1T>jk;VwG&& znxM8vY1J=zx<9L&VuhheVj{Gwe%WXefp~H5#C#ND$h)jRDBQn8%4`U|m&S$6*tP*j zbsGb12kMDAwm+MOu;yY5S_7e^Miuda>%e!3_gADl>hM1?&Dv(CSO2U;<1j!>yyPpu z{~_x?fHmH-q(>BJTW!c|C>iG4_xE4mWBU4tGyoH~Ld5I|2KMmcP5@haldS zAk%QiG4P%o3@rFPvS%+gmI0@4)EKmLM%FsE&DxEj68cAb!jSpZ2w^gfoDw*DZ9okX zkA?v5OR3aP40-ZuQf)dt8X_|z_nnzlmkM!@3e?orh6hB{tzqmpIYuMOGpcrwipOeT z4(;EU4rHCXyHVz^9mYP2{FnFxzfwXw2g|=IeFb@+BHl+W3{iLETg>d2MCNe&Hy?2S zDXqsa0kqx%-DG+3%gb_jIXLf#=n}3X(p0~X@gbU~kt6rOVPs?bvb}ikl9VRWn?qL2?;VQz05A9aK|PUcCcS!gxug9z=5;zR z=eHA1wE)xigl0+zq9#DeKyrY{?cI6j+>zbjLLXJ-Ai*+=&t2xjuEJNo^g?Cb z=Y?)Yt;&LQZR8q(h@5+2|Baj%xybs4@J>{AV-|t|$|r#}-&hpmY3o%Xsk}kiE)iF; zL8K4vrF;r+y4*3}5_nITNt5(3B?E4iB!*4Zv?nt;B8aRK&a%F-I~-2`cV!Bf{{RB{ z7iP}8f66uAb%hny|AJD+Y)x7Hs|8tsL@h&gNHs@=dM+6ybRH?yz;(C!zjjc9l*%1y+1Q%uE~S18nq5%OANw;8FbgZe@f zm9vfVX%2<%Qfg1DM+5tz4N@+wZw=SBr?fDW<|ps0oA-sG;j|yeS}rE*ebr`W{ZfS! zFQsdj2;|Ww&JM8dC50jrk)yk#hQwU=+G&V&xs|E5HcZ|0dPZ415PHzW^HX=MKct2c zQ(&5=Z(IG_F);5r6MusLfhpilnA=n|sG1?L4ky|qQ9__PbDnkpl{c1{AwU<_V>f9$*@sbuyS>3JCE85I5knO* z>{qLw$!LHl!-Dl1AXrYGJ)gdx*zx7(WxcHI96Nmq%XpL=NGzG{+EUg~<<^@hS=~3o zaa31P=Scr$FHTj@;l@p1@USfuW~*_%fT%kWA>FTw@jO_(&(oxm;ZHa1_;^r@aAcJBGV}UgYCuu7-<5;GInb{FLA_oK@ zG*&A^WuoXIBZu*z!=gz@q+&+DnNJK!Wow_}ma)aTmw1Pi$h)jRAm`yuwY_OT-Urhh zNN=D&0-hTgPSbp`dP>YPd$A*ZiV**0li4Vea_swT!=A_R$!Ro74Tkm^$+3WA|Ki+> z$W7KC65fD7ybR|vcb8H|gzXg=-~U2G1C~)Tx7nNxTum)qn1Snh`|suOcX#~zLW1=@ z$UBk5$u-6(`!SWQ|4i2H>#;Y_+k89$zW`?34CZMAz%hSB%dA$b^0LK|UdS8@zy zbe-8&oA)e4&NHmBSH62Td$(mY-P^jkFY%b&9WC`t+Ha;F;mryyX(HcI`CS|;2>XUz zTk#_zd`Md!OrO@YorJ$aX@0Bp7c*!Tvdfz$dwjz$P5ULbw?A$h$)_01L)l2aIwOAb zSmm|`1X*5}<*=Om2>=45-I;P9R zJS@i}5v}L*_2=7qK9h*^zOKfNY_#$JBFK$<>82DtQe_smg3(O)F6IPK39`}Z@;voG zXb1fkTuUd%-BJ`*gJ~F@ad)yjp#|n|ANn!!+_t!T$axqQZnHb*t?iw^I+{ZY#@z!&Am;cL);arm1?Zx{|uDOF2;Wd<>3E$8{jpcLs)c!>-uaEtQ`z_9q$jTEhm^2(>M)Fec-X z);qcOL?bOQHPS0xHL8Ne)r@C%N1u&BYg7|d)NT*-QR>e!+L?A#nTfrj;69+e9g1RT)~?VH#b~olLRQ)+YU{jh`B7at_)YU46(A z?I?zE0nmige#evPDay<#FGK-T3Xj~7m6&#ONgR47t<>}#WE)t<9fer4$sl1OVp(N< zUm5Hccl>^2;>*uVxZKz|asxr86E@0_rwLL->d4m;CuIk0RZ%HIiXM!^2U)c*4nx^K zlg85wrbgXNA`7YX3e&;t5pP;p^>myPqRWvb3GAGIIr-C(1ncE;eScps7XmT6!4bLk zF~#X7Q9==>Yr$4(9x><%7D*O$w9;xk)y4WlRus3YFjtI}&*4-An7a-lTTCj8GIrgE zd$|-;Q8X}IRiEcYqBjAEtX6` zf7mZoQo$5s>Y;=HYXG6F2y)$2fC&SQ8YI(|h>>E5wyX4EtVV362jzdY{xFftXCcRB zVl*b9RLOcDvP)uU$9LCwsPhy)Pgh5d`;6Ej2JL--SN&ct^p?9Ye%nXv`v z$0s8kt&m-G{(!bI;_crR5j7X$U?jx7Xol$nXWaZdZ6)m1#-u}eQ5fX~jk z7w5l$NW#w$PZ4)MpGkZd$a4~Sf{V{${2mhHAu^K#32+PR8}q>*zAvZ$2XPCPTnSQ7 zgT4puqlD2$q}Ru_u_yJe!1r*M%Y2F?%E(BcBiGTW_!yyS4dr7tV>mc>BL)p)gc=~f zCJiTtb9HIG%t6tv$fK=1Sc~bzw^8LoO7+!4!E@=C*vl_U+p7{^o}Lz6SMlyL$_KIE z_3QtFH0<5#5wl`Df$y8CC3NxQlVH6DB3e$1KY90u6A=P9pZ zz#*0yy21QsRKBa;Hj03l*gJPv{Ndo3*Yo-M=g;+aMF`G&W@;C1HtBg*MJM$h)1iIy z-t;re{l2E%o%!z}&7zrB5+WgaFiQJrs%qh#{q0di4P^Du?2prhXUkF#5%u{)$dD1* zT0t=->)T&t#v`5>bL5GS%rDFgIfwA4gm)k?EgKufznHK-XMZH)@1CAnxEUSwGEJZF zi;ntCG>~PGeHQbuJ8C%5+G+OlX9u3(0#HVM1*RtXgkl=t4yb6~{9R(5NDc+nRGQ0ae{#V(>y(*Xuu+*&qJ49RD|DU9bNc z!aK7gcT`M}4V_3MZ3!VMu?*er+2(KDj99Kr!B(@N^1zr8j?@$#gHLL~z)A4M@+^ckajH!}4Ju{KqWTlmv-NMIj zMSnB>cH}~^FRGR)%`&7iDghusW z4C=?ioM;Y2p8aduX(4BXc=IzUVhR{o64@c$p=f`k8#N|#0s;l|$ zh?{?>Cg~yTZpm2KJNLr=mDx*pm-QdA{z*i%E7s=sP9N#QgT%~^5Fqd2=GZOHpAM)0 zhX}X|WCa3m#ogRZ_&kB{2h}KyHtwHJ)vrmzF7O-||8%_nbEbcb`QK@ntN|Y_#r_`Y z12pj+r}%Tyr-T2({@Tre+B9Qkl&|yB3X34z0udcvmgTVUH0-4g+N7R(u|%AFn)**T{24 zGgW>X%ZF-zHo)J}e0FI_VH2JdNB_ z71Jl0@&={`H#js&d2@MTB8eLc62p0s%X;|_fBav5`M#X~Ut+pl{!`=~| z^lQyumV7?xM)yZ8`})1dv>S{-+CYQsMd}7kkV}IWx!I&lEDvN+YjTCy(Wg6om2Ib| zNvV4al3GV~FaE>XguCqr4zzz9BNWh zA<>;~fWkoQfTCl+0P4w@@z@eJsc3R|3Rz#Vr>Wx>>4bzF9n&*za-79mOmbsEl=T>y z%<{H$Yzk}OGabG;@7?kB2uOIpNf5VqJ>vH;yO7~Rl|iNqbEY{ND=A(^jkSsI2M2DT zh$_QPrXvxd$QUVVwU>>>Em1-po9Ul;l!`wdmzM)OCztE`{(ifh3B=y9Yw0owk%mnj zYh!pDEBZw5N3k|dC#rr6pqb8p&{pqBDkbaRks|AgrdcBP)GoRh#>^HVhTJ}K(1g+u z0p(_@><`x}FauLJN>$ltT85DwAY*p9s_Ag(8t7Xi^Y&SZI;V_8=_+zOjqQ?(Y@0vr z{6#nVTD50VoAOm+7G#!Tqe7kK)9``zCGJ!-K0w<>7`J8Z42`<>XaNK!@BAydR}c`+ zwEhWsBLcD4O105X@3>8w_g7fasvXBn;&_z(JudV31pUSo~r)4rzeQKQ>9&-o|hfGd2r17 zUDHzr_@6>weuEV4)IawC_aOByDVr-#s-8H*=@H+cC(Lw%n>!Bhy;>i{__$%24P4fH@xd&s^4X zp8!b%zH7EAP`E2=!gh{rzD2aPp?>NZp#o*F#yIwUdZKksX%!%?B5)0)DQE^8K^sh# zFD8m-(jzb*$-O%Njrl0yeO>=EueKIxh$RLJ^n6uf5be{D)|@DmL8?2Ri1b=645So_ zF!Lve7RQpBcKPPdRQmfFmydF>VE(v~E@4PyFfp+whJ^R^vM$H};||{sr-j&u%YUr5 zKOK2?J_*on)2(e-V~IK~iCv_ENsvt& zk!~Y(Z4=rfn^bjJ?h+8D)XCB{3JP{hy6)7e(NxKXy-qAuz*XK%AQFz-uUkrq2Qti_ zi&AH6UhDl(=qM^;Vs&XGD{Ip-tS^VscQ9#v%~g6OnVuU1o}FJnx@}ppY|m!aAWdhD zMn2sZWYDuRxq59YYh68^#?Wg|2pU`#mO)J8;wNbSs<1Y6q~{zW=Ejg`zisa z@5jSw3711yC4QE7HnO>xpoWz+qGh>rc5u><$|pAf~zd5if-;sYHZ^4 zn2#E-R4oHEddvQ-gEYV`N2V=D#S7%&;X4XS_MAI(MxUVrKeHrY3g-|HMmi%2$N|+2 z1^v)f!b2wVw|D*Yk{rd1^s=scTibmUE!dfW+Mq(^WF5u64J%U2wQ(mJENp)BRt49C z*nzkxbyOHz#iFq=M>0VrjVr(7PF=*3br>eQ$7Pz4M}23kkQshpV)if2zX~zJyR1J* z-iV0U+p9bWY>(2sQ{U-9BO1r0nb|YDVi!%k-^w_u@qrffCr(>A;7NKHulx`-R7 zNz9j~Kop3`PE~%>#P>D$7bJW@N>N`O^NHOn`xj!C@Fw9Ovi=EL_uU~iBjY24{nMq` zwS$BZ)<4O4=TFP=|1f*v1>p?2MU`g$3$^;87P;G?+Pck(?ZQ}R%FZ||4#o-HdW<(R7aolTAP16MQt-+DSW~r z>gOFae{R?5SH2t(h$INzXuSpJ`S^My;QD@njEwD`R7Bbgo5MN6@a+)b*QFsbAO`tm z@y8

z!}OD5!cPz3lZMKWqGVH?G8=6UCWv$hD(LaX4sg2*@z%b0;C!a;vR&ti7iS`8G*aQs zkW+XyI@})9`Ua5?Hpzc!w8nhR06)M;xs1k+)%mg&?n!;0{%|wpN^I7%=Zi;|ghR#X z-v98P!sE-|5nQ`qOn2^ItG3ql#K$<$U*5{uVy;aT%&0v|DSJMi`EdM`_K!7JqRtg+ zN{ildqt_D=OpLm69RI8?;az@zpZICVQ7=#FCv{$OEjK%*KQCNdpsNi}Th^0O?i!eC z$JMp2-`v6~4um4*=au;;R`#CRMpk(E7CC$f=-B)vp_cCu=ZohJ95T-}a;EOl`I?Xi zh+Cu>YEH{ZgiNcR7{Mxh8y&gVe93NQeD5sW{!8E+`EJjJ4VGfTqs@8TPk3Z?%s@62 zj=5bi<%_pk^D9TXRE{*$&rieXC%*J*prxOU58z~m+l6~<;h?aocCYxA^P=h&f;%=!_@X&4)sBLCH#DR>wP*kf++sQ?^2VjCU}-Mg>X)U&0P-e31%N@5uts=9Hzj^Y-{2xa}buM!y9EU zlH-~QlbuH&n;ubFq9nyeWuJ+|@yMI1@xtC;x&1B=r}6^GC7gV%U-bEXDETVBqrl=e!(=0EbYDYv zX6fVPr-2RMGy*IFBZ9hZJ_RS;AJY>9f`U-?W_b_nbjBHZQ;)b~-=&C0s?#p5Z8VoP zVv%nSq$qN0TshHQ?S?tnY;yxlt~%Ak(f((3j{H$rE`*oE^&SD68qN~tzK5FLJ!s{O zrob-WPJ?|eBq!0lZEoW1B|_%Ayxu}Yw7cJ!sYZ(CEq;D0Wsbg5t3|7`HI*B2$)M& zER$ zBjj~z`PX5JC9Kmsim$ZsSxE)*G_7^I$c}Ibsq=sl@6t5Z0 zJ%d=q(E5IcM`K#^-f)~S6O?i z_1AdBSHr2k&WrR)q@{z=uL1PA+6~>d(gjg{ScU}POf4ggaWGy48kd*JOURpr4u2iq zF7mUR?gvUBH7;p3ucEc^@#h=*xcF{TklFN!=g?$*nj-4+AYm2E$0Y-_i`i=OsJ2F8 zHey1*5$9-FsuUtPm5lPfe|e8P@5v)aE~}}<5V^%JBE-3z?82mFf2W}1`uqG z+AAp16|i0Hkk4g*KD}>%W9o-T@5yH>fY|+F0-&J#xzdinV&L0qNNvE}z75J;NkxC& zJ^h(FihRXU)Sx}68?oF+)6Rlg&v-oSTREZ%+!@+Nze0|UX8rNI+13huV=m7*Equ^vS zN7SYtT@EOj{b7s-|9nkW1}I`EKFl{avL6`tQINRESp0eCjE`)gZSt)+D$JJ19|Nv5 z-xoL9jp5vP(POj1nh8RhPo4)gvz6agC2hOG&MlOa`e+B)^@)!yT^`lGfUt%y{KLuO*xB-NoL20&#Hk?F5 zf)gYT(B#Sn^?84{dG7v2^WDwA?Wpb?nEPuQ8@AmVr!~TC6WbK#X zH2c3@k}Rj!-N?RT(No+TM&j!?XhFrDmq(mfizYs5d7tPCYQ3gKWdJsSfY1Ct*TKY; zW?&Au+gyMbf2&4b`FHf=zq018jBQ)%8Wi+++|BEjxqJ8HL(YwB-?G_VDE!3^Q$dM% z`$SV+1{doCA9|OYDweXkDprHJ&5Vp{YHFWO*2LtceCPLXYd#!4PVsPz1`UaXpaIfC zc~0PK_0i7SdH#=w(oGUV=;psJohBC=VeLwkkIXpQu83aHysVIP<_1TTh`uB-^TC6$ z1s*z)A!Ehr7@n}>g6FN|n{MoMKUmzx99Xec=_LjEy1raA7MLtit$Qt*#C_ATix7miW;=Nz(e8fRpHqDCj;{ zQ%fFi8HY~Wner|F=ric;`RTe*c@E-3lN=HsZ4sL^IvhQFld(DOuHnQ7iGcCYU8@^c z?^Js@XfFolL~1QGcy4MPZ78`yH!w-Qh?^aEjLVDC&OJYPJuCI@bxog*X|>y#JoPOE zNn6`yahzJ5DVM*?`2no~Zt>icJ|$d=U$TV&ewvJ=cGQjO~qme_6-uBGBlT ziHDwwJ<>qx2lm}O+|?FW{CcL>dcC20tGNpmZ)g%^76_cfrTY0~$X2%XEsfp)t{=k&J5=CtyZ z_?h1P74{z|dFPRppS-f)e;Q#PIW{Y4o}=$b89%)y>P~1O%EkQ-$Cql! zT?sq1!e*cS=I7+}_n(R+P#dX&zR`FGB0+9yJPOM}NGZILN5&Y8d+Hj!GJmN1)PVH( znssz_LZq|w@r5b>r^4Rm&3bQMh3LtVZ{!Bgrj57G3EPp|_DMmNM2FeODWZI7Z4b%k z@`-ofI(|tw_|c@xW>mtVKtH><+{2vo6Rd(Ep!1kD?g}K7__iCbXodUbvIBX;F5p)E zm^yQ?lZpwxkJ|h6=B?durAx;qB;dDYFSk}2;FyrD@W z#Gy|xY!m}*)04c~IwE7bZ-J@Wb^a%}p5!WI6Q2r8=slw&?|||~6tvC+)v7^ZawoV^ z4thtWWsgM0Jj6k3Q69@sqDrGp%p>YBDv$Zay+lfB1MM3XR5!zJf(Tvf6*W|s6IZhC z-7zkz4V(bvFVm)pQI8iN8!crZJ3!((W2>}b^Q#x2_;KGJIp6jX)GL? z-QK)NgW+cH62x??m5^)P;?rhT<5JUrgT;4n)@N8HBWDGYZIZ`7emXI2xe+ZZg8q~h zoAt(f-Hf0~W1%PN;G@>|anMH(k}EpTE8s`A;e4Hb!qe20S=rnxCl70wsCsR2Z(M)f z;t2@&>tP-vxofkFT5Ifu2ZAhaSTdJRvFqd7P*B)wiJ&t@XEFTur->@%~2q zLhOq}=L~-I^Ux8QD7@SxesT{ni(lzn*_gaUr1B2ji4G84>Hsi3?}Agv5+@ zOzTP-=$79C52#E<-%DiertD zpBNlOb{^!5OEJ90V!-5aI2l4_YWo!ug&|x4U8Npd%MBCnCTiM^&H z&FV~#Xaer3W42}aqaCY7GrC0kR|1?j+$QK%mXMF{veV&V4i@@QcG_nY!Hh!`VM=3> z!p=>pk{*sV%V5`CuN>&c@ki}U$HX}3bdX*+49OcD&i4}3?{S$D)yn%C#pOhsMiDMx zqEn!?k6_hxYyG$iHiR$Ela!fe^`zSTNJqCRk+-o}R%*~D`D6Qmx7f3R=UWG#ZS1c^ zLw1=+=7fRuGMsnZ-o++jRYw-1uI7A@l3?OednVWLcP}sXRK%o3ru*~f{(9pKBH_r7 zmQSrfbvhiadoo{{!kvci=DHn|1B%>PkGJ2U+EPElkc}Y?=O4MRKK~lfdhnLi%@Yk! zq*V_Hkzw;mjw00jUm>1xP}~x_IS@a<iPP( zGl=b<>;K;YLU zNBF{LEw7s7urx)o>eW<>A&MQ=C5FZ|z_zh@J%LhR^U$h0!$rcMqgv(Uexh7v`dfa9 z3E6TdtY&AK3?3T6e`RROE$z6_6zSuFZc~{CHkiUKbJg#3BWD=%LGIzt`oCc({hhz~ z_uq7_w9gp2Txt$d&^xyWH*gf8Ugph5I(@dSv0>QzY;ohd3d8jeXJ6(XV211*Xn;-j zl7tADwFUear_RCEU{zvaY)#V*C!Y#($yK27V|RU@^62{G*P`=9DUnxt36jDg4&KJ$WQ@45~> z#iwqz=jo+fU-G*9P$zP^Ow2DBSy2?R(}29}WHxkXxVLI({bqHje%AzEKN=<`|AdUX zQH;DsT%ss&aN5kc`<$bDE(^4~R{dDZ@x*(RrE8Oko_f;A3xtY}L)*grK071CtN7NXGg~LNZUi{H zJ&t9(L?@P+H$Du1le(S@U1yp{F@Afn>8OmZ(B*f>#TnE3DyPkO5~~lKle;T8$+`}K z2;5(W>w=|G2Lv52^*G5t_W6*ov1S+CK(y$w!5vfcYFLDquDJ>#m@DanhLNYh)$K$yo$(<{XaQufIJgjJm&3>Da-M{=|ptD$Km&v@w*3 z-cfQ4jae$20wa8Hz*ZbVq<7k~$Gmd0WlZ*E8yy)BEi)XAV3u`qkxXP9g9PE|AS5DQ z#0E2837e3(GQu7f%!YDf(^*$0!N522+zm!0XJpo$HVoOx#1mm?YR^Q8+_ls3S9erKPt&sr#3~NAm!FX;@ z1t%>cS;I}@7fH)EqF2`aLTn`i#8jV_PB2OOI?5AuTGQ&#s9W&qCiB6|IMW5LQ{)Xj~5B&}tj|cg;$xN+2WK`EIw|mX1wc_@=(&;liOuj6)dyj$W+y!QANh} zwqG{I);~XaIe4)C)TNJB_qq&yV&gsf0okxb(R3bzrkw&_O^-ZeItQTBw}nV?xJ79V z;%M{Jj|tb49y{0dz>gieLPv@{?!TEe2|q^|=-8N$9&VqNr505nIdZ3#hut!d5t1p| z=hByr9(GGI+=?}i)GcwY;#;jh0)ZLmaRiSz@{#9={9P@)gPA+(6?6mMe7U@RCNbjn z#}b*b#~vf{3>xg>4}B0UnPY&tDKg==$VKEp@4Pxfe3LJBy6H&{XZz{VmO0IyQ#zmd z=mQ`x@%hN0eY=%P@X)FUpFlwIj7gGd=*Svx2D5q3o94}Rsn=>f^-@o=98#7)yWsVK z&d8n{Zc2L(W0WDY?H@xx4O(nawRvxZGRucve)w6WRnipwYAmk|rq=7hgRnOhku9pL z!IDIyXx#v!cza(pNHo@S0wEL+wWL`UNa_-T2lyPd z33HE7Sg}hqt??QW+u4tb{H7mNYz;Txum#-BlSxszdNc*1VYPw|-Kz^%SB_}Zg>meh zX1WI4n!M7yvXsydMHcdW-oH92)FZ5tk)tnhN?p%JkV@-f9iXbg$4~tkp_P;T_w-$v|9g2Xo!CJ?-ct%M>TwSU{5o?sZux7I zlNjfR%i5e*F<5VM04)rzFJIaCCQ=)nQDnTJsXURYa* z>hHEjlkI3fyJMng`k*`JNg0fMRt>dxa2Z2p$-){@j-|n<2ky^N7|aR45$N~Z=KkSZ zc$m|U^h0T(+TOGSg=DbY{_9)+>stQ@-QmN8jaan}-rc#$A5gb_y*bq%cba@(2F;&l z`~BTrx;&+xnSfbKNf~RorMY`j&a3;vyl-sQrx1m~za~5X1wBE^d%YWbyWUiW+dCG6 zG}D*`*u!;(%C)OLpylT`JnTPm%l^IBas`E;Po59HGY2?059+S$XhQE)n&aGK=+-!^ zDBlh&fc)uS`X3M08u^}Um!E;Wnj8-DVE($q(8^)f2= zShjbVk}j`I?UZGPsxM^-pIu0Nq`BAr(-r#TxjTEP2wf#AV5R{dcohrI7BDuG>EqBT!mQH(1`{fs@Q&Y2B8UVjshT>Aki{pGUbGDc){ zPFHEc`JtO1IpkQ5q9iU7kTIa}&feUx8}TtwFZ(l-ft;YY%i$|;#7?ZV>~tGD6`|TJ z*t5J#9S7b7)?K)JP<{f{jM}4&yQY0b2INe+`KzqdCK`JbRp%s(T}Cb{sGKl9=p;iw zJRA*rGzvQU29MvUd3+Fk_ToQO%^CZ-2DlAZ8?3K~&s=3S1sZjBb}4<%I6*WK^>!A& zQzmqWAk}AfG`c*l_26AMx{+&$;qPGOA@96!Mps)pukUHX2h^~|<^t69xVAc~s*4Y$ z6Evz-0md<)8Fya-n$0lk1K4k0{8gOxx9|Ly{=2B4c8DY8<32H#W6@1@&f%!hLH}Or zvYl@*3+#0^EC1A^2S}Z-rx91_6_!4;L|v?U+Ba?mUCk4?!Xz%Wy|>$WOfD=g)tYP)fvK)m=o*=jR0L)(mjr1uKrOl;dB#R{fF}?`1MK zCV#sA48`^+e$r@}zS8pX$K<^S$FCt$&QCfVWxQtj^!>Kj_=~v-yOmm1+b?I?`fJ(* z7NW0k94$6vd7F7iB8=_-VeiWWsa)Ij7m~`fD>7RZp@a&VEhQw0%9OEErWG>F^h%** z2%(fInWtnPvdXN;JP*q}%gkb}_4a$zZb#qV=lg!=eBXEWIcNW&)w|a7PS5+i&vW0` zecji6C%|jTfDx{#P3eDbT6}YEZ71J=V!8)*{38&ppBR?VKHk-(fv{D$xbQfRW8wqv zeViCx5hpS9QhDFK6oHkT@X=L;w|;5D%A)gu!rAU;pME+a-`o*c=V1F4+xgyK|G7_H z%L;54#rrP^(&?Ds@~)9I&x)~q_B_naGp8^`$E zg{tGO#rLp4bZFI@92bRytkPj-WufBI=_Ug}XGsf}1@(na46X^5d0vRfT2|TVWWiS$W?GMrM6ZZCnZc&DeUVUAC$5~aQ z`;R2{lZ^8ms?J2C+5EC^m$3q*?Y_T|DnQy02$05nRqe^eQwP4LCFYgRuF@yTD9Q)FJH3D=*|QPdjgsl zg35FWA|N>{>jDUw-PkC+=H^58^0rT{TDFa8btkh3nYN@jHWR3j~J#s6FUQ ziV1>;)@JzPH|}O^Yd@5IlZ$>iZ`Nt z8PmB~p)Up;%_y}w^7ObtsX>()i43o>X1%a&^w9CtM;45Xw}$P7r`1$h6TqvG6HpE^ zC!~3CsM5TBs~QFrwt5$u4caUWO1o;qL(_z_1ml9rR+Jx6o~)}qdtK1ika|gzAPnkW zfrTD$<~WuiSS~#ryk+yKz1-8?L&|Q88g0^yCWX04iRX+8i{Iij9i%F1y;F+)u3ve& z3U~^Z?yw|*8}x3+5=1#(80EF}G~$&KpTIlqh=@W#)~p>v+3MRO6|01?jWX7ehJ(<< zP!tQy=ZJ8$uP@)LgR@aBY{_9ssoOWJ;?Z~VbwQq7uNA9vM5JA5x}yd+;|R(evnGgq zgjqR+My<;VJGtKR{u$7SPJ18;?&07jc|>(2HB?;y4Dt4CXnjXY3zO%!Dm0T{>q485 zHUGUGn7<1Gvu3;tSYwptfI1qWC9I*or@r$X2P{wf0J|cDB#Lyj$EX^8UjePL`=DV; z0P`5kLtN?Bg{Up1X?|01BB%FGHPLSU9LpIRzS@!2&2j+0M={Htw)Vn>3o1hZu3(&J z0EEmnWuSBUtw@Z#q}&D}6TS>0xuBxeU%&sE`=@#Cb6Da;iNlH)kOjh6hQYqC*Bn9F z8Qo#K2_Hn$uUrRG2@GyIm{>+gX>b8?l!KK3MAFZM#z~9UXJIL@+T8~AoR^TGa9VXH zK#1B?4b~CSluN(bsPtt75C{&;0}FqKDQ1Z?eK3D>DVirFVH>82x`0qy=vcjn;kJ&h zDvJ@T&!{w=o=1RR2|g(nb-TUsduCPMWUdBimoL0y3umk52UJP|O%C;P1&1qt`2 z7VPpdUl6E$*wtacD^y3Wgo4elbuUoaIkex3VKi)u+}ucQ^98CwUE1E?s$sxQEvRoL zGGz8_Zt~YX{Pi6Ea4bzp9goQutm9RYK6%eC`CbF<6d2XN4f3Sv9J#`0F^+wd_gQ>U zR+BsWeGoZc?fn0}1)u)``H@?hN9TpCj}(e_eJDHN9YZ(CL$*)A+v%tXsd{F>ZHd>P zYB8%dqJ-nx+VO#wX;*-FE3eSeQ(cbl+3#DUc4f*Tj3!EGn{B=Q(q=A+JbaY0{m|Y0 z_iDr>_r4!|6h$$S7oLn&G>f0mI(ECZ*xws5n4K8Cz1l;oQzzt_hg1r;%G|!-c)gG;iC(a*qjeDe}P zYYOgp-hPMsumGj~{Pss^XFDUsoVTYN^gEGS796}s6?z#p_@c^?57^0-OZMWjGF(H{ zc1#yvG^8n_a-2RyY;9aGo<=t&M$44HeBv#{VsS-UM?=&93@|8>NFdp|~@;5O`>s^x>I%u3IGKiTp~<~jWs zh5*Scru}&OW{b}^O!(8)J2}H@)yieB)#%k#mxeE=U>+cukA5EU%+Bx}d1-y$?==1e zD^$i0@2x?om?bK8mjDex^^WH6*`ck+~=e?ZA z2uGW5RPD*flmM~Jd@3n%BJ5<{(BTw)Dm}BXOH!k84j?#dVPy0S_AS>mlq20J z_4M1{7T(ezIv1x0OtElaZk1!#k0&1CmILpt>IUUU^U%B@ER~Jf2pH^JZfoDX38*Tp zao|NK(dC{Yi=Gncqi=CqrqQj)`szhv&|PT50RRJxG7_nmdYkZ^CK z45JfB+o$ZG&b^o$H&jPkCQ^%XjYl{8394pWOdQ>7Zg%1sh zzzVqoo>+xO4jp|hFcZrl7x3N7tho)1QHoGd_*NY`hsBZsa3z(10)g@o3^3z>v^Hy{ z%HJLZOncPCITY+uUk3JM*V!=0(&R|~3x`A|; z0Za)60P3#bATYaqgy17NiP2)dQGXrvuO9f@9!O_c@gl|*i{Q@@c-uq7s+lYF zoSZFO>peS0GN$6H9>3XcM7S+OIBY*@u-H@u6Z3GblRTvUy-KhXAY)^5 z0fu<;x1ZV^$|KGVDa|zob!m912y0p|zfZCS^?UTM^i>@VuNWykP~+#`1y{QBo3~)b z;sS_x%lTM~I1qUUik;n%pZLe}eNG-dPZKV$oaB}6S1VW0y%!)`e}UQ%ZLlYGI`FV?&Ymue%Gc{C4`ryh~pYkw8Or22+_*H{{3P*TmE}epGW;9TQKP zve@cH?5Sx_l|ji*VzewF^Y^hgid!7RIh}@uV9DdH{V|H**0^# zZWZaKo8d=8s<&PBFK3riNOKIYD(f@o=3a2AoncYhSJl9b_|XrWFXZ{n!8FvxX0Bqd z0sX$7y&UFZ=WVJhp>xTYUu+%T>ev-)*qcXtn!oyjcM0^$x(oe&mxO80 z1G6U9FN0f4L)LRmX&(W>l?;_S#D9FHt1o-|jlwO&wVb=#mbMv6MhZ5$^Zhvg=4W)R zZ2nwbv9twK`%Lovr)MnlAW^1D38yx%;GwtDUl8)>gnYGy-PBdp@8oO6X~c$iSDKKH zZtl+?-P9tE^3Cpb8ZSfJaz3G&;rVcOrJ9~SW@v`@e6b@}A#vE4HiyXrX-$sM{)1;z zRxt1Dq~iB^-{eGWCjLmaY4(duUSEXZ3!~gyE}99G;y2nK_gLiRZL79_5x@NoV;usu zX}Gc239L;3$JDKx0BRMSZtR<_!P`1xicjqXy1jI6j$bxgANIZO z&ix1dnv#H9Rcx8vx5L8w*@4pS@~UGUfj$j+E&YWh`MLhe&Dt}Inx<pA;W`oKF+{Pj56w0ETN`?9>@J#Ex`P}e&Lzxq2hL(8xIENS&m(vc+5lE z_xnd_?RTJRl%czZiR_ycwP-p%I?oz7hDM&Il_g9rUvAU11#eT9)o$c!N6HhDpeYLIizq)%OFcVZ=0dl_dfv0mieKg;4OM&9({Am!yA=_{akGma&sw03718}Gs+VYua zOSW$Bd<>S>J>O$K|Cvu06kq~(01hr1F9KFF>jun{dWCCiI#g}82p3`C`{)4!9Dfxd z*q{>we+=~m>rp!I=QJBwRx@h37dSs0GV~_@0Y!~>s~?;4Fui-gf#8D%fvLUFcx7~A z1U+z9Pi>%@x?vRoxRoYQfqMkAq|>gmb-Us4E$b)1ZY8HvH`i2!>$3ay)&@RRU?%gM zz5t>TLh7PR%JS;H{Ba`^)|YtblJTUSToJ^(&R-CxOfj?N(16Uo#AHkd17>O8bC{q2 zD6&^U#!iE_C4L@>QzcJ6lCeTQOC$&J4a{y};2<}(Br)?z*?c60EiDn+FOxx{$d7|v z+}u`XU&;{FDFR=1#hXGMnEraAaF=E~_Q%ob=f|dFZwg_7%4GNHLxmO1IX^hxr~Yp?p|G=$m3|BwAqo6bbqO0S70U4=cGA?yRNSOjc26M&-CH(yI) zvtmJzgP&czDF@=sj@X`pi9r7)AVB_K=(_)&2lmf8tNQGv)v`w7OP#yUX0Pr*?nr1Xk6PEK6f!~7QaRWKR;MV{oA{{wsOz0_Z?KXpL^k(((8u#SirN}MiV0TtIF`v8XiDArzG9&N z>s_tOQ`q_8sO2sckxGpn2#WkxxG;rzJ#PhlBFXY_=xK^eWTenJP?O*!Q>bG|<2_y~ z4~gbPvS+wAf&*YR&j9v+I4az<(1A61lKI6g|D|*ABgx_=Pq>Ou98N zmMLzY;vw^${Xyz^>NeZY+?bYrwQxKj9Ub3REOB#?vC)#R?HbdE7a_bjUuL0MnvRL1 z+I@YZ4)Pol&WSZ+?HT&nBzFxDVoFbT0mR~r)!Gf_$gy&R4rz*}VKx6NT>d*^_plz! z)b;2qqmR4R-z#`N)Yzj*2z~!}^$D#Lk+Iu`*h`;T_Um!A^_g6%lPvPJB!8CW|FmWZ zPd)p7_E6> z&h7cDk946cfmNKGPi`w-3)~3qI<+`?-_4HDm`~@b7~qaykz)b&z^%RAWPPjW8{x9E)L=H`t~imG#&luLNI^^YHK zejQ&EqkVqWw_zls<>;6dv7d|#!|J3;adPe9=Kpobn7`dc7VZRy{y1GZ95PhkVt7h%QF{mb* zM&P}Z9r1IBE0sgr>%13JHgu0ETzhvKMuM=Z=H4^P66$klFMcuUM)fX+4LQCI&ekKUhV1w>gZoSZtvT6)t8kff`@F+^cqBO zZa+V&^|;4w?Ky#*yVMIg_sG1uCo7+$VP2>HRd-EN+>ktVi;1CT&48=ak+h8aLfved zGYws-4p+Dx4c~K6_zo>aQ(+$XK9u%tXT%@r%XnV&Ip93rjv#p1Mafd|ef#y3E;J%Tm$ThIMJUjBdym=>cAN2hG|lPHwuN&B4`2C(3q%sM|fl@t3l~`vyOl`UZE`lx^p`m*edc z>75XhR%cMEZU5FfORp>S&Hi`h6&IxDvYuv^&!10`F1QIDao4Bw5+qKXZ9%!77g1TsMQ)9y!?Y~42D z+VI-WUX(LZ9%OnM^2Aj9#a%^`Cvsk^OiqaAmv1lwoKdj*dd3Kd39`n*dw|I`PMZt^ zg3J5|MC)I_|Ec>2*Zg-v^6l@TIo$}k3~2_pPe)hsG%DQ0#v#ra2Uc0ssv_&ylJF|+ z0~c8#ZQ_C-_vOcYBYfFuD<03J}ZLOc*|1Sngp07t=9a{+`+ z{Z+T8{V5tekyJzxNtO)=_kdr+tMM&T|IdxmtJy{2)|xR>Gtkn$lvV{Tz`>7@fJ@qe zMP!EP`tBWV{>%U#703#@ATk4R@2j-ip^5aSl7`>=)?K;*>`2B@<@72XRlx0?!rD~>ec^?4_RTu-3n!=-4OcxgYbX-O^3J^-qGrkgk@#Nis(=%6rOWzYs%E8i~8oVMDm02YjDCW;)Wc)2R7~>|F~B zbv6D0eC-e>K_8u39D3ILhKb=~ocbY--n=_Y^=2a(%RI#*^ZU>#^(RF6kCw{6XUaRN z@bTT$`}Ax!V8I!X;Q~|(a{@E?YI3e{n({~9b}6>Wvk<)7-1I`y*=dDBRqvpD^C|Ay zMek>?S@(4ZEKd2GMR{2ox(cc`3@;ui$q%wszad(7xXd{IaG+zlgv$2ZU?CC8Fn&Say4ab%pD(9ope3LL|=C*S@tCkQ?98=ohxeS9(8%)HbudN zP9$q)uyVuE82|uXp*oT(MI)B3qCMBsHT%de)bp7I-Uj{en=|n?f5JH%F?_KxjmWgr{3gccijJ3 zw5EoTNIHdUqMx%|dFLC_K^s*tb=2;~fvMT`RS@MpC2XC93xMUmZwetg zP%Yf}ml4YMh^L{#!!3x*MqdzWSlJ8T3QW3736>cw@SA=?EYBcek0Z+$=h_L6!Xcuw z0&wkp-kys79)0{k*a4QtdxIiGKR~-sUJ)KwAH$HMhOgrMK#@&gw>G=_Ini&wwt+>0 zKMKAr#Uy!SaakY|rh^2*y+>=pHd`W_e{)B_p7S65{$Cy$-8_Z-SN{KhMYjc(G+YCe!@ zWYRtc71vfgg}G8Mo?SS4_R7;Ei8Y-4yAU5X#fTD3!%$t?X)`S@-MQ7Vma{XxK~irz z>T?Xf#{H=QmCRt_xE|F08epg?1?eoC$-yT45*rkTQa}u#GI$WRz^xCxLoErXZ!enN zyybBN#EQ0U#P|P@@bGtjLjtS*y*+9;9IgYxak|+8M0zU&J9N|nb20EvW&w)J46xq6 zL+d2h-b{e}`Tzf1Q|n6KffqW`ks~**=9%60xl%G^Pamsh7x0_;6-{X{7by1yA-(Pm zlPYc~sK_x8@RLZ~PHvorCml%?Fj?sg7H1Qoe$EY@6V8iJeMt;ZTM2?ZO)km+s>Q!= zcLPvxBJXq+OzDj`6FmBcyupPTW$#%7vQ2MB_tT(f&fzc{YNAhu+(0o1#5cYo*)%Qg z?8`5RC|58ikpSa+7i!?(BiMDBmar|Dz(lF5Yqbb zj4y6^zS?xE+o3Jb82M-3U0u&v-`|{O{*1`SLJB7I6$J9|q?L}kN;$M3U;wojN3HLS z-u@nrLG{v2-U1%GkPz!Kj0;j&!@=irfYJ<$RC8*-s7sRD@SRp;s2Qi8n z1k+~{2t#u;{+~HINIu3Ju422eotUx_*I=l`!Gdr+z^Um63H@JQ7vOIw3hJ(xRrR=) zBPZpIlx+D=FYni2g?116o;uX(w;YkyNGjH=5Nds5r`V7WVuB~xDKvu^amSRlGd%%+ zc^bRNLaWfa?_N|x>xbV&t9gV#Nboje-|6eX|*}WbV-V4sI}5*fCd6^euFN{i12Y!Ash(f!=NWEoiNS zML`en&QA+X-g3PGR_1_>mD%pAle0~v(5~dwbBhE1s^S*9Llf$#fj!O8*e8LuY?ElJ zS=^ay?Aqd^_XROK1RNyGi!zL;xl|$KIz`nN1cW4j1<3PSG%#y6qHoZB4T~@(|AIWiRfLYPb@e z>7jza&b&O%OwQ#DU#Pzbxu6UI{07gj%>eu4XB6htuTg^<1As-{;D@jVM)aS580;b( zZ+J3>mzG9#L-T2q-`*n9f4U5{I-4OZZ9BV;Hz1NHFJEj!4UGXRcLuO*8noR{CjL6b zf1m0%K6wWLgO3Bg?6*NRBYPjUj?T`={+%zQX*0|(DQi2&qaO}x#hZi}?x&)1Rs;J| zgIxHqs8wK|?Fx|jf(QdA4_?>sL|lfeE!POZu`8*&DtyC=$OrmwFE zS@nG=|D$;Gqzfrq^?!OIiNd#}_kK&!UEK4ciyxc9~I{b%j*t z+xBIyJ<89>P+9cJBtFJ2t^xX`YrtHxH8z95ZKdNH*^}2%8);?GNBf-R)DoDAViR!Q z+Vjkcb_rz(3P!A{1||ZdXDQr7N8L|yHcLM33}2sDmsjK$MTVUC)F?0$WMW5IaPaX> zEz$SL5UtiMVt`#_iIOq$bNHwWYLF={n-8gy=`WVS&(YWY{xH?m7g>hjEXy~@VmCd7 zi<_=2)j4XfnYMq1on<^%Wabr-FwU^^WzMUV0T)7OLWZUu74=FP<@qpLymB@@%lULv z-<|!bn7(w$6Oy-^4ibw$fEim@gz?A$_5QYz!ugvOzGhLzId`=+-}i7@$gG=>=4?P; zvQYiV7;yzv`pk6n$|RTpOkahI+^?3bwYao{O=hBgLUZyFR9%H6I*Y*fvjP3@*Vkk7 z=N5eTe;V9N;+^WE&}hphucTB|&o#(usdA{B3E_V_uwlbbp@hmXOTPej12A^xg_{~> zSlbD}exv~}tt>!~mA)xN{nhIKOi#2$dAnRoaLo7w*XQFEI#<@Bif(ql7@8#+N1yv< zq;JgJ{(q>mk|7OzhuaHGSLtHItnihkJFn1o zp_M8pTvP2cD{1;rkw^3dWy3#Kh=(i+8L?D6*uU*FizbDnDhFv<`Kms$A!mH_Sq4{A z+)lb6>vFNKg5~#P1fPI%af_H}+)cZaZNl5%vM@E*5m zc}5oRmQ9twUzAukw<;gWo1pXY(R+rcDt&7&5Ph+Cqjc3j7U^JjOcm;SUn(y4TDfK^ ze!f$$t|4&-=VX`YA{L{Z?nrhGDr90l?3-M@R>gJ)Olf;fY|xiY)Aq{0{4~Rl zw319-CiBlG@f*Y!ofT#RHo+aBgB)$&o` z1;9gu;h z64$QVQJ5E8t69@=VWBM733(x#O8B{R05w+tmBVTtyZx)XeOFG@CU_*YI5T6?^_6LT zZFw#!?mJx4IJ*B9?*IuC+q`;?>t2m^+Xu{s2^EP~dilyFC>g8ut0c$7h==)>sI~Fs z_Tqj^ZAvRACii>WH>AGW8{GPk!~ZGWj)Z{@0ZG|GwzD6T^c5_xxpW`&n`0T3+)M1C zGMu`SHn=xK-$2I-0hZZ@DI1>i#gP z;+TJNE2Ay7L0MkAL8tjOzPO%v*D#iQXR6Xqu1vsA?xv0c7xP zlDC@mZHtq=%B{l#w>0KdV*421Q%2otY1y&a;QMOy#p86q%JOJ-od^-hd7o{K(0v00 zz9M%87+-^hv&HIwHsB13S}Zqdip)QP6&ZXm)3m_+eyQ&+;79?VQD%UP_XD^Bt=$^j zk6ha=WUxL5oGZCB^w+59Mr8C4|8!|*$icM)0I0a*V*)hZHJfsm7>ya;JrIRwvYjQe ze9eLU5s@AKk!;wp38|pk2w&_HoO~m-sMDpB(-JsTduWC8&P4FkG`V7g66`Vq%>e*= zo^Ez0U~oU1UsSZ=J-#ea4a;c6A#RLa0`P={0bwVKAjbsq1U~^b1u1|vcLU*p?H54K z)*_gL-hoJS`Nd7gqE7>AtN;F8pU0Uo>~Xo=lGbG!-Y0SO<8GVG3mn5V5%psl>C&90 zCwnc}o+(o8J1HSnC23WM(E0>eAJX<1+#U$$BM1@>BQoG^QSia|!g)Er&>UuedNXdV+%{z+uNQd~8h z9}HO6p%3_|s`;g9!3S{n%;U$EZEp45NS$Fl)tDQ4iOhH+3glsK-g8S|E8nYfx)siA zAXIV9@BXcGyF)od$&yl-kq>8FWSaOeFEV~14?X+gF^yIGxCtpM$cP&QQ0!f9P=G#G zJdCi`1wyBQFE)4tQ?9ZbU5addhSHe%Xt$t_ATo@&rbbZX9^_7BOk2ytg7$oKR0+?91hA zVe;y}R6i>8ChOX$$PWC6beWbS?C0y70YJA{WZW|I^U$>2>_`~6>k&)A_ zC!vV9eRI7f`SoqV#~qavLz*Pj(Nr%s-|3b|!K>|qsQH5{1G*LetUX@^DW4PKTVX`9 zg^mTUCDLceA#P5r-*@so^yI{wOa*zy8`oNPYaDrDbyWWlruz$mkHa&deGFN>tKe%W zlLe#;V}`F60!JC3{V|$0x*}x)YmDibsSapdy{AFf9t0-tZUjCVF}qR27r^@E4vnLA zsU5IeHn&xSxpn8RvI2uW#CVlMODJxu&bNnp^CXQam?|tT%CN#%IuO)Xp#^YM0jAQg z1U1>_M_UIl8gx$FyK^)pCPw)BC<61)N2)q@?F)wV#qh*x+3*gQR9jkecT<3LMOnxCGeA5rTv2pX`PxtUajII25h(hL@o<2JIrMnn$%lKj0`uIUP zQW|LU2$J72_6m3LkVXB6=YB6YFF#+XOkr`S+RC(XVbxe0R|;TUs!g7vN-I(W@y%nbB+0( zFA=VHqoI$hMAsT3@9C_oN@@Jgo;pVP{-)=XKORgM?6@~^2{O@x8l+Y5>rq283@OhW zT%_nLi&B;D7_vT3CwVw}pVb%I$&t{MgURN{j3c>;M3wni{OKw9?gE5u0k0UMe!llr zoq0l!PIryf3QP90A>W%m0jJdDdfPBV%17pH@gJQftd3ZQOQi*QCr*oBT}_*vq0CsP z0Pz**GQk9H08>u1OVsKzs?uGomqD{|uGCERWN?y-P?)vSZvQ=oSFL>W24+>22R^2e zl@>~mb4H?-S_>jYBf zOo>Zs!rMb;rawLBgZgnfZP0_%3`tp|Tv&Oe_zXNJcY^F7 z5CVU(6uk}SN*Bg_WBvZeT=R2A&lBXvW5hhq@g(}3re<(iKacjm5iw7 z0v_XLabQ)G??FfFzojDHnf*!c_tewxT*i+sS3n$)FMtSD5W)*SjKfC(=CrR0#tg#B zx+7m}2YfxSChwpMVp6*=N4OR9AS3l!utf(4b2tbZ7`Oa_Eq@5Rp<$DF-xAEZp2rBX!fVrURZs4V~XM@*Hb-UhI zluBJ9?X+eg+F9K%PKGioDpYc5qK3Q4o&Tbm{iFdF47U;%UKAGywl*8ZWO_%ng<`*uHMBCxj2(HO4OlK>Jk?XG`=Qy?Z1 zK?w`eUtbB@LjkE#%Z(f278l~H+EmuZfu7Uugm2>NKMB+dcnR}5yNb&N4KjAa&G~G?_@U&XW$yh!;j>x)I|}9K+_tmqs*xP?jI>cV!t423|gV7R_KYkKpEp6 zWfoPc0tVQM)I#@8gzMf4UA$8M zM$Dda|46{)Hh0m6-7u>Osb0KbA_8CXS)}F#USrIcSpvJqM78uoyOPx?AtA)~YObq4 zidD^xxB1rRC0FSWb!pVaA`dw#xz%??o&21D&68{k4K#ddawxo^^K|VoojR(Hr5dpf z&LM?vRl=0?fxU{X&KAB2Hio;bZM5cV^N>52xh@xI_Xpyt;|tAY&o|iV3|QShdh;o? z`>{)J0n>YeS!u)}^U?cK0U@_5MwF*=I+nTI_qPk-4R((oD{oh%yvfcaOB*sDGF#6y z7(JK!_6~ohT^v?OWUqF#m82}m`>H;+=YjB@1chjvJug?DTIRxytF=_oLGrh4UaU&t zTO$s#A!Qzh)=dx4u0D9O2Ycy)329zAc5ROUW+n>u)iw@bu>16YmIE)3n$p%>)wW17 zY0y8g=lY|T%=E$9wzb9Nto~*dv z$g(h9rb}@hSTc$!HNfTEoegoLm02%6^I5##Wj{7wZ*Wn&eU;fF=~hFJvayhPtF|1+ zTB|F2y5{R(Dd~#HW{WsjyEet4`l)d>1 zd*hcdK91lxmY~S#|LoaVIc)R!T%7Sd9c2Q9eM2jaelZVY4QO$KyHx3s^GCC1facK` z#HL$~-Q00%n{QQNOUEJdHs5N%rk)eNy!qV7%{@no-F&a8O&!;&viV*&bzC$hwCU-Y zZ0{8jmGkHh_0 zyBiQ@n@1tN@Y`1!k8&Af{Zv$a_PMh^$|MCq$@NeGU3^Q2j8J|~yzEMia5CP?-j5x~ zSYr?ZcI-+3$g!k%`l0<9@-ulqrQU5DRQ-OQ1+KjJ1rd*DUOMtMBDXQ)(&&KFOm}ZV zQ?S5r>nBZxEh&;;*PQ>5zx?udAeKM)?nhCY;yDq*Lva+*5v(IG+wy-aR}wAoUy80xPV{DY89r+-77iP{M*Z_+Iz)EyuAn*Y8hK&kXPbpFOIn0122xvopHTd7t4^%oz zqPOhuPT35R?(NbeaIv-TW1D>kgn&@LxyS=&C<;zf}EQ zhl&C?RQ=-#XK|W%u``we>8mcb4WIB2$&S?u`jR604VQ&i#vZ!tX_w|`;e@-|ITrbE zm_NK7qj}Vk%<_~Bv)cc#VRAL$?iE&%mC@qcHutRaQMeh)ZzLtXe|kY&o|h?;;qJ}m zl6CP4Mmw3wK4yxNx*xr$CjTf|7g3j3Wl@!C)$OHDP^_d5tB?zM$H9G z8Z0pa>`iS01{^@PV8)LF>~kZE=HwF#UP~BQ$EN}aAs{ySPuutR)MpL0TnTP<?kX2MZl^381=F z@VNwBi@;4AwrbBDoQ7c|)$Y$IFB=)=C;vYO0I2Jxe)uZb`H!EySyK*U%CtQ@u07~w z=LwWHs1KgF!5&J28h{6U2*hc(Tx%Vi9)|6^cvhnE*x`_2c-p~L0$He%D20USAR+fj;{S~i;t9S2~65TTdI=&edzu> zg#QnG{>WV|swac0gTbA&`=UUE;2yx3zA>n`{$N6O={u&hrDA1B&reY;_Y>p5tvKTK zbjmWZPp0Q=)18k|gO?CPz5Q{CBODR#lSK4G5|+VPzv_XY zGKT;+s2#$Aw16R*ed7SPng2}>Bo@z(TAKm%%e%B-8n6JnZk7`HYu8_8Q~q7uH0ehu z)zkPyzV?jq0}iI&rGUBwZ2Ar`Db?$I)o)3wmf|Dv)J_uS4v(j%Iw_;h5jF? z{1Fm1Ah1S`B5p9GV!~U#W$wS0KG0hmuKqTy*z2$`<&#`~@#I_^B8sYwc$ILfnO`9L zfl-#hiNQ*{d^I*5rhW*hEbnhEVV#(Gd7|s|wZgp9bG7NRv#h>RHf#13{C-2+8(x!q zxJm6BgId04d4?2+9BfxUNlo%%ALfc^E2U*baK)UU^Y1xRaW4?-Yc*{anG{zu5U_Jx z+B%ERvrAdJG3w|Zt)(SyI+7+caq#4XyIGLjwdmHzUcG)rno`I6GK&QVm9_CY#s28+ zj%~LC;Kxzp_nL_r`bQ2+p0XUIWj9&qnhomPeT2z}{!#_)hZ7VW$TXB}yZMp|!(?0D z`Gz_NYp-9_q68htqKEPfv=Ni(+x*BLbZRIkT)P%Rkt=6ixIKhFc%C}cIZ1%~`GpfT z9P>3#s7N}fY}3=8Uk{a{yV1@BIA(1Co!E)(mTrapR%p4QP=FrSemd^EMBpLIei^9a zctz+r&q=g<#TZEU8t1O`hvI+@6M-qu-x-mh?*S`kxA@3kVTt) zp3`#O2pAHNg#yP-d3W+Z?Nx-aJq9nA2$PeEa$V6pYzQ_U(u|c}3{eF5*R(+C#Jn4D zuOK|2BMxYcNAHU2wg;h4EKES*E)w%Bfm9aoipzjktn=$3Gj!yojh-nac~&hY@!2Uk58;KR%OBm)?0DhN>4S;cAPj?&G8l?{(V*lpHzVW3Hn}4 zGa0Ptze!`NZDhlcVCFu;^1K=AE68Pj1kdFTPc4cW_R>dC);{BP+5+JL{4jJ#3Gko-Mnqs%;BOt|&Ym9x^~ zCRgQ+u87cbxv*xi4#Voeg|Z`F7uan^$?maGnRkMG zGzMU&+g1F9O@$07^?FX*f1o>pJY7x&Gu02MrAaeSq`f>U^2=HnO+k=Ll;9oK$8K*6 z)xRK^#%D7e%_iGW%jq$XogSYeo3BJMf5^l=H$=xB>ATZtPIw)vU0C;Rki`**IS04w^Dxuk-0P_Emp8tNrMW$w_^6`v5C{s|72 z=MaG|$|6-Klv%A@a$zTahTFtZSEBf$p8D_`Su}?%L&U)(UiSW?`goOdBbLi( zh}z|BJ)-^2%u{!J1Z7w;9+FCl*zW4~&{y55K@5e0{2Wyh_RB-@ zrYhx>!A9*hv7frkqLv45_GpUoWo1kSIK>Y5$urqT$jaWK689_*+x_ZRLSdwhuM@0R z?P6eV-tW~kawY7N7IXV_DOZn{M{KUdJsGyRv=92-3PR?EVrt@1s(0w?x+Ya8*pJUs z*OlG!VT?9H&Cx_%ZptkdzR49afEPW)7{sHl<-}^u8`Lf-b+Tx%*EFqTZRO=o!-ua8 zpL(($lSEpAH1YZ&uIz@i&vBW776Ql{``#~nQaS&^DysS5%Ye$fi@J)I4skVTyJ4ZZ zsxgYaGfYQzup&RbkyK0)cxYQEptdl&Fl}_B*yqHV$73u7tn&dDv2i9it0gHV9e*XJ z^z?M|#%Fq68d~rBiJt+_TZRE!shV)_3nGW`#;}9sW4%OHo(0r5B$}pU%B9-NA+sUHobzpi5Z=l`*7RQl|lBVB;mDJeTfZGqj3c!>Bg-`!#^1q;8(oi%w*$Zc0tpvi+sGKyWy2DjYTyA_ee3rC z0{Tw(DE0EuQxilCX{Vn3{zEcfnh0Vjb!(fd+8#0I<6*R`O=4*|GsN@2w!2Ht49RwiEdVH@E=f0o!dEfVbe$Vr~_a8pvnroT!Jg@6I&*S(W-{X6j zVwFj4$2gh{tI*ER~9SG{gA7tt_ib;j0Em@x0e z{wKvr)emRxBlmrVoEuQkQ`gfK&aK-&N-smbm6GM7zvcPRQ%Ca)4pc#0;aR}7xt^a% zFH%D7op*eK64X-MU29NkVm@~;XsEbG@?p6DX}3!l;$e!7vK!RhNz-};9uLYbSh%dF zP#|T{SK#TTau2qfmGY;a-|XxuOO?UH@6kCH1YB|xL16Aq>#Pfr<(Q_uPOWI9@sYDV z;D4TCF&EVBtYI=x>*B}gJh2{K@_I`$ymO?RtzC+4NZb5t)IZ~cWfv|0P5)ZB{!qr+ zjavlTNs{N$nxE+i>rX|j2A)m*B64Bc;XNnGwayKiKypmDFr^)5n->9{%O+cv3LXcj ziq>)lvc#gbnV{+&mxJia{E>D1&o6KwZ<9zxyoy+Djo*Gam4s#{EC-WtjGoz`{3DdO ze3<;)QCLw8NZ8{9Ja%8G)dP~70+5WMhJ^YD&)6ec6oLDkpwK-GP(a{~4xIMpdX|Vc z1ocp1_zCruQsnsa|0|aUy54`R2#bCLpEt5-Be9a+QtGJ@;QVx8s!rBG_njQ;l{2Uy zjv}T9uykuk1>|nt*%b|epkMa@P#dpG!Z}UiS+loM|Ozu+E4wBFSL>W z^-6_iE`CGSaJ7(CYlEV+&_W0m;oTX3qLUX6l4sug5$2Gcb}==;`SFx9I%VW|O31>xGF`(~hmIg42c z?8Y8`Z}87y0L|GjME`#K)2I6n6h+HboW;w3y!EQN(A&&nR=YSo?%rp}sBtB*_FQ4h z3^KIeB>cZA`u|H+KxA=45xC;Ig%M_-A(x3^!Gbd!woh8kPPt6SRRIU+o4Bk);RPzO zAA+&L*l*&pn6FAt-{fdvKeT1h${?E?{#}rE;)imr5kDhY^AADV#Q!r_Z=auALCqnH z02BOf1D^Xc#ACJ(Yr=s^I{U*$PyoR&j(kKZBHTH4EASO~z*?Haf>_o^Q~lna)~!kZ zm==;2J2TPrt1D6DR`BVX0sqCRezovq#7SX9z%DY1Uix?5qTfT9|DDgxtiKXXf$TkV zIwd|LrLSuB6iIZCyy?nX&Owm>;bg#HQl;P<>cv}K{2KfHNa9Q_EpE4t8D@)~c&F-? z0~?>u4$UVR4GmzG3UAuvyNbvU>&C@}-~9~H4FTCyPpwoRsJCVFk7_NB-pdwRbr}p! zfxjuUrZXrnn2)^cQRYN^_Q|0B;m*k36u<-$f}S^u1YytFCHm;K7HIaO8(|rSZrk>nU!9r4L`x?dA9<0oejw5bGluc zK6(>fmLe z@=l=hQ@Y42X!c=>{AVFbM}?2s*DWXgz^JJ8%_LT52Ab8^4t91Yrm&Yk#X0xqU>Tu< zmKX@r_=439S=Y45;#uoiF?Q863?(~uuf8TNOi+D>=)WW{vp)6aK}Pqq6Z&C=mAxld z$O%LGiD{DOS%_h$Kmyiv=&XTD730Cf;X#rpsrMwa`5Ddl1=Xa>>3TJ;0^yQ6Ib#&p zYod5y&YbN8qLuMvck;`jCl2@wC#xB8Etlu^_!qgtR6IU*YVhl;HGR7c+%xcwaGIhR z{~L=h^AA=lI9@j`L!Ea6DeDRWSL3Q8(GvD3_Wr1MTy1G@B8(r8VkR-omgW)~1Lj@r zhM88PZFetudyCYuaK%2()~V^{${N`=bD8r~_iRg{fGhFC7GQ&u5pNphvVbXgvhrZq zC(^-i>lqVkX(j4M=UtOzUwgSq(w$4OA7Qs_k-M!O+K>8lgQ;(K#FBWdNbGH%6vL~I zAD_1`XQXC&XlB_87qvHCW>cHHkrh~3R+nh_ZuT11fHL2p3B7|+rh3=h7W&wet(5mL zeI_bh4p_{#PZdvP{VDG{O+>Ro!q9-CFcZDE7dOhFawum-zek~AyYifu@XhYX8gUIH ztCPH_eW833hhkFeWP_4(1qxl`3_7%z6v{fX1-NYUn@iV@-ktTi>5CdC%7{H*XbK*3 z-;rwFnIp!tcqJh2k+dQg{;F5uw6%e5J3-;H8G;zcrSs-Ii&n{zv-Q(+!K5P7nuLKK z7YX^OQxAKx-D+*v|fy>LZHaNHgP1-$eK zI;m4pf!*(wl6rbR)Lm|FfA}tUIsk+XVJgAfr?ZBo$afT<4IHgA)p)f(1T_{luA>6q zIfZU?PAE>HZJLo3IcrmJjF!M7B}5YIn6S)9swr;1E^&1YLRJvB;xeAI&XWL?i==q_ zlo|FtdLZMove_uz7-}nWUI)6^1~Nq@#GHPxM}&bKePkS_7CL@NKRuBouiSzgp<4>g z`rp$qEDZi_hr-?)htB z_PmNX$LLd`O|=I?)im@SE^O5y><3j^Dfp0ct%;;v)=<)|2>9xRb`~R9I3P2L2Ll0y zMnU}YVPN;NfyFG|G?Iv8$^g1Hh&Qx}AU-7ANFst_3|oQ8I>8DoWG`RKHW^m<{B2+< zFVg^96nQ!rD_e-bZPh~zBU{`IeShK(Mu7Bf|PRnVSh)S_|pIW4TBt=G296m{GLw# z{ZnU?6pIeSW*(!g`bj|H@>zd!$;$*EKo{0)!J!)w6D8Tjo44aHz8?ej%Qou7Oa$uf zQ-DwbmnOc*IQ=Aw;4wLXSwZ4f-cAsXzF)`ED5iwGbAIEAnH{`Sj9 zWEf1!({!~PwZrDxtO4ipd}o4GWv4YhL#`=->7WFG9S81}x;b=_2!8zr;#?~r7<>pt zw9E{UP5>XbbH`Kd+P6c`A`OJ3cQ!LTRWttG2ehHV4WYh8I>_BLb=w3WkjumE_4P4q*G#X45{0QR5zPl4l&} z@`?+|j#Eb)H&&NB`qySgK0DpymfhLH2*K-WuNhXQ87gw#2rPOybGZW=nZ+!`9}=LF zW+;Eney`18iM$D_#;&qpTH~qtZ`>7k-1S*xgdNrsK%k(w%j1&)bTCQNO2_3iH#!WpH|seUlt|?)bVhx zdfRZ?wi7JFX>U@M}Qq{FXTh$>u2)UD$BLhLzPsih)XI( z#rW$x_<*o-NNGdB~};8r`8Q z=VM+V;^z0WLszcGE#ZMZ9fSam?#4T%$85~iQN*u3HK0^d6v7u&Z~F8e$inV3bklS* z3m&a_nX8l)v2FJ0%;=%~D^C!27aB-r@4Ur7LkhUolLwK6n;_dSabstF*d1p*w8ZY% zr}=g5TC9)NdOweh6ibp}f^9q{S-+yIJg>we%Di7tNcmQo;(jNJt{kmBzyk<^;Z}gI zsW~}jOJvB`^CtSP0)%Fu0Gizau;mBeSSpkini+L13IA|!e#7|9dB zUMpX?=?v{azyjo5Lv0t*kQ-mqO>Z{j?q8?1A9irT>u~>BZYwrM9|t@}H{SgG(CgpwH{G92VzcxuRgRZbN){ur0c=`|9g%y7Mc| zH%d4-(VsBx1}6@_Gqy^67&3QA;{}HcI|8>%*7e;QUnhW`9;>X%ssbTj9fwL~x2^kf z#_KXLw3w)Y?h2KMEOrW7QulD0Cr$CE*xUp7J3JAS@uYbi=@Hp?nJt|)8fH!}Z|>25FW!R5_nH-&Lfs<4e03wVe8kO6*KNf?Ew)3} z+6y*)dY1#}$wSamhD3Mw3zUtgObZHwnDBY2@a&`KewJwXXVPWAN6G);PYPh!Vg*oy zF!%=~sWHMAWQAw*&Su>t$?3#l`qovO;Gi_k-ziQB$yf(pfA4Rzzh$W6G_V6XssYDg zqk(>u80DFX)Mx(GUov7wEBO$pVqlTMfxg4D{_^f$zPP1q@(8>J`;Tta!|Zh1B$g?| zrumH@!?@v-X#w#GU{yzIiG|2dWP>e4v2LC2zwzY-s`q=T2uK9FH||{_uXs<(yOdIR zfs(L_P`Dne`-snW_M`9_CFFSR_>vlsRx4_nkmm4NHR|H3$O|&;^_oe(BQAgHs&>oD z^MR$2n`10?MHNl?ejhb zQ)k*3a?K@El^6HrdfMY#ZW?@sbcZ2Y0$V=D0TGe!mu#gHOPJ2bUXxN~Zg)JA61u2# zWjh(~{^JyJRg0KZ(^dfw*pLeQb3Y}nqDq74JNIm_vhpmmK=na^ks=T!h+~Uu2I*Np zdqI=o=bc z5!wmn0do1`tFEnO$pKd)^Z9;aBulnIl)H@)S_uDcN5Kx*M ztV}O~X=uENnBdO-W!szW8FGI|7ri~8ibUKteW^CurW@z%0t$Qo&=S{1vIQ(u_|GKL(19MCAPOJO5^1*Ms zm}scuW+)|b%vX3#NKDJ^r;7`wnZtAi3AwMf+-lu3E0w43HsCwdxm;?k6@~tknL`20 zB0m55!{m4GF(ZPP4@pt0(h=t^@7}K90e9w&T$;p(+G)1<{cAm|omk;56smoOB%3+AK?Nyt~MRXA_Pnq90VEZ@MAc1h-PhkF+t;Q)hiesV&(;edhs z>pO?Yx1v<4J*Oc3{%YcfF1LA0wx|9q4N9GZNKr^VIMV@;XZNl0Cc#AmEs*aH36J&e)`&DV-Rbs~rMi?O1$?MV-4(C6KljMA`q z!`a&&LCcZhC%q2~JUK-0QSQ>#I-$!z)Wv; zS8ct|ftXkpiry~;9D@@-V1qCCDW~mG%)Tm5-ml@qa=Xq@rxy0dN`Bra;Qw}a`L){p za^6y{@-RL-SX7f<&NM0Zufb;=VZ0>c$ctbmhkOLAqZ<_#pCGEJ?F~l2hQCJZ_ za(tK$j|J6*zMq;2tOPdb+F~I%nHOY*URswL3{N4h!RO;?>3+23$Emz9{8kjnBMUay z0450NdvVy(m<5Pl>VOnhxu4Al{&8jt>2)4xCa)TP5jmvrdp*br0OrYyRA9CG40(0) zy^~LOpxb)+0S%%~;9X_K#!JAVUJc?GnnAd)gjjgR+{7Gpm%zNpNQoF_wdnSiZu{A_ zfB#YWs|Wx8pUgl19=u)P&ZEJ3L^v%fNOg8U4yP}%rt(3tLl}`8-maqt2HW@wMyqH} zm4A{cBczgR8r{nvw)wA@bB>n4CFAxwirZpTmPN@XWA_5FE2l z|0kb6#p$z`UJWdA0S_KCLPvU_Klnqn{+At)4q)+ooxGvLW`w|UIMH1N7)OVknSRMV zil-@GhhE?M3^}|!H+dm?`ffz4@ zuf9*5Stl8rBj@teKSNCP!2ek#U$s>Cwvarnkzch`mHs;XuaWuJdb1*n0-{Qw|JyATsaS(f$lbcB0RfkLh@&`s{Y7IabA7=dO%#DrUZ zp*Kp9SP^wKfMRT11ysD%WQy}nrA(Mx*ZAnZhqC$ldP^>}%nXCD1*p$?;8i5u#59Sol zpOqo8I#3M90uKrBE>}PfP3dPy>gs*iyu`X**v?S@kHEt>M0B`U$6?vNDl1WskP`a= zdFa&usn+}Cxxd=*zcUV_u)h-{1H#d-Z5^PW)O=wDk6_o46@3fsa@MONu0bL+Bao4J z)Rfgs4ucEDj2BnOAyW6k7BADL;QUj~=})eFd0fO&|1BPdYOG^k6~YD^FgU(-^)_I< zp%uPVilp2e)3X=bR1L3#iQySABoD8zA-thjVC-^q!`E}qAGl3hZQiEj4_eoe^9Cui zX;V9ryIH9V10SY7=zKp9iQmDfCHfAd?AyBbuXPFNa}m)}vy zwIH0Kx$*emO;;lCW761kxNPDSCBQu_yjI7&w6i}2jM_6?%G?ax^drCqto`2Ojt&ZybB5d!FzUxdc>gMHC zgQf~$;*(x4ns^_n8nV2QfKt z0laocK*pwY4^U9U-6fF$)UFzxrY^%_urh#i?tslxgS^yW@OZRW0@T|ZJY@@FQ<@j3 zB8VlVrx-c{`4|4>403rc6*0&N5>)^C?f=Lzk5n-69Of1;){Z>)j*unUTB!bpPGgBI zY=Y9w`016XYjKo?h^d(o-LQ#7iZ#uSpKKCCSar)9n*$QJ0_>^N=VpH`NFc-Nuz}|R z47eZ3kN=(j|F8IF9sT>+miywWxb6i8pRN+4+rTTc^mHdlhLK(<0HDVoQognA)+_dP zSe}I>v9P6oZ!4+YCQmf>N;21$9N6i@U@^aQdnSaKfroxtTO;I%cu5u1sIRZ_2cLjI zTs_fB?tB}@z+hsutV_C+dfWkiRdLnMzU~CeahNZ}GBNY^*rmQwF=ed{Xkr}Rsv%+LiiTTu=)OnA*X%pm zxRRRH$dP}5D~71VvkNyzp}c|i#bqWQAHK`& zk}5f}Ha^EqT#8dqpc<-4g=Fu5_+|7r@yj3s?3DudU?F|3i#3mKzsf|gHYV5KG_!Rz z6Hl-k3)oc?gAW7!LSnmiK1fE1&E2!sZ|d&OJi_zg>FRasGOFN~oFs^&x=V5wobEHk z!s88;uReFgi|V==>quADdrSH$ZS`JxFD3P>5X=R6*KBe08=N~q)T+P=+AZDm&NXJX zSLC*iNp9ORoTBGtO@=UBVVlE)L$h49gInp0Q;Hyt$9hrrFB(I*y6v2b?JT%o`t`l3 z7qu^Npn1h$XdG=5Auau`xiVTjA`G?P)C~HPZ2LZP``f|qGF>>Uy1aPWk}Eq78f0YD z>((`?YEY3Wqzp|@`a{qUszVWPOmC*tk7gC_d1F29_g3@9&48Pe`fa@mqQ+OsMG^f} zoJ-lKt+%4}uuml==(iv6YctX~ZWtJE))O1flCN@*j#;lNyu^>o;rx73BG-6+cAIL0*O9&=fgXw;r{5zYs_A3Z2N^XFsa$TMK-- z-Ns6PTCQlmB~TQWCpUV(x~+~W_$_&W89Ezr6f$+F!f!j%)d;)OBQWLKzHfc`NBfy`J4$SOPBx?ywPf~Rb@L{x zfjEU2)d&}Gh2*DIF!G^ZHE$PjuNQROHof?tijor&0`*dN8o}5jFmFJc7 zc~@slN|%DM+fqDu+Ggba1tr7rYL6#BI-~YopfYSOygEd+{j=b#$2i;%(M(U zm(If$&ZEj~`55X~A!<8!(1(OiN%00PAp9~3yzz3LS7KE=tUmFgq>(csd%D1k(a3ZyVhB)hrFdCXAYIbt|;L5+AvjT8Xp z5w#s3u!wW*bNuQNv%L52KPuzrcALe;no}e{s1{$G*3k9ocR0*-#l9rADz?Z{`TgZb z^6m2Z5@-3yV7@mZ`dQj%N&7A7>#f*obDt-u+Ly+vjcAD(aZAzZRK{tyd-a*PiZ3{1 z>cwxFf9?ozs6&msir+cqfBk&U?)*!M5Y3=F8mZ*5MI74ws)6j)E}VVdu!M|o4P9VJ zyC9}3;5e2Hhkrh@q3gVtl*d&4fa4ZdNXD+5l{&P`C;J{SsQ-V|Hvi@1KmWBFv@l0t zHX$kHd;)Yd)5g=_4bWj))h_!CIgrtU1JNBEeGc$02TLVZBawj4YsOukXLW=Mr9!i< zsgZkVwB>gANK9NqW$%IjGV|;(zpP2Cv2NE#nJ>4!*UrxEnzv|bCKRh!gv2pl1t$MQ zDp>X(7yt{wNsX}6-&^AU-(IGLJw>q|r?^i6ZKE24uYCMJA>%Wk*8+*b#?_}|)Vp9K zUqo4p05+)aEuQ)f8UK!ue?d6_9PxpZq!Ea>K)k1T9fz|j%qisk?U(U%h3khmEEMN( z-yM38aWCkQ7WLiMJPJ_j0juqpQpGNBgGzSsbb zk-=#Zk;7Lxp6{~9jz9yi>3XQN54CmlDRD_WO#X05DA#(#hss8A)@9Bga#wcYPPf|a zZ0?t|H^rmvtRMTW#chGy#EuLwA+xNMpAo|xta-X;FTTGtVsU*5r^D%-*vC_)a@u0V zw6vlWZ@?{WN*S3mxE-g}LXXXFftSAHEO2_P;7PNXD_49V2GTzcOM)m?@^#z|oV7k1 z(=N9U&PVo;zHVKERiwZCL0MFPmqL*ElTIZ~D$16m8zpX8$h)LNhH9?+eONQS<@Y~D z*)8MN^;Zv5Jf2tcw=Fu(o;~wi=ss7Uo!;qMs#A)C3+Y*`?=_CQ)i{%GeRIaRv+8h1NX|#YnS9r+ZP-%(J<3GbBaGgxNw=_k{RrsQ%l0 zqg(@b`z56VQqoUSvk11r&7#b1*H=n-cc?MCSFOF4SKP9*vNL$t`XY?pqFg?;(!s8~ z>EgucY9$+0k-AY6c2886Io8v`o#@2MpEDy>u_a<^EP5K+4Qf9ni<{DDVlKMtP)A*Vi1qc5%Bw`Jymm{$p4a6uYnSx2 zdind2|C6Bi-#vGeX6ElytJwHzAI^3khTgZ46f`xnx4m6H$aha>4ZS5~ zrad(ahE=piKB4&LgS+BPc28=7l=Tr2s z1u7ka(k--@iZBN61k!3d8jz5vc_kF1oI5d0QH%XUoQ{h_XTd2{emFeNi&15SR-k_} z!Si(IRSh4S+qWmw&bMw2XY_yFA^fnRYJU(0tS~kDHcy;K4UG+IBpk1ec~!;*g8U-A zk`fW|vJ_W|u7#fS+2^^)(NFl6i+YL?+%xJ_k1Njvz2Uw%SsCVubp7CapG2Q{yohde zxmxQ~5cnSFm>zp@;c2#S0x|EZ-*^+N@16^ivogmems>>1^3JN4EF21KepqUdfe^Gi z{koO{I@FS-Ti&rhKlD(P`G`gI)yvUrJ*^kEbZD{7F<9WPX0g|dRR|v-3y-nc5)dT) z$TId&Zd;P>Z1#|!{3x$PbFiVCJE(JWBw|&l?^XVpX)YV#%#;InyW+lr;NL0azZ7V{ zDYhx#`-rUldv1V^#KHrT60<+@6P+^%*BY0f`$!T()E`{XA>IP3_Ofy-j4Sje%qvKfY4@qlu>hT5ABd{Je@rINplygf7IkDsAIhgx#2&5mpdYLJ4=fTGn*Tl%*#Ozc_VUL0|Z@iB1Cl~4$n z;TSaQiO&E-0QA)2025{&`Wcd+_{n)-i3lZuAzslW(}z;$Pl-!t7^~Qe1wUy_U0V%s zn)JVxH8_OG^epdR9IhP-YkXJ}9OEU0^E#dFxuHM7c>{=+Wds&@zaK7a@nWCv^?#joICJChY`Prf z4mI*BQ>(NyB@(+47W?%$PP5*E_}m;gk#RE8&!odcK(v6D?}})!m-O``&>@ZAZ5E}J z*=vwrv^Rgiz*xn^v82&CfSe0%PjaI>7gpuP@SsYgPibHKd9=G;QwpE18ISZ@2J{a` zi|U>vUwL2O%O+vx;B)$7S1;uC&*W;bri>cm0wh=Yu-m&;>D!bnm_Mdkq+=3QmIeQN*t5GL_)-$n6p z7Q#+gm464GeU9h6WVs>(8KdOJZbRRuE>o~*XBz@6wHPS3l}J+I2=NixX8)b_KoZtNBakj zyvgfT$&iSt!t2qq1!LSbbD&RkH=p`zt8j655<3bFc)6p_8gK`Od$U^K-bb|bR6cE_ ztdm<|!Kz^oJLsS(Dt=+OKvf2=s!zJu-r;NpvedcJpVvaM8PxF$dbO9^?}KdCe8S9Xthw+@4rJ^4LQh~A|@SEjg0lWbIs!)(vY9D zfzh9UOEXrN$_;Op zFxgThmx?`Tt^Pd7T7T`+N6)$KsBAm7_MS<7`0o!o*^R?pEa8mST4XZI^wm>fRtKk=TKvYeEz};<2SPdf)z^T<;MT}&CD)LXi1RP3gJbCA&4uP3s zr6bhoa2gP$Rb?!uTQQBFnS)#DfRJ&%0wINMUGNMia(?tAPPMobRN5i7`PAghb*yGN@u(CnGDCt`v5U+ zKrHVp^NR&QKLBm`&7e}$>g$F%NA=vR^?JJoTyzV%0MUp?u*c3h zWR-8%ph4a5pLq)-hQ!+u;}vnM!)he%TO%rb;&UhR-Qo_aA{M&4zR$zSo*`dX(vF*Ee+6ljG5d*=G zO}9-f3pD+gmj1mV0yfUS%{8>pl9y9@CrUz|zcp55*K`#SJ{M;>ar9q7ulBza1N^U^ z^D77XZ`WVgkQGmLYGk2&T#kz5qpt1YwWD0+CSKy>$!(8}A!?-4IGb^f7)*AeMq5H> z|A%B6mCQFT^Y%+Sp8#Ilo0%5h3O#_}3BFs#`In7kJZ`BvtU5+qlr11;-wl4nU__a6 zm*4up%K%!aH4X6VT90|N)UaS@fGxJeq5$5=+WBNW{uy%_pmqtp)XpVSoxecIezMt-j>+X&--Dwq`{+YYdS5x1I*}oG+mV+R zcA+3I^u)fTtkH86fX8NTa^gg-Cw|H3!2C>xq2+Gj7wk$}JZ$&2P#zTuirJfz?6SL2 zrGv9R~=$ngOX?W*+_rdc$AV;dCf^>%aZ56Zw7kI$!fXNQ?u&-fNaypOw<9|Z51()W8_TpShd+qPS6U*c-Wt(d`B zp_b1Og8;OSiS3H=;VV4O5&lmwuWC#N0LIcG@H|vWP_ithp6lSvvAXK<5Ykqkb2#4) z=l-Mf6|DhhMQ@hVm{4EYVt)ZE-GJ6ai%n*m_ze%)?v<=d@UInS&XGlp1X~V7o-T=4 zX&AB4Zm;4ypvojC@J?u%sR^6isIqstU6Oz>KDBl$Ykm_5B@iFZ=*vu5iH2j5SI+nt5pQ<&;S%nC({FBG$7{6D!1Urz~T=put827aRrjr zDZnrSk{;TEE7oWtr66qX(K;E4)LaheYDwe7MPNxmtkrdqA4=fMj3D*5Qsawcp7=D$ zCo*oe0hnE6MQ5)70mVK<>%}F~8d&aw|N8C!Q)BM;F8k2Mth51Zo1K0Bh+}2(R0d5Y z90xmCU3I$-KXB@m*bSq7ldUPPEo9L(&B$BC9A_AJ(bDn@ur`1-1vM|3&_s7SBK3=? zp~}q+a-Wf0fQr$q!*4a%`v918947$qNKSvys&ezTIkzmZ1Qfp`fB%h7G5~!1-6)^$ z-zmfh(E?E4ch~DTpMOS*?s^>i=_yhrnCxUNUurrAW7pb|(=&+WJ@K^Z>p5e;{$Y_T zihw~ovd*A|%$t#-W_V|)fBWTOis@;c(vI=6%XY0On&d;8XQfVs01w`|g9mJ|8`g-FOTX6=tX z%K1TK*GYP&p(^Qcd?JBlbl%Ojnyz?2SK&}jXk@^Ao?sYb27xDN&Ct`F!t4_>bcqNf z&V!`@dI|Vvag(4%&>gT$SZ;IdDqT3!?P2d1)KAZqKR%l$DIguw6%NtFQ=$M=s0KQ- z?s=atim>w3?5UTC4P<_tsmUv_jb$VV=eYl(&%+ecR-A_rE)0q&9_8+^PS&nfRUD^~I!qz&p9rwGnH0iO7>R_$ z0_)-D28gU24JL3F$1S~8!vmLpL}B9wxB=;~`Jiq@%L&-r^k)c2m)WoZF@6Rp32#nW ze1=G_<1INP0Jm)1B6Iuem;cPsem`Q(dBIQ2IkbB)oO-6T`qkA-nAea6nZ4^z*?%yr zmh7xnW#>?Ch{=^^k$_D5H0R69Omr(C{&2z)j-~D(OE_!x8Db0Q?-77S@13Ra*RKED zqanLMy}v1<{Ep=bzOI%cuZjy>eVN#cnw%f5miqa$wUh*5ksJOh8-Y6QW*>2%zpyW#(|)(c#J|G;CB1 zcyC64j&@p!zf&AgR&- zG~=aX(Jx<+N1%>??#XDen~5$!a!w)j3B?eaCfGitLvgQftgK!$|lr3E)S$3{i`3qbK#tiRn5wk^u4}HP*opq}GXVjz6Kn|B z*mCxR-|cOrhO|?#eUSnGj!X0{eNq_#t(gLn2TW3?T5Gs+d*wM_2BZn^Z=rcfJdSf4 zbsX5#JH&=oUZ6T49iB4Tf1ra+yP!0RtxOW{euu8mZ#1pj4HyHlyb2dvXJ#e0y|XAT z&@FlqT^Dgd&d(Uj6{~5F)n45&fM(c-hSObevp~lkioL_uxrwZd7{l3NZ?<`&{z}8N zMu<~=n(9@K1geI_`SGP}pMvXizJbr}YElOH>{8FN>3AQ9)?D1wGRmoE1B*f^kaFA% z$ddeBp=UKR-ni#ehpnflW$O@jUH-Ftq$Pl31A3su7EVa0I#{4!1oceB)O9 z*4Ly2SRdomb?6iWu}$@#q+IeF$L&`~?tij9MB+x&^?)T4T{wW-tz-X777(Oy-HqKK z?r4coZ$or};Q@s^c>lJozR_;~qyK*?H>M>9!(#J6Dhmj1bGA}`kvaJVvHMR_n9lJ% zpyNL^u_RVg+W$9 zeRm0OXcufWXA+K?8fegmOwNk2xu3Zf;bNk7O39g;Y&nI$!y58PiS@ppoFAJa4lS58 zu_p>0=vZ6sYqqF=%%6}xYpg2evajoU>jSmBUi(W_`c<;;6;J8Cx(pzGPqicw#jY7lG|RXzdiVYtNq(bL=yzqu zvz}E%){>vmBlnmNi8-cs%MeLpj7qDJ=-6-0Zonz^Kk7$@B_c2VkL9-wZ+EGQ> z@t=xU#g~LJ^mQ!34Pm++k&5j+WuC~gz!-A-Qg2n*KAlrTdrI1ibosIiA1@P?E+0I> zKvQt5W7K)%_z7GWG9YufV!mcIdau%$EZ6-~GpjAfIeRZq!naTB;9{)o-Nm1*xSG(U zZI`|xLhpUUz8#bG*fybTNwVx&Si^D8%$-$plZG~BNj>ig0{-TggILY{`kp%&io`t{ zjjPRaL7gdTUFJ0~(CzBl(O4QElcS^R7Wc;cq`Qi0KcOVVo~FlZHDV|aQ^PPNzLMI^ zH(#4-R}*tsW6ltLf7t-O6K=k$eJrbR;JPBq8KIAyX8Uo=sFCyU3fWZ5P$x%>P8Y0k z@AoI9_EyBW%>&i-XpkDE+pQe!QjN4L^tQ#hbq1j0u(nlQ&eAkp+!0JsRyRfMMF_RW zGD3n?l_Yia2Fn6bzM?BOmFI#yOM&`#g4ieV*8yP)ECHqujHB;%v(79@lFR!OpREYP+ zLBo>1WvLU>AO|Mce&1!~lc^8ApT||G$sBf#kkGoOWi})$S@N#b;E2*Z%unzA)AA^q zuvV(DHR_%PS&%Z_ST!&Q=Ja@fNJ)~_qOp}*QANL|-Q-89tk$7NVWFz0+%>zI?`L_) zGKdQLWY;l0wmClM?WPUCJ2O(gpmU!yL|bvxTr1p9j@IuP*6O)_ptSNWTe@z}vXDJ0 zNa3KzEuavL18+uhd#s9VX0`uJ#H~u1#E!Vy%x+63+&$ZZURnE+oXGvxJ?#x6!k#q_ z)7@R|%FWLVH9BF0f(*TWO-KhzvVgTo=V(!wQm}GI;$5!&Y*)_*$+Ekma#T~cdW(y0 zpUoB>Lhs19 zlI5)21D$<_7|{GawpTZHdSm}CY(;i+0-F>B3p~}opQaVEsn>}c`X{p&SlnM5pzz~F z?Tx+ObYCEUHTyqow6)Fr#S}qBu;+#MBa}00gcSD1#6|n4#Z&M|cS1Kj{3(U){L70T z_YT}Cxp<`N6XGp=PHwWmIqy8F+U!Ms& zrpa-VF>Ik0hy!yzDe^qcO3!X>U4N-5$)k&t0<*wOSc*K#0)U_5%fC_Gl0>lWL{&3qraH5_>>>fP)!HlCV%=W_-Ay)(G73ZZGP?2P^ zI~aQgP4d}WLZaLY8)AUtwpk8f8O_Px#wDOqEF(+Ky>0Q(ER|w5e}x*?jTLHRP@LD! z8xsxnOh*(JyYF$ReV?sTrcF<8E%-+{uk4jEHVA{j7+jr4#u-6_P;JH0x!{8x)j9V*(Lk`s;zx0xV zzCO62d=jU{<15Di0UX;Ek$AN{B2MbX9<9>AL@q~207Ab7td1(67-9xuP#u^VKilRF zMGUz(((P1877gVSdba;^U^TbUOn2tA8$a@%=m&lq#=;xUR5U4h92m8Y=WXnhU)AgF zwyARV_U^78)`$+i=I{UbpXu*>E`)&75k#Zlb2*&U2-b|kCgOE=A-tH2gMB@8Tk2nY`DYZazl*8ZT)ZA zUew8*zqZ6_m%aT&t^K>mGxJdvCj%lwjf{+q6l0CoqEG3Zcm*9_+x#jiZ0smR_U6z7 zcHY+oy1k+;W-MmcNMhqo@>C`>hSlmlmgOJA*aJxk>GifZLWLe3Q#^Qa`xF&VkY{B$ z`e$=CU;R&d!~bY%04Z@Hp-ZIFD#B=n*3;zo2s5k5ko(!(#0~|AmY3y7x3(|Yt+byZ zoAe#C**1n$%mq%ZliJ>ZcmxgnUfd#&G2#_$SuA_&i@A+kK375TVaxx-%7N1T-TGNr z;Hu;SVOR7D@Tc;}5)cy^{`d?-Aj{f0PIN{Px3yC0{}GzHDP}TkRg5(PR3tD7qpJsS zLa9f2&H|I}!aC(h=g@))NvaUJUJz#wrVG7sbD7#;UlNEHk)37Qn&?$-op`RHxlT)q z)y(7-#gsX@+tC;&{h~KE7T0GQ5sfgu`jV*|CvY0b0x`8ULIIfTZ+=nVOFx>kaxD!c z=|v#0J3&YT_Rrq`HwE}sH?;}7x}xqgtcK-B&O8fg+zn71VAtLj9@`FI+p6!>f{CXq zIGm3B5S2n8>48+k6JPZ6nmS?Qi(vXB1Ajn8F!h%M(vTmzA6g@=3;HHUp&<4npst13 z)OB^@lXOJOSR9EWZe4-zuiamtm_Kz`G$nMH%Q-#>kXppj4(Ka(B%X~GmgV70IR|N7 zhpCdANokdSPrtfH5I3{UdhUt8i1FQ)`37xKg#Rk%p3(9fJwBTCiG}>n{`;>auk(ub z2oxbCo<@|ET;7X{3y+3`db-`x*HSq98KMV5dtWPMK|leDMv~{HFW}C5arn|S6>(;~-OveBT|wyHmS=@R9k_V&bKT3Mq2>S{fQ4&iz0THwV@NDIiD+p49B< zAzOlvAaWW5=+=zc*M8xUd!MxYzC8SrK#o@WRYV-}auB*kFAB%a-v(jyEGuobO%(FY zne2bdssA;7+^X_d32}%+hx*x{I6^3@OAR-%E<%%{VKU7_bN~xl`_~ExyjW$DtQvR* zcLOfLwIW`@jXC6Lzuy*NwtKS@t~a=14H&Jno@SoBJvXD4O()YiHoxls|JeHuuqL*= z{U8ch0BO>MD4?h`r6VO20TGcRMLLQ|6A%RnQi3Q&s(^x`5)kRV1f+&0ML;@8hk(){ zp$16e|9Hz@b-laa?!Ei{clXoh;fa}Z12vuM zT&iqq*3!D(qS%{!&w9lSk6<0T2ePAgI^QSu4Jf(C=T6-WkBQC8gvV+KF4xz;YjqS9 ze3+m1P$f0~4$wD&Tpuz~wWo_Tq?hc=kai%)rF<+IrL)^d+WY!-kINh4pr8YQIaaJ3 zqrAB~rw;}XeNnipleN8_laL_U@%=aM>bmg&4C$N}MTM%X8`C3d{!Z0>_C3SCsSDk` z7XmOI8N-ema?5pwtq0|9@SS`pJV{fN__=N;7f`PUi+)G2Jll$0bZ>8(Xv}`qeNXzi z&+aHvQK40eP_s@qnmtn4=IkUlQfYEGZ__|1Q?Xc%9$S9%MEOkO$m z8rA50rqzWpmTo?HHj8S2g(m)P^#ox;l&rf$Z#83dK|pX|!f~|lOuoZvBPBHJ((g{I zKMJn?ESveSD7acEVPab{MLb12{U_I39RT(<#0uYb$!l+|guyA?iBw%Vzd%-k2(l)B zL5}5pTT)ud3Q{Y=O}6@RF{R8@wxrz4LQpQXDGP5lJ3?1_jqKr_$A>0x^)R-?6wk9= z{z3UBt&>AF30C*hM$2!=L(NH*$98a#*9+TL?vL|QYKe1@yXA0LXRjO;g!H=2Q-3`# zOEu9erp3SsWpX5cVZQY_!@?WqJ|n9(0-x+Tj7|Twir3qQ=MSbwo0Cem^gt*QpWJLz z(vgUI);8$1Z&CN4N=ZZO^vye3jp<{>>b7Vup$H<>z4T7^#@MjD9 z8|zWgH65g4)zp)m!5bXLaL`W} z;#7bDl83QZ+(pOQP)xHP7QJ5F;;>FpwcYar#tVHl52RS8rdf-=zU!p=p{-TEMO%FOi1cvf1C&PB{_tfY~h|2h4DC z%TR(#&p-+Ww#l4>o*U65?rbLqR+0{KG00V%c5OFlI_3XNgk6t=nP|1~S-IU8b*Er* z#U*1V>C$BE$e90SmS&Y6Mdo;cX};uYouKe3DYIK=AL%X1~jn=PxAyp zzj0adUV%==iqIFhmJlVY@NN(v*GIiL2cw2>ItdaQ7X&5_5W!=2W6IKx zkw3&S2WAn}u@{uz^Vtd4mh-d7nS^a85Ji%}T_6@`W?qL*eiVt;`;p3`Z=SY2*QUkp(3YP%b8pOfxYzGZE-nsJYLdhSFBGfRSzLzkxV!eR$gsm#7s{ zi#RAU&^WnoY$s3GXKPj{Wd4~(r)BhbHkG0EsmEbV?=Gluj!yO&D?^kmZA!f!iQ}fO z9?Q%2f>fp1e1~iHi`OKqN(hNTuGK@Qju@pUl2p{&wkBv-BC~!nrvPWYR%nwY8$I_P zF|9Y$M~!VJsqp1&twXn%+(elSsqPm5Gy>- z{LfvK`VyxSu+xLy{;KIs4JVxh`znC9TeV3|gY~v-Y7{jp7ZOvCUp~U6U@t>t(c-agHBvpVU zD#mLA*^~OmAbcDFU`PTareBm(e!C{3-xaM@D?Q zHyG0qceY6tli(%Qfc#=IUIZqj)@KtE!q|`Qk!bHq`>7O2JneaGA0apvLG%Fq5g$~c z>nR4D?T-KuW!3>gBwRUKHlO{a&wn@3J7AL*_)x&R1bDi1&fMwUGf7OG+Fjs1 zQi&I13PWXRy0dA#B*q<(w3T}wntNxA#%4#~ItCc&6&pmn9qiXr>CNV(+VyT3%kxHE zE_tNHGH~IeEG4wp=P+r=d~*Y+TcD{`e`{8u4AK6xb{KA%RS=Uh?GD80x8({`Zx^6% z@Fq*v%TAMx4h92+F_n`mM;>+`=#_xfBZ-;g@ zMo9Y2MccRwGEa7nTqBj=4Y3^UElk}J{#(C%(VfTs!R=W|cI#U`d9l5k;wRroScIvX z6_PRkDQEuvmFRZNK2%RryOw_q!$W_1j1a#%m2~NMZXIAw_pIM}CGoDA9eT=pS@`i~ zJX@ZwYhY1DX7h5>!N!s`ed)7AyEVww@J&`B*jxzg-8q!r7e?5R{Oupe-+rmF0N{O> zz7$}9417)}eEXLJ-W%{JE=Vi@#*GCn1!5+T_B$%PLOHrTd8M<%e(c9s*f5w=aHUvixwicu+{LN~i5cEV6&0 z_!K+iR7Bh`%xta8j%~#d9;}(STq`jBFlKl|JR6Aik}piy=hkzmeV}^75+7QWJ4?&q zmHJwx@YDlWiSSm72jwbd?^nsgG*LH6tlewsRz3PP_0oY86_5KzG|IxEC&JA{@ZDSQ zUdM5F5v1WkmMg9-%de(vclsV9PdHXHtw2mBIh$f+RA1+0pL*`mjr>}N;8C9zltYOO z6`C#AXvNIB`N)ymX>%?8cIAm4u`d2ChtTq9?YuL#R|mQ#(#$m*K0&hN*=emsZ47fh z>S;%wQ}ux@#X6MJo7Utjr>T9;Is~&H-{L?CW+CT2GS`-kB|kx2`lQB}=){rZ3vBNO zm`ch^&)*j)RCy|OTT%ugXG5Owwcvs37k&A*45yOdkv;_Kb2ys_JRKCxZ$hbq6C#9i z<~W~Ctax}_J{bLysodJHDeCBP1Na?!5XDOnxa}{IXSMf$?neh+6riP5GN^TC6wZxx=J;zGln;V*hsr>^D}G$v5AB zSXrN;Er00m|B96*R{^R~ssXBUA~0RwD2xkj?t&3L!T3*zMVd?IUhKCDiJDmnf|LOd zpHc*%XOu<2!BJbi{!fV&>(iuuV$`~$+oqiL)AkA0iEP*&w_w8Q5#A2c+XAW!*zKUj znT7L(U8ulCOIsA5EtmeTZes_2>5!=)$P_^-br>#mDYm!Qro||CnDz-^?aog6Xy&iU zAtTa9 zeZvbYyF55bWjbPWK!3qA%PplP|BY1mlEXVP)~#C$@~m5n{#<=78iMT4UOP-0-V=W7 zmb;B_n^{dm4RY{mcz8%Ne^zhKX@6A#Ax@UE6FeCLyUYv9sn<&yzbZ z-9liUEmANF8Qd+)!KK8!C5iZ#$+=ndR@1Pu)Ke$kQ-@$ym*~~r0%&C9C#69JjiigV^ zTiY#tWCHwzR7yp8Vc0T@;iTb(G3V!kl%8>r8U4Z>s!^lq0^5R7r6bQ2aVq*k&kroR zFU)8)jlEFZP!8*y&G>a4c43vdmvVK$1!2w0XLefyLqHTc-98zKxAfZnp|#9$ z4$12tm11djU7uOf9)@dY^Y$X&X%n;94zVM878EPXK^ZtF!>;7ca_OX5tx+?t%9#m+ zh*$h4XD^)UB1hT2;D;O3pFUUZ?8;@nTgRFI8KEYfidS|Sp_yf4H$vy2S-a&G_(JP_ z;dS$CZu2HCZLArmvwa7mi<3uo?+7M8%vUVE0Xe;1e~kPAs#K0gJ-GRa>&zn0?ftUp z*N#zINX>#gNw`?j>CxG#TKx?MQ^O$>o;j(VnfH%zcr|hm?RB7gW>1T?R&_az2lakb z;*H@qE`NDv0c6~uqzbbr`B*P?wbJNGwWH7TDdo&YCG-8-%w%oI_fQ{@<*V07;@NPp zMqD#}_*PAS$eprSv%AytX#2P+zq#YHcOx?(x^Pr-!MF?Wo{YPG8X3EzmMoxourKl! zvOXPeUCSKD{@O-ok-3Xd|4`)$afSPnTtPmSA@1oAMy*(c@Mn zl=mV?2pP8C_G{O0+2u)3(uqhL-jv2$LFpvwZZXNM1y^cCsd&P zfJ9)eL>gvyPT_WAR_nlt^ZCl?hbLLQIa0}KwaXrR@?oygpJkJk_md9Ob$`&A+`B4{ z9nSJk;`lIG9Or2-B6B~px-{fA=e_og44|3e(y8350p8So38)DrEWx@yQh1ffiw%2LY2TkH2? zVtY+hM&~b9YA&AQ%D%~XD@<|=djZ`XE;;Ynl0Wn>l{io12zjDz2RE4~GYI2e}dTvp3 z#)v8A`tpp(P=>LlaI46`ubODhp!{aMH_MM_{r#w1TC^b(k|F{$K24YymZt&>}+%Vflvo!`#vS^lh8axqmc z2S1@!;@>-SeW5O6N{v;kE@9riK_RNU_e;Tzuk|o~QY-<%Yb!CyqlJ|oPlb*|AM2%% zvymjH1losdJ?^4>;k59JDz+~pVn>LM)|dL6LvLz2DTLRTw*CGU3Jwoy;}%ep&aLb2 zqRZrkRw{0Ba+N)*HCs5W_mcsKwXCTZ*XOxUDVki^-8g^%XbPg;H2TY%{JNKRyYjcb zGI7vvu6b{A>uuaAliT-_hT$rGn%(2Rww5n;8syF&J;OTw$aNx2HlW)T`8Q-sptlld zwh)196g`=af`?0^+KOK=y&ca#_aY@{b2UpqU9tEzmb)p%sP#(kq9ewTjE2=?EYe-O zVchsDF%&%{M!`Af5;0D!TY&r4gQA+us~6^83~7;jLo>__P3>+9_KQh{-0RWuOh*U6 zUbrwlv-RY6u=E#@+qCpkJT_2HRz*4y^@U7}kC5I0@YaXHw$=gN&gQH8e^p3tW{0-1 zx#}+#SikehP~F2jJG@{<5cDs!!LKBSbO|7g&9$~c^k@R%?AVfTzC(UdEJ^-Fz~q0c zAogDcK)&Z={C$E14I+?kua&z@Aa z#w$0hdo~fYhu&t&(qIq~Olk6r+yPoBa{;rFaRZ-D`kZi2YnYMgRt#Y!4@_@^gcECw zWUAgEyd^V_SSkYfM2T7Rm3IxKZ6|C-H_$Kt?Z{)JX^1vy==K7-CP!PI(d{qCC4Slb zb42^M14Dmn{^N)K_q*jpsUm>nXWDvWbRT;1N-0o{y$qrN2DcQP-vhZI ziq9#xD}*!P$kQt%GO#D>hS;d*SKmb$4uMI7=WmG%{k?s7#NS~8_0^#Nwji6&iO*c< z-%I)Z>6I}PFw`9iPB+pG9jpzXlSS%YJ?KRSL?@=>_Z}#A9+l5m;%Z`dv65msa;0tj zg&an4!ItLZtl|Xhu?UGyK!W6nA=;4N4g!K@_tiB(wqFu$1RJLZr8(XS_4-KIWD4QW z6pn7L1g`~h1{Te0yx~#z5t8AwUW|_-etD|YuMYk3v;S3{Z1135Pm`Q3{kVt> zy)Wu>QhV$63(lub9~w%E>EE^7eAkf1+uifa5U2jZHvZ?>#z3Ivd#VGFH3-@LQhw~}KRPjfd;CQJs?;4-y6`h2)JIn2YfT*O zuR&P~@xQbud;3?4IC@im4a=hV3=jS8P5znNzmdpXRfBrKopmB4Z-1^*n1`rFZrK;c)8_v@@9XdFKmHR)Gv$}rLZ0*K zHx%(yygf;|6-KJ~oJ>|Wi*Nt+gdhHjAHFhr7rK1XQw3aJ{3pmvWqrk-d!O~Z|D~a+ z&*%RUp8Cz`ESnue*a&Uzgj1iwAAUq@R^`^#4{n+!r*at1W1&|ecV zn@-H4HWMnVr>=EF?}`PCUInsow1T~QfB}B1wrD+HxV$+gA|~PXkucf2k_5gBK@^XD zfdlfB2Y)F}20IkT)6wJbHaNp@X9tC(!J+-SLV~YT>``*tE6Bx6-Gh3Kggua7b91xdtg`^O>E*9|Ig8X>GPkkHzy2crS6^p z@+A|bfro*DMe0)9u{LN;s*0lp)HFR5ndPj|mtFB~ zzmPv#M*i6U+fey$@1Iu%*pZ~1)^+&&VwTPYo>+K@J=?}1@!fJh25H*zHzNj&1s-SK zXsEjpugqCxq5DW%LE)EB*}su0^)2N7av|reS_jvw=^N2U^4K|EUcK&UvM#ejq=BiU zL!R?$uGz%L&NXGniTTM1+(Dg9X7J_%sy~)Bqw82at;n(vY?>WtC60+`Pnv;;52$`s z*K*Fk^pR<6EC;y@M=&w_w5mq9e}c#l1C=bY*b3nw$O?>Wg><(R2nmXDDo+u~U10iZo_aDFXZ_s=Bb|U*9&KTWm91_HrqoDeZknF)~GY-VQY4x4& z@=eYzh|Z&3%3K?A$7qx6zwnv<-Li52@|e`WAnrxJ(m3z{L}Ye0e<=aQ;dr;}eeZ;T>-i}-`D^&@pZ(+;L%i=J zf!BH)RL6bKPz|!Mc11ar-`yM^?S%t#+)pyCzXmP-;OD<_ped-e2OkRA(LYuA?NG)}fh(-mH-Y)*&EHC&3ND_+>TmT^#P z7=ik5o+**H^n=g5h7mwk*486eHJxBsXImiAZtzN5e)A~^JY%20yGRcfrbsjb03Zb$ zKZ#2rG7Pp64jLhFdNYh#a@X9^grl6IV1n=f9>~35O@NfbpO*nAIkUd<2|{@QNzl8a z%t$FBGfHBhWkYnx0;i?=4RBhRRKIOl!4*XQG|maA`vio-rsGCHY^e*}Cy;&mx}jNw zGFeL-(69RXqP4$mm~-}}&qr$j#;mzKp}ECdjKoV8e&(Zm+wk+<-Vy=P#;xi}_ugx@gaXp=##9msT#q7g| zEIf(&C~dCE@mynW*&FUT4-jJ$nwxZ=AlG2qf^5vB;MX}FZ+G4LpR7`zKNg@LOZR__ z(NoDqj1qG&>LTrJ-M+42^|CVIj*B@J;-x^hGZN5i!YkjKJtr}3shh{4^MnYQOxyN| z_Y5`AE!(1a1G&$fpsy^~?-_x2SAH0GU)a+>%;Nu2hXTG)`>gFCTtWwTW(7_$tK5gW zms-zkP)Hmg#*T2LOwBz}+oCgt5%@J(5FIi=)97bE%(RD*{stPGCvzD%ZOa?KIBn2x zH@N9)QSSW&*~?H5UDXsq{Ol-#*X`>K2CmAGA1C{@6MyvC7h~ne(D?HG`Y|+q42_?| zV?SovFGj+D{DNYIf2NEJsLv4Za1}T@TI0?3`mifkU$d)6s!~t90!u#|df1x(LZ`gh zP1(~ykn7Hw+Uek52!sN{IQzd)4DjC|jY9hlhL`Ljok8@6lbZegK4Yj$S25SU$leM_71obs7){4v&HlsuY$Hc{g3Lc{Almg=^6ncL5I4x0h&|q56 z`wpoNy_{>Xko7rbM}?S49`J!FrUKOU-y88i_W$?x(f5ZU-%2=%2IS%*pzD@^+c*wt zM3)5-5B?41h0U&s4FY3IHF8h6lKVJvkKw52d0fTQaO|Ht8p>KS=+%krIXFB z-{i8}EN%dKyGkMN_R9?+G7h|cqPF?4aZc>{d|TWCtX4c8(V2YcDg#~d#W)=wxgLDi zwmIP>@x`Jg3KtV51522d*keR3ws@vAw2{Lzm zb6*j`8)ehnx5EBrbocc(O+i}nkw&CRW!m$;r|`1%5G8tAd?s+;o=4=t zIs0aB4;IA5S(Pr%3`!F09HiIt@z!Z0S?Tz>+5;P!p}D5!4fcH2EH#a~&!@Wj+S@5R z2Pg?lLUpmQXc<$ifr;+BeqL;Hg>A-51S)@O{-$Ngo=nw*r5Pj*Vk~KtLXOL>edZ>- z61HdVqS^=56nOGG2MUZKtOPm`DGFw{zN0t1>_3D`>lXD29KgK8>`jF(Htq90)Z5nJdW_OvXa`#iFslE#Eb%a z4TTjPx5gV!PD$B8NtY-YEnntLD@BBx>YNb$TCy+qD_Cqhw)*onkEa zdy9(<_BuP=2uS2kJ5jZD&q(*X5Ep}~oO$(65WZdB1ET;v6hMk~$XGprmPK4K-@L@P z-unrX%X=TT+T|b*P0;-lc<_G~@aV^R{E)|PoY(8qFHt9&ulBi{7 zXoAg)x4v?NObpvrA3mUpVP5dRih7C)_lHq`7#HeBTO9Fl z`QdrXXFaM9DkTWY;SEUo#jG`2I;C=3HjRRU88b$|g6#||3yBtk9qQ3!liU!lT?&>B zoYEa6cDUWdr9QE}UJ@E8@|M_ZRZU|j!ZPcyj62jMA+eCC8Z+9?@?GQG4!p`;nX6gi zt+$mN?Dq#rHsnInW;JfX_9JYZXgp!PF{&#JM?HoRPr-?sAy>Y6ngx|}CJX8s1j8UV0K|5X3--XpX6zc*98caVup$3cIzuXq*A1RT^(q zv@FSyfytE0Ry&pmUGIpN;vw|U=_TPEa12!*$XYq^fI9Jv$Wo`Eh5Ml)Uft!zySY{f zI;y9(HrCjVkvGpHY*Rf?xlzZ|anJyyzl2V1sF2`ulj)VbDl#Fh>n3r&ml>doeJM(( zO=|L0nt5&>0~4)2WdddAQx7YeBTatK!&g_dkK1(ID-;3H^udm9~cw98g z3tL2@7No9MD;G+Y77uleiacCz)Y>L_>Y7ZPC6If5jSYK&aq3^G>%s?&3+7S!J2_gd ztWi^ZVAG_X%Nl)GtRwT(nB-B7+Hzch44PYcH+_N>s|KKL?VpyzJgi~&NQY-0x(@{S z=X}tASWiWP>DBftEfT1Tfbc!!uyl&9JcQT7wQ1s`yj))m4GhEG-o)BbpxaT@8Lo~Z zce(bTYuydIeW~f#M$&N1h$!wnbf5Pzu@~WW$Hs(S*>&(nSx%hgHYv}|Ih+0PmO#-3 z%6IpZ6}`TI(f^A7`i_~6R?PU0&)7}2#q=$-_{aC}%zXbkeUv`~iugy)K{*8_90UkA zF4#O+2CQm-!E;KPKL=Tn6ha_iLqdr$)F4@+4A_uA>qq{!>}bSZE%tjA5iL2f>*bwrVce$A1=Ckx;$S>PrK`RBqKcx zHjb<_XO`nO^;E^*U3bIXPNFN$%Y9JZ?6mh1L&tMThqsrb?D;EN(4sdu+pX&NHL#-TN!+%`-2^7D9J|i5MYruv zMjVc`f6C$)#?pRsS^BY_b`$?Dh%UYu=cIvG7%!}-05bH=P0HENk_WQ4D|9|oPM%D; zEvqKEhwR#+9rjPK%+;Z)bt5N=aWQpAi@RkM$OMvRv|&$E;0`o5xOS2qsb-;--nXui z(W`lHbRSAUwN3}VQlDGzX`FiIN`5}2rx|;pqjxKmht>EVe`1W&BhR3h6~ez8SdfAS z!zf(P!MDY;ZfqDi79^ECQ}5+BZ?5P%QZJ!G>|VWUq1~{LDpLqVoDQt13jy)s8rq3R zMJU`=XV&XN78f~?4=l7KG$2y_Cq6-%&)z&|eJFpwYEqvF&UpMn4DMddXn*O$IM&0D z9k1s&Ae&3O9GMq2_pTW-ZcHm2^4-02M?;-vz#T+g8?BcwfY|OY7dg`N;zMRKdxiK% zky5_EBj&ME+PQiGT@TN~w7sj%iw-2N)t}ru4OtgDuaT1 z_v22HvK6T|dCuWS$5QGlbhdRWv2MZlwc*XRxQr%I`yvjV)8b%ZWL&X+GZ{C_{>%F&qF}AIaQ|84g-jQMHz0rxKvQkbzu1#H_ z4Xbt~d#gRF`G$6I?%P@iZv z#?C1@Olal~rkzo4&$_)OX%1XyD4Ho2`7@VGs$J0((@~ABIVGHDlY}P+XCRl@;{949Sz6M%&({@w!^H zcr~8ZoES&qhxVJVr*^HWy;}BUz$s!zm2f+vw#zuqV+7>3vnijPMLnE&u|D~bTWpKh z{3!{B)d;Uc?wpOKd6n6F8dWf;Ubt{|-$_xA6d$c(X{2?x;TYxI`;~^J@l*cy`w~P16bM}8}c>Q%GKc_wYJ5vy%>`Uq}zm!5Eyzu&&P%ncx$p zLry$8Qv0H{hhK9ip6F{Wy^W-aN~yMYV5@bqXM4kFzoE@&LADCnvjiJUARTjJ_3oG3 zg?-!f%$yu=H&Erg1f~mYqSvd_H$#OlDK!QWY9a^*GSILDt*j(Zwd)lM@ z#iY#yf4b~@AIg$=8i{dWu+%i-M<;|>&q^3hFGF`v*F7}2x{q^NZ*}yhXX2~?^FW18 z3Dl=@N7Q(DHJZl8jpkZqLB5jLaTbwb*b?uGx^wr*=C+hK2SYOD9O68l?+}R;nQ6^u&~I81_l< zCrDTyB|yTy#M#3s*Mo^MuJ2dp7OrS8*TopjUABTgy>;hGY3Gm<{U-=xc(GmBWY7|9 ze10H>$X?taM4*G=b;xIt{+ygWXsMNOy9-O!28X3yTt)d~8sA+Rx_?sNvT>*5 z?qbO+w5r>u5!I)>>4_P&ai{U-IQ538tgPXRh1QW57^=y8h6A&UF*`){ch&2~oRGh^ z>y|uJ-qVbjRp@jdR!9ph_5cYZ$29j$PepgXq&njR13g@WWG`xmp9{ZOp=!+MKB?-$(88EhdNR}}Qs=?z^u?iBDoQtH z9qiNt(Iple{nF&9R71O1ht(^__GMDNaKZhnS6z=7YNqn&4L}Gp_`Iy*5QGCVWa}BE zVd|i>b}o&W_<>*saHj>KqsX>lu^3E?a&3FUS9>AvOeY$-J@qT)A%k)*>uwD(p zfEWwx!`gapS{!ANsQH41Wfh3Jwr9)r%fK!pJ%ybH+0&a=6zJ;i1~hl=oGOi{^+Sy1 zBAC}&DKWG)LS$-~=A|8Y@`ls*8ZZJ^n(9QTB5fG&3F#^u?uCv^=U4k;$~8%QWVd;} zTR`|FU>@b_K5pEYQ+e2K>3S*ugn2Z{13g;5(lVWG`TjCJ^#{d8EAmLb)u;*N{Ki<@ zfI+ot?TBPMKSANurtj6TD~;H*WMmT&d&(VrRrKywb0=_>PmT8x7$n9JHElF=v5rw= z(o6w$`Zs4bR!mGyOiY@bxEA1@)(@NZgP?VO9N9Y+Te5^PH4^6xGT*!wu@_!5QF{uH zFb5Vxvf+DskvfMp>Y|9p56+~}pVZswDzif>CkS?3$hVRK%;TN}TfD~vtxx5VXKFa+ zK-7EDZS-#A*-sF=d)mdG&mUcB`;d2;m9|9T@g9fEQ5AROT_j;M$EadKic13~I6 zVH}Vl2ahC&Gnkq154fBS3`#qRkXWn_y4i48<(3J$3V}aLTkX`}RiBFwudSq~%^DEj zHqKI9G_EgnT2jeBrFXgCXGogO0zO4xq^*mV153H@V^YgNQI;zWGFeq%Uei@N5TkM> zP~ub-xyysdJJ%|EIz2U$=lUe}zn?uIQDC^RGU4kQ5kDMR<{N1sDcNSiHiodx>8GrM zp_T#)i4qNWj`whPUbCG~4#KFrFBn$QqT28Ilif@?aW1W1cmGm<@wy5gvCT6b>yI3h zrQPP_Fgg>Bi=DN9AZSRwi@#HZlUy89_0dQ6%h&>~NDl*vZfRge^|kJ0<{%jXS9`v@ z)zNQ1vU2U*S|~$u;N|esax!pD5(C=TOt7QUVjwQm?Yf`$vb19LB@h2TQO2u}6w@M90-G!O6Wyx4W{hx9DaBgSmwB{q^VCP8)Vqk|1 z-TQl0GiD$7Gxl9yd>iOfAaZaQc}YB_w%ILg%KB@NH5kMg1eSA;<*?XP^7j(B8Fl8g zXGDnE93rjOmpTojPCa00;9cA}z-fGyh7|gBGs0 zSdO@=(oTS;DkXU;VjWSom?bLH^MhA3E_A__Z^COEcvAQ7NN>qh*lV_XEF3TN4u##W zjouQf7wUIff7s!D*f#x8&r9r-AA?Tk$H#EtYSE~=^NtFKAXVf(OB>-cyBNtf=RQH` znBYRB(B^eeJE>*|E$MtBiR%Q`oX8%t;0l(golwG4^8~;&n93oX(Hlc=NeB&qMpRU= zP2uvG^?5K0)p&{#QHZOWP|s7nFl+OHcO#>3?&v;LaFwW?X5|-*qBl07TW{O6I;}z) zKf7d}`FI6EVDj%E7_CMe=2Eo-Bxog|A)h1o;0T8E+vPSnuTO4vv5 zJlhl!M@6|jxP1gstw<6f)!rE^2Ua_|8McN0qgvsIM<%v0XC{uSt0^hADBgXYJa(GS zJP(1rfX1KBo}17Nc0um))W=`UGK1gKy1egnice;8ckFmclY{ifCyyh|!1$7xu1?jblL=lB8&?b={I5ThQWiSKX~k zZQ+ZW$s@bkil5}I%-tR8A)C?t3v|M;@>DMmcH_R7sUlNoa$Z3!M(oD9=rjBxzBIzp zbn(W22RYRflfC-T}0iAtKdeFNv6XHGUV3eX!HpW98Z#_c#Pvd^C! z;@pjV^_7qhIj|UPD99UNRDG~hxQIiDAzq!F^Eu-9^o&%32j0LIO>Z=8XOya?VrZG? zantJtHD+~DRW|&kx!F;ql~~<#)g7W?UJzDMvK4eNVr)DEisxmXFCK?MrV)ERwK23T zPn-lTx?NwJtGB;WbK-r>bGK30G}UlFlAp`-J^fWW^B81N3gG~3{XVgLV79A%M5Y3T z?dbqGu3Jjb{?c=4CX6=ii%(o(Xm{F{8}e1q&Y1aISn?VK2V(3gf{GxG+go#oHrVBb zL5-1Pf^*8;0Xj2zp4gqp8>%~x>ul=CSyfGOi{T_btA0>CAqe5q`(hia5%jZAYOx38 zr){?GdZ{Z%lpNN3LVO8Pn_PSZp6YD5WN?=dsZV2u4$TEqFy1ST~Kml%2$e+CX}OoQ@kZ`Vcoy# zFnoLc2{aD<*C&KwxN>#@C6yBIK6AXh!Y4@6W009W36owE!b?WgZiox3CXiZ?sN|H) zvt`#8j$&nQG&mpLPBj(evD&#o)$qR05L}W!@v%3r4T8>F$h!l^UO0!K@jQpexmzE? z4hf-2bgjajA{>SE(9K!P_j@AGWvac%e3!9tzHDxke2mhkc)^qgZFHca$f- zF*}IDh5M}uaIMKS%j)+UOZ7qTNbOIgZH$GKhvjqSKYUwz=w3A=YHBopw$Rfr4ExjWqq}q5SFTJE(joxc6119uC4vq5aX!a$<;TC9o_&1NFU`@DcV{Bv@E! zU7h9=94u3mywc3Cs4<@XfYp8dAWUhOi4W7;0#5Vsn3`dA;3OVE*08|>%iYsG)p|q` zyG=AX6VpxzymZ%VKEgBZF}|uSIE&qn(hb2f)wubzE@`BH$BbKX4EHIiXnU zSaq?QOUiEUsi*dT$o&L4RokfA_%=P>vFWn;8B!C1##`7^;+a_iK5e3vxgi=>a$0OS zJFdu0ZG$j=Qdh5vI5KoVrs(XL0n@fA2t5*{w$H-x@TFQ3SD)NL!dd@A53+4K8MhVm z21138>+>`3t>9p{fkczZPoc+NAPe2<98@P%>ok2w8FL(DlrgY?D^g>9Sv3h2#a?Cl z@=OZSX5!SLqo=4Ng)c#Q5!FWubHboZ-ay!!7H^B8<{e-1cW~Ww6)>n<8Q42m@-cc~ zM6A&FD7&}beQ9xp&Axr7B|2aQhy`lgy)oK_C2On*W+RB-)7c)Abp*vhYY_BK+I@fe zxry67=8r4ePBU3Fz!lkdeuUyB`bg*7>PFX3n<8eY{mhB!7NLl-d~`v}UB3#&BShxT(iTm>46^tcccCB&fLi*maj*q1w?n2Kc-5LT3XGgyENQZgjMT2q z(w6Hy2Sktxy)!&sc~ao)XCg$mQ1ws6l9BYp8OP*{`}Ul^dDVqO)#wc|21=sOVy=r5 za{%zM-Sx$?3yG)RUBA57-p+s+6GR3|$7R=-HADAEyg>|zj0^epibr!O)pghp_)y+2 z=tOq~pIl7-C@l#t4t+xxO|0v|~YHA>KiJX8#L?UcQWp z{`mi&N9Fim=u2{t#c)FV7K6e_Fe@P@TQ+`mp$CQ2nBLX>7bNTs=m@lyTIWV!=p?p< zbC=B7@C^0(2s#<2S91d%BA4b4M3^Zd%bB`Q?!3({$(=`mR?k>*!Z6n&@z>A;QEx`b zmq~32_RGx}kO-c12pJrDYqZ`YeQj^i?E$%Y11*|IWFH4afD4ySOhIwT#x!@3cm_eb zdq4u4oZ`UN;0!g(AIubnoZh65T{FUvWId%y@eyN`;cBsb=5)3U4e8S{!nDzQ8!t?6 zAaW;M9Hn1{N%t(>H)jy=7KHC;Fh+%`8y+2|9)5M-y@>f#o?6xKa>rHJ_u*VsD{fi&zc>5GGv!K&3uhzk>?u!d=e|G+bMnpesX$w z$e7D01z@v1m7~Qo<6>$^(jBg7`XP9*au7~Tz4hFrnI=ZHB-~QAB}917n&~qY`FHMZ zoxtgBLa?C6Vn^}Xx!l#W7xMLxARd&P~%5T@L zn1ya1^sc=_IqzkgZ8|u|))z$3!#ve-ur%xWup*eVXUZO5c6y@d0Hwf0m$7AL@9;ls=yBQF_=_4PK1qg7%nG zP#;@Sf>S#DK(D>A@v$E2ipIxQIwlciht4_sp5C+e_O}-&M~awIuIZjakO{BdI^Rke zDC6u>N)bELJoxl+NFO=rbya~nQkVR7j!MoEyoL}#ur1gqrjA13=-tFurBJ`>?WkHpEHSRUxSbRQcnNHu_MLv4cl^f%WClrsN*wLRO{Me zYgX#W+g5>|CXSGT^6;?1ya6BCJwL!rf5{u~_|X@C-52Eyq&*DV;&xC@60Naa9J9YT z{_dD`;{RjsJ>cPbxApPSTl6SFj3Cj8F4{yyi-;Dz3_-MLL5wJ)_Ywp_qJ}8Zdx+5` zNVG6PVg?~<%n%I5`0t!@&$;J&?yuZmyZ?JL%xCY}v-h62to^=gt@l~as)oU&$=F_> zuO5h$I@X1{zU{0stqa*gGl3vmh-^zs&rHPA7o#iTq$CERv~;oij@RgQs~rWO3k?SW=Wx$L5YvH{=*upJb_L2C&e}b zBZhE-CI%ERHa%le<%Dfut@Kub3w8b08Nc;y z&!U)(nGLxFm(uIl(WI-x-552}2zpWuQ07HP4W~<)F=`YMLhb{2iPzSl!yMDEV*D#g z^A^AU9PwB@y=NxwC+`q7_2b#z%J-F+dp=2;Lzi@e{#!8|ws360GVM@Q%@$sEu>-d6 z#kEzq7dF^YyCv?9iPA_wgmC3t)Y6Z73hp}710)?~dk3C+?S%$tKwz9J7?=WH?Co>@#2a)-r zC_4W`H%80+Z=|p}7;YX>p33eWfyxO!Dkq5Q{-@c|xV4$-1&^ZRj|Zc`K9^ zCbtoE(aI#s#(i#7qyVS!v-sBA!N(!R)-v8g-@2@m(^No@AzM_Kc!Uddj&6C$>1U{O zWGKg&Pbthr?vdN$_q4PtYZotwP2|r>zmw8=2oo&p!n_6po-kS&Xe5;GCzKlIIjACk z19STPk(}K7cM1Fk83| z{UA;o{ae#w3zNH(8<#}o4c=tJzH(m5eELKU9SMNf*;VP>pmkm;)xnSooxt*7k(nCS z`Q9#`_NSxAx04TLs@CawA~PfIE2P~h0ZTqS1C^SjVrdqC#9|$KI9|ozbxLP9E$Ny) zXIf|E4dXAhC&y6NovLv~5Ro#_fNb2Yk(UVXJfnJ;Kwj##21O}icCC{>4!+z_4)w5`C<8{mRo ze{qML+o$m$cds~yd_y*wHQ_IyV$O@7X~^GI?@?~JR>ghcw5+M8rmqOr+q>5t%A3>K zR=s~ibtn||bNdm*UoJ@8RR8XIqV=Z+bpPmYvd->LO;NpoGm&APYk7&7%MQ!a6Q7ZL z^GO1}nb~Rg?hIsbRq2VylZ>0#!=avJiyxs}xLbEx5QhwWV(+@`uu_9A+_mo*AfHZ|VKQ zb+T@I6R!ZlGY7TR?)idKcuw?NRTbZ%d>&23kc@P(ttBIpg|BU^BIfa&c~wm1;V;5! zTM>@nSzX=J3<8HvnY!OGDqgk%Fw&JZYCdqk-_M&YWSh@e=?^1K;dwNe0DAxBHnah< z1uqJHPdMM1vas>JpIaFD%_HYir!@n^w|AQEq zzXy2ySKWUwUfM6lmC&HYBRt$E+`UiwD_bZRVCLm!qv&gXbgE&*^&omFt{h8y-N@Z% zO+jVK_4QAPA2Iaba^H1LkZ!wJ$*l`}jfr3l44>XNBV3 zRepCQCXT?_9BdsN3M~-e&6J1l80eW!z^uOdX=1 zo$moRWk;K7VuxaWq8Mg17o6JLZZyv7Onr!O;?;J%m@j9_-Ml;2FM+!F%{uEv9MQN051B6*mMHwR|o(7M?k;xYVCV6lUzTo;R@3qQj|!QneH6l50N%+dg5vE zx+Z-|O0`nEkPb}X$k3jWt7%^x1H=5EodW=rW@d~D=<nMqfwV@Y~jnIwCM$cwlpxQ!>_aycMmE-tdnIg0!H3x@`0GD=MWfEG4mB zw_k@jqze)w`%)to*l@b%QJ)o6nqLec<>en(x{ow&ite(etN$2vJ4^|^v<9b@@!F;h zy4y6lZPD*C1^FPIPpnz8ng)dHM)YHdYNomo^{65GWYO9nk77Lc1b>gTn*?`rO~d!% z`5Qn4TXfvom~w}{`513k+G#!<4di75f=`{3-BccPDvhzg#)ZtVkhoH|xhG?WRC9bS z>Zc=q$@<=p$0ef0N1T3bEcelRWmvOll{Y-JqNBPL4>*<8Jt0bjqsimP^3*-Wlz<>yI>0UIBeA5W_19iLP@Q{@jJ)OnnsfY)&{ zj?&#$(rB}WHyI7f381`>&5$w%6w3v8hF9GM3e|(qWNveXA`?P$6Y>MY~ zU#`8m8C0AyJnYZ^wn}25Js97P_MPimnt-D-2p1D>%pnKp6BjO-onUn;EnKnRpKr@O zdZHMit+3$JcWa9^Cl3%%^KFa12b-XgdBz;veW_0@hAmb)Mb zk=cI@-m%}VssHo+Og}t^lMx{p)-S_PgaUw6X6}>j`*#o`5cGKMk>(KKY2PYE0cmGy zb!w*-f2-fW)$jjpGJt;#z~XKoRyeukfdM!h4y>=fy@I&Ax!Xvfr3O-kJ%FJI!!|&| zu-u=yr^bKu(f;;Z|8A3ij|?Er0VZG#xK(1C5rC5ckg|xx1zQ~30JA%oI`ql_fDyP- zusFt0@kyr5lWI1|i_TovlhuATI(h=sZcERL@DX;TV;r1B)_@ycRovo%o)wSAgC{C8<;4f!CKJ_7Xa_t86=n2!JuEhus#=z zq?yHMy?AkcpZI$1MkTBih^;JihyK*S11a$$zXJ0{idiapoWSi0N5P&Is*SN75A9D86f$F0x4=1Oes&b{Mj_#(_L#gag4o=tI3T&~oPTPXmfNc;C2e z?J+Mw0C>8801)mW!T)C^j0DypBeLBrXYzcU12J0tW^%1QGScc-TFV-4B~d!rIeuf% z=3D5@O#lr6C;H=WPQlU7!HruedORP-dBBV{fa5EnQRP$a!t;hNGJ9Yl>!X+T3197E zefaBQm7Q63{@5tkV?mP7e`uMfe`pkup|wJKyFa#!;UBxL7F-;r68R5(r}dBB))|@r zI-vhU-~GQUApm@gD006A;A^O@2Ei0UUZI|Dsw?JhXESaSyY*;6@A@nqtEZFVCHLYv_WBznPz`>CgLBhVs~qfLwm zK|gzu{^WRwkmm&Oc>HfO6aK5NUi@dNx5zgrP8flY?ji+(*0uo;Lm91U*PGfjIJ)u- zw9ASEW>kk}6yceyC1{u9e~~_1A{a0nGgffw1VTOVL$mI`IATM|;O}?wm(D13peGZVQLmbGA-a9vUW zD@5MaTbl$}FCEa`dq(ijJr4NNLb@FSRoaQ|hZDnKYIiV$HuDgH{HY6pH+(kuz2ogl z>qS_9I48edU_1{Ok!>ILaM?5QSu$bOc(qmwENI|ErUN5BIUwh*pw zZGku{w(W{VRODl^zA+4h=$-j;4U%T z$THh@J=V$+`{Kj*gRJ@z^@`KvZ(dhETuB$=)gC{cHqVv4h#`OI{xb~P?MWE>uJL_Y z)fS5Y-)Y9kHoxCF15K_8@8A~;2x|xedOe&T&p2k)HjO~%FVJ^>lDN{I^Xk*>j4!ur z;@BEfEK*=32z$!~#?wxHfYGUtAc&JVO?x%B9?Cv}G*ldc?zqo#i0BYU&9Q(^bfBI6 zM}f-5yX*zPRIc?3GsQa{FDUtv9z4?u%ixkW#0Dmo;ODy$nL`XYH5)q((lFEOjT3NJmSd+SNDAKcWH16oG-r9_5=f9Np8ka9~v z&^ge?)E@9WjXG8m*IN124aF+HU!iM>+Sr}7>AcL>H%O9tEh+#0R>a*f>hK8EOL#-; zR{bJkmSpke0yF0IT+`g`+^D$-z^!LZ^)0@1{;3g&h|LA$prUg*o}VQ0Gz#vZyE7|c zi2Z~tVDi@o)3ZQ_{3`r9G~$iLEfBE9(h#%~DD236hy<+m#ahdiMn^QB%SGzrcenCG zSqu`-m_g8znByc20V@3X50ONySF9|cO$`AIAAkFX_nJhCeyAINkjYLL80;;8_?w zR5aj#hi@&rFQ*a#fI#kchpM@GK3XG-w8$SyDZ8VusfnpGduk`gVj6$ZVKhIx*o{GY!w19tq_bQPt@RF0QbVH5w}x?+EIYA#0y{MZ~!z=dn$k*%$gRZ zfntouVk8OUD2xd>8bRl;XJtNxS6YJ8T4_DXGTy$%W|{bdx+mk2gYB*S{N9caPy(e* z5sv;=TL;bxtGgs0h1ag+rb$f1jo#UOQIy>2{U$~G3l$$f`sZuJ+zG)r4c+Jas9v48!;k|7=YbGrtz{xjTs->gwpU1#(5J$r%DQ0Cg>FZGZ;BjF$E1q; zC$|vFKxeX3L;(Zk+X5Q#rs;vf<|01ZxNvg4aa4D}at&WH{e;#laM9E5zbfc&|Izfp z@8f`#Ux5)!?CB|x)kCiVxn}aW@b`ZSvHx$Os(*j?=PgRUOK({%nL4mY?)zX8V0V{qEuxywz2!k}>6|s;U+rSe&!f5`5)9TO*U@BOX z8-M z&Lt(${wg^dJ_w9H^mD@40XI(aN(?gVcqpz}H|x!Gv%<1qE2)!xvO3cZEp8BaK^*o` z41j`;wv@t!sjCZQO}snD&^(xp5w2$*Lc zBTw!vDUo3XqWK!87L1z(GK)CPREQjC%EwHJwD?K(<$K3I1EFbP3W5?0u_T^)3JgnB zY{`dk*9$+?yB{tRZqCW=Quq$|0yKd1c;>0avF)ZTY1kX2QRDQ_PrDxb9>V?+Sl%z@ z{kkP3S9BB{6~1_D-np(EOQ6Zb#`Xcewg?5{a7{Ho?GKtbAS`S}!BcSUFY2{7iq6Q5;!b;hgHun?9o zBei#)X=e>z!NC<=^U51Y_M(Rlr|ZY5184LJ zG9Tz(?wX}3;Fh@s^q%7UDeRZ@jCAK(|{if7bX_DWP05BofkyxhHz z54)*-ayvGMIBU4kw>fN$%y|LcLmA4{^2+xB%oMCW*_4Q+_bIh>vws=h-iRY1V=1Jq|L zbnSM)a-v|TQ|KFkWTR1bPnqpIoO-u{48GA$yyMaij|2@+afNB{C}$IBHnF-|;{d`i zM4&g_rg!e3y}HMjthjB@l+x(NZsul_q{i68g~6^#oc$SyAK8aEIM)Iw$-2-?D8{H@ z7P1K5s>ZH0>Vq89m9m2s| zE0O5aD}xULXH31jafIDMr45?fff4Q4^$&5YyDw}W1`6mwp3+eL^?mI_!yt)x5Y=uB+k4r;7Uv7EsyIe=Fmka7lokIK#pb=52b3by9*tczc0hT46@7*Y>O%eYf`Q%O=rYE5z6>e#- z1-KE;F#^EyP(}E6V1$>Shj@A6gtQV=RZe4q;3RFF2lzf-C_A|>iP87&e%;Is<(Szs?o8jVMxCrB1=pSS zdA!@w2x0u^3m3l^B!1)4{$&LGt6lbQZGSIF{6?bxn@IG3HmLpIJobA*;&03pzZW?E z1{_`e=E1RkA0k#&7B=D%N`m$7npp+R*upt$*TWWw%L9^=rmPL7@5L4O`N{Z0 zoD5K()ha*hx%;1!mur=5GFBI+NV#htV`|(($^>M&b0OKQxiGoPk}hY#m!>WvG+d`b zsrq!|SPnq^Qb91>ySqB}n3U?5Lzmt)Pv9+HubUbMX?b}Ba7m^*UKa-A{93zF$3(a> zz>sB&LmVlFsltl8VgZnmZZIuSC@`?rfmwtB`g=zCKRrnDJwap*{)gM7{^7{)8~<+O z{|!>n3vqfjKUC0)jNJBXc1PgU{JyH2A}^<|rryzwqit?_$av_O`C|6`t`Qaeb?IY9 z>)0Nzuu$657r|HNz!AYpWw-#nEC(Mc%b~rmx3801ynN8vzyOlqlV+e$HiQ0#H2mM3 zrGNj{Z+ZJI1HWb9w+#H2f!{LlTL%6M$^iIm*2&Y+*YBZ|y$3b0=XKAGT2g`MD$lPS zWn~@-P1gs0P7i_Y1A9NGn@$d1j!rxhx1Btl{akpYq~zszR8^_}aye`+*<9D_n;cWu ziP=vNr|#;B$j46lN;>39G!MdfR6Wv3#Ol8$U9RW5<)DO6-7kLQB!8cR{57wIs3}WT z0(5`qB#*ve!-iSj$@Iq$`i?ho8J)8xuH4`K8#{I$AvDjXO7>b2sI%{VuXqvY4;yWF z0;r^Ebs<(>;G7*JN82Hb#@&la`PuKk{Mb`Yem&&Hl#?AO6}b)#e2iVK``PK|J*6o0 zRDN4(_DHU(1Uavmx-|dRDDWqh>#An_V}q!RiUrkwI>TjPn|73bsh#!ZjC?x z+Vy%#MknAzCONOzPCcb&C#>q$^*8m*8P$y?&XWse6YpNG>bC^MhCCWbbIt0fg`J#r z7!9~ul6NVwo&?J{GCZMgJ$aq*CHULolvvWJi11yxCUdQ_faQ|4?FfRYpXP{;u(w2` zASC<}FKWzF>RvPRvf_zV`f6csT+Q=YdsoA-p@ixo#l3+R@)RQtju7snk=QEY;8)>c zCD(~eGRy+GpY|TbYyGgF`R4HDwFbEjFTwXD($iV~{VwqhbFul2S;cF{G=*4L|CySg7SPjzG0GYBFl@*ebu`+YJWtZF7 zRNNs-WTT$A{M?tpE1ajKgg#EA%dnrfR{2@ZXCHG)y^3$VOQza7Dv;!*EZkrFy@=C- z!T`~lszse&$bu3#vi$UX|MPl9Mm7I_$9zZ*OBxHddKvVx@U5x(rh<;?Kp=qS=)t-h$I#CEp>iGj3BvIt=^79o1K)5EuxnCmj{ zEfd}iI(45hu^NxY|BO7kp>_DneX>x8CVhC zSBuu(+j%Ecm9O1>ZL-Z3s9AV-9 z81^uv`av`so%&pE{U-G6y^x4unwEvPzIdhKT&>x)XC^G>Xcyz6RgaD5+IQVQ`b4jd z(zwUVKFrTz9kCE4dh)}3_M8N(h$ah?D5;xT zTz2;hf>MLThoz=U9**vJP51d^@8L8l`lNgg zoTIp($Y#4h8mQp^OjbMnho<$PVu69j1R&!KknsmK=4`=QgN!Z|u z4u3=wVZfC#NU4FOLaEK~uPrL|yJHJwN!aH0nR&L&o9iTHL?>(r?a0oYlyaPiXS;J+&|6oi|ABrfi)c$Cq zZvS@BVCoq;Xxm#jHg-KMJd*!0efw2!?@r#Q3CUKp}wDHDeVVphkT_FS&cbzxSx zc{EH#a5pZGeOsf@@uu!n7DJ*nI3lvK9vpAcNoa0!`@=x)2h`#Zi_{UXdJmZkgJpzt zi=mCEiEt3=yj{e;vPzqi3FqYzDqlNulq|!jN#tFcSl{WwQMy$d*a5ZY4G$^htb8pV zb-u7~Zmj1hB^d|afEM@dW=?6$OgB;{!c7l6zJ?p=H(o?PJhgHi(NRowW&PNfvvTW( zKK`YM=A|O_@S-M>HP=#cD=}-Cl33X>k~BOk*^KLR7H2>C8$?5dnt`*JcNFvUNBb(Q zf))r6o<4XqJ|BZrvjq!#nZ!wnUuAzj{#h+}_o?5kIn>mqxv3*(xZ*7g#W~3;oc*)( zlh%@}wPX>KV?;m4ZSB1v_4%3@Dp70xW6h6OCVYsyi*eRWgRvJUFA1Ng)o-#R`gWO1 z;PO}k*X@g9Z`U(#)vK^ITBm*|Z=ilFXy^7?Xo}&@(3Il~9wYKKYN<7Gw0?u?r%Z0| zyz5&2gJtd(lxq*?IdqroB8=`Q2|>zU6VH z0%>!bk?lm4*6l9t6+VKr$K8^mCigU0k67N7L$7gWlK9>@I7%o$=#rK`| zx*Q9FevLPt$fV}Qg~b8r>+9=P3UP_<#{Gc_n2NBN#?Cdw1j^~MYn-2$XSB{4wcZMk zOw0#j$%i%61lp5Td2;hMTyoKp_%x^e#SbG~&jf8>E((qbQm|cMKFKlrh`7<69=fJ6 zBYMR^cRh?zFjZ099i-cekc^l*}{GIB8hw&fPt|i>?)wt&nTzOZUi$ z$@0<2;^4g2wxy#WyU`@&h>hohT)}7Kks;6#Tf5c!=RTa=P~}Dx(`)G!FEt1u(!W_4 zr=?pMPtikU@>Q6LxnQ6rir0+{Wr%lUO4U(9EgQ|nV3~}iq=%dd(Ft{=D%}d|3e5Bu z=0ok3ZI~MdWVb8|4WabkrVYM5Q5BsulbsGyS52S3Ad~9tgP9zte9GNGZL;iDv&0|& zM`h{S-ziJ#UY>qVo_@YOQdfbaMm!RFPL8hjH@sjxR>0@0JaUp!Jo4A1cx-qi4D25Q zXY$DZ(zSpSjhuYF{2w|v`2yen`N-WsZ$Q&Buy=O)rDFX>HT%S-Tk~~Ilszzb3l_YU_(*WLe#4R*b`(*dF2JnMNoIskT#j)!nDK0khPI+Q z-X=+uI`xSB*!kMC-?uTGS55rl?p2ZQ)bFuf?s8}CXCpR#ttP^w)hic6D+Z0HW5!OO zrSw^2$91iFQzD7MSK6AU;Swnw+9+KW)A=IBUGIP%|1k_rdT6lwvdEP1i%31+CqP<_ zx2xBXGiGwPn+h;w14(wbGTOi4_-giL7bY?(#f6&0#vSzA2V>|2FklQ34A zfH%L%ty!0pbf(lWk?=%ebka2wdkF33^x?LC1SflY7tQ^R*>^u)=LU<#*@vN25hD+m zW!J$VY9_Ch0q!Y-()G-kgy1(OhOA|#iADWJ&^t8+TaT+#iK}k>^kRXH>Kd&l=-0Er z8?~yOMD?(Ii_8uT24?{$Rw+4)UIny6NTCW2r4k$J?sT7?P_bh#jPCqS`at zJ=~1u#8X9@q5Jk_y8=jwjuuf(Bx_^l8|g@I{g6w}23)bOOwjNB?!>+CuHu(695sDF z_faI1Mgo*wKc(uGUN7CFo-ISX$Lh$e$cgscxXfTbTc%J@b@1-%_t3dP^L8R#gQtAu zW#KNqetdA`qwSUeDb9l}4R7lE#?*8XmtDDlph69*YksG53+Y#LFCnn+2`=tF+?BIh zTuf-el5<5{^Bb`6Hxc*y#dX^>KLm)W_Bfp`?0<<~=>FawP$1MFl05iP9cq1$eO$RS z^VLOMPN4y@BN#_#laVr$J3KUiaQ7Ob=kc%`A$3Dvbl9n@t-jqyEj)J#jM)1GwjMMv7<3$T2PNoUGh+5C4#VFTwoDr+>KA9r7T z?U>NXd?T{lYUpBU;UXx4^~p8fnu@4Lm654W&f5&^cd@1!w=F-G3VEbW8Rpf9Cftn| zv~0A?Yzn6Qg^=8{2tBk3P`z0PW1wr0ezds?Hy{ zCO(CTgC31+h}NvgNWEh@m~^D|c0(oCaJ_hUDg6$K-H$%)z?@@Wq9K8?;{tc5aS;L5 zpX1}rNs8B-!`PHxd$pkZc#X(OU^e>QHDj>5}p%zkwJ#3=-&w`gqYHKCJ6kBaeq{UonFIT{lFJ55<@wF#P!VI#A4KZSQ6yuou zUyk;5(UlWDMX=#5CwtiL$Cbu=8huhH5z~u&8=$+L&?Ba8I%=PKt*@Tknp0m0NFB?f zt0s7(%zKL0JfidVt>ygOepK*uxQ-r?VN+0)-Y(@+C4<}G{gDw zssPzK>O4|rM+XVgTRqGZT>_50pKY4W`!(2gVmuf?JxY96WFED(zH!mL#58PY(`Cf}|Tclgz=(>;sW(B*xd$&pCfzYfM57%qP$YXNnx zbll*l3KA9}<=i4_a7pBA-8pN2r;gp9N4&jx8BR{pz1-JPaE4_vJ|(n5QQk-t3XwGv zE01^}MfnyQIGD%wCFDg2&N3~sjyR04#Z!6F(tw)NPhwI}Qsc?FuT9~fyuuu})QEY5 zbk^xr^tAG<76-e`ociqMq~pbY)9ZtpYMa{ar!hX=0DCjzO?J=vYlV^%A`1;p zaxwZd1C>_htuZ@mTj$iTzE@ZJ$%=<{5i3Ye&bX)!?sFza5fUIbqT0xhvV)RtTu``{ zZxAQ3gnmNwS~exSJ(6;7%^KSLZe8$kR1QOu?>N=Xq2RP@C>BxaY;x|NxKs_Itxa>$ z%dDt0L*E_#@?NL)kEFhGhZC-QN7v_Qo4EZx$h+un$tm7W4w-wJbNoig*gr()mF?|; zmbZq}Q<5$pA1_4dU9n%Tb=$sa((73d%d>&92&^FQLb`O?b>=XxX}Y>bvZaj2lvMw##W z`*wGGZ7{yo+Mk&cTVt&xDHwjs{L`di^y(v(Gmo^ikb19((}vAglOmVd=-+Jn>=z!f zqm{+>MwMv49Z#dyXlu${{li*bKyq!3rzP5COgpfC1I}T=R9TpzaxDe|%5R*wH5%p-jSUr|FS|sqvjv{d zzbqZ99KCp-S0xeKO{-`3vRHlkc%U>{ zSkD|LjvY-R&3eEq!=ynWigrOp&0FG~K1heB(68qVr-#oKq{u#JZcIYH_gZQPlsrwk`E{zjnjb&)2}|p}Locx0mNH z)m?!{Lfz|u*F$4(dj~*Mzv=YI)xpU~>&D-FrZ?5^{?%iu?d0n0;>RPYAS1~mVeEg; z?@!vjj>j+cUgFO`ZmxgN&B?)!N5ah2@lVcGDcQeyTCYi6l~MRRh5qdG85+cJOH)S^ zL_|acvIG7=XNw?94VdeF5J*oCBn$$9C_!W-L?AL?j|h0*A|d(H_SZhhkm1k!zdjf; zf=Gc4uuIox$n>}UU*~~{VhTZ^`qZ;|kUEH%i0Ie+)Y$0srSHDJXxP@jv%E>jp7WQbUmML13VyWI#*&YK*_Uh=@r@$;g2sQPTh?G&2CjCm|sQ3QI-`RF^0O z_#Q;cNXB$YQjMJ1(4KRMf0&>=!sLUl9-#5|)vb zlUKN=sD4vJQ%hUtmhoK^Q!{f5O9w}%`_3+|ZoYp0j{;zUk0Ya^V`Agt6VfxDW@cqS z%gHS+d0ATas=T7Ip|PpCrM0d7O>bZSz~Iok_rsG@pQdM!pJ(S5mzKY+tbSix-@xwf z{oFq|#2p>~suvN6Xmmzw=Uy%>Rd5d(cdO7W{+M8pBWn}m^+?2;rolbRugy$>_5 zR5<1N8)-%LJyd+sMi`cR4=1Qu`DGR_V}DicPc{1=t60Rpt7iXFvA@-84s;F>Okze7 zMi2yaivNue{EveW{M{G7`{KW*45aMtim6Uo#edVbk3N^K{oSoNJY8oCR7fRQ3s4~9 z_{{LEef3A*xHb*v0K8a-l*r11NBjGckaHx zi?9Zy384sIY*q#0#`*!~P|V9S(4uhL87LYGM25y56dbV4is2DWA+e*V)uYe=)OSwo zHq?@U%7U}W($7*1V(?UL_072I%el1VR`sj{a7Bo`*Nc;)OR*m)9goyA1;Vd$_i4a@ zcv{|}<*d9D4xBA`PT1WlHQ|=?Nnm`TD=S#GGdidG4D@g^?%;x1CA1pw~WYn5BXqkFon(XdicWAWmCAi%>iPz!r9-rX%TFV0Y zuuchKj)FiV@an7UVXi)2s$iCH&jIDoB=EVOR}uVktU07n^fjX6v+;8;%aepK>c1z7 z68TP#6FviNe?ejHKtCrAK$yk+=0hB;nqB<1IX#xCP!z%e>T&YJ$fQxcinl{bpoBsD8FxkNIf0I-jk*ZDC?zp=~Oq+S~E| zK{@C&y0{By{s>2y??E{xJ382`j4(yu!RW{P)2i;WD?=(=7G%Gtiu6X0hw;<>sg> zl+HF&ZFlcYe7SKwHB=srjsQ`#{ZHh#{sVjG?`!|#=YTis1D(BO&C zD#lAIwcXl0Snm2ok89Y|QeXaYYkjU)4&mVR7N0EP&wDQoBlJK%(3aS(Xdnc+=Mush z`q_PXFvD&F7rEF`nwq#|0(MDve_uLHThc{28^6zaPyhNzgwBUh91c8~>(vh@189OK zJWGHaWt;5&oSe_bMtn#oUZ=GkIN8BD@UT+^!hLM6>fq=!z0(F$YkL|M>|QnpOQ#%F zjI#Wc@&1*yhOpkbjfmNROh4Qsg)o^FV(4A*ui(=ufc(@lx`K^ zPY)HsH3D1>mrlzO=yGT)Te2!0;oWgoEE-ITmwn@I<24w784|H!c@+I3SG#m~Igm+> zN#jCVztu=(mdP=MK)aHw>xH}2+S`8VzC}qhmV{4Y;hb!>E@{wemmffRtGwk0Oev1~ ziELMo;PcY3Ucs6;l7QKnVLrM$(#bnMNzeTUr5+Of0N10odQL)usZXnv#ZgSE*I?31 z0ll0B%I*^(=`x5&h7L^!@;Q0ZVZPh1N98)wpOaYc;8|!0)REX!gVUy;&{?em^ZH3g zTxq#w_3GOtk+n%!uo7qgeVXPztqbOlZtZHPNQ%0|ee5<{_YVc(=oiO^ph;kiPwcjc z1IBDgGZljvGCgSB)2-Z8ROX1#e|35A1$(RZYK*~!R;xPi!mT9yXNM>B9zYg0C{9QK z&uqLXiejtnl84DJ9mWRB5^|PQ==6l;Qv~l!OGJ8|OQxhvbrsgo_aT1@AS$Z2(cGr(zxIR4<(q-G6i8vUi|tpRkfMQMJ39Cw z&VGrW9QW#=0T);a^BPbLp0llR1}0RG=U}&%9BS>n7e+1FA93n68z<)PEc5EXo*?Ptw(FNrycD{Tfvm@lGXTq%X)6cd?80L3Ah67XXc z!7f;>?e}GbVMs$}K0ppk!=cUU#Q;k=AkA0d^t1KR*kdV9c8E^np^&pVw^&Ro(E>R4`=~%piij(D=vSs){m=6R zY8y<(-~#7#$?3~rlI3JYcO09|l*9vLM{nu!v|@UfylIn{4@95Te{TEet)feyBRTC- z4*5koa9YsCj+^R!+h4XIFEwxrJPglDWf7gZulIa zSO|b(v{#i2;Bo}WdkJ~9v%5Xt#xs<^IP}P;jpTVlosD~u~|$N{jkz0$|6N! z0J#aVgU&+;oQDVJF^B;#dUH$H$Vl7e6M8)O7t2O06r<~21xd&knrfyM>6U`J9jCl1Q@fNr8I&}{<56KHU_cmzV7J0c)knzz5%Ao zVA99Fn8uPhHTtC!huA7CV8c5Btlige_u+HY$ewZhP0V5B562h?jZBGN#FeR6+QU2d zMhBJR13U$?mJ7Qn$bhrCa1;m6CjqXeRB{w-WRSr2sf%laApa~_da4>7?&+rk@ooCT z(yVDe9CCDJ4Gx|F;{?2V#^&d{f$3!);WC!U4Z>#kA+|>10M3q|K}y;+p`ULBO5GPz z{n`=+hI9_`Ma~1liC(WgYDS%at3l=mMNoSr#Y+Cteyy>$FrWun37$ zmX|9kcY)7lc^t$eZ-074e-O#oX078zWA8}vZSbnL3LBp5!buSR1|R~k(2pqEU{}nc z8HXb>U%9z{=8~K#lFzt~6)COjak7RQS-5BTR<3QUw<{F){R|}XIQRlEuqiGB#6WL8 zxB(M33ZPE42h+i~;IRO~6!H^jht>s*F$5+-i74b!Y-}h$4ssBP(T}rd>texFSy6et zZ1VVUu2t$ZSBEH#nk&19!aG`l0-)K6;Dh(*5~PFgoR+Iz2^|HpH5xX4QoS6k5aa$% zHqImcf`miDB5&s9-OPLb{TO8<;Y%)n8L$U^Nubn7?0KwMSy?%I14II%O@yWwfVLfg zp*FHpRhr+u*{b(yJ9t|zwWJZ;pAP2$9q!;n5qOrN0cd?eawjv!85kx!f}OBaOZNw- zJZku)dP;lv%h#~@`9h<4R*fl3xhHnwUmk3p^d;rrSarh66d*3^Rp!4; zq;QYJy)W!4HFHvp`vJ)yd{pO=iS}x3$#H3pBvjpe{#O5_LMInOqCeu6*$}zoQh~d4vo$6bt5h+ z`?xQQsW0kn=VubNOul}w7_sOnfo^wn4}w{0+;6pJyLjGCT+gSV^*f%$_aFhs1{5k1 z*+mvCk$@bi$MyBGT0*1zl&Y-E3n!X`N)yy8-pglx*G|*SXw>4*w`H$qH#CIzbQJ8S z!{_@5Ly*&9xBW;gAHj?f2R{SZQNi~wAPVWLA?W7-X*%QqWcILsK>^%1ql^AZ2kOI2gX=N_1^*|N3c=8B%7CaoVvHi8cb8sP8 z1Y_2%DA#-?*`Y+;B}3Ur)JJdS$BEK=@y}(6ehmue`nNSM(45#*thXG0eBtBle=dNv z)v!tW=CTOy)k{xPZ&0z|=9eUJ{9fDk!0ecb%USYb4;>_2ZNfT-$p)piSmW4C{oG^J zCZ#eM&#w^i=yKKH87}f3iUFO_9O&TePds2+Xo*2Dx?po$G#bnZ`|L8MhC%kf33+*| zn4lX}Ansm&;AfMjcVOIHJ)eBEM^1!K#Q6g}N7L=VqxcPXczuF!1;&dy$Y~uf&alFY zX0^Q1ebY!7t8==ke(&BnvAJnjtMRk>=PP;p9R$ivpiiPB3DgcRVO4$kmod*5h;Y@I z(;1Z@je7*$ibqK!>`$opM1&iZrJPEX)b5XguLhqx17*Hdm4<(Q;RR46+i--b0^%0o z0%JQ!!%*~WKSUlp$G(c`^jQ{a&dR>sIl&XbZdbQ^iH4c7+9PIBFsH%b`PHKi`jYbE ze{F^Ty+!_e|Nr-GBaOGJX^qAURc!do+PWFJ&ZK`8D}8xiH?cU*T#F;cVxAr3&u_Mh z!gFFzIPkYHkbZC~m|Im2=WL2W^rt4|UxF3Ye_EcGZ7y5(7rCONYCIyPS?Lpgzm0t$ zG#6l?2sI)MK>?QT0bpi6#IrRn`6FZTj7ywjVFee8b2s!XKcYel%B+V~XD>WSF&=I| zxlK)eT{lx8rJ(9AkiAbIe;#=q7y+1o5x`Gb`a~Bdy-1(fC4>{-Q%k(l);j*+<(s|O zS*MoV1d}y-UJ@XfBhRDWyw;qXC1prXt9)SNVX)ch?pc>Vp=Ri zV{S_*Ybc7C3aOCng$&t3vJ+y=AbV!eG|b}pbbkNm^_=hdexGyBbN;{IdCvJgydL@e!_G3q%h8mgzUJ<~EQjiN2AR+Q-cEGKW^3+X?!ko+oqBo?{ zx;C->O~s0T>}>Xzca`Syd#NtS%s^x*YEcQ?z{`Bc@SjMGK=6Fmh{bJU$(?_w*j?u6 zrHmdQTQ=ETAW&0LGNNB%mb``%GHX$|;expF{4xJ0pQIf~+>h=1TEvzF?HfY{16AfDh1u2&@nol> z;cQYxJZIQA@-vd8jGKs^$gd!eRaHk@SIYQG1*JGRnpJ1dbnYDfh&AV4@yC;I zpcdXy;M6K+OwHz}3|+GGTT;jM_U65FIsp=Xhl2`TM8!Nmem+;+C!pn#rb^@gbU1A zJejW9XF~PAXY$ti**%!39lx8X(6vK$>3iR74pK|{p0}t+--iZG5_kjvLEY*#!SKd+#AhE?4QKn=L@7YJI=N3+)Oc{ZexOuZC93PDt2{D z1!_n?!WAclG4885pg9n%{1&x`x{f)a|B0ydCT7^t>*Tr5-0YOlT(<89{0rIiU96rg z(DEUC9%Df3q*ONqrsobeA-2wGyc|WNY_jH$kTvstG;P=YR$kFan|5AcizVi~QBXIr zAQbn3Ny-pI>IWUH7lcPH6>)guw)#oCHm3h*=-giM#2_^}QEh$1YO|^}pVvyY;vIqa zo9YCO>a=>XpnSm=H_S_|qfHT!JhTj|IVG>5XlohhGyUF*^zOL#12rFMpDE9e`_4Nw zywPtLyf0|cRw5Kpsj|8|2F7TnRnvE3ECvzd)BKTmQ8j(ZS6?tXV9N|Lmu{yLn4H6| zIde(u9^dy{3o_610Iwn<3*m;ljVs43c#S)85i29U~0p$1Y~Q!Jiy z9_;Sj6Smf z?-8=!MiAXwM>g?(>3P>k<;^{#o(Eqou1okO1JUMcg7-X}o$6K(%w7>!z~b)=cg*8> zF=BLOS_)D99m#tCO#_qWEX6mq5mwzk!`kPjHhJ$1x13tqqTec|BPSJS_XS5j4Il9) zi7g<;Q9Scwn`x?~#CU-@i42oM2haRnX~)XWfPUTd=ea&jLq=^Pa!4h#7CCQG0T>_y zv?;nZ13sY7M!rcsMr+MQS2v4Z_fma1r|aK%C#PVpTk}Ic=V+Ux+~lPr^p3kbHwUt| z0wPM;LW>8p9~gvn-{PWy%QOOO3utr9zBYg#e+0dD2S9X@kW76KlJ#*&(EGLV&UC$9 zUoDH9tHvP78~See=M__BfEs0?DE_Q2fO*%3v-+=9z94W*py z0&}WwfVa0F8jr@6BsM07!Ygr$@gxliw9a|*So8!=m|1G{uC{WS*zdyX?wceCu;fZS zGiFG|7=OAP!@3VYK9k77aEz$eWdJf~N&w?eAQoEPlB3Hp$!4{_Rw578)Y;7eA^VAO ze$ao353`%1ol6XXvjjDSyw=ZlG^gYSz2K+bA3oB-Cpqb6N{~JK<>O-y#f0*;=x0!U z5Qx%rMmxBDjh*NOa@mIvx5xGDxz&S9_)?V8!PXt68JGQKb4n&D&D=%(b2~S$=&-g} z(M2#0WL!&8JgzLd*@mxSTtfhJx%z-T&ErDC&4ZWT+`J=m=98;Z++|TCMLnlSo4(L+ z4B?ygkOY`8jVGU{BZpDMrTQfij4in+cJ-i|{|-$@@7T~~we%sY&1KvQ#`3xEYF;|; zj~`LgCJce!`W4JDk6wI1v7ru64>>x9otg!?|+%FBVEZC8m7& z#Yx!J-MN=e6?~bP9saK$e7fl$nH~5~xrY|eGLhGeqwS1dgi{U}(ex<1HZ%meXq@$i zC4{H!!OBz)dL)3nfvHJo-Q>$rlp0xi=Zg|7zzey>X32wsFER zM2t*~*WX+;M9X-;p52yO7605txI;KzIMf%$comnI@U*670>mdYs1WmE4HQCzBr(=q zt4=qq(5`(xM|8x@t-Mk`#x7d(`Bu;eIgaHTe~HN7DJ!!9GYvwt@Q>sHOK@T6$&4;8 zp;jJ^Y|ur;>{01ky_sMATCQJ>xc#9Fm-xAZZ$m?K(pKy|FWU^=pia|H(miL^zyD~k z5kH4cM(~bG8aOMU4DNr*P`AJ6sjiT4hCQ43@Nh+Q{XtE(c}+VI3tG$sBDap__H1Sy z8O`Ej9P2Lcl(wD-5i)w7aW& z@9pD5K8ra?+~N%!iqLLYwJC;|&IZ+AWeHG+=kU!-gFR3go*}F=j$a5VGRa|>QCLaDch27MMXlbCH=LY# ztru`!o)^rMT)w>0Z$5!nxUu{QcGEy)avi)w2RX3;QThr;xxCUc21iEg79S}dl)u-3 z3jVez(X`#jX;M9**5O6ShX!$Wes*RVh{HXvk}hHhO*F#A40&nQHg8yU6!rLQ=P~4L z$w<83q8QcdniScoMY8ez@Fe2XtWDtlZrOTvxo|=SQYFQdTqpZ!~K{O5beIbvtEYx!H-XOJS4?;PwsDhcLo)26l3PjcGVv-o`Edm zUo4_XPAE|$=tnW)WScOIhG?SF_pGqi6QQllU)Wg^WK_@ zyr0LF5gG_v8CSb&#R=%%1`zDoUSllOnMb=yF!R@Yki1LTiygMaJ=LJ~ouYBM-I~MNQ|z z0{ZM!DD%w@KN^a{SbHg4kr;$ZtiJVA&&ss*9IKM_DMU{MT=uu-7ir>&87CRFZ};n?TWe>D17wK((O2c{EkdKo6U zmy4ugMamm9T$4S&D(bt%e!KTFYD>T{GauoFj1t3>Pw@|VkW#ZrOT6<)9v>3LJgNX= z&B4&oRZb#_yH+eWrtNN4Od=(C_TPbR{}Lw^(m=5p&x^nwno-TAjl4J9K}kr>d0jfF z`9_QPs?F&VH@5}7fX56$vJ34d$QC9t%C2)IRkpWmjxS?d zYoG*ASTmnOUN$4uCuqm1&PrY1`9pE!gt;H-ht3shAp|mftXH@*knN$G)K98l6>Wkm?Lo>`tJ6Zb&Mt(MdAbWqv4c`SnH#PcOZG&9GGVn1w}RekZ!S}$!Sx9$g-4c+ny`4~ z=(d*!MYT&W+Zyg5TW7xOZIrNgN#APuEZ*_C-QGs~ZM6>5kBjcUDxc>Ef$(}omU?HP zQbh(41a`4K%i9AAPIyt1&~2a0W<#GpE~d)#uTQxW<8_V=YLr{~7&a45^@}RKtB&EY z{MKl6yD@=tdW(4YHx*CUIQQr9NR~Ki>zutW_~IU!71?E`XDRhH-Q zh3zo?v(*rfR{&Pw?SNdbAFcf6hf`yuHMMSEk9h9giL#Op&!mJN=d^}lk7K)#(umz+;U}%`IrhWG+q)fEZt!u7RYQsC&SeYOev613V(hHf zv`*F$rX#E7D;Q$4^*T$2nZ^>QS)J`KD#Jx%IeM1LXKh1{lX{KIqnyl4{ga&C?dy{w zp6=aa$rlqG=G0icr@KTqKRdjjVE+!8=1_#}LJh}LF9O+f^u0;W>`bNec2@6$kW8D0 z{>CQ7q<954vV{BhsSn9#ngg$#XMC!UzX8L;)pK7P9N^VW5uap!@qf(U z-Z`W|M24|I;;>%cPMK#Cx~ZkOi3U3#+xmUdQfL+j2vmPy~N#|jOs>doKr{pL5%lpp&#K=QKOZ$Z%& z_PGA>+-;>hhdy2QL5$-g$`Usj6TOjufCn2yb0wtZ)zsNv-_GVd^_pY3c>or-Z3}0p zp)2!E4R4O;2CPzN;arGE-tf6EUNUL}W%=4sN{I{95_IrtjcVBPlf5m=35F+|LL$%j zBlu>k# zT!`5O;xT&|TPkVDYZEA8PahYTan-G2AH9pVBfpH898hXKWS?!k?_wJOB+MbK^C{C* zTXKKYJCHu~X82dtlt+;!Ov%OXN&-)G`0Ok0kyEdYpX%5>8E{>%ivtmlAlog`cIqq~ zauZ81)W&wyvd0p8&npHZhEAt?Us(Gr@pX(k<2WrD*dgH5$hWBu-e>cfPJK;oSuCe( zqLHM;2nUk2Sd(ZJdU1NVQZz+D^ZG~|+it~#BYp=J1>drVa|bRy8JC8Wa0}5ClZIMZ ziwx5NebpC^qYn)iJbiN3R+7SN_R5CyL?p#9)iqR1JkK5IG)84A(_j# zS+VN{d%Xr?^SlNHMQ?;YFI0SWE`gJDBL;?RM3T?gj7&@ft)wux^tu@q+ z_uG?ky2r<1_W0|Q7vT@Pdck)4sldemDK!eTbr86k<0DIveZ zhcUcg7B##OoWwJfFINs@o3DM9&bXx=O@k)J*RQQdf>&8(zD9U!By7N>ean#XgwnAL za%DYbR>;Yuz!>fBT$&rORsyR5K|Kg?3$wnF$Ra#JhqU4h|V(A^ZHFNDC!SO(bvM=r|m|Dv7=DR9iPsw}s#X0CIxHNh}% z>9*K@d^r~w^#{CM4h)Kf3)97hQ8G-rTq?;+5vP{?96DZSoKoEdX^y9+PKHoekAqj} zR^TLtnNL`T*eH8Y#H+!?_>dPE?%svkLtevt73+3kkz+3S3f&Nf&#sh?@!OZ) zq%0+VH<^L5+ZeZgk6(d>jDpn@Xmm<1HIx=alH7nL5O@k$Li4G*F(b1TqAL$07mM%M zf3$h90c$=wp^*0ui@^v328;#oJA&s?Th$0dz!oqkDd}V1g38}aT3+hX%shBy*=@|@ z_Cq&!f3_(jK6AE}F#0ZJB1HCxO7a$4D5P9x`aE`=PZSv$X}`KXDA_F4^Fw6S{nLuK zwuM#)r^D!~#>_ITE@MAn!3&m@8ze;ip>mtp0mBPbWU(m52RCT7*GJ%l1Cf0CN~6ky z038^q)@cwLe*%$DTVqGR69Cea#o5EqFTPXT^zwX0yp6A=f(JEDP;?}$%(&X%?I!$T z{1uxKg*wD*T-~S@iNDe3f|r9#){&Fu5_i|eW1meqt;rlFYYxBc4dL!ow)cqpJBR1QomI}iKGD*M z_wA%@$D5ZQ1ks*06I+&Ha4_Bvak3AfI`}sK6 z(Xj!>fjn9YYujY;P5MC%$zx=PvEjA+HzxaMV$I`~Z{3n?nGb=h}d; z`~jvU;bO+%l^IqggYx%%7ktlaru%$U@9y9=gk31eiK_dO>$v%#wB4fP_&oA9RI=0< z&$*_M-048B&2!cLkah81YR{QN=i}mJ9*V31{1xZDxzp%u7B@udFkEBM_29R4CJU(8-G+&B9(&65U+#5t_6EAMDZZUh&NP5*I++Dn;8lucr=S2udS9(3!f6b zIaUq#8%!IB(@hRS>7p%4y4A@l%6s6_c63kD1(ZkXXi`3 z)*Fs3C+-$rQ8C+B5ES5;T7Ri+=QU&&mW?JtcL0DJgg}jtP6KX}Mhi03P_~xUjlMEq zsiAh(tUswow%74v@%?j(0`0teToU#zvl5|tb->bvgstG;7kGYu-X$LM5MWaZqoE4} zHHV&8X?5I%s`vQTSa05b<{;1Yy=^&hp+Ts{CLpYKFkk5N(k*Gx#I!opP%yoj@HrrL zg*MCVkC)cOMS7`HK8d#k_>MlkLH8c}pngS}>=Sz7O_TyhDb+XK|Ae zaj#N8Z4GQVwNE1GlZ>rPV4(059R*F}iK}4`eCr(6LFNz8GZS-=nThb^O}xe8BBK&& z4`R%FACmesi@1iExteRIm+HRh9B9Kg7H8i&WV^fWIRn_t;dH3p$nXGm5GpYb_ru@D zmn_BBa?V_(Wl10JwHwe1sG?sYTzq@Bd^xL!GrrB@TcA|pp76IbZ1hn|%S2ifYGLxUJ%XnlNrW><=U{Pg6>_R^~_vs2w+*S(js!2-$WG)6$0oMPzOp z{${a=IisAl&u^ws;bqQVL-Onm*??_toF1S)B0hUl%a|`}xWN%yGN06(9mj=MK`~er zT4EqW3A-bCAqNZJfLWNWAv+{%uZk_{II!aKmys-P5V}xh#}4Db^uIj-bhgO6S8Kqq zr4SZw1Wh1gvtXsPpo#gN<=j(Uf~WVKRFwO;$ML41^ckV3rQw>E`IH?vF)lx*pn{KRP&< zG;Ekn%y{0>lrKg3Y8vFfjl`xZRqMRGWt(mcL`M1CLjqrUJRck(E}{I*@O2xG#q0Bz)1Fz}%Q~D`Qumk-R{R{s7Q+OlZ}?j@?@?MJ5Z`zjGjCq>n)C25O~|%i zA;FYSko0N5syc|%{7m|eFEWpxH*bXn;~NkO!CcK7u+VjzMg$kZJRcp{=x}&m!mZxS zMpq><_}l3yTWRs*;uf;w5nw>uCdBx}QXH}(vEiM@dpvtB+X$_9;(phgH~n%t{9@65 zs%KNK?6*`*HnV@Dp!fBTu`JicfW!+x?|SN=3@QSoDz4@Oq{kqJvtMb&#o)1Pdyp=B=^A#Ro z@xGwjU>gu+i4pp{=&lTDa^fw_u89{l`98=a4{fcK_$4f_eN`I$C}ht6Aj+cN{A|b& zVt3_&8ulnuKW@9dmCg%_DLlJh$x()nBnzzUHpHRrH_sg1h4>c3w4|9p%K7As_diZ+ z&%W}DwY((jx~J=jeuy>9@66vhdsSo-QSPz0LcT$j?N#%w-HkEo!oaDtF>fpHw4fsO zZo?H*lweH{%tHK({$1Tic13nmi3@UM^Y_RKB&hYHegJ^P(aqMBXSrnjiEf4g@qz#C z$i=J_A9<(jwX2p@TBy|{a^X|Ql9M771lbmG6hZic6UZY022fKA+<@JEz5%-pB1#vR z*7p$Byu9&@NTdz0(&QN`8?dJ?NI6s2?2mo&<{Mc5w7)PS% zVoGIpdKxj zjAPx2Zs=sF>;W+PQ5dFv112EHY9g$j!!P#?LTfyUv^)G%z*SE>Heji#)nF9)+0_l$ z@0J1mZmCA_y-=eCR2;|@MKQ|C39Q4}EO`@VEPkdGn#z3zm{=qP@%tsff4|T!u8;6v z8}@6%{*oDfQP?k*{JjAACBuFR{okplUt02)S@Ds`b)m%9#M-22}b^> zu7+$4K8tlkM-x?|p^FghkkI&O^n0dqOZ~b^3qR-FJn5an@!O8GKdz5Bj(y3Q<#7=- zQ7TisyKlL;&LaTvLi69gQ;*#^D3GA-R-fBvX3khxF!cF09qbq!z`tY$iMi}!R=+)%G+E&HPE<~vjtIFSyZChQ^_bFcA zRnfI9Zo__40@ey*qoAC+zRm#wpu?{AG%@-f8luHnpVHFUuHF4gV_RyMxr>|bTA-wm z^5H3|W~cY&JFZWCIKkgb0JG)C?^kWW>X0-!)E&s}t<) z=_&U^#^Sf*JyEoS{8TsE6v!$?S4F=ESTU9)Q>;E1`*OrzGFHz~HAnD^3Wtnkk?{$m zwM)l*cLXq7tGWtM;#`XR=p-Yf2XngAt~wfimolDGJB z|2K&?^s!{VwaX6mDM}W~rqWj>XHlOa7Vj+CgT=!}AvA#5y9};uhLO|FbG_5}H_00? zON&KK{BDhXPgBn%v0PVnUeFeNGn)LQcDS!>B*gu_w_`inx6oHO=XJ-9EsuJ8ANBz5S6FC=}oEHr|(duHL&)eR{ZP8R;63DJc8e z<#*0st)4YN-KR;9HmP~FK>u3teDkspi$@M*NNlieph!@~0YD*+R|6=-&sx}@#i-6$ zZGdb+GNg8q11EmOYD#;bAWLDzv`OAuOf;tozw_?u*}w3-r%~PY?h}{gs`bIe@{<&< zC{2RsIbNUB$BX+4`y+0@8b5b;@66S@IC>XX2cB#Lr>W`y1oEy|_z6cSS{E7T(pw{{ z#-5&4l&4nsDre;m?;Z}Pgo~f68*ZV-Uce&KK~|OzgmhDkXdpS|8V9YLZpFTx)ir$< zk=Nqo>W%X7-qLuretUwZOxPJ1f~VLB{s2$*TUyANfQHSf^5jpYCnsI&6tCmAAjW5GqFIM%szhij0|AO$B%9!3-~2ul z_|(Ydcy({pl`M-tefd+#f!GrS|5W*U*q0Z`g8L4GW~If|sU%)2PhS*${^SAQTv+%yajv{vwl3xPdS>G@eWB&A-}di& z#3{8t1AY1e{~-r`)5hCp_bw8vlZmpCzREDmokr4ivnhQOW6vIMLry@9B$OBcP6+=(7xiA5MK@={DuZU0L&WZL)Ys#r%=ag5hq-K`&U1{(L~mZ?g47Pm-5o;?|P zLKkMRb2C{3H1mIM$J(L*a&S(xA6zXqTEZK_vR6N&zc@>#>T* z(+*~|D<#`^A0=Ol1vfM>YcXI~I4&}i78!PAIuR9v(W4_6TKzuXd6$G}pmf|9RHg=a zA3QZGFv_=6#i!|9Nss!{o=7`ZxR&(pLHjV*>Wa#$c>9Bv+1s8(n?w-CG7U3P{%%w+ zHDWS>4fD*XHLS}uZwLH73iF?&kjOX&o^Rg3i(dj5uPm{+L1Kk#8^D69F>!tyurR==plaKPh!Dl7MbIUBh?>um zEqyK`zc_v|YPuA4$-20x?c_ZY6OXX`)hxh z0sKt5)^K8=htxtumnhe!P(yEUZa-VJ*f9=(g&Owh`&=6*u%qW2SmNaT5vA1fS3`TW z*NLDCT3|=}(=vChwzbIO-N|Bi5eFuim8&?KLJ>nsnr`e37tzeT$r9kdlUnOvK8ABw zdT1M1`6irrHZ$)1O(TM>G(mzPLni3$7320quzikC&s1j7!B;7EwgGqwBn zLEba#&MziC+UagNH`apYSLLAFCHB%Y6jLMYkoLmWHy+OqQ}BgVUm*34Q!%5@?4Cz7kkvZ#;lZNE@B5w!#S z>Dw*8^Q@6BXnS(%1Q)TTCElhPM@Ic%i1M}|By!0C??_N6_#tch6wc}dX~6MeYS4*P zIfXYdQ;(XH_wPwMdib?o1t`uwxkNk2^&VfTu`pYJ*~U!As7-WAp;t(`IO?8{e(rbn z_^7=9B5U0=W)@c#G^}7W)t>nnKIA>J(_ht6?VDTziThrDi#(?}S20((s$N4DM;Ak; zM>{Ed*1_=@?C#L8IVZ#KQ`Z4n7uP4y-YxNS#XNP>&qJem5G!72+R4cFu2$zWy+}UY zu_Gyp%gxc7uQ#7JlZ5Y$lle{|{6Vu9P{-ZLkp7u#Ru&*nvs!4->SzcukHC(Yj76KU z>Qa&Ga;pC){W2KCU_FPRHd_EMf>X6;AbM(1kHa5aeazqE@DDZHD9WfsK=mgW+~m`w z?;y1}D%JoA8mgf;VCGS(@pcU?7@6)Zrn}!NLcIEJ%~i+L({J`9=Zi=iy795C#*4Hu zglR=63Z591LdtLwYaEk~wzYHXtuc9K`RsB)uA*mK2TG+=(v6$#Z9UgJ|1aE9X}SGulZ`kng@nB0tAFmA+~_r><;#Lk3mz&(ja-BATnk0-IE1(| z_`y&Yu(BJi67(J8iZzsHu+h4oW29?ocLFL|s$EO^dR({5q)*ML57Z8@H@fCRudP}#{2V=Ex;WFZ{DH`E5ZrIn- zZa%2RXZ}$$IhIn%^@>~XXlKr?$z2r=;hw+)OEjUz-cTCdLzsyCUfF_+rdAH$M333< zI%s9R^9a(&P|N)EAmI+x??Sk2NwjrnT7XgpOS!#WM9SVTq9Vl>?XjkQT6Y_F9@D-a2{ z3p5uuHN5xoK>4NEWDlLUaL@8obPqfCV~@p|)YS78+F{+an=EcGillQ5&CZ`9Ne!>1 zG_};n2OjUoXbBq%MOc-2EY$%PFz8`v@1X^E2 z007(w4nUnMwCL717I3c1P)SX^?r?h>;a$xr!GlnJ*%kXm%2yVij^FN&m%%XXN0{Y-ONxo21ga;qezkfAB zSLEUreE}yiV6Kuxi^&-*ZYCwaaSZ-0#d=T^!4AqQLnfhlH5Dt%qet`gNbit4kH}-^x|r7WP=aQc3Z>lr;JvIru7!2L_XZ z7ziZQ8~~iAh;TY-8UUkCf-?y9BMPI}2>UYSkfHKm0EqiaZIu7Y7bdmx?tAZk_qrLyySU4OS`i z49MW!P$Uck;8}mU@-xuy9vor{>RH_rH(*AYI-onpX~s@a*LnbK!QCNv;8MH`(^@SILM*z{RWOFkX9y312->`9Or%@OK=pL5?{=}0#E!C*cAu2@w2#-b zUGDdVZxI2>fqFP=*E|w5$9V|nz*v$bTg#>0e>9vh_4hxJmOAxB4VLtI`D6PI#Vkw3 zN9nNjqyHuq{`?(9BN{B*lgvc?!YPUvE2I1o~WF8()clkrb%kO2I{@dV`ZebDL0 zoEcvQXHDh*$!YwHi_bT&rUJ_0&jND20KXh(GrXDAxYYw7@TZE5nMu%OpWzPZb8ap) zD|L37K({z4`ru>M2mJD7I3Hr+R1bbNVK;15_s_k#|AU_oV8Cyc z$AZAH^9^W*vlhUM!-b(X1r{fWj&2(d%rFk%e;SY{Do-Gg$O%+!*B!6rZXI8 zE8}2XFdt#zq)gB|pSKaes-nZ%>hdQ`#|53ny7d)E-~t5EvFwE5XJfpa70pl$h}nD(i2TS%5^`M#7)G40!GGZ7*ELq4a`FZ=4#sa34)5IdYa#!H z9YJQ{$(G3Nm($Hb?@*A5)XIwU=gy&Eqe>2|_h_iH4uARP%TGk+d|v|wF?$3E3q6PG zjX~5J^)oD_VN?(Ttn1&LKjJq>|0jz2+DY5366fDx$Ko!fEKB0IYTep8zSY~0Ff7ns z%G`z|ZdR`D913h+XGSkHkq0CpUah`eL<5y8_~Dbvz_j0Kb9ldMI*^brp|%4c*gAw5 zz^}$QEaBZW*0gX@5OtRq0wmWqRpgoc?Zx~e?|)l9JMP$Ms7u*89bLZV89CdrMXBIP z4y*T0#n$LYY$-@!rq&B#oC>|*v1q2sZ){u2qQqij>cHoI`R3Iq%LMeq)E&H(Z6`xnW;d{;^fq9-fj*7AfHB&D zC6|&rSq);)`jwiZV~?Y*BgqfY`K((@jC_-y=9mkqXk7@uT*yzeb2NqhzxFBCg*CX| zT&Tm4a-qw8vCaIVbU^Eq@5i=|UvS3*D}cC{V#nkrtbsv1s^ie_eelQI ztXM+)B2X7Fi0^wsAZ&O{|12;+16gOE0JC`B^Vb)C?ZYp6_=osH%#l|95&*~+ho^6q z^E%0^`xdGBKCPw;1}06Ml6pLMlv8%owYc=f#aFI1l?k3smtxLtOUT1A+qYeJsrgPO_ocncxhOG=0A{g{?AI0|Iu@<;meSW zjOhg689DbMR@0Amb>SzuL5%0T5a>)Vf}?}fKx-{}iPf|Sq?2V%;Z|OjQ7ZJk9%N$p0zzIV1~-G0IY^1z^T1#?U?or?Xo*!$z_uZmy%Avi4Tyt5t1%MXbAf#) zO*uIJYR6ar&isSVg)yf=AgnnT1j3R*%7wEQL?yzdp*AHJC-k`%T74G0ezOU&yyr6V z`>X~l)cY%(CO61c8qc*P!i)$%3CKwbxAqR)&UZ zuj)sZEY$j^opg!CGqs)Vo}D;S32-1`f3yjIehr@Sv-LqiHXRNkkt7YK&gJ{-R>(iP z_=o%X=a2eN`}rEaG!IaB7-GS>7x?4px(oU7pn=RJK_9d}xJbnTO6l(6ax)eFmufc1 zCHdF54rEvV8p{fc2!aO4#>W5XJ0UaSWDCUFQ820+&T3}zgW;;**ERm&>Z)L8cks@q z;fa9L{zib~DuR60X3Z?HWr?n`KFCV4a{93V7)SZ1!Pumx0$BLToyha#%^^LNWkrXW0Tm{%IR(!u(mct@egK7L=Q5$Ep!fGOSkaw#2(;5*p!h)H z6CO9BfpfM?hslo(Oey~llKvVvC9%agP{SJBGRCR z1_Gu$r%>x~LluZ2D^kp+X&@{9{6@{+ ztw-!2^xNCAS;9GlRl}b{QQv1xFucLMmA4Jx=RbcBI5`)@QlG4l0$IX8;1f z>;Q*M1H!n4{#O6=M7(1g?MC5Z#Hqo&x1sQoO6C0l#m(l2q_SuV#WYj$OY0lsMWNr) znq>@oQ&Bvg(+gBx29-*I8f)2>7_whkb&zzPKD6gP*kT!_N;OnJ`dr zlf_p|v1_s6_F}10RO0mQaym#`PM@gg@v}Br5Un~U7*DBx5bBkA@}7P|$J+)Go;N3f zCj4`@(FzR8{w?KU3lRC?2qAs|~PvDthBf^i6ZX43LiJQ0u(*li_}* zLXTeQ7dPwvks{D?mN}pBxNnY92@Ysk;?Pt z3huXhrZAR&4It`-pam6R7(E+tnAxfH_plWEmtTtSmtpXqYB-hZdprlauoM}6iIR$& zKnPtey6-+B#2^!*LYAP`pcI@ zF(xnHl!g>{6dJymO=e*%;$Pfq&) zOVkdrZf7L*ftl%d0Wpc77}0@o(L~__t{gBL`4+RGuA3x?C57A$E&BxCJHZ7$`HQP? z@~2@PCRZ)6Gl>6j=U|X2>?-uT%m1zqj6uh;xR=QICc=&y1cmo>Ii>JNg8nXVwXDR# z_KA+5BF!1MbD~G?utx6lm0IMz-5OB`^9QEt|F3OHZ>6iyj(drx(@DGsq)Op%@0^r5 zsCO5h+=><0fZ;lC!)ea*c*aBLho-O~9AiK77Bsy=;$n$a0g_P$Rv2Fz5x&Ntg#ml) z8}K$;@6Uqcdk8?tN;Gp8WGD*}Z@vNz2i@TRx1MNsn#}pbfd)|$==F9E122lu0W0RL z!5;XTx8BvGT2JrGWpQS{-p!<(>apoLTryeKO0^_F!Xv^pTUB_kA|LICmh_ z_#@bv8-Q_*QQ{EM?#0iRv-Sgs$w_@X(0A4ekh2-mwh49voa8GXXhv;9gR%QNf@P7- z66q*na?}8|6X~1>HddtTq>&Wpm#Lb8T<1l%1KaPN4al7V#Pwf3-cR@h7jTn#z7Dd& z$MyqGD*|zh$ruFjJSYw9a%@J@&d!0lWG4<`wodTr+j4-{t^{*r^7}SmYx0RSJ8k@` zC?$<05)9&8igw1PzgG8uWAAoX6phmtIo~@j@-||XOZyhLw{zDF_D0ka-PavUhQXfEYlN_e3Y#O#0-tvR#Gt#+c%ilpU#BR}ou3 z7Y0v29*8v^JR6Yv)qt>OHT{SFBZ_$*wJ-~qdTrc>E>;G}UOAz9H~6y6noj2?=<~Zj zeb*cSG|DdK&>_8vtU91jjtx#84=k__7{XMINI~<&ld`hwmU_FKnF@vzF3;lL0gLb~1Aq{6u(+=-B2yP1J4g8zPz0(WgiX zd7~!$>D`r&TCQga2VR+eu4?%lgQ0a$9H~*X$Z-ued$gogG1;L1b;|jHi*Hk|+xSS` z;c1SKN`oF)UD|1#?R(XJ^K6^y6vV?C$vR*&gd>gRlC}z&6w~6#30^)LvbU|2GthOM zF>X%v)PtkV-;B5v0=fy zRcJ9Z>^2lf`}(*xI#l4E&T2Q=I#v%2>~P&ve@65otbIGz+rr>AFjZv@aHJTibA9bK zSl_@mDOMX@Y9tjae-cm%Ebxwu{8A=A#5AF8we4w_yH2V^6@As;-84SKE!*N1hxAox@ zv69ka@6)L`rLjoTz5`p_Qk6!vYKTz^{wErx#^WCD#wrl0DIrKxg!nsve$>cFYQ5%kpSu)+_1&y~@&U|}Bf;`9fBy3#P8tVgg;d#W!`n%kPmErd z!4X4D4*OU&P(5rFPW4UiF623+I@Kig(mv|Y$o)^oiZ`4OFbfRTF}wpc8qYDtWUfdx zeHD_m`-o}MYP`Eu{;0NPJBJ5f*bcrMl?nSEfw9&$e@#mN&TGCh@Rxq{=7i}t-KN5# zKNE;(gJ?z?bO%or0%X$bQ|Kqs`59^rq-B7Co_ZQg?cqUVW5F+g4A}oD-FOubtQN1t zO{|V!t#?1-YfL?!G@;M=O!xNQva%lmtgRHK z+Ps?=bFD{xPb8>q zkr&e+u zilzYLSbD-Uxf(fUM+s1CH_Xnm+G}IG)B6|V-+X3Lhh;8)N_ueox!`efuSrFyvbGsN z_&`@Bro#<2*P>sqvR91+l{5-CWto~RN1l>W)wNGdnczsam8-rN?pjIBmnZKUKI?== z>_y;G@RDNf-B4AWlXdpkXw|AsdAs|5eY&%S@yBA+;|G;b#BJl<=lNskAby$3zT19y zYqM27D8xxz9;S&<$2DAu#BB^Mq;}~}TAV*AEI3hOpnmxsk2BR%I4jKNn8*9fs?e5F z$nr4ycB(Z(WY<>gTwR1p#_6i6E6R)IwOVw}0A8adfcPjhp;GxF8R!CxjzsS)l zXlR0}{hWw`7}HUa&9qBLx`ZF5z&-HgIHnDbFWy%5Fb4m=X*LBp!edRh z`ga9Os(PrK>h1PEzUH_m=Wk&g7xHmwBO&mJG%qt46@(B65FW+2i(;}X_qysBWGo(Bv|7wI4d>*(U2|-A&23{7##2n?563 zed;|VYCj(-tM3aYWu0fyMv=oQQj0Y=jXsVC7C4W| zWHHv+l=9=kZLux$s+gwCU?&CkaWlVXjA2z=ccwP06shyv1qv8Saq@JIVz?493>}3oeCM4513ry zp@gfL1*6Y=Z;tr#TIPFAoxyyT+-FbBi#tn9l?~`VI(47dk#<6u>CzYBrRe~qG%*Kx z6=&UwR4^(HVP^~>sPVD9`z9r+ch6Wk_rr=u%20>(#rTgGkH^=I$J21-ub@t*k!X#u z=BhY*+u2&{!AcV*6Lo`;)3zd&wK?GdIuUYg=VCv&2flwK*^>{!>jDflqq%M{AFbDt z$srD9H^O=1wr6%6c#W6KZdOZSyX-IQ^`El(qWNMB5_9RjyziIQz0bsK5tJpD*!*)e ztThczYouiF;+6f(`7k8=v4y^6t%1kmNT2v+ZjMJ6CyYymA^404+KEUGM-oxMH{7rJc!kbsnT??#)G?ID)t{I67G^7~IaUJ9>}=um zMZUsZQS22sxAxEV!RCog55p?D`dbRUvGFZ&xa57a^1jDa*x;=x7F!_ZQD@WIA2 z1vt}@n^>xG6P&*+PQWT=u~@0Wgz~YR532*+2brbRH8AFV6Mb(kxdqBZID_*?ceZx3 zwEN59o%S-r#b#2ThOtjj>(8h-d(^sVac+GM@LLODEc{j?Fr$NNqcfv3QN^C#Z}AQ( zsEOW_MKCstU+lK8qOFV+zQp7xdgNXWnHOK`dj5}G{`Xsv*b#Ww$TGlPW?*YuCOQtY zJcli;?f{fk3Zx(99|Pob|JHoT$nlrN-Fy|g^@Lj(=wL(>zC&`v3LpLC(Q?WEtglKh z>7=J5zD;S50ziHl=wP3t-0xouX3S?taY=lW3J=P2rN;2E!SRKft)zEbL#SYuT2FJ(amA>*&b+PHrQ)jnQLtr*2 z8iFj&J`bn6vfW-UF*$Ey?{5=&+r|=cr6$Sa>hlZPkS-6U^z$^CxJkT*uO>z+!j}<~ zce4@ajXGIXd{)ESWJE$LXq;nBH#8==FOv`!v z5U6E?OVF1Cma|L7zi8y-(cX&X*yYV zM@K?$^HYdkV-P1j;E|Qbi$HpJq&`B~I z#Lz%a_UdJLCeP-D3*emaXPTj*yESR8Qr=2-*y5-+m03wAa?+mFTyl7Df3xFA^H*fk zs{jQ!v53G?fHQ+7|c3bU_q8-UAi?YH7Gsqs1Nqj}p65s3q zuZhfRz0L+drB(&0;pDr6m17T+ulHFD@-ieHkxM$iZ}B)f3**(rT3TM%gJdRv3l?k* z#x#mWpsExm!9=9p#W&Mq{@shjpbs_2*QXl~(#jfS^|&s2_tNy3vJx{04#4fl5_eE) zca`%{ARKv7d>`%jOqR^Wp3(()-k5ECo|n1ToA_lQR{A>xO*bz9U@PF)?94)em!uvR zbog^8+Y%c`&^MBL4gBJ=6XTgwmKWpZwBlaH>xA=|Gw)XctBmRO1edqqK+eapVEH_q z+EPbC2(rXNhXS~z?WULOqY?K{rM=Cf z(yg-G{dT&3;EJ7Os`mJv=hEZ{XAg|`d98~Vg{Qy0`r}0VH^>a+;=e_F2vThP@RgGb z{oS%uaG98eT6<}4c6e(D?F%@!1pgm)mX9*xz!E*K2e>(^CU8Q!j z-{rKcKu&8z(L(x}&?ve0SJH#N<$q_lfV2mq#p>k|_R=-sxqK0auXQOUk0m>qSghJ7 zZp<*)FW(ZRXz>L!A{7_TV6NwczOB1=Xqe&l-MW}zDmcTmO0F8KP+<3Q+RLhZ0kR`6 zNuwD@QA8y20wChE`*kX(>2MMZg{8Pa^=mxpd*S`V!_*JEIL2O&6V47wl6O-=n7r1pwO#e|l?`G3pTxDi&dIMmWBYXcdf~~KR%+w~*oaRZ z?sb?lf^Tg6O-kWtReeH-qyoi&LMOfRW^HtP5&8A7Ya(ZJw+aK*1zAg9$oaVe?ljDw z9K*a6YKd!~L!Goe+)MPD)3|4rpp`VDW+s1Ho99KO-&Z}d8xLlvWdkTjmWNLLL&Er< zN>%tKW3RWiL(6*B!$D}c>JePE$?nNG#~(s!;i3{g$204_oLNsU5+SdG&MTJfAo+x|JFum z(1VZO*P{98FO5~n#$WQELh@tX-^_}!+E1}zr$ZmF&mem%>m(Q}OpMBu=);19^dAIz zC$aW)R}!P1LRsxm+zRrZg>4xO!*aY(#Myqw%0eI92Qelk52ixc1XJ+V=eWSzR*J{` z43r_hKKSE=yU0GcB^A!R1Si&cl`)KPC40ribi(voxl-P_j=0#PZ>jO}J3A{p-1mqO zH^ZsPUCCdbvQ8jo+l$ns)OaK}(JryEb+|@F00zuAPm zzsxm~zlBFna$PlX&D>>K5h~?thT|$Gfr1$=+}a1v#iEO~fFIpuW}mD^I68_NSVx}J z;51L7JLe2Tv%T*+y@1sWN7?j@qrj?*z94sWt{eIu$wC?`BlQhE9docsHP|^&i+ja; zsX2~G7%3%tTvl%sWd2=HdV<$m|1Z$$(DqMU_Ran>gBKe83T;PHC39YX>o+yLm3xUZ zZNV&&(z2N^gB%dn`3w zl-}42Et+;1v%*==!dti@;QVVfgyhD}ZE7M~Ylaohlnp$!wLy__m)pKX)!BA20Q};C8e&i7S^)n*%)jBmXUOZHe zc@Uy2*bn@8T@4THy}joc>u_H$%=BDM1d?tA$!1pJ>2qgbgQ_F5kZs=)Ss9`1&_t=}l z!Am_W_Kb1ndCT71rEkraN&LM6_0^RX@wUY|2%>qtAioYQES7w~-8r)|uQ~e4tjBso zF+mXvZ;|bZ@TbBKC)m@+FQd<{>>F|s%a1&>xpOmmPMNBM+F6D-6BukT#&0x=&7#=+ z+s)Wev&ICDkw!Afs#nHi*Q~`t_3j`?K90kZx}3Nz9FL8j<6et^WH!{681{kx|vmfIri4Y1t!HqcW}Lcy__ouM<+e6%q)eA z?3#$Rr7{LvVVOT88T%U*Kf7_k)X&_oS?PQtdaZ@~+JqN9EAfi*-;Y4uU$}=Fd%70r zmfN8dF+vaM+YBrfxd#Bk`B8$TiT(@qP_~OWkYQv7z>`JoJESjpsO%@EloPss4BKKB zz)f2-a3!X14;rC!_8Q)R)%54>i%F_?D7s*%?rG3a)tGj1Lntbibd zi!AjFQfxpWt~d4XBq$^oHedOGy}d6($L{#ZIJ3TX-q{lBqt}B1U($*(3VPhF=eTMv z!M`40o8aBCOvhxF=MGl2Wi`GbA+k9gI;ynmuOJfx@WvJg-ibOwL~! z(Z-d~C5L<*+u*yIGqPkITR?ujAW;1 {;q0^d!-v0~h6>+})xK5@T$`hHS#?$P}O6V_1fsk{)Ou!hX;dDr3DY@e*3L*X^&`1$VPpt)lK+}!q03Z} z)5#eYDf~h6^Ah5>^z)R)#NSZXnWsHnNg#E>U-y*Mq*^iM7?x-I4R;|0v6Jw)&JtWY8h5CA4}^CEDkS=D6lQ zvd-Z6u-Wa3^PA;c}&9FH-qTC^#?upFPTRHx`*&=1GO3nDy8R&h8(O(iu-1}?SLUXsmKNW zE7R~lDvSSHm4)t*=+rQ!eqc&&+#`g?B;`KrS_1CgNb6SO!LD%2kL#gv9I`7O`4N{tce6r#2rtMUMFc;kcB8LP z#NPYB)7e9kQT^$i1J1pw5XUmS_2Ro|XP6_-7vdyxor!^g!-`QM(c|Cyopp@5dDkT4 zyU)GJzu=th0c((kSb&`M>apV!*W*RsO;Sp2#^d&f0>-@~nJLTXJQ1+rxBe>Nj1L)4U2iJ<~SN-@~xZz!-$-hrPcD|m^x4Je!wicH!-3;M7N zY!td4{8us3S;U$Q?AsZy?-1Yr#_z1vl|2FfB(E|LTkqsx>{C`*&Nq0{*Xji=f;A+N z4jx?tS2CY`h?y$s%`u#lNX!oYTdRHEAh)vSAHdAq2DRmiWcX1%0=1^>(c$i2AL*6e z@QDVZvmY&{G(o@0E{uu4C^Jr-5NU}JdY$2({Wi_U5-;b%6R)R5_p&X3+LMdn4x=5V z(JMd=|0(`~U+vGq6Rh@sxZQ=IIMp;#AmF#s;RI#qPk|GX8WH+)9QsQD`}w`^>!A&o zho2a0ytSj_6fz0h`T_w&t`=3jP`cqG4T~D#0@DNfj0e7*(Y0Uvm)=OJmmv(^#eAK< zH^|L)r7|{1n(yiPbw!r^f~&!Swk|5$c7}mP@fXwsLN9bu;DjE&3Q5Ufe={4W_^2Ug zg6x}1&1f%Ggiy@OyplruC8f7^MpDcNiKiAgxoPiC*sj`pIXNCCz4>b5cw$y7sM2C# z?LEPUeEpa354elJfBpZHvqxvHPYyFKq27sZzcU;)6O*&ymiJ2t{ZGB7|K8s-DaTqN z(r!e}O`_$xlp1ID9X;d`3Q7h)p>+uJFX{=sypiAh(bHQtnM|lPV}OzSL=>U-fJlh_ zN83H8SsUYl@b4B0mpnkL%%_h#AGcwD=`eWlV}S~0T{D%%(vj}CPm|hRfeV@2n$9o1 z0_=l-D*gOhvZDXpW6ZxOw~Ns&m{7t?|1`ikCjtd!l7SXYCHT-kSVyvX?@mH`Xas0b zpnDB)-KUk&B0qD|9i?{o9u@F;u-tw8OMm}EUoe{BHGv01T|DRDJzFg9z%*G>dQLx8 zH%4ORdj19ffRo17EoSKL=I;(`X&0AdQQSMLZ^SVm18!W{0BTfEhoyTZb5(X#SI-Rg1+o-;r0nuS2@ypXEWaLwN! z={q;gFtmRhmgW}bb5}l>x_))W%4GZ(y_%y8lg(f0$~eBV(qEHru=f6gxfe>qMQS42 zPArS~S=AR+ue&FySmKphit_uzwrjJjbwr}b-&^zPeEf@vy-+o%F7f!39?pT>^Jw8O zGGkS|43MQa;TTEnldym7%I+a)Y`%x@i7x-%mF<52cXs#x-3IR2?~v+HLa6^Skd)(K zJKY5%wSUzbE50c!1M&Tus{VHf;-xGJIReg6J9H8Bgo&yZ+BaTu(5Q-UUi!eW1m0qj z_Z`yHNm6pcWE~R{mLf5&!$|(HEe<#^6iv1T7#It*&*KC^idzu?wmxsr1YH~mLdf*2 zDuEvjClKHZl7L@@^uMZr&x#HJkPI;KnHn638%Nzi;S>fvIEHEggY#(SoCx78(|bLj zK|#d$r&rS1m3LAder!=)m;5>8wxdZ&T{GnqYVT)?$5&3DwD%XPt-<@P7dPtmAxHT} z)tTmHNH1|aMTKPRFl1p3`4nH+Q??3vq6X^5!O0J+28wl`FJJ7MHBgUjJ~!$#}O1 zY3sm`A-=d*WKB{?`1ISmxK!<)yIukbJ!T)YsEmrw9u8a|P_9HL4wWM=&zjec%TTG1 zXGn8mjq3UO>@v85voq#yE=JlUj_)H=1n{i~5givjeaHDs-QMeON2yCXD^j{G2T1P~ zbBG;ZzUubcSxKn#l#*S3bS)S}=E`pQ8toB$Hi>Ta+teKH8mU4k=rb>mcLu4dOf-`Z zc_#EGsc-P~6vq{p#@jdg%bqA$b@DJw-%4@Z;V)PBo34v7lhI>xKA243UBzh^ntn?i z?-*f{N?~xn>J|1WqcKX0`mx@AYM||&gO4+6xdPpYeOY{&M_OjLla1g#$f9j}?ak^* z(YN{5w|;w5yX|8EO~X&RbUz-SvXLx97g=gQR=XHbx^=Qy;h@KN;5D*$v8Fye?b1~B zK?vVL4>b8&e}E`1j?i;->~~#yLu6EL!1O|Z!sV#6J9=N|V>(K49wupR^)C_KeD=0>rpwpR?00WDJY25| zBbbsybTWw=i7^>lgVn>GTWqv9kC5PYo7T{#KHkVblNh&^<%>#-rohk?F38 zuNn|HW=t}HX`6J{9`6qyod>+dx2sKlH9zeJB*^^&Emnp>hH(nDcNlLgDeU>_8f0BS zz_ApREqt^MP(N+GpEipkH`swx=Rk?modC*kWfVrBqwY98ys{aVij!_rnQnF#`N>*zw7eQB_GRCE-4 zv4hbLvME?JjZ+7N+X0|OKREpG%==T6II=Uno1D431>Uw;hl^=ZjA`ZO_){n61x|B$ zps^n&NF!D)vJyr)t} z_CEGG7!|rAPs<~+_vDX3PTiMeiOe_Xyd0R_$+LT}H)w-FSwoTPSN#5;g6IpE&9&oLhM=lHHgoyZIz(4S&F z;-@7;_D0zX&?J9fH#vVgSs=Fmc!`7R;JnxYvjpSeK78?~b0%iH%}_VnmhYqn^8Aa! zl1?_7Z-Nwz8huWUzddz9;YAljx{~o_amkSi>xlOmRnVYP{=n%LOi@hPZPCVdnnhoW zD5CJI&~|o*Mq&1zDlIDQG8_e_Xdi4bzcrEdn#=8W?XS?5y4PLPrA%E{6;JKTb~aYl zPV(L?TeW4kShC@ehQ`=^O?wlBrO{6KQqRE~p@_6akM&S`P`q1L1TW(y-gRMQu_iI7 z{29+d2t;Ouks@PfUg5bDPwh6}c5$D%%B1M6pjgKJy4`Mw4is%z8hl|PMEz~`#0TpW z8jGL5alLPa-jUvnx}S6vg%%@R6>$_}N6)Wwv~8xa7Gyw2Xe2K5+gurICyQ5(Ic=pF zEtGgc%~4fuVK;Bw6z~u%GBpQzv_etS)ki!g+?ezZ8PtEKC|vrelOHAEB(^ zDyfDTWL4o8bGYyNe9WHZxB0*)Dyp1r`^?@Ekgup&i|>#@iZ&FE;yYvvKs-7DQWiHq zsGUJcAL|VTDS*XzaKd+p79$hj>={A55*XKK9tL=VAP<4#g_eOSs6FYlCQ(sN9c1P( zVj>h%4qqXgGb50JoT>25s{ol&oB?bXf)yiy+-nOYvoOV)D$~`!;X}m+hJ}wh9y+4c#*he&@d2T&prN zieopqV-+`+>bWN*u1}^!%|;`!v()AknhI;rq_E52z*1%Ig+vxB4v!>F*|#sLc$X{) zecHWyOdD(6oO#T1+6aSu^VSyWo;}l$;E`kertRG)i$%F=vbbj!76%4U!I@+4XS8TO zU!9I17|fx9?Je!+#h7eHQjQ!2V|!uXbZ0Cw8WwWnKQBK z9aBQY*vAU8%idy9zS_lx%L-h55+>YBZR|lSHSByNHCM*E&vr@bzoKMXcX-eI&5LG5 z8fM)?Gj7oCn5r`R5PK@)f-?U8v}hh*sqlogzn2&18a_yxE`aJvCyHtZcD!|NQk`^y z2-6>K)OdC5>-+I#Rg_UF9j0En$ zLJzG%vo&9%N71;9%{D2$@>|&1RNEon+D9>$-!ft7qf`y|VNs|Gk026EA!F+Nz-B35 zf4}~E#)xj?z$B9i@=;Pv(&dliC(o2CXe)9H%uGjN!Hh|;+wrBeop8C!bhm448E2r+<*pRr0Cv#q<0-GhIKC83$nm;-Gj0_9 zY4ITL`LVK!MS%-PS!bfs312ebSx(hqds_99P{(}F&zP{Z`U@l4Gz$zpOE$Ho&Qs>z zk3l!*=sVmlKN1yu@nVt8T!2gurva{_9YqJ40(v+>Cr_B6=^IQ>`_&?UXl2>3DTlB{ zRUln#{0-?8)(?6XX)gpJkfUEV*Y9DKNoNglsZR7$zK_7BfVK46c|XtK#8R@GM$eAD zsj|<1{n8>8T6yKX?o)C_ZAA!^>rSixm#Je;M{u96kw9%IT(6C;A#L5Cv8soZDbZ$o zs=LAe+diMoB{r=~v1EM1&?wZSQV^Ao`zqGwmd&dBd_tAA=Y2|RcpkBFB>AzLoH|d8 zU(iO1PQ-kmAjSJe7R(yq9RRfpn*)aQ|Ik8=$5bDnWlFOo65 z4+uClL$BAXz(-6VP|dZ@>LU9b+07`?Z;}w=hA$^h8of`ubh7bD;qA%+`X!oiQ|GgtT*X$P{=BPIW8t3q zfWk%3z42M=wj)lBPWjPKmYsYxT=Q||bkXd4El>ScsWYIDMNWG8kiU92`hLsB%+e;4 zaRcv8h zGzaHv<2U#a+Vyy@#(r|{o9nl8rzFq(X30zQ)#+X=a0dgZ)phvJ>EePvXvYEt-eJAgL;m)8(M|p*EQ9e7XbN+jpI?!u zUAG(Er!=25=TCcKr@4?fAJKdm>uTmLhCHp*u^JZXo&2ha!*b*uXnv5~*jbA4ELy@g zt ztbp39DkTs>Za>|u`uDq_dRhSV;KQixU4Y!+RM5ZQh3LO31bYcIcJ~aSh+sJ7-|vz= zLIOM%XbS(R0e9-bb3TOj zX@J58Slbls@R`@sTQSoJ=pK(f{7_lMBePgWL!V*tu|W@1F4p?@Z8 za9@E-Q+m=w$|(GnSh>JQm{uqD?OPl*jvhuY^aX_+KG(rSZT^eZeJECRl`;;WIq>)Z1-+sm=a zt_lz=e|1U@+}cco>*Y}7<;!1YFCXPQu1Qn6ysXHG2}^68I^Wo5sK#HVAKYHO9UsJV z;t)*stlPY!8Qy1N;P-0$&Y&nSBE{g|V&saSOVEyZ23IZjS?uIS&XGxLCrFi=3~}D# zBq9&?+isq(q?Q~N6zcQ22X!t$+!`C5&dnWp_j5Eo?nD+;wv2RK-V+vAaA+2Ddi!q3 z@Jh$FX8g>_qbbhi<~1XPLp>3`8@{r=j`Z=J$C}1$O)n)yc|~vgb2W84j@j1xZIoG_ z8F`INWf7ydvUr^C`koD>-)~D4raO}}F-cR`ho!c!u@}5PdSsGq{(>LE(OY+fa2Adg z$LsAS6_aYZw~&4KlDhF4s7JND@VSAzHT@)hupPy9SNTq?U%sd{s`E_)Vq;Jhi{0&i z?MgTQm~EnFlRNO6$?fyQUqh|WYpvQ{bPyEw~=c@%sqQy%@PsGrt?Wc)B(0)>4s*0=*RR37p7kSDi-_=QG<7UXoi;b4Mc&>byeX@%wF0fUqwgrq4B%*`m_%|mR4QKoZTn6_5D)! zIi*FdTu($8Hr9~XBqy?VCS#{@TT3J=-4(8DlDLpbRFjh+EJzjc)y@tg%%S|FSs3F% zeC7rxGIUhi|MI}IPS**WR}pkSOt|E@TS@AuwrTv)G5B)za6RqP8f>9~05;pZm&v3w z2m7q7a7Sh{kUqo`_lYi{2VJ^CNRVEh!EYYUGj7K}V}GHov$4xu9jj8%|GD+7IDT|j zK44!Qs7Z29ANrR%Im(l#aBP2ozJaaPK(}|n>$F1*UKRQ!&6E65TdX<%j7JM9S;C&w z97o~BSazx7TKz5!YbBqw;SWU3C<%?)YQKd__=%pOgxnKve zsER)%6nC!b6ibAQEpE*q`>p&N%pE$njw!Ma>d4oJ?t{&{36K=K#ocL*28-ciRT0%g z=9Mv>8I@%I5np@?YYE*W>`xAOpQh04o0n+HxvXj`!Ov0~0B017!6z%>ZYN3cN z``+dhrN+aFf1GFk`GR0qtY@Y^Rw_&k6b$HXM2g^+?;`fL=GGst&HNTHb9c3$hp|QfD(z$~fpYwKT%^dco1W*^I(NX-Fwm zhEyWa5nx6F?bS|#@ACBS9_o-zcj(b76uX@VA3=jErHIk*(h9Q7xhAfvO-2*L9EW%v zs-q;#na~ws7K5fntZ5=KnV9C|B;HQB^&v}%mGZRE*g?IsZ~?+>(B6lrhROw;;59M3KRit-TB_S)$u z8jBiINmt7GC)RhE5i|B(+`~2&6;0I-FT@9l8!-pT@G$z@0|NR7?fv8SxV-36MFo`( z8{ZzY#*M?$?z;8$9!2SR%_s2ZJ`DaZYSj0L$`4>G56RVN_7NCFZ|296UMf%V1|O$7 zdLLAyiat^8YwlJuzVP5)eirqCI&p}Q|L^%{;S5mrp5u@5fMM=I$CnLm0S#*4{kKB* z*M|;In0e{7m|@g=4%AB5K^kNp69j~fD?4O+2erw!9xm0SIo_ds{V?Y{#AkeZd$({f zCh&&P`^)c|X=)2n4J3Q`3z>YQSi3et^A-bPWQyEM|3~Fs@WVH&p%%GN+^{u8P&D{4 z-4pPc2U3}#nR`OEutTL|5Vt|V3tKFsR>feei-0ONEU0%n`~+OH;LE!Ckbhb$EP?_4 zp~)Pe7c5wIXCvfffN9t+g6IQcd{zX2L4Tfs!pv2?Ce>G=boN$3yP8s5+@Ka^;$0wS zDI4NvGBz~oJ{v{t*~;l{Rotg|V%$j8nzobPrJbEPs7#xKIb~#^Wa+ffO7GluW$SFP zsW(RGmLNH6k;rT%{;Cq~_zXfsi?VsO^NyXc2z94M+UJ^z>JX*Ol(V$cFO3SMQrFxK zhh9eVrif9zc(|`;)71?zEvP|rW#kEUx!60&=D)Y)rFX#%7392H?OS!8lymujvV58K zz$HmICi5l4Kwa?ea<2X(gB14^@?&k@)+Oh8-qlnE&&Pl+uRr3r8@0p`1MrO+KYn0LR1EhRfHG-40a94WuE} zxZ|f z8E9@OD^C6Okt~;qeRdFAT0ksfq*K1j@Q5eSg#+o00Rit z_#x?uPDJS&_y>PHskW7{kfq$MvR?d3CyF}tUin3D>p?tO&+MJ@awEYW{sq@$*L~p2 zkTF?sirc?>&D*Gr96K4_^NnUn50vHeZT!#Hj6{EIt+S|l(SEi@OBJ5oOo-MCYR8(% zAEKM(2bMSTn=j#8)My+vA45L|NPNpmzfZm1@rq}QZ|k!UVMCH4-C?)K81nOeXc^hvSbx))O4dDvHr;iE zyy9_5m5AiHabs1|sFFSWN~I>-Ib(B=?hNVWPQ%{NmgB9QS|x7<#vJlaHZ$m*h#jw! z*M#TVT4P>ZY5ELD$BVpN`0AB)H^@s~Wutb+MUnYcqi!Qs`F*sB|0nuvKDK-KcxPq9 zP;KPkCU1FJ{8WdmkN$%DC8w^3Ed>h@2(!p^Xm$o^Pk*!RlHGByD>ukvN3R!LTe--1 zZ8)-+Oks$*JtOz=SAAU?OWHYQuFH&U`&rb!DiawL_1kO)?;~Bb12lh2d0$ZDFI9W> z#z^l4Q;oJ&2MgLHE170@ii}PQwqghCJ2k^Q=gN{cLyxd)e5y_4SsF;!F+$N9OsIQQ zueEZGUwCsOU~7@)tg<|!v>0NQ$zo^dnYhs2UEH9ub=!fP$y|T|BHwY16*Tnu+#0eN z+>O4bXFcX%a8`xO1e>%p&Z8sS@^q46dp$Y9Zt97b|9zKyX&Fwc!!5r8Cu;r9EKm2T zDK*~hccy0PeqR?zCNNq^p+X#Y=6vDN#N2rM*R`Vk3TtFFw6c)PF1y9WMx<+cX1k!w z8CO(DWLKXwm8}}4x8iEyKhfd)ZuG-)&$Z!737>B&iLUr>2jKw+p?nb#4G)rXTF>Dw zoCq0sTfa$&l*-&)0Rl;~JS{TQhj@E<*DGI;;+H+ae}~+t^7i|+1$dBbS00GKvwjr) z+W%5CF1_-@ewp8THj@}43XYO7FVmF28S*jzEUPtb|5#fRTum)~q;urB3Mjcgx|s2Qt5cD^+OwsX|o>2Y6 zUq#PZ_0r|JD<3h8&cWEuFN1qht7+s_=3ik`*6M ziKUm0Cuv|Fe#i-6QnMUvUKQ;N2ydkqaGXFW!G>Z~uoQ~d zj0X7O2?F#YVnDw>)E0{(GH3(cK?W3?#rWV=BYa&!3N%4{gn>RDlDJx9jaL09wO zp*)!@=eg%Q>7O&Qy^6nhq;Gb9H`i0PxzF?Z@G4PgQwupLAmy>Y|G3!2?~;zmW~ES+ zP(d(I(G@@-TGZ{j!|(-0H*l;2sBlffs?Z*`MN8~cmuJB#5Xz#QcNg>DQ|dy#;w^~FvTBhjIx1T{l;7Q(X&-yy4k@NZ`U z2WW#jkm>{FjBKT7R zrxRHO@BH!-)KmbR%c^n!obyeQw6$(ohma{)lXwYlw13ekv{*Z+t-9v!(6mW$>A2(wjIvrTk?N(=(W-&i0bk)mMW*JWUmL|Cn``T;Z~c8ryr|N*V4t zOEfnqkLWn`Icde_yUaWJ^-IAu3d#p3pT#rcw5VSo&u+yO<1-Ja@|{qmntdOl^vn$Ri9P=)nug+LbnjYB{Uzm@aOy==fT`=S%2N@mtk1j@fd!eB+&sdHus+FEw;VUVzt5 zLB`1eCvhMC>RNS)2#Ev3^K2=j>G5L}rG|g#s6enJ&q(r^FqMMCoE8d%7ViyEe~N71 zT-qSezAbz~_Qf-(T`U`yI7{`$w)nVFGg|F-6wN@jW>z5-9q;+5qn|D}Q+v>f?Oojb z*T5x~+dYJOn)b3Veu|x6dNTzqN%hK+T5xL4%EB+jVZo)onqU-CMivy-NE~QA) zRX%_`2I4GdX&BKCGB7}}ry@=qKae`!C0?%R@eE&g+~Vz0t(Kw;LarckU5vk$<*B~GT~|Wp=fpE3^w z&y$eO8PnQ3z=!D`Xg}WOrC~gknMN|$5ZGRNqbU`-!M)nXAn7oeeRKApA?#!NA)ve4 z_rsChjtNSZUT$$w?d0_f{Z!P;uhebHXUZrx;kyMl#TzymG;=3a>92fDBJbB{cZ(`vSbv|v zz(^e+KHlLREy0wzdRfiCVntM%-v^Pu=zoK{6XdN|;wTl`{qGUp?$U%#uWe5m)(|RUKW2O*fJ5CV7-HM^_W~>#L-ynSq`Rt| zJ&qd}`7|3d=IUUf?0lP+e4Sc#Cyu^}YHK9-cI+vI7rX0x!aW($!;Bjn5(8x;-BZ=# zA6_lF#zq&@nEu4uDnKyvgx#>_x#vdRgHu}Xj5El>0@X8}X@D}5b5GZO-QJedf%o%= zEEag<(%{IsDaywB0SjcjM*a3jQRWwfeAS!8ONiw`+Lg*NtBjV@wUJ#fUwDPbj%)gZ zkru+Iv**N^SCR_f8XJzG%Q=+;4lHLVMx8bEA`J&Gh>Lg++b1Q>tB)^EJhjqY&h(c* z99Y}jT=TUr@r%@CX-*XZ1tR@D-#jkwB|uj#laALWC=dCM@mYO`=u#qOZsKHBXEOn7 zaz&9QOu{G<9un!n`K9LE5u?vgA3m@X5_Eh`oLt~@(bTd&K~CavpYXkx?>lgmZAK01 z8R|9_;_lntHE4Ex*LLco6}|OXbQakFAA?#k^!RdWz>s(v-U!Su;dAr6oqcqocExiy z>&VkCF*&Ju>8Hz10>~<4_)Gdu*N#@c?d8tZ^?SZoL1&SJ9;xLXoc~S#(@3IbTVa9S z#ZLP@&(F?^rA^85YP>N^+v_p+TK3pOLJLienqEn~Z2z20zHm#L(phqM4Q2@WQi-)( z%xt~UxXo_g_4*QT&F3fjh+f*UK7xo_?v%1zebw$Ki0|lR1xLIr!^E~hwg1t&dfZd- zvFhfhMJ7+iUvRZW#jU_D3@0Jp+9yo3a(zvsJW=91)`%IeB{6fx_}P$mMxhq&55iU_ z!I1g~I1im#EU)dJ`;$gVZ{HIfZ|~21z^m{=<9g=TGa}onpV%ot8v~gqFZ7mYeYt$I z=*p~5_h}7D05lC(q|F1jjy2!-c#7P0fS1cZGmP4?Y%X|^pzL+*OPR|XqcKz>)Ai_j z6*j7H?)kjDyt}cUIa*GP#aokVF5JmJi?=>D_zxWII7)-MhCAFgT+$ellPH}s)<>)Q z+2>!3o4Xt~CAHZ#pPosomKhG5nm6cO480p7XgF)Y#_KnJe`jgXM~g~C>3$Nv9qsU@ z=<~ZG4L2F3);wjx6~d}}9W>b6Hv~PmXSGe|P#xUh(&CK!wWFly8p%Adw?~yZEM3pq&Ja{ z6a@qo0j2kVY(PXrQ0Yabcj=uVN|7ocpdbXLcj-kSbOfaLBE1($r~#7rO;5Y(zV|%m z-v6F+zyE%FKToy^nVD;@x#n7PykorM9sioVgCCthcR7Z007Wih6oY^CAUAVmv!=87 zq*7zE_e3=YdQE*v`x1UwSzpmb|7ol6;;Al2nX<*VR98QZ!E#f4VR4$nd#ih4R5bcG zKAJq&y#mM+wODn%?fF2yQCrLG^!TQ5Cr=(!_Tq=igwJ2d`Bu)DcH$#gg*KwRAWH%+ zQg${iY+Pd3kKh)eLi9Sg&DYiEU3xpAS6*1ygqcQcmF#6%$+QGg1bamBXGB2DTnWJ)WG*CHHxMjfjYIM>^_O(x>oS1Ga{nr%FxY z@l$zF&}4`S+SR@E)WfycFQ@G{gH5-~3Oy4yLvgYZqdb-b)vl7Vto!iidGyl!k( z_v#m_ZxDUDse-qcZ5Bh)&MY{@)7rIXO5PVe=1Wf3RHn;vBmLI9_NsPayk5mr zy$u{+y=oO^NY(Pm#}LR%CBL-dtyow`MwE)U8k1hA?5NN&V|ryTjDpL&tFU<7IydeHmHaEmHa* z8}6Wy9rwtIWwqj-H~59#`0b;K8?_fbDZW91`7TxlZz4+`J??RP7#)7NHu8SJ=Yow{ z=Eb_tT8D+K=@v0`ZOankEDOlJf}0CECJ(@Wj1Y3jrBn4)j_C%lQNb%M16MVKZa&aZ z(n;}uV0izi?VRIb=1cm62NKXeKjE#1_JgKGlSiSDT>i4mm5z`T?CafckjVanWC5H9 z*v$RG>qWt3cvs+S7-r{Y7O5GXSBB z5g=6XLIDt~3f!Lnn9qXOymgDwh0>HZvbZD{F+t)qyR7BMZcoE4iV95DaL|gN_2Y9# zEe-?=Ew3XgaxKWJo<8mI>LU!Ea6ud`u;cLAaoka5Yp~rmD25P!juBr~9e+Tav~Y6oB7&;6|yE9VR$8}A6Vdz5Qv8tKx;Emj#D(EGN zb{UDrRMMY%I(w-4qS^CFoBUijfg^e$G_T0m+Do{93j2OU)xGLwU{y$vnaR^#i)}x~ z`SNnd{cQlrEHgI{J6ES+qj|t6AxxJ0zd%awKErWxMI3R= z`aGHCctudWT&Q}cx*ye&98EvS8hisF_8$Ep40#y}+-kS?V8>)u2sABxL5}%*1`D?r z6iZMxgCSK%rQv8~*l__94mbiHbl+c+xl+KDl(z#;lT)!6OMv%!l>v^dNcskOs)7^# zOGcLk@W}M(18cYe{H#}3pF^hu>sJ(iv;{f$r;>R7q6|25ab~S4iAEE%6|{WEu{4k^||~f zvNE)&0;K73eN1bIU72bXaxEogBK9U+;|gDYc)@cmIYv#W<6Md5qT3`P+2;x6V&u z<>o@1I0_N*Y9WBTbYZu$eFfNC&&`L03!Dv*xMEkfG|zViO2x)kZ*Y2_j?Rz%_#TsY zzKfHfDJIGP?xb?LcGMK`klCXWPU4}*Tz!NYe|Xvc8D2JspbglWt+z-8&R8QT(ZxOW{yV~kU2kLuL7rsGk7o?Kbb(l$bZNw_B zThqThS5!W&ARfEvMvcvNYv5!T=%kXFlpW6Q&NqbR1vEFKV1BD%8_i!i4U`Z{61mKQ z;~xxVr~5gID{RUM&zVwlKKbH!h+r8hfIM)Z98+~FohB=ATJzhSc$H$Eby7^u5oOC< zC$bpZmfd|)g}#q(&C^FoG^f!o_e|u@XbZjAsO)XA_>yjH>nnPw{C&R*Qz~||UCZHd zk8{(bZZxp>C1x!o^N*?`-IMKTHB=s(c)Q;f%<_t?+l9CJOIq_%`r6Nnp$J)F^Tv#p zO8q;y4floK0<(!^h5IP(xJyIi=DsrKj~4T&=BA*t%5M)+DNEMB@?K)rO^;+8&HG58 zF`1LSS#D!^yK=nH?yIQpHox47Usa9($8LeCF~7teapjYIZwpkRcSG)k;nGsXa7}Zz z#EELn2VTJ#Io?&G+it0p@qh6Gle(*8;n`PLu(unOFW}aCJ7Jp8E7fW-B8j3}cRQO; zv(4w^z;7M7)pb{$WO&9vA45a@5PE>MsU56UUUgF1{_!Mz>k*pG+Cc(Vi%5ou&i9<_ zPI0;3we-Pd`d!6`uR?t%L$7B3^d+0q_ndA?h%4&q#AcbE6&^lfoJWpiA6{$`x#+Bo*#i-sljN9tym8 zfl&Nze-ZsqQxfRT!H`qG&bN8I#_v$9VLJ9Jh>;zP2L6;wd2n_$0S#Tes ziR+y42AskOC)gTA+(m)Sg2Va?u(44d+{^L1_tmul6uxvNI25s{GlbX}F~&lMkAIRQ z5XPH>oq{fcbZA_I7WDW|-0=|s601#Kw*9;8_AKl**89iQL+mC%UGU%hUf&ZC@U*&=f|@lx)nHRWf6Hs*|?s zuR%6*rSRm=j!#?+%zx5$Ejr?TI-rvLYnkc{+jjH^Q*A9dvw4)c$~R===u%Q|rzp0K zeI;_3d+Ak#cBQjUt1ge+ktyM**=O4HRn7pSbN85i05dM9Cf4E5OoJQBMzw5(d$58z ztoQ~&5CLvQDw*&Dhby}{?@8E95CB=LJ4Miyx=JkC0mtuuwf{kFUhmPi-8YCI2o{E= zb=Cqrb}(}|hd|drN)@$!XdLxpC#SmU^nYwC{bMhG|Byps3H{^T`WKS|6`3q#{qLKP ztSjsq<`!Xvo?phQWa+IH>q)qh4~P*eOTETH`yAycK9t9Pwt3O8o6a~v`J2tS^8R7Q z-?%5b*s(v&Bn-=3LyRBRyGE>c2)#zJ^sZvq6I(CyfAW-xPu=v4dZsae7adZ$Zo~<5WG#9$f`G|hztUzwUME{WH1mp2M);GeV3kQ24l8z0J@QazmiVQnFJg7;v!)JhF&+e@+Uh z3$6VrYhV>$?@xO*NE0Xkw6gL18I$_DsX0--)@AY8x6#qd1WcoYA=906p_vheT75oF_M{O=uvo*yfU2g4=nj#1s`W#@6g_%<#%^!RP_h_^#E zfVTi(Rk{`rZ=8B>Gf4Z}fE_#bZ&Vg?HqY$%`2kl{F_Atf-5D7r$1eYuK+Qj-eRmhv zjpHsZXFHFa8l`S7)LB1Fh_Jda$rZo*c~DUh|1j+edPi_O z48guF-ho#7^?pb>@%bvWmrCXJzWz2Snc(>il6xJnh&rJQY_N48UnJ-+Tl&XWKg>pP zqFLpO^yql;1%fxPXD_j;h|K%3p$IA?WVz5E^#)D#3%KXKy;W_>Bto~|g zu7yGpf989X{>1HvxWG!`n4}qhAoO842z(-mlAC!E|4x~$KdUV{B1*F`Nh?pGn@0cE zI2j7+QIP;z(g6sBrT6y{nf*i-{&$R`f9?0P~fvKNmr3$AhzbTZ%pG1Odfp&uoO22V%t^FVZ+Dxy? z97z5602L%v++q_wMIK7}V#vCtyzrU1y+C2X=2knVEJdCfp6P`pa5kBL0m|f1S{?^g z_s9-3Z&sL89=9(QNBTQ&Xt}@xCHa#*_`hCA(ixKavhI|W1BJ|7YX3mjAJ640&Nf7K zFIJWs#qc5+bEkZJ^Tch#B26GJdUa6L;P?!LZUtJVSPLUAR}Vy?-Ng4sMx`HK6<8+a zN?E4KSQnxdlr=EFY2xrI>f>6p(bDg0pIeT*Td|a0H@8>eiB(agJ*zPSU0AsTwyScm zUFlWiG3flHUHB)K5AoM6llt-)CT$<*%Sy&~y+)+j2!pPlb}}+H(3`yGv9C-V9{a1GhmEO&wUCB;f)c3oRPG2c#ar{7bP2*{bp!n=;QOiO3fJ5X%>QVy%b2w=tL1>D|mCx#033`N0Eakr`McDa;NL@eNXW*utlvhoak$3ihMHaQ5-JP(W|?Z$;Et zPlPpnXc?u6F@4?Yz*6{0M~UsG&Utapal~vbyaeA5IB}78W@v!9T>$E?oGV7z$NKwp za0U|B1wJ8>DhQ9HrFt_P?l|NQN2ac8pV~uz z>MQU5T>|5ueqs4zX9fSe4-VUsxuJMuyOjprnxcv7u!^$t^nwoXW6Hk9Z!E2>xAW|@ z>c98rC@l$U65wYX5m|pC3BR}Q+pYQ+nEy{Hc6KFkS~=auN#)73ftUuz3#u<#no~5B zQdK;C!=1#RQssdtARE}8p(C)vBN&K6-P{90lDJX;ue)%pi1`$9H`aH+Y$wU&5!1JN;Sz80!DVStYHRE_Z-scH7tpYtwwW@Is55s#5x_V;}hnccJE$E55^I zd$eT`?O(OWjo`n}oPhYM0}Imf`}5Heb_Tkbj}Zbw3avA^Bmv$*-p{!6unt``Sdx#z z5Li(o?aaHsRRR%)rvx59R&yUM*8a8LJH+PCZa$4sz(KEXLyW^7ohYF`Zs}LpHTH<^ zzFpW)B^%Nf0p?*aR@L~3Eef3vUDx{_$io}xHyFievG4Q27QLYJAAlC; z#wZ=w5HO#jK@>Q&8JAIniIQXGqw9vXKKcgH9K|W8;drTz;}JVDK_hEcE8~=|kl<2Owk`&2SH(+`s0i_htV(iE}?D(f#<|wm84PL^6-_ zRDQl7u}p*qJlIFVYBuVH?6rQEDp0jDXr8Rg`!~j*{^bziFlKOQp&Z{d|DLf1@gn;o z_G*wn_hmug@G5LiC6(gVk7bFiyMK!O3FGzuJ{!7F?7$hsqP>yq*svNHE>_tv?oZQ7 z_q%N9jS|q-1+?`+@&K~>_qKAZao@w)|I;tJH}l3!Rz{TNyX9&(Mp~~&FISO&gM2O0 zI)>OJveWLX(_-qGko!wRw>|2Ip#6Ns*d?MB$GubjQlTr->L?R=WODoXSAiItWht$J z@!N;wzM}j$p$1yo7+yY$Rt5JL(u&SpY9sBp+07~sHD`R=heB6tug}`CH@e}B60-Eh z`LF2-AI)Hwq1Q1gsg&-xvoJ=FW}Ljzz` z?Ga-pRa-sNS+2FObC2w3`J?qE{6O?>#>6V9&K=3Oxiwo}8P!}9G&UE`0Z81*kogK> zfgfrbS>XErj)d0T`>MbvLqOmG+jE?cwgzvj-YYUz)XMToM zQ7?=xIpAX?P=w{oBwYP_lVQU*#7$^#&-zJO{)D|sV3x3>^K24e{ri1anN&$nrBX&B zHlt_tDJX|UddXM)ct@nmPt0@j$69@z-37Gmc5<#{ytu$XoH}!WR=`7j=CrZufXxKq5iYI8(VP6&M&&Gjbdo@ElF@cALn-z4|W>h9s(FQHW ze>S2!&A&&G@cBH%H*jv|IsA03?t(G3hx;9*dh=v~O_QB{VtEPLZPGPXogta{@#6_q zC54AH{z{I~`ZLJR88SeENkW7FlbopI#Ee;VeTdOEvqcli2W54JM9p6Ib?Ix-258s% zn_n+5q_DsGB2D&oUYB{njfe-9p^%Q|0a!?VoM!e;g5xYJL(B9f^myi4<*3sJjsvbX z=upHl5WX#gZQmyI=Z-cBX`6fV5<>b8!Vb8>zs?c+??z+94)9rI-D?axIwCWFLVm!7 zJ;W;|IelVHGSAw}FUk7l#D~g?H^YYSblEhM;_fh>5sfQKsTV{aHp|MO3o_BW%|U^SQ-t*P%Wt08&l3;Yg~LOwhHX*7rY-9p0+i2GruA@Wg%X$&8X`mgAy36$AOygBEUozb7DPT@LkCcUZj%SAlrG+ zot>u0Od@Y3`oW5+_cfW%v-9i*6KI85io*aOf%!{5oX7(;hPK#=Ny|#k=DT)?m_>5} zjYW`i$8!~eU&veZ4HBe1Ynh5fhm5jP@w@vSr2qA z(a{S<EU}sk-vw+IV9sT~Bu^M+=IH*U0o)u1?BX%2}^)n%QY~B&->zUoadL zpv0vi+;U*qJBT4MNgq-umG>DHezX>g|6N+ z7_t6(9zFC{p-8v+hH@P2Cg2Etq>xz{+PsDO z)MNJGO&^uab*~50PdVdMv+Kvx<3Glnxuc%MX+VFTB^eh~j<7;ddMM9lZDHr2B$)d) zWKsB)0ruq-G`EMolI!`U<&m|jjK6vrqe@p9fA{RI7p(q_-4O4hf9zu3hmqpQFn6%& zxQl4_d4lClJQ$rCWJp{S>pji#0Y2SY3EOGc;m>*G)D*=m4AF5;PY9iE0xrilNNIaB7XKiq z4|m$iD?Nb$$220Xz0j4DT3PM!X!rudy_?ZpWdX=y;#QJoJIJCbGn58q!5)lb>yuWW z!>TF{E+Z5CaT2TXlBQxk1M=^!YC;As)>kUINuBrIs&=kqdxdux^$$%OYGvyY@}$8S zQh#0nMNu{r><2|#%^5;f2NsZ{2i3t3kgx=&M)N^xo%HbKhi#%`n!)emA}y~*3y<*N0X<6jw%0 z$kQHrLO`OIHo1?Cd_&y+bI$dg;{Re{dFi zs`Kaz{rpAY&Yo^1uXUBg&N2$H947{=p+ve@LLKt;x-m)SirS1vf+SteeGB1K1rW6# zCSecu!_={Hj(!#P-e8<7kD0UQy3*fLPm`}bfD#bycO``wH}Hx{&7AB5szTa{3Sy<_5Ql~BuMcQn+gNAS%<#VxnNsN1eHAZsW^LGnx3oc~kb!_p<-5sHFgI&mWVo z{-O8353n27{f=A?Ii~!}bB5~N2y}5#8ayW+8UmAC$ylq^os5_*@W6uPU8WnHhJ zDA?{C&Ty}Fm!EjgDk)HQowux_BC>}dlyMwlBB_@9)O(DXQL+E|D>wV}tWvQ$|7NG29~c)Ga60{KN_ zLt6FWOjClT&ao*q<`Ym}??b}3)YDigr=e%{ZS>eal3OQKbffP@ti0R+0+8Tg2#M1xPnrqIddIkIeMQ8jbbG@sEeBsOBu zfMMEP&^N*T4PyDr+m*M=HP=z>v&U%ldwoh#kA?ZHbuEU3x6!{9%67oG3Tm|D1xh!g zldB&$#7n;&&;Ui8VAL226j2D@J}?x?Rud*NlCutc>z3LBmSg70?0`Per;*lpneeU; ztW}S%2Uxeikak2Gw;2(ZAnS`$*Sv~?T!uoW)HrqGES-_|C-h5qQ#D5k!iRM+O_l zryP9Lvu$EM?#Uef z27|DYEm&!-x^N|PcM*moLH16;)!ZE3DW36z&po-ht&LY{@m~_$8?Dtxsv6eC`(H0*fByUm`t5K-U#DvG@M@$920mXQov zJmogY!v;i1e2oEMkQD|OD!gm^u-3oMMwYndvUeAvqcBO$><__vLP%gYhOtB&W_0Ds z6y#3USAVePV+i7ZxqgmAN4tlEYTE9F*7c9#ie!Cw_p?*UjM&h1$gC!9w?k&Na7nY) z!eq*5^7s^nn!ve|=fy$8wj$w5w0BamYfOn^g_) znIJPdn=@`^uNK({%-G&Ot3pc)@!yoB(E!VD2_?|55fx%Hza}m89uY>@5>_Dgj9W6~ z;Wgr_6R|fh#e2TSIjzhKG*0#sgB0{6rQ!tn5$>4zZxA&YiGfJ+W(o8SS4@lDfs_cA+PXRIiT* zFiPksr1t`S0!36hU@XsGin32 z`$Z%kFrCuAyNa3e-m`D)IR{^wkdf9EQ%4e!J#ENKkwUdM!a}uh(6pjh9bO>9%Hy1kzFMku7?2j<2D;mlo% zL8_Wj!H37Q3rEkiR{wSKnjajXb37*o2n$@}iR|vuQHnjbdO>_ad?OSX1`;#qJm@;$ z>wX%7wSu_2<~B~LFfYfP-3pRatS{fgc3_}88es&Wy}Nk zK9GZ3v|a@gZtl1%y~hbKKto1p!G-_>C_3-`AKm|Xa>%#vPxKFGCg9^=YKuy?4|}#| zg064t34_quzoMMu-GBj`0>9nPn)pfE>lTmm>;bo;mTGN7E~17PdIH$v0SU&3>jHp^ zvzb?POlk<5$wr_Pf%a$V_Y!M})yu8`*1rej97|Bt4csvqquApx!0Sn+ApK|l-Xe6* z$~9RQT3V9Po!{k1`3+K|>xIA7k*j8r;}NS-Dpuh*HmUQO=lpFhtGB*WCaFv^HVXgo z>8$LtQ?2)ASnJt}ekc=Tppd*{j{oE;Bmb1^0+Tph0Y$`e()>xzLZxnjD<1ukbYH!S zobsJ4*a6R}D{ATjhc_n2n+4aci=JIG zE~#(GlJ;p{ThoJ&Ya8#;f@wr(fI1j3GecOP<^~R{_zlw1hrd^Fy{!8bncCz8<8P*s z&ll)=J)9dyy=bpp@<%=wzSad!GNngHbF2KVo~x7z0XmXn<$P-#J6Vz<=)V zRpy~b3`K~IX?5)B{`;<91lMIKQAwIr(ON_oZ#&Kf4Yrdd*8Qu~_Kn*?fDt2tedi;Q zyP>I^wd%DTB^pbgA@#f>2xXyimV^ZvaYg7=M>FFauej6r+3&M~<5@iuIQwq21Lji^ z8blySWRt+8ld+%R5DRh)*||_;>>6V4OfgtT8#rN5K;ehxeFW=QqA*;?4%pLIVcWnv z7r~Bvwf4IAAR2rcPGQTy7Dd$5WMs$ z;83>wye?GQ9VN~e3OQ!}&$)U)S|lJK{pVi)8+-*mKxvlVuU|4D0%3u*X=RfhNlQ8r z)AiQ+=+o78Cr|VtM0fdmkMV-mrb71aB!iA&26gnaHv0dZ-^HAlV~p z%|J8=7dvk!d!qHQP2A+mi;5NZ_(fYEJCmK*2A&Ls1%ZjA1~$kLciC{Qs)dcK-II~h z8=NsJ98b<9cZS|Hki@hvtrQWl6m2oR8%Nu;e1i~~3~uploo#QWKX98DZ#ug6+JJGi z|0aIaBVBe%Y4=$~FislX>N+o@s_-Gv&cUqd%gq$m*2?jPi6pAe>pGtxkj0ow_+!1T zR8&XDpijfA<%s|&!==e9t{gHHB=itNPeHM}Nv5NjLB#Bc(Y=ldV9h}?V z%zIR19;NE2?X8IU@iLq2a$XM~ws>APYh-T)ek6M;w_9+!zV@$UaAM`RR;S=naxWxJ;JW-sj^6*mt!2s9|HxJh<38i18r83QFuj*34`x%Z2I=dY9d8=kSEz?^BH+@j?s8PvB;*}=7gw`zJRUHNUe1E&Pr z`)Vl38qxqaiMy6~^Kp!&kA!LQ$4ghACLcn)E%0Tl3cY80!+oyLs?+&A9>kcz(#O`d z**I%HCW{dLW>Y7!a1Vm_!SrrYTOXyEceuYdL#W?%593BjEjTQ9qsA^SGBQeN*S%Cxj}es^Mr`fgr?~lQlas9=KjDf=uuQ5(JWKPkDqnyjH@KAdB)s zB7$pp4KUZSaJzk8EgMg1MOT?JF-~VbKd+ z-B`BY;6kcRj@lm6C8&m@HZStyA>3XVg&mz^zLiNF4R+O zdUNe>gxHSUx}5i09qtlQ%APUsc)5*Is>`+^{bD-@H7z}+RfuoT5gE3WWgf%`SRD9D zc8+wie{E(oIC<+TyIl0|bKO`Rwt%I>eYAi$VJN4tbYlX+T#%hOU-%o21)VvJ@o z>sbdvR3Bm490wYg#4(K`pzK8&Hi`#(+LiqTjlig}kL|$vlmSRX0GqsJc>U6;r~_&E z9`z7x8#oMriD}XSEC*I)91c*hXn@)_DfFjb^#9nI(R=?(phCruzfk_Mw?B^l-#GJq z!sgN<2k$sia?RRc=PAJ4pF2%rL)y-qtMrUCEtPg1_-m4C%w#(m_egH~lv}J$<=aTQjR7Jy7bg)mwIk3@u#4%nf6&afP z8-xqmh&VU}48{SM!oq6xr|dflm~$Xd#LJH5xwXD3MA}%36qw{+N;)wy3hQ<{;rux9 zBK9p_BxIA3kFQkgf-|M?H~eq5!&W2gqSme4LP?MqrnhH(r|Pu zSmp1U?@tj}>we%k90lxX)jjwzsnrbnEPO#3bMaUmOCY?B zAyG%Al5hWbkU!4#kL&tBw}v5o(lXd*E3hnUv3fV?!n%WyxzM2pV~^)CX@Bkkb8BYa z$IVKuLs=s+Pfeo9lsAnB&^VpcQ@`*={yT^ydqqc7Gq6!c*xR_rd27Zy?Dat0{n|H( z#3kySUs7!ed~eOGdN6d5nnpMAZ`TM-4a)XR^v>z&wPOP85gTCR<1|P~ zaB!Tb;8Y0ZCE?H)3)QN5l{=>$Tl)4b;6L2O8^Wd>;{1Rx=66kx&`kaE);cye5Iw|cTzHNGOyP}Lo z_K(R+sDzfgT$y?u)V&~U7eB@jysdv{`F@nm{?Rvxc62m6X&^IFs@g_pm^lM=~LZ=kd6kNz&-U7nQaVK9=PPFfMfQ)w99STvq_E?SCETOyZlg6 zT52<4MeyHjR?{a0zK)DcTnxWCvhcQ;RrRg!^f)cvz)$m#ws{CD2NPk@P|O2ovUyfx zbrpMV@0_b!<}Z?0%FdLwjcYTun>>r&PMq#5XDU}y*MwaYNf!*cU|7|B>8Qth#}R#( z0A30RLcK%mhqJ)kxIY}fK61>s>|q{hTlj#qk$ z;Cl+qUtjl7?3l2>N-UNrv-&=i;uOHelmhca zm^gS4?11qj$WAm{@-p*;w@@ANLP5H~=5?^VGP^qWIspR;tj+Ve6KxR|^Q?k4d^biW zj(g_ZR0&#CxipK?cux@@h?s{$<`HvAvaGPaXR}2Z>PZ+1upUIe>m0u$YBWZ30$%1k zZ~1$F@glT&Z?N&+c{DGeRlCh#6xos8a7x6gJW?A+yoErAZds;M^5U3E=SH!_vLNKp z$XW>^V8++QHp`K%paOt1r;h~koRmkDqe-fsDZFgIH^JCSyBoUu1a=6P$rfNTQelKF znv0Il_|So1g_Hx1BkI?Kx`A*h_>z1axq*AmP5_&Yocsm}N&DSl4GTbpm*1TTF#3XQ z(ZH{FgDL=lRJH?_q_z#naWekpRG>f42;D@#9E~+Qnrio7juCI@pjl(<<~oki$pP+5cN5J5-$s?v6q$?0{eZwr93)t0fC8Hl7Rf zh?7%m&||^livK)^=sWM|r#g!H!*&)pxkKZ9u=w_9@oQ0k+xO{_Pxg$Sb z0kt-MEzALmM}Q!sfy3t7cPuoke!>9Ym%>J=@ z_J8TU7Jn>qvbl!xsbl)sDl=bvf(y=e-;wbtJ3f$UF&@;6p850E`^+ALpWn}YH;A;;3j`I^v*W52{q+IzLTeP0QPQPy_ zX{XTaWF>lVt&8BTU~H}eCr$Oz?O7$qowv?MeS|Y1KG!qRl`7s8`s&5QS542?)lHEJ z^F51>dnn&{kiBP2v?j}}qm-PnR^w3_(s-t#;%04C2f2pZ(?Bl#r)^3$+*A=MRMjZs z16sdJeWoMinRw=v{cpmb<=XYQ!%9bzb1+uOps@M4egSFq)JYri4fe6c`UrFKFSI!l ze7qaLFJ%jyIg_0;O}bl0`<3gq963UaDk zAV!Nz$Um*(S2d+fYJ{J05eP~2NzkJ#&fK6!A`-ab-N^*ozPMEkJaO!yvWE19DVGJ` zi#g)68`&|X?s!s+cQsVLfkFyU&b0o_~))y`r;!V8^KL1kab|uO_&NI`bpbRKRUBE<3D=1Cea2wH6M zbZPi@FPuKp98TSBiqS*oIL_%{C`2RpBEA&8z$n{fs)`*Cd3&0?=~C)+ghxN|WbCEI zo3u)l$$VkoH$E{r-qJHb8+3s=-XvxWKSw%tI$xWLp+yat23EXLBwLlZuBc{>^|=am zsUDjg4o)}6O6$n$qjgp`aAuzib4ApJAkYm5l@pob{JLcJtS<2#%4<52EI{_VAudDO zc=NCc<0e@u^gD*YeLfqN5^#s`TU1pcf-V&>-NK_ydQBJo>?>p+lDNJ4_qdGz@{*?C zErI{fuYV!#ekT@K_VGocitr=}*Gu44b-CKI&oy7vFUK^43<11$GJu(xpiNQe--O}E z1Zy*Ba`>E{@LfW83D?U4gg=g zSPaU z9|rh@3ues9D=T)df9wq5-gN09s>ZChg6&pkLICr2`x#=BEDtz#+(b%$`GYW}RLTO_ zmvz8~i#L0~zGH~v2DPN_bOEYRMR}h#6u^;-GxHAE=bMPVNgG3g)2dH$kF_zu+lY;D zXwR+U`y)Ftocb}UK|6CbFKBQ2t(U~lri_1S^QAZ?dMOt^c>vu#vHG*b0&WJFBJfG| z?*a>Q^sE1rFG=!0SM(`!K8fzk0IH{Yu!C+m2CEO783t}2tI>RQOuZg#W(j<7IQU-I z3aVv%xDSfA(XVKh)KtcZeyp72h!c-t~m@<5n1*)wCUGQqth`DW@6 z=gxA3g<3@51SPTbe3EPWTB(7uuwHt6O#Tge4}R*~p_2BWI5|gvP4#0JFxxdy64(q} z0BwxrDT?3Lj#Cm2bOq9OaJN6aac4~j5`!$mQgu|yA7j?)$BGLENtjHM?{hs%4_lqa zo`eqK#s?8A>s>e;2qI%kvtYf$30SN#@Mh($R1UhRw&-`b>hi~SQFl2dH?p`uoI5tO zY6WfgSV<>Fx8n2ri+X(eyV&&ixeI_q@ed>Uq1(RG@JUhF?mmDFV2suz4s*3b1@ufN zZ{pr0J^E5+$NAPfTK$Li1BKODS*l&v_u{~H*|CBFje#DnK8#Uc^Uz0=%%K8lq41qL+C`C9@rCmdJpMe*F)$=d7)bQZI|2 zx1zuFNP#P|oivnC1uAdMmi64n6ID6a9^oUOh1OTEifZ=?Sg-L*xkRZDQV23EDwH0$Z@$Xnd%RRR3$wNsdK2^{2RgQ-EWh`Xj;;1V z(vf}p)@79Z-rxn`Q+qD@rQo(f<(n67c86cWwbQM?K_EWoiahSGx~H%XW)Ap`jLwg} zBaW?bzgZ=r>Es-4!81}(2E$v$v5%MzT`fED_Fm&NDY1I#(@hR@lntBkmqr}O5BM;H zgu?A-_M2OKqBT04yF8cA-L6dc+r8@NAmr%aW5V*dR)2P;$ya|qVRJW6&tTd|q%8jH z*Dcqi0%i5+eH+zisinoFZqh>WD{ix=BzNJNwlE8-Q&#oYjnC+#wUvT(bnE*n$shz= zJ??=g?@D`Sg;Fe0RGVLBq4XZ_$_rGRy!e*0I2~fF_!@WhBMtpF*d#v)t5vY%a)a&c!=MgE$U^EC#vR!X?kbuxoxN|6GgkDH1#kJeA}=p| zdg0G`#VeIB_j=#F0iP?@U*-~i3(UHR zdfKmdhQTE&gxR$=0bhTh&_~Mg>?!xDK&yP50ZS}LT(243N=?+$^4(Z%!o?Ps3%q; z>LgY*BOf!Z6SSW6W?Oc1>fUKysSxCDpMXsmQ9wKr!Y~>Z1(>@ivA{iJatt)khck0R zK6~AW(=KDq@-W>pG%!(Ep~DT6S^mD5|GcdCsDl_1-+J z3C5(?>xvwiRxMDy8>Uw^T(-tFY`eT`;29;5cq;Cbsniqkb!T|yKGjn;s$qWN%Z1X= zEERzuE#ZNwOp3(z&MUk9>L7Q1cO=gv@8AiNCjz5}Eza}MR<0j<9k8nk;ntL@TE#*` z*e>DsewF6UvV@my2V8YE9o*&tx6zIH%gc#$9A7P`AqHPrl5^X6UJ4m)=CjJPJp061 z=M3ZxuFn~VUf1Ob5oQ&;Zzv8g_3U>h7XNhGWJ#RKC>TGI_kDRqWaotVBgII@`y3qM zSF#x)zL!qj`a91Y@tFw$oZ4_EVp{aEdyrKR!CX+W(kBmvfVXfGBpD}jn7a85ox zcn4H02eg6$zd_EcLXT(R$Hb}G@!9V~Nl8)ANhi8NX_;B|vxY*7>1b%{2W!1ojbwav zwebn@el`nV-^)zde)f1keh0$kZ6@lWxy%sxn=WVct&$I&AEeI!scTP>x)yggR5$sH ztD4y^E>dwrJH#@L`&lEeU?oINV+zFe>>f%4<`(1hZ)hz^xZYmzCsg5iIs|mynmK*0 z1GgttGdubed`@0E(~J%{ddMS??YQSqa@Z^>ERY@fX@(rOssR23$wJ>{$utw^WS?{B z1VO;)dY}*67d#h*!Ba;Ty@p!D(cDFitnTwu6R)Q6%Of}LR)p%}y0eY+l|JKzQ?oeb z3Ur1g=L$OAQQ-oq7yZGZyqd=2WOF{6f<^uq{@iqb*@m}Nov}Ekb8}Hx;_vFS4YUBf z5Otbs=)ry(hsH0X#QUSkpRUjU@8`wT(6H6Sj%!eb$uq_y6&c%5Jh}or`5Z~J`5#WW-Q~z%=lhC=X6f>ob&w7={(QxoX#wcgk-69vj zfQmW{EOwyFIS&Au@bYoDe*xuu$(DTm1K5uBK#2{FiRPgT6zRSj z{(!bi9AvHM5c8nF{LMKY@xITFG##+P&!xnWxy!~_e8c5|Z2^U&`5U?Ci5`7+SXgQ@)W!94zmL+mX+~8Jv zVX%qOc*<=jljbPqS8G3EtB$!_(lHp2$-OE00=!Mk+&nMO8w{|hIShxK7s=!W`iA&X z07L@X<%d0Ht!+jk8E=uKwgKSv;1CGx5K9hrW~*5{-l1vTCn3X+DVcJiGBS#gM9GU6 zFGxoUd6mgJ5BmG#o7Wj7N1+~g8k&2lfSMw45N~9mP@n-EcqN{OXq;Y2gBR3LHxl=DT4F zi)p%x9ePwI3s^2RG(awg=OnPq4k3TNYw3D0xP2g9D4~)tJ3Ks1-K^9^KbZEzzjHG( zllP)lFZn+=mZ&MzkP&jYp^gCUcfe7DtfVTKm9W8RVMokKMbEPbNjZKXWY7(;EL%f6 za$Q^{*xyAQ;y*zQl_lTfGAJlx--&v8RP(a`pQQ+sUl+Fi8k7K7Mb+eJ$~~Q0CuxDy zIBXD}!UH0Wt&Z7Oc)4UNfu#RV=6sbs|IF{N2~V$k{ul&nW0>Cuo-FxG#JPs53D_y~ zNlo-B0qoMnvfRVD3Xl&7Iol24XaPGxdb!)f`koedAFy%Oek-Z?W>M5W1nn(y*%fW@ zZ2%1BDf`bn@HfXYh5m}^;@N!o;$ApFMRW;(%*Xq<_GdrGW%(V;rqa3Z^&{*PKxO}! zEH@Kg-U~FyO9)P{=|=($l9u!4Pem9Yv;JMO+^riNtBM86h6gB{Uk**?eDgDE`wu+l zcc2^i_UX!ylt>`Vm*7h?;Q%^ueSwt(nB8>gx}T5}Z;&*WPm;PX`mlA?xM?9Px_F>%A#MQ)|sWu`vtr-#XKDOx;s#Qh~u zH#b1$r7Npfx_Sk64!0;Khn*Ay1aZncC~sJ9fkp5yYiY~^`G^C6^$%Y9V@USPh+96xQOaa?xSJ6c6tMf{;`Mo*d^G_KJ>={9g7?!EYjNXByH>ptkz*H zcpG2%J;1h>@deh4EGeQh=dQq@Mg*yq&HVRYeBdj}f`Yalbj zPB$I0v8XbA$#BQ`yM{vr(Q7=?<88EMp2c*FttHda;Iw&xR)q#TGbDo(7*oe58 zu{(dmX8tbusx()KXI}jsI)$JrYdM_8+y3aspa*OQ+nqtz4IwNu;pw5lFZ0S!zw{;`F3>B$ zv`#yddolU$SHJNu(Wh^mq@UTx)I<Qw<@~3iEcRk3QO5J25?)3qE}7o z=uNRR=2S+Kx_p|hj5Xq^uFgi=Ed#r>#8OLH|LxQntlyS3{*&9kODX)f_x!$YV509= zD6ZstVxul!3+k4`At;(Qd^kB7puhfJVdX!){|O%8?O#V`W4knlS76#o7fjKipm0pD z13!rXw@!`sR>%E_(#qxevAkfL+O24IV!q%HZ z07!p21W!}8HhXAvun0^cpRZ`mUw*&ES$4Lx|Ft+s6JhXYP}sL`_K$2cG=O$^h7YN_ zQ5{5&LJl?Kr<~6_DLfu#8?uHk&#r2du!{R$vDfZsVsrK+(YKE7&SzKem}REVn%W5IZA!U5S@r6iI4YK+hrF8|bw2 zIBK9SRe{z?gAd66^c--9-*Ji8vj7Mdz`S`_%=5A+uTmF;Q~%^QUiH3`OV{>&jBX-yt`k zM$x7gR&|~ZBBZ=}_Sd2tuh@!jYGz6Tbspb6Hsbpywhq;Xc{Kfam-oMZeYa0-MofTB zdG%_)eCdC2+>}5yQI@R9&Fh^(>PLxeoazn2MTG$a7?GixGA@PO$FVzf*K*Zd2Z+cW zH;rJgL||%P7s9XV#d6*h6S`Xg#mFlhMGn-#03`yudi*D`%HO)`zvs3K{DW_wH-y*!Bek znJl$jd++rZghA*Z~}i%mBctY9gdhWaYHVg0=MAmY`%sx&k?$O%lSHQ(6}zdJ3$U$l3wFzr#<>FBd5m4vzZOH9NK*iX8MLzDy7hX^pa zGFM{4OLVosnRcfK1G34RM~;7bZ29^2Hpb942BOlO)MWoK9MV(gzG&;%DP-V*nctmc zL>CE%m~*$2!hJ7Nwa9J-dvDjD>lE0%CUiDaJ0e#C@i{E@rNS%R`gx>3eQ(%I?YJ6E ze(10OE1@)ocScy0lUc;?zFjbEZv0#O&b-HzyLWM4LCfCdYfo# zES5O`l)Lyx7v$IDezh=LpzvyCFYabJCBywhHA_(q{v?l+Lq~aS;wvDohbQgvj8tJe zHy$mw^C{*B6fbJn_d7Pr<1T6OGPJ+{W=?-QzyDp^X7I;e@4UF$l>k>q{`3=@;)sSF zV?EjZH;wm>*Y4SRuw5x_ur=*8^<_qARieWGOoD5)QN; zGD`*)H5QnZ^+U+dP&6Rx@i4}CfaNy-34#*1H?BA{4SVArZ~ z(6MnWHPYJWZ#`VDEHpb*ie`pNI#GGcy4~565mGqUt#9w=Ct2&*A%m3WVla!#C~Uo6 z_@66(y!S~P(-PI?vM#6y9Fx0+nYbrpuIwIuH1yhTi6PTVkL9n!V3X^B>G8w+NjGmx zh9iIVlAw>o53e`J3fSsE>Gt<8iTL65Uakp-&4QBd?_Uyl9N&$7u4byYIw*kt{tEz` zX!YS%NA8;?^~cXS6BHM9Es5Zd*`0NP-yw(gxTA6?ZFYWn`PS@*JsOqzl{M%eg-Py>@bcOec}S*qH^PzcV3MiO6m8wYr>NxLAMbEfENmP!0{VN`Crl%YEM(_oo z!BV3oy$iV5cPGX!tm>mxP5!N+_n%~De0J`(tcVj(p4E3IvPc%5A(gtv8OyTq?Kp%h zu+=v`9oZE*0Bp_x2U2cs5U?dP+mVY~N_)03`u?~R*p+zJB?#E1tf9ahjgo!|+J4FX zu=9&C`~T~u%6x^lP0>|lOBR!kUnkwR?M|>St{ae&SdNZgx?FyK1(x8q0(%j-0&}uw z?7$AiQ>7<}Sn3WX)GzjVZe@A76tJ(;j(@SQr$LJ{HoD;VJCWa=lS2uH4dTDs1w`ui zXRKc4zk7%?4lM6+w`Pge){yMGxvME?URhAAc9@Br^BJ&8)>Wt~3U$_*PwrHo&hI;E zT}eMa&6{xevR~kSQB?7!aEp1w4@*Y+o!56xxu%E!RRQhqi2=@`zYcKp>Vd1I1etYK z1Fz@!1spZfYKoVk;)i{}0s8J7z5&pbZuLUnjoZI}jH<^7`E@tvCc5lEzs1Gu5%aT# zx~66LAkiZxH(lS16^m)rY6<4_{Em6q-!sSiS+qqU?e@Z_zyUmVH?E{I` zEyzD}+QF7M|H07Int$}TXXRVKlF;bHPl~#LymHTT2VtTdHG1j>y`mGbB%8?yDD7;+ z7q_Y4D4bZDAm5ECcY(=g;Gx#f(knoCA#F>p=fB<=>xZX>$7Ah5ht2pR8o1N@-M?gS zrx?IZT>XOCJh1R}?*naExkINr`FU~mH6o8v?AyAeTH>r9~Y<~3G3QSB9 zDG0$&6wQj&E;+EgKYjn~jg4KfCwum)!!Ds7z%C>5>Zo^wo0gf7^xMHNDdny-ocgiT zLvVqCfeU8a9h@mlMsHdA25jtLoce>LebSv}jAU!MTTA_Y7M}O(PuqCEtgdrVi=OdL zd(J2l-Q}Vw>h>?vQ+<~<;5FmQ#yI7X0&nkBOguN>pnXzZW&85$5goy`KC|qX_b^4+ zGrmUtxWM4GFD-gcLJ5zo%$r0T%PP5}bb4c+u`(`h&>ga_%EEZHyvycHNUM{~^>p1* znV_L}fG6z4?Fdy8^FlHwC79{Z?+1PX%jB;qw{OGt^9{JLcrPDf!%KvPua$7Sl9JnFYPBtE-AQkP+GI(k@``VqqB!GT0K+Z5bT7_ENGrjCt2Kb$}<|a@4 zxZse$Ye>Ly_<$P=NWg~awvTjvJPqo2vK-)20lV@?;XK?y z<7q<>ij^N|IO*?Y-_)J6OHJes(&sf*+x?}dGm*eqM4xNXb>3;Ec^tG}c8Q&j!^v4%iec{zFygH@-5U1ODJ&rHn%(awysf`AG#%UxTCX2#0KX!?^19&C?Ai@YR*kp6*xReN>R;j=tDeYznd8->QiJAr98G)i zkle)MXYKH#(+cla9!AcH{3ZOg5zX{@{WJ26S}|X|pj63ykt?S9yHK<_r0SB`3uFMA z`3evmk@XVB`}*f5o*M*O;pMCzt8vnfxLDc#%dytqvs!TVTH34M<3Fr|b#+dz&dJp| zusR3+x90$Q7gZyl%v9?P5_FY@kK89}O;s!k+Z#d*<>zHDPKoOe>=_PS!{dGHg^a=O zdZ{FsMp9}ysCM@^$i%+i4@H8WoIWeCYLG!=jWYr$Hh(g}A22blz-}eOQ?}&-wu&L+ zam1Waxde7_5KHF8Rz7G$eoDdUfi9k}Ku~-e0eNg$0^E(ihbK~S}w=x>)O z`L<+aod!>vQsXgn>zt*df>9pM*ez}Cpo1z+4d9Ymn4Z${4TJ5-d#G{{7~ zzfe8B%xI5T5__O2*8g>KuKxbM=&%2l@%&Mqb-r)^mDGb>Yx}d5zZ1>S3Y>J~Cn|`Z_&VfB#BQvN{%j9g80XTH&1Ak3vsVbpERz zIz@#6l8z)O5fq0z0vqu_Th{fbUNCHZ6Xpm2h${n2GG+WY!_?Oq`oC?OuexS`@B6RX za{pet=IeU?U;6z~tgYH|t2WplW;gN?jl8-Q+@p_o@Khn;m}5jk72USa1=sKav#3IS zCr4ZRoxHkAm4`|tby0}|SNmV_?Wkt#br?l-htu_9K~TnOCw}g+#W->(lL|sJ2mNXh zka7!haYvrldgu^9NE28KJXMaL5N|uJ8~bsO&8&FPNM!mpVaBWd%hyiX3BF3^%==oB z_A3Q#^77=qq+BAxk07M3OJswy5Zp^qWSx5%J^oM2pBKfyu{0}@ed#2ov}58@>7m_w zb=GpSz?QZIlX1`mBro>;CUPL1qad7qC?{T!1?zF^Qy*f-hvN>alO$q=R0T|k-B&D0$}K>E*GZiwRlNGhX@w$ zorE0p?-8%WDhJ#!j||pd`~E4M_kFRAd*6CfW9GG{QvhHr>b35|fFRkivl<;}nx%}F ze?*1{-V9+Elkw-><|eaW8!H48zY~$S&Rx_|U>OkKa?U+* zYiLSRhs~KNEyatBHHuDxVk!(VcYGOm8A|^mOZY~;c92b9knQSJG+?B4P2EathB#6r z6y9KdnpAcq<)%x(x~=#~=H1m=C)#i3`99q95vFcJ%yuOk@q;JyteA0B_#m0v?d-Hk^A@iIES7jw;^{UJA z^*$tyTsFTKBoS>Tx*CK0jTq$LvuFQT_J3jd{pVKEfzNYQy~#G#b_maJ+Zd|=;` z*EJHp_FYWD_I>i|PK?sq*RI*dcr{r19rd4FY;R%iSv3};H8_zzi1C#G(xy#T8C$7K zM9SI*R+3c%xN0}@#?lXNs^eOB)|C4V>)qjmJ}+L(wq`o3yHHbAxoEy}yl0Bt){*n) zN@BVSq8r7zXBx$0uSM3MJ0}rki1^1>a*66swLSQj*z>=4yPRhQ=Ie*8s6ej=1snGX zqE6)^?)g=CE~O@(?j9`zDTc zu256T^;~}q8TacQLzPO@CELVm{^8{o88bsk!U9)Qp;r`@8zKxLdyqrtLWZ3gCt@|k zN%&i`HI1RPEbge>{mh%>OCn4ny=_mKcy9`Zjc2BU=1Q4L`?M6Zm5Jk;jiLpH((4er zSy}ch5X%_pEcg}JI%$#|m5*tNzi=1@8`F?^KlhUDgd;yuZi7W{Z=ZSt`!W8b?6cbq z^S9NXx(we~u?cbDwKrXSC3P$5G25?~bMnFYG)6hXr;o9paos|s@4zlKjy$1H; z#U2A=8(y6*zVmc_%i(F}OZDEDFEPy3e02)>8mVWX>{KcXWJq)tc8?+&py812p%)!) z+tY5pCinJMx4brClIcA@q$@FK7J;qUiyVA_fP=Bmz%ePw31N_hWd4NnY2)GP1Kkc+ zpH;Z6P2twWUXzH-%TtXoX}YAj#aqMg+k*A~hV5K9G(nO!B{hXOm2aV{7Md3>#-MIt z)Fn=wBHL_BIq>KVw=~quAd>DMd0cxtt9TURQmVIxNh^KlIHKUgq?aIc+QsdxLTb@1 zx8*F!+mNtxCK~1y<|?bq~3%oTDg;U|E)LnVI5$QDMi%p1lk*Wp>VD zZ465}UADcZe;`8$TU{V?_#j!&%l?CDh3S6btGis$ zI6TQ-!=Gq~q)0$PH!@{MyoB4-(TSUFjh~eTIdJ#Yi(P-DVH~xmUzmMlgSr`=6~tWE zrhp~wL)9ZqQ;NdMw?KB3TO?e-h>)NA{?22it!UpB>V`(Y zg+S_tKsu}RAiDPk#X6xXNsx3Tk%T`9S-d}Qfx9`0T9Uo*TwJ3r$WZn|aBH84fH_wc z|Lbe8IY9KZ4G1UPAfC!&V2}@R1ED$n^|==!5<=i`dkS&dr0f=V`KjA^=`OLRMl&VS ze5Y78`OKnTAtBW?$~mZExWS6)L|`2bu05BFC*t`!a9xRqY%EJjxqX z=&YqAES&{ZO0OLz*K}4}Sx8 zvjGIjX`$B9a#(=Ml~$GYq|e}*%aHgZ=qgM4-gD1=?j@trUGyTuDQ6KDiw<-S4q6OG zIEyL+`IE6mEskyoLGy{>s(8otx6+$ivRirt`;((}ZXUlYW$t@1gHsg3Y-fhux?BuyEGM$@Q!-xr{7B?*&Jx3=yYiyZGcDQ`KjN9S_N z)WLNXRxYu>nj@l6-W& zzU0yvZJFe!G7J>aW3MduUl1J?EMC69lF(?UZRe>$zp-beyl6V-9mxOu@axTFfdDU-PtMAb>HT%1<^lQ3q9tiM!|bW!6m#-z z0mjGkFiI|16QrvuldWWUZS$CFc{EwN;_9`XTuN4E2G3(#WbU6k>g*yD(k62A)ZY4y zqjUL{L78YOy3Vwz~>A43*9s z-SbVzl8-K6M2QACR)f?8C3Mx+j2zz+=Mz^7`A%-SvWkL-@1d&|X)H2kohs zVwXGr9(CKneU|3Y^{qQGh7OJ#F(bti+8?XbeN`^Hd|YRIDJ5hB{0)xegq!RIi!}(m zmocuVs;-9;>hKr}85#}dDEE#O3KEoRZS_V%F zg^)F|Tw_o5YU0%!A8WovT|Qgr%|ow&dA=YU(Al<=1O@|Z;K4~;}SsX`8 z0#Pl*o38@{m|GXUMMB@_Xz?u>0x51v3!zFapYy6J*C2f?Odab~eTYlxM?+roQ;``h zxyin|zIt~Da~o$OnAcea9?%q{4TcMYGB@rr(FY({v=kGYpE7av8Q}!F`_0y(GGA@> zDDf~sb3H(HNc9ARWDJ-!%e=Y>6vTVLNu6ey>jZWl*VuUh$%7n>MRs4C60aLX3yiC- zOHhBfzjyZO?pcgKS4U1bKQ)96 z33=$5_S(v9S@LyNkvn=%9R;tbd%K7g&G^|an1q7%qJegQNuct!QoNvRWO>J<<#6ao zEu7Cis-+GSilv0qr$s4j*dbV!prn22a_Yy!e4`puPp}nrh^KTsDaskv4_&K{f+UI6 zW4S5V%FWzB!=97Qf3qQw`LTdEY~xfgZ23Sfj&v;CkIq92_`CwM&q8zQ6OsPU&pS9s;V5|7-@TH)OEt5sUJgIK`9D0z0tv9mdc&R&Rsp{LE&-G+fB_R3D2R_vq z>k+1`FC5Nz>pkjlEBi@Tl-^cvkrc^MDtE#VA#mOqk_(@T$>_JY*w^SE3tD&d8rTX~ zF)i7kU08>(44Q~kY(9D_1DHf(v}k7yNq47Sqc#ka2gm%&YN2f3^tjy>FQjz*L!_l) zRqU6la@QA6LlUEP1aEwS+2qjU2}FL;&8afPU?{R$VXX7&rB5znTMXuX2hL0Eu8Zgn zv)7q%of%FIrsM`&i?&i_Ny0T9@wTB!i5E(gW|a_8x)Eh(K>uq4&($>`;`Q?o1~_ja`XK%1&4%D#m|Zy?k0)fP7%{X z#|avnr2sClz$(zc?-QO615bzIs;(y{6(&1$L=w&~P@-5im;SQqIFo%jFprk6VJkp^ zi(M`x)fAGWu0SMg7`NU;_K(l9vKJF7u$*Yv_ll24LH$y7%?ahYNc4H8jhk@%KnZW8 zH>)7n@PmXCW#>J`kKj29a(U2chb>V37KYcZ2zVc9M{Hx<17qkiivhFn2_f&Q9~nLb z55w9w37_bKGKjjj)y=LsJ7!(rlC7zU-;y5v)<15+)lhvV&UWPSrq}EIVb{Z}P>|{Z z@v2O06I$f7AYC!1K9M3KE=R4{usXn!rc z%i(9Ck9S8TCoLv(zO@Y;s`6NlP4F? z!aQ6Q>o=aRI5iv^Q2r1?1MT;T{u<5Z)@yYL;qNjLcQyTv(7>}BSVoc2QJ)VpXwhA- zb=2(Qmr+{HG8pO9p0N_En1=}uyQ-gBTJ%&tt#TH+y<^KZ*2l0{FxWbn*JiIbI79&f z63?It^bR-O^pYOP4Wx3B^OmeEk96+z32Q+V^w(drRm?f^o_Y4OO2y@A8DVQSEr7_zoU_F?hA;S$4M*Yg z&{utGmXfb!?_>MIway|}0$=GA~*Garg1>V|^mhj(|*i>Dlld;Xkm(ZFlk zsOqFSU=v`@itFF{VyB5d)BNxtqA~>KO;}SVFzC3i=maFE^{hEN%;21wrTd_@r35uo z^?qjzy$(+@z*7*yy5Ts+`YUg%9k^R*WKy8wzi**zIy@ddud@4;vmQrilkH zt?}Mco)>QXEPlYYpRZEUiJ|uRZNw= z!pAXvj6c3W#q8RVH*fJ0+QHImPvtC|+;v?03`R#`bf8CIJlBSUFL{@$Jsd8kQ=(gi z3{y4GEa}xDvYp5=?oN-nb&^Mv7XQRsH>ZEm;=a-jL95*`%y9S#Cr2J&c?~U%(*VKEbLji0Oa$9st2Up8abx1 zB-!`Gh(@O(VPevo{kv=e?7MA)ZVlc!9a-_3_@&h?Xfxsah$>10y3%Hv+r5s?FW~2v ztuvu}uT1UXSWlV2HP!xxG?_ILLHFVnHe0nY6beX01~0bKIZn_Ll$v~iS9Qdaz%|j4 zZ>~?4u9lyOzhb=I)M1_P#?5#9Xp}J1WBsgL6?|g|4(wnrp_^wYWx&Wi5rT=O;q%KD{WE?`#!sM}IyzNVB%kuOJ9FS;daU0zy ztRa^nG^Fe19Ap+bE+&p!J~A`Atm8i5!9{732@wRxRluUWO?2Mql#Xq&H#CDC=im7&je1jRCtKX7nGIBle)+oKTtc?CXNhRr^XMV$$ zx_}q=iMx`g$GnSS)R&O-FT9&;@PiZRu+9NRvU1>%B?r1Ha?JFaMK;kwYhPb%yn-%s z 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 z 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